yolov3移植到ros:ubuntu16.04+cuda9.0+GTX 1660Ti

官方文档
https://github.com/leggedrobotics/darknet_ros

一、用预训练权重

1、

cd catkin_workspace/src
git clone --recursive [email protected]: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那一行注释掉就行。
yolov3移植到ros:ubuntu16.04+cuda9.0+GTX 1660Ti_第1张图片

官方也提到了解决办法
在这里插入图片描述

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”(不知道程序在哪里改了),改一下就好了
yolov3移植到ros:ubuntu16.04+cuda9.0+GTX 1660Ti_第2张图片

二、训练自己的数据集

你可能感兴趣的:(ros)