ROS下实现darknet_ros目标检测

一. 代码下载

代码Github主页:https://github.com/leggedrobotics/darknet_ros
打开命令行终端,键入以下命令下载

mkdir -p catkin_ws/src
cd catkin_ws/src
git clone --recursive [email protected]:leggedrobotics/darknet_ros.git
cd ../

二. 编译

在ROS工作空间目录catkin_ws下,执行命令:

catkin_make -DCMAKE_BUILD_TYPE=Release

此时开始编译整个项目,并会检查catkin_ws/src/darknet_ros/darknet_ros/yolo_network_config/weights文件下有没有weights权重文件(如下图所示),默认下载好的代码里面为了节省体积是不带权重文件的。因此编译之后会自动开始下载,需等等待一段时间。 如果刚好你之前已经下载好了模型文件,可在开始编译之前就把权重文件拷贝到上述文件夹下,就不会再次下载了。
ROS下实现darknet_ros目标检测_第1张图片

三. 运行代码

1. 图像话题发布

因为darknet_ros会直接订阅指定的图像话题名,然后对图像进行检测,绘制检测框,并发布相应的检测话题,因此首先需要找一个能够发布图像话题的ROS包,这里推荐使用ROS官方提供的usb_cam驱动包,可以直接将电脑自带摄像头或连接电脑的USB摄像头采集的图像发布为ROS图像话题。

下载摄像头驱动:

sudo apt-get install ros-melodic-usb-cam

然后发布摄像头图像话题:

roslaunch usb_cam usb_cam-test.launch

如果顺利的话应该可以看到实际的图像显示界面。

2. 运行darknet_ros

然后执行darknet_ros进行检测,在运行检测之前需要更改一下配置文件,使得darknet_ros订阅的话题与usb_cam发布的图片话题对应。

打开darknet_ros/config/ros.yaml文件,修改:

subscribers:
  camera_reading:
    topic: /camera/rgb/image_raw
    queue_size: 1

subscribers:
  camera_reading:
    topic: /usb_cam/image_raw
    queue_size: 1

新开一个命令行终端,在工作空间根目录catkin_ws下,执行:

source devel/setup.bash
roslaunch darknet_ros darknet_ros.launch

出现对摄像头采集视频流图像的实时检测结果。

3. 切换不同检测模型

可根据自己的设备调整更换不同的模型进行目标检测
打开catkin_ws/src/darknet_ros/darknet_ros/launch文件夹下的darknet_ros.launch文件
在第14行中,修改参数更换模型
ROS下实现darknet_ros目标检测_第2张图片
修改参数后,重新启动launch文件

roslaunch darknet_ros darknet_ros.launch

4. 使用GPU加速检测

想要提高检测帧数检测帧数,我们需要安装NVIDIA驱动并安装CUDA,来使用GPU加速进行检测,此时,需要将/darknet_ws/src/darknet_ros/darknet文件下的Makefile文件修改如下 。

GPU = 1
CUDNN = 1
OPENCV = 1

ROS下实现darknet_ros目标检测_第3张图片
完成修改后需要到工作空间下重新编译:

catkin_make

你可能感兴趣的:(UAV,ROS,目标检测,自动驾驶,计算机视觉,ubuntu,python)