ROS kinetic 下单目摄像机的标定

25 篇文章 2 订阅

在之前博文中,我们使用usb_cam包读入并发布了图像消息,但是图像没有被标定,因此存在畸变
这是自己在ROS下做的一个单目摄像机的标定

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)查看发布的话题

 rostopic list

3)运行相机标定的节点
首先要编译

启动标定程序

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
运行:

 sudo apt-get install v4l-utils

4 警告:
unknown control 'focus_auto'
head_camera.yaml not found

可以忽略.

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穿着帆布鞋也能走猫步

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值