camera_calibration/Tutorials/MonocularCalibration - ROS Wiki
说明:本教程介绍使用camera_calibration的cameracalibrator.py节点在 ROS 上使用原始图像校准单目相机。
1. 在开始之前
确保您具备以下条件:
- 具有已知尺寸的大型棋盘。本教程使用 108 毫米正方形的 6*4棋盘。校准使用棋盘的内部顶点,因此“9x7”棋盘使用内部顶点参数“8x6”,如下例所示。
- 一个光线充足的 5m x 5m 区域,没有障碍物并检查板图案
- 通过 ROS 发布图像的单目相机
USB相机驱动
安装usbcam
如果你的ros版本是 melodic
sudo apt-get install ros-melodic-usb-cam
如果你的ros版本是 noetic
sudo apt-get install ros-noetic-usb-cam
查看接入的USB摄像头的设备号
ls /dev/video*
查看相机参数
v4l2-ctl -d /dev/video0 --all
找到关键信息
Priority: 2
Video input : 0 (Camera 1: ok)
Format Video Capture:
Width/Height : 1280/720
Pixel Format : 'MJPG'
Field : None
Bytes per Line : 0
Size Image : 1843200
Colorspace : sRGB
Transfer Function : Default (maps to sRGB)
YCbCr/HSV Encoding: Default (maps to ITU-R 601)
Quantization : Default (maps to Full Range)
修改launch文件,设置USB摄像头的编号
roscd usb_cam
cd launch
sudo gedit 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>
启动摄像头
roslaunch usb_cam usb_cam-test.launch
2.相机内参标定
首先获取依赖项并编译驱动程序。
rosdep install camera_calibration
确保您的单目相机通过 ROS 发布图像。让我们列出主题以检查图像是否已发布:
rostopic list
这将显示所有已发布的主题,检查是否有image_raw主题。大多数 ROS 相机驱动程序提供的默认主题是:
/rosout
/rosout_agg
/usb_cam/camera_info
/usb_cam/image_raw
/usb_cam/image_raw/compressed
/usb_cam/image_raw/compressed/parameter_descriptions
/usb_cam/image_raw/compressed/parameter_updates
/usb_cam/image_raw/compressedDepth
/usb_cam/image_raw/compressedDepth/parameter_descriptions
/usb_cam/image_raw/compressedDepth/parameter_updates
/usb_cam/image_raw/theora
/usb_cam/image_raw/theora/parameter_descriptions
/usb_cam/image_raw/theora/parameter_updates
第三步:运行标定程序
注意下面这句话,不要生搬硬套,要根据实际调整!!!
rosrun camera_calibration cameracalibrator.py --size 6x4 --square 0.033 image:=/usb_cam/image_raw camera:=/usb_cam
拿着标定板移动,它会自动识别然后标定出64个点,这就是刚刚为什么是64的原因了
大概标定出几十个后,左侧第一个CALIBRATE按钮会亮起来点击CALIBRATE按钮,此时会变灰色图像,耐心等待,不是死机
点击SAVE,COMMIT按钮