1、此贴记录一下作者在ros中使用摄像头的方法,如有错误和不足请在评论区批评指正,手上有三种摄像头(1、单目摄像头 2、双目摄像头_俩usb端口 3、双目摄像头_单usb端口)不同摄像头的launch文件略有不同;
2、准备工作,使用下面命令查看是否检测到视频设备,如果电脑自身没有摄像头的话,单目和双目单usb端口摄像头会显示/dev/vedio0 双目俩usb端口会显示/dev/vedio0 /dev/vedio1记住插入摄像头的端口号;
ls /dev/video* //插上摄像头后打开终端查看是否检测到摄像头
3、准备工作,下载usb_cam包,该包将摄像头图像通过sensor_msgs::Image消息发布出去
mkdir -p camera_ws/src //新建工作空间
cd camera_ws/src/
git clone https://github.com/bosch-ros-pkg/usb_cam.git //克隆功能包
cd ..
catkin_make //编译
4、准备工作,修改src/usb_cam/launch/usb_cam-test.launch,单目的launch文件如图,将第三行摄像头端口/dev/video0改为你的端口,第六行参数像素格式,usb_cam支持三种yuyv mjpeg uyvy先设置为yuyv移动摄像头如果画面很卡顿那就轮流试试mjpeg和uyuv
<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="640" />
<param name="image_height" value="480" />
<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>
5、运行单目摄像头
cd ~/camera_ws
source devel/setup.bash
roslaunch usb_cam usb_cam-test.launch
6、运行双目俩usb端口摄像头,复制一份usb_cam-test.launch重命名后覆盖删除原内容为如下内容,然后运行步骤与上面单目相同,只是launch文件名不同
<launch>
<group ns="camera1">
<node name="usb_cam1" pkg="usb_cam" type="usb_cam_node" output="screen" >
<param name="video_device" value="/dev/video0" />
<param name="image_width" value="640" />
<param name="image_height" value="480" />
<param name="pixel_format" value="yuyv" />
<param name="camera_frame_id" value="usb_cam" />
<param name="io_method" value="mmap"/>
</node>
</group>
<group ns="camera2">
<node name="usb_cam2" pkg="usb_cam" type="usb_cam_node" output="screen" >
<param name="video_device" value="/dev/video1" />
<param name="image_width" value="640" />
<param name="image_height" value="480" />
<param name="pixel_format" value="yuyv" />
<param name="camera_frame_id" value="usb_cam" />
<param name="io_method" value="mmap"/>
</node>
</group>
</launch>
7、运行双目单usb端口摄像头,launch文件与第四步单目的相同,只是改第四第五行分辨率640*480为2560*720,如果不改分辨率640*480只有双目其中一个摄像头的画面,2560*720是两个1280*720的图像,改完分辨率运行步骤与单目相同
<param name="image_width" value="2560" />
<param name="image_height" value="720" />
8、使用rostopic list 可以查看到topic,单目和双目单usb端口是一个/usb_cam/image_raw话题,双目双端口是两个/usb_cam/image_raw话题。标定工作和分割双目单usb端口2560*720图像话题为俩1280*720 图像话题工作后面再更新