【单目视觉SLAM小车】(1) 相机的标定

前言

我有一个关于视觉SLAM的大学生创新项目,原本打算使用Kinect或者双目摄像头作为采集装置,但是学校太抠门,只给一点点经费,无奈只得用单目摄像头。由于申报的课题是《基于视觉SLAM的室内导航小车》,在经费有限的情况下,打算使用ros系统,把树莓派作为下位机,让树莓派携带摄像头采集图像,传给上位机;让上位机处理图像并给下位机发送指令控制小车运动。
最开始的工作是标定相机,以获取相机的内参。

设备

1.安装ROS系统的PC机一台。
(ROS系统安装教程:https://blog.csdn.net/qq_31733915/article/details/79825122 )
2.USB摄像头一个。
【单目视觉SLAM小车】(1) 相机的标定_第1张图片
3.打印一个黑白相间的棋盘格,并贴在硬板纸上。
【单目视觉SLAM小车】(1) 相机的标定_第2张图片

标定步骤

1.打开Ubuntu,打开终端,输入:

$ roscore

此时ROS系统就运行起来了。

2.打开另一个终端,输入:

$ rosdep install camera_calibration

从而获取依赖项并编译驱动程序。

3.输入:

$ cd catkin_ws/src
$ git clone https://github.com/bosch-ros-pkg/usb_cam.git
$ cd ..
$ catkin_make

从而安装驱动。

4.由于本人使用的是PC,默认打开的摄像头是电脑自带的摄像头;为了打开usb摄像头,需要修改launch文件。使用vim将video0改为video1,然后保存退出。

$ cd src/usb_cam/launch
$ vim usb_cam-test.launch

【单目视觉SLAM小车】(1) 相机的标定_第3张图片
5.保存退出后,就可以输入以下指令打开usb摄像头:

$ roslaunch usb_cam usb_cam-test.launch

如果打不开且出现三行红字,大意是找不到usb_cam-test.launch,输入以下指令来运行相关脚本文件:

$ source devel/setup.bash
$ roslaunch usb_cam usb_cam-test.launch

【单目视觉SLAM小车】(1) 相机的标定_第4张图片
6.再打开一个终端,输入:

$ rostopic list

发现下列两行信息。

/usb_cam/camera_info
/usb_cam/image_raw

然后就可以输入设置标定指令:

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

其中size 8x6代表棋盘大小,square 0.029代表正方形边长为0.029米。
【单目视觉SLAM小车】(1) 相机的标定_第5张图片7.尽量将摄像头画面中每一处都拍摄到棋盘。等到calibrate按键亮起,按下该按键完成标定。
【单目视觉SLAM小车】(1) 相机的标定_第6张图片
8.按下SAVE保存标定文件。终端上会自动显示保存的路径,最后就得到摄像头的内参了。
【单目视觉SLAM小车】(1) 相机的标定_第7张图片

参考文献
[1]: 胡春旭.《ROS机器人开发实践》. 北京:机械工业出版社, 2018.5.

你可能感兴趣的:(【单目视觉SLAM小车】(1) 相机的标定)