大家好,我是小鱼,今天来说一首如果使用ros自带的相机驱动来进行相机标定。
还有一个小技能,当我们使用realsense相机时,不安装驱动也可以使用其相机的RGB通道,只要对应的video编号能对上即可。
1.使用ROS usb_cam驱动相机
1.1 安装usbcam
Kinetic:
sudo apt-get install ros-kinetic-usb-cam
Melodic:
sudo apt-get install ros-melodic-usb-cam
其他版本
sudo apt-get install ros-版本名称-cam
1.2 修改launch文件
进入目录:
roscd usb_cam
cd launch
sudo gedit usb_cam-test.launch
目前主要修改device和width两个参数,可以使用
ls /dev/video*
查看系统视频设备。
<launch>
<node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
<!-- modify the video device to your device -->
<param name="video_device" value="/dev/video2" />
<!-- modify the size of your device -->
<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" ou$
<remap from="image" to="/usb_cam/image_raw"/>
<param name="autosize" value="true" />
</node>
</launch>
1.3 启动相机
roslaunch usb_cam usb_cam-test.launch
2 使用ROS进行相机标定
2.1 使用ROS自带的标定程序进行标定。
-
小工具:
棋盘格pdf在线生成网站:后台回复标定板即可获取
,生成后使用一比一打印要比手动量的要精准哦。 -
标定完成后点击Save可以保存标定所用的图片和参数矩阵。在终端里会输出标定产生的压缩包,默认放在
/tmp
目录下。
2.2 运行标定程序
首先运行4.1中的相机程序
roslaunch usb_cam usb_cam-test.launch
运行前需要根据你的棋盘格修改参数
- 一个是size参数为棋盘格角点数量比如8×9=72个格子的棋盘格,角点个数为7×8=63个,size参数就要写7×8
- 另外一个参数为square,传入的参数为棋盘格一个小格子的宽度(注意单位为m)
-
image
,图像话题的原始数据默认为
camera:=/usb_cam
rosrun camera_calibration cameracalibrator.py --size 10x7 --square 0.015 image:=/usb_cam/image_raw camera:=/usb_cam
2.3 生成标定文件
标定完成后点击Calculate会稍微有点卡顿,不要担心后台正在进行标定,完成后下面的SAVE和COMMIT按钮变为可用状态,点击SAVE即可保存标定完成后的文件。
点击commit即可把标定文件存储到系统的
~/.ros/camera_info/xxx.yaml
目录
2.4 在ROS中使用该参数
可以在usb_cam的launch文件中增加以下参数,重新启动usb_cam节点,即可使用该标定参数。
参数值小鱼这里写的是
file:///home/dev/.ros/camera_info/ost.yaml
,可打开目录
~/.ros/camera_info/
进行查看
<param name="camera_info_url" type="string" value="file:///home/dev/.ros/camera_info/ost.yaml"/>
添加完成后结果~
<launch>
<node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
<!-- modify the video device to your device -->
<param name="video_device" value="/dev/video2" />
<param name="camera_info_url" type="string" value="file:///home/dev/.ros/camera_info/ost.yaml"/>
<!-- modify the size of your device -->
<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" ou$
<remap from="image" to="/usb_cam/image_raw"/>
<param name="autosize" value="true" />
</node>
</launch>
版权声明:本文为qq_27865227原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。