官方文档
https://github.com/leggedrobotics/darknet_ros
一、用预训练权重
1、
cd catkin_workspace/src
git clone --recursive git@github.com:leggedrobotics/darknet_ros.git #直接git的可能有问题,可以去gitclone我编译通过的版本
cd ../
catkin_make -DCMAKE_BUILD_TYPE=Release
**ERROR:**如果用CUDA,直接编译可能会报错
nvcc fatal : Unsupported gpu architecture 'compute_61'.
官方文档也有提到这一点,各种地方查到的全是关于caffe里修改makefile的,懵逼。
其实都是gpu架构的问题,这里是要改/src/darknet_ros/CMakeLists,把61那一行注释掉就行。
官方也提到了解决办法
2、正常编译就可以通过,如果还有头文件什么blabla的问题,百度就可以解决。
下载预训练权重:直接把之前yolov3的复制过来就行
(1)把工作空间添加到ros 环境里(不然打开roscore后找不到编译好的包)
(每新开一个终端都要加这个)
source ~/catkin_ws/devel/setup.bash
(2)src目录下我写了一个程序包image_detect用来测试的,里面有两个可执行程序
一是将本地图片读取发布在topic“/camera/image”上;
二是订阅检测结果的/darknet_ros/detection_image。
先把本地图片发布
python image_publisher.py
(如果是用c++需要加上cmakelists 再catkin_make一下,然后roslaunch package_name xx.launch
)
这时rostopic list
可以看到增加了一个/camera/image
的节点
(3)src目录下另一个程序包就是关于darknet的了,/src/darknet_ros/darknet_ros
里面有两个关键文件夹 /config
和/launch
修改/config/ros.yaml
使发布的话题本地图片能被darknet接收到
(4)重新编译一下
(5)新开一个终端
source ~/catkin_ws/devel/setup.bash
roslaunch darknet_ros yolo_v3.launch
这里我会一直停在“waiting for image “的状态,这时检查一下节点名称对不对,不执行(3)直接(5),发现darknet里用到的节点名称实际上是”/darknet_ros/camera/rge/image_raw”(不知道程序在哪里改了),改一下就好了