基于ros的机器视觉--摄像头标定

目的:摄像头是一种精密仪器,对光学器件要求较高,由于摄像头内部及外部一些原因,生成图像往往会发生畸变,为避免数据源造成误差,需要针对摄像头的参数进行标定。(引自ROS培训古月老师)这里我把视频学习整理了一下,仅用于个人记忆学习。

1.安装标定功能包

sudo apt-get install ros-kinetic-camera-calibration

2.摄像头标定流程

(1)启动摄像头 (在工作空间下 /home/catkin_ws)

roslaunch robot_vision usb_cam.launch

这里注意:采用的外接摄像头参数显示是无驱动版,但是却报错 error 22 ....,这里认为可能需要安装驱动,这里借鉴了一篇博客:

https://blog.csdn.net/qq_39989653/article/details/80393912

(2)启动标定包(~$)另外打开一个终端

rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.024 image:=/usb_cam/image_raw camera:=/usb_cam

这时会有显示标定窗口display。然后把棋盘格放入,角点会被识别,并被连接起来,如下图:

基于ros的机器视觉--摄像头标定_第1张图片

上下左右移动旋转棋盘格,右边上部X,Y,Size,Skew表示各个方向标定进度,直到CALIBRATE呈绿色,标定结束并点击,这时后台计算标定数据,耐心等待几分钟后,下面的SAVE、CMMIT会变成绿色,表示后台计算完毕。

基于ros的机器视觉--摄像头标定_第2张图片

同时终端会显示获得的标定参数。接着点击SAVE保存标定数据。

终端显示将标定数据默认保存路径:/tmp/calibrationdate.tar.gz(在目录Computer/tmp文件夹下的压缩文件)

基于ros的机器视觉--摄像头标定_第3张图片

关闭标定程序,标定结束。

(3)Kinetic的标定

基于ros的机器视觉--摄像头标定_第4张图片

Kinetic的标定与普通摄像头类似,要分别标定彩色摄像头和红外摄像头。(这里暂时没有拿Kinetic实际标定,待后面再记录)

(4)标定文件使用

标定完成以后,在/tmp/calibrationdate.tar.gz压缩包解压之后可以看到标定过程中的图像帧,主要用到的是生成的标定文件ost.yaml

基于ros的机器视觉--摄像头标定_第5张图片

 

打开该文件,是标定生成的参数。

将yaml该文件复制到功能包下,并在launch文件中写入就可以使用了

基于ros的机器视觉--摄像头标定_第6张图片

基于ros的机器视觉--摄像头标定_第7张图片

基于ros的机器视觉--摄像头标定_第8张图片

(5)kinetic标定文件使用

kinetic标定会生成两个标定文件,一个是彩色相机,一个是红外相机的。使用的时候把这两个文件都写入到launch文件。

例如:robot_vision是功能包名称,kinetic rgb calibration.yaml是彩色相机标定生成文件。

基于ros的机器视觉--摄像头标定_第9张图片

(6)使用标定文件可能会产生的错误

基于ros的机器视觉--摄像头标定_第10张图片

标定文件如ost.yaml(在此处复制到功能包后更名为camera_calibration.yaml)更改位置如下:

基于ros的机器视觉--摄像头标定_第11张图片

 

 

 

 
 
 

你可能感兴趣的:(ROS)