前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ROS kinetic 下单目摄像机的标定

ROS kinetic 下单目摄像机的标定

作者头像
小白学视觉
发布2019-10-24 12:19:23
1.4K0
发布2019-10-24 12:19:23
举报

1. 所需要的包

(1)usb_cam

这是USB摄像头的驱动包

下载地址:

https://github.com/bosch-ros-pkg/usb_cam

(2)标定功能包camera_calibration

下载地址:

https://github.com/ros-perception/image_pipeline

这是ROS下用于标定相机的包,本文是参照此包的教程进行相机标定。没有kinetic版本,亲测indigo版本可用。

教程地址:

http://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration

2. 标定前的配置

(1)首先驱动USB摄像头

可参阅 ROS上安装usb_cam驱动运行USB摄像头

2)查看发布的话题

代码语言:javascript
复制
rostopic list

3)运行相机标定的节点

首先要编译

启动标定程序

代码语言:javascript
复制
rosrun camera_calibration cameracalibrator.py --size 9x7 --square 0.108  image:=/usb_cam/image_raw camera:=/usb_cam

注::size 是指棋盘内部角点个数,我是用的标定板公有12x8个角点(即12列8行),”x”是字母,而不是乘号…square指方形的边长,我使用的标定板方形边长为108mm,image为输出图像的话题,usb_cam为相机的名称(即在/image_raw前面部分)

出错:如下

(‘Waiting for service‘, ‘/camera/set_camera_info‘, ‘…‘)

Service not found

运行如下语句: 角点数 棋盘格大小 topic映射

rosrun camera_calibration cameracalibrator.py --size 9x7 --square 0.108 image:=/usb_cam/image_raw camera:=/usb_cam --no-service-check

其中参数size 9x7 注意是字母x,他是棋盘内部角点个数,如下图所示。square为棋盘正方形边长,注意刚刚开始标定的时候,CALIBRATE按钮是灰色的。

运行后会弹出标定使用的GUI

然后将标定板放在前方

3. 标定开始

在出现上述窗口后,拿标定板在窗口中移动,

我们从图1中可以看到,在GUI的右侧有X,Y,Size,Skew这几个标志条

它们的含义是:

(1)x:标定板在图像中的左右位置,从左到右x由小变大。

(2)y:标定板在图像中的上下位置,从上到下y由小变大。

(3)Size:标定板在图像中的大小,由远及近,Size由小变大。

(4)Skew:标定板在图像中倾斜的角度大小

操作过程:

(1)为了得到尽量丰富的x,y值:标定的过程中要尽量缓慢移动标定板,使标定板的位置出现在图像中的各个地方(上中下左右)。

(2)为了得到丰富的Size值缓慢移动标定板,使标定板由远及近,采集到丰富的尺寸信息,最好有一张,标定板占据视野绝大部分的图像。

(3)为了得到丰富的Skew信息,缓慢移动标定板,使标定板的俯仰,偏航,滚动变化。

注:在操作的过程中,标定板移动不要过快,并且,每移动到一个位置要停顿下,如果发现这四标志条都变绿了说明采集到了足够的信息。并且如果可以执行标定,CALIBRATE就会变亮。

4.执行标定,得到结果

CALIBRATE选项变亮后,就可以点击,执行标定(最好各标志条也都变绿),此时图像会变灰,等待几分钟,标定完成后,再把标定板拿到摄像机前会出现如下画面:

5、遇到的问题

(1)报错[usb_cam-test.launch] is not a launch file name

运行完roslaunch usb_cam-test.launch后报错说usb_cam-test.launch不是一个launch文件,是因为没有cd到catkin_ws/src/usb_cam/launch文件夹下,系统找不到这个launch文件。

或者如果事先source了该工作空间,可以在任意目录下运行roslaunch usb_cam usb_cam-test.launch都行。

(2)对于有些节点没有跑起来的情况,可以从下载的catkin_ws/src/usb_cam中找到相应的.py文件然后用cp命令复制到opt/ros/hydro/的相应文件夹下。

(3)如果出现报错“sh: 1: v4l2-ctl: not found”则需要安装v4l2

运行:

代码语言:javascript
复制
sudo apt-get install v4l-utils

(4)警告:

unknown control 'focus_auto'

head_camera.yaml not found

可以忽略。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-10-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小白学视觉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档