因为darknet_ros会直接订阅指定的图像话题名,然后对图像进行检测,绘制检测框,并发布相应的检测话题,因此首先需要找一个能够发布图像话题的ROS包,这里经推荐使用ROS官方提供的usb_cam驱动包,可以直接将小车摄像头采集的图像发布为ROS图像话题。
1、下载摄像头驱动包usb_cam
# 方式一:直接终端输入,通过apt便捷安装
cd test/src/
sudo apt-get install ros-melodic-usb-cam
# 方式二:通过下载源码安装
git clone https://github.com/ros-drivers/usb_cam
2、发布摄像头图像话题
cd usb_cam
roslaunch usb_cam usb_cam-test.launch
其中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="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>
pkg 指定的是 usb_cam功能包
type 指定的是 python 编写的 usb_cam_node.py 文件
name 是 launch 里对节点重命的名为 usb_cam,也可以是其他名称
output 输出方式为在屏幕输出 编写保存后即可通过 launch 的方法启动
如果出现如下报错:
解决办法:
cd usb_cam
sudo apt-get install ros-melodic-image-view
roslaunch usb_cam usb_cam-test.launch
此时可看到摄像头发布的图像话题。
3、查看节点和话题
bingda@ubuntu:~$ rosnode list
/image_view
/rosout
/usb_cam
bingda@ubuntu:~$ rostopic list
/image_view/output
/image_view/parameter_descriptions
/image_view/parameter_updates
/rosout
/rosout_agg
/usb_cam/camera_info
/usb_cam/image_raw
4、在rviz中显示摄像头数据
虚拟机终端命令打开rviz:
rviz
然后Add添加topic,在By topic中选择/usb_cam/image_raw,点击ok,即可实时显示摄像头数据。