前文:从零开始Ubuntu16.04+ORBSLAM2+ROS实验实录一:安装与配置
1 相机测试
# 安装功能包
sudo apt-get install ros-kinetic-usb-cam
# 查看相机参数
v4l2-ctl -d /dev/video0 --all
找到关键信息
Priority: 2
Video input : 0 (Camera 1: ok)
Format Video Capture:
Width/Height : 1280/720
Pixel Format : 'YUYV'
Field : None
Bytes per Line : 2560
Size Image : 1843200
Colorspace : sRGB
Transfer Function : Rec. 709
YCbCr Encoding : ITU-R 601
Quantization : Default
Flags :
根据相机信息修改usb_cam-test.launch文件
<launch>
<node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
<param name="video_device" value="/dev/video0" />
<param name="image_width" value="1280" />
<param name="image_height" value="720" />
<param name="pixel_format" value="yuyv" />
<param name="camera_frame_id" value="usb_cam" />
<param name="io_method" value="mmap"/>
</node>
<node name="image_view" pkg="image_view" type="image_view" respawn="false" output="screen">
<remap from="image" to="/usb_cam/image_raw"/>
<param name="autosize" value="true" />
</node>
</launch>
# 终端A运行ROS
roscore
# 终端B启动相机
roslaunch usb_cam usb_cam-test.launch
# 可视化工具
rqt_image_view
注意:若没有根据具体相机信息修改 .launch 直接启动,会造成相机重影。
至此,相机测试完毕。
2 相机标定
# 终端A运行ROS
roscore
# 终端B启动相机
roslaunch usb_cam usb_cam-test.launch
# 终端C运行标定程序
rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.028 image:=/usb_cam/image_raw camera:=/usb_cam
标定界面出现后,按照x(左右)、y(上下)、size(前后)、skew(倾斜)等方式移动棋盘,直到x,y,size,skew的进度条都变成绿色为止,此时可以按下CALIBRATE按钮,等一段时间就可以完成标定,按SAVE保存。
在命令行中也能看到标定参数:
[narrow_stereo]
camera matrix
1687.489515 0.000000 662.738160
0.000000 3396.359901 304.647354
0.000000 0.000000 1.000000
distortion
-0.990358 1.149552 -0.004646 0.012376 0.000000
rectification
1.000000 0.000000 0.000000
0.000000 1.000000 0.000000
0.000000 0.000000 1.000000
projection
1424.105713 0.000000 686.928499 0.000000
0.000000 3351.880859 302.856478 0.000000
0.000000 0.000000 1.000000 0.000000
将标定参数保存为.yaml格式,参考TUMx.yaml。
# Camera calibration and distortion parameters (OpenCV)
Camera.fx: 1489.876054
Camera.fy: 1602.478527
Camera.cx: 629.614838
Camera.cy: 127.471095
Camera.k1: -0.763016
Camera.k2: 0.529416
Camera.p1: 0.074944
Camera.p2: -0.008440
Camera.k3: 0.000000
为进一步SLAM做准备。