本文主要是介绍ROS下AR.Drone 2.0相机标定,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一.所需要的包:(1)ardrone_autonomy
下载地址:https://github.com/AutonomyLab/ardrone_autonomy
这是AR.Drone 2.0在ROS下运行的底层驱动的包
(2)image_pipeline
下载地址:https://github.com/ros-perception/image_pipeline
这是ROS下用于标定相机的包,本文是参照此包的教程进行相机标定
教程地址:http://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration
二.标定前的配置
(1)在工作空间中编译好这两个包后:
在终端输入:roslaunch ardrone_autonomy ardrone.launch
(2)查看发布的话题:
在终端输入:rostopic list
可以看到:
图2.1
可以看到发布的图像的话题为:/ardrone/image_raw
前置相机的名称:/ardrone/front
底部相机的名称:/ardrone/bottom
这将在下一步运行相机标定包的时候用到,我们以底部相机为例进行标定,
在终端中输入:rosservice call /ardrone/togglecam
这是切换前置与底部相机的一个服务,我找了很久才发现,所以最好找个地方记下来,再运行一次的话又会切换回前置相机。
(3)运行相机标定的节点:
在终端中输入:rosrun camera_calibration cameracalibrator.py --size 12x8 --square 0.03 image:=/ardrone/image_raw camera:=/ardrone/bottom
注::size 是指棋盘内部角点个数,我是用的标定板公有12x8个角点(即12列8行),square指方形的边长,我使用的标定板方形边长为3cm,image为输出图像的话题,camera为相机的名称(即在/image_raw前面部分)
此教程也有相关说明:http://blog.csdn.net/heyijia0327/article/details/43538695
运行后会弹出标定使用的GUI
图2.2
将标定板放在前方后:
图2.3
三.标定步骤
在出现上述窗口后,拿标定板在窗口中移动,下面给出官方教程中的示意图:
图3.1
我们从图2.3中可以看到,在GUI的右侧有X,Y,Size,Skew这几个标志条
它们的含义是:
(1)x:标定板在图像中的左右位置,从左到右x由小变大。
(2)y:标定板在图像中的上下位置,从上到下y由小变大。
(3)Size:标定板在图像中的大小,由远及近,Size由小变大。
(4)Skew:标定板在图像中倾斜的角度大小
操作过程:
(1)为了得到尽量丰富的x,y值:标定的过程中要尽量缓慢移动标定板,使标定板的位置出现在图像中的各个地方(上中下左右)。
(2)为了得到丰富的Size值缓慢移动标定板,使标定板由远及近,采集到丰富的尺寸信息,最好有一张,标定板占据视野绝大部分的图像。
(3)为了得到丰富的Skew信息,缓慢移动标定板,使标定板的俯仰,偏航,滚动变化。
注:在操作的过程中,标定板移动不要过快,并且,每移动到一个位置要停顿下,如果发现这四标志条都变绿了说明采集到了足够的信息。并且如果可以执行标定,CALIBRATE就会变亮。
四.执行标定,得到结果
CALIBRATE选项变亮后,就可以点击,执行标定(最好各标志条也都变绿),此时图像会变灰,等待几分钟,标定完成后,再把标定板拿到摄像机前会出现如下画面:
图4.1
在终端中会出现:
图4.2
如果对标定结果满意点击COMMIT,即可将标定结果存入指定路径,可以在终端中找到,如:
图4.3
PS:具体怎么看标定结果是否满意,现在也不太清楚,等以后再弄清楚一些再补充。
五.标定参数解释
(1)width,height很明显表示图像为640*360像素大小。
(2)Camera_matrix:相机内参矩阵
(3)distortion:畸变参数,[k1,k2,p1,p2],其中k1,k2为径向畸变,p1,p2为切向畸变
(4)rectification:未深入了解,好像一直都是单位阵。
(5)projection:应该是畸变矫正后的矩阵(猜测的,并不完全确定)
详细可参考:
http://wiki.opencv.org.cn/index.php/Cv%E7%85%A7%E7%9B%B8%E6%9C%BA%E5%AE%9A%E6%A0%87%E5%92%8C%E4%B8%89%E7%BB%B4%E9%87%8D%E5%BB%BA
到此,AR.Drone 2.0的底部相机就完全标定完了,之前完全没有做过相机的标定,都是自己从网上一点一点查的,可能有不准确的地方,希望能够批评指正。
这篇关于ROS下AR.Drone 2.0相机标定的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!