zl程序教程

您现在的位置是:首页 >  其它

当前栏目

ROS单目相机标定 ------ 亲测

------ ros 亲测 相机 标定 单目
2023-09-14 09:09:26 时间

link

在这里插入图片描述
主要参考1
主要参考2

主要参考3

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按钮