darknet_ros的安装以及在PX4无人机仿真平台的目标检测

参考资料:
https://github.com/leggedrobotics/darknet_ros
https://gitee.com/robin_shaun/XTDrone
https://www.yuque.com/xtdrone/manual_cn/target_detection_tracking
https://blog.csdn.net/qq_42145185/article/details/105730256

无人机仿真平台的搭建以及目标识别与追踪用的肖昆老师的XTDrone项目,十分感谢,相关网页:https://gitee.com/robin_shaun/XTDrone,我这里只是对darknet_ros的安装以及在仿真无人机上的使用做了个总结。
如果有造成侵权请联系我。
如果觉得这篇文章对你有用,请仔细查看XTDrone的使用文档,会有很多的收获,再顺便在gitee和github上给XTDrone项目各点一个star吧,一定能从中受益很多。
我在b站也有流程演示的视频,要是有不懂的可以看一下:BV1rL4y1G7n5

一、安装ROS

请从官网下载:http://wiki.ros.org/Installation/Ubuntu安装时注意ROS与Ubuntu版本的对应,如果对gazebo版本有要求的话安装时请在执行(以18.04对应的melodilc为例) sudo apt-get install ros-melodic-desktop-full指令时改为 sudo apt-get install ros-melodic-desktop然后再安装gazebo

ros安装完成之后在主目录创建工作空间

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
source devel/setup.bash

二、安装OpenCV和boost

OpenCV下载官网:https://opencv.org/releases/
boost下载官网:https://www.boost.org/
ROS安装时已经安装了OpenCV 3.2,可以选择不装,如果想另外再安装请安装3.3以下的版本,版本过高的话可能在编译darknet_ros时会出现错误,这个问题后面也会提到。

三、安装usb_cam

要使用usb摄像头作为输入的话,需要使用ROS的usb_cam,其网址为https://github.com/bosch-ros-pkg/usb_cam。安装与否不影响后面无人机仿真目标识别与追踪的使用

下载usb_cam并配置环境

sudo apt-get install ros-melodic-camera-info-manager
sudo apt-get install ros-melodic-image-view
cd ~/catkin_ws/src
git clone https://github.com/bosch-ros-pkg/usb_cam.git
cd ..
catkin_make
source ~/catkin_ws/devel/setup.bash

编译usb_cam

cd src/usb_cam
mkdir build
cd build
cmake ..
make

测试一下usb摄像头
1.打开launch文件,根据摄像头编号对文件进行修改。一般笔记本自身的摄像头是video0,usb外接摄像头是video1。

cd ~/catkin_ws/src/usb_cam/launch
gedit usb_cam-test.launch

2.打开新的终端,运行roscore

roscore

3.运行测试

cd ~/catkin_ws/src/usb_cam/launch
roslaunch usb_cam usb_cam-test.launch

若成功显示图像,说明运行正确。可以使用ctrl+c中断程序。
运行时可能会出错需要多加一行代码

source /home/youruser/catkin_ws/devel/setup.bash
cd ~/catkin_ws/src/usb_cam/launch
roslaunch usb_cam usb_cam-test.launch

为了方便不用每次都设置环境变量,可以直接在barshc中修改

sudo gedit ~/.bashrc

在barshc中最下面加上

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/catkin_ws/

重启barshc

source ~/.bashrc
echo $ROS_PACKAGE_PATH #若显示路径,则表示设置成功

四、darknet_ros下载安装

darknet_ros源码网页 :https://github.com/leggedrobotics/darknet_ros
在gitclone前请先设置SSH,否则无法顺利从github上下载源码

cd ~/catkin_ws/src
git clone --recursive git@github.com:leggedrobotics/darknet_ros.git
cd ../

如果出现这样的错误,说明没有设置好SSH key,SSH key设置教程:
https://blog.csdn.net/qq_45067735/article/details/108027310

由于下载太慢我这里提供了下载完的darknet_ros的压缩文件,下载完毕后在catkin_ws/src中解压提取即可:https://download.csdn.net/download/qq_45067735/12713492

编译darkne_ros

catkin_make -DCMAKE_BUILD_TYPE=Release

编译时可能会出现这样的错误

这是OpenCV的版本原因,我这里安装OpenCV 4.4出现这样的错误,安装Opencv 3.2后就没有这样的错误了,这也是我前面建议安装OpenCV 3.3版本以下的原因

运行darknet_ros
执行darknet_ros进行检测,在运行检测之前需要更改一下配置文件,使得darknet_ros订阅的话题与usb_cam发布的图片话题对应。
打开catkin_ws/src/darknet_ros/darknet_ros/config/ros.yaml文件,修改:

subscribers:camera_reading:topic: /camera/rgb/image_rawqueue_size: 1

改成

subscribers:camera_reading:topic: /usb_cam/image_rawqueue_size: 1

设置编写环境变量

cd ~/catkin_ws
source devel/setup.bash

启用YOLO

roslaunch darknet_ros darknet_ros.launch

同时打开另一个终端启用usb_cam

roslaunch usb_cam usb_cam-test.launch

运行时可能会出现这样的报错:
这个问题困扰我很长时间,我也咨询了一些人,他们给了我一些说法和解决方案,有的成功有的不成功,考虑到每个人的原因可能不同,我这边还是都列举出来:
1、权重文件的问题。从官网下载权重文件可以解决。
2、darknet_ros代码下载的问题。从gitee上下载再运行可以解决。
3、ROS的问题。我尝试了前两种方法发现没有解决,后来发现可能是ROS的问题,我当时ROS是用的国内安装源下载运行时出现了这个问题,后来从官网下载之后运行就没有问题了。
4、ubuntu系统的问题,建议换一下系统的版本,比如18.04.2换成18.04.5试试

成功运行后会出现画面:

虽然这里显示的是YOLO V3,但是实际上是YOLOv2-tiny,检测结果有些问题,我们需要把预训练集换成YOLO v3的来检测,更换如下:找到config文件可以看到一些数据集,我们需要修改launch文件来启用YOLOv3

打开launch文件

修改 darknet_ros.launch

arg name="network_param_file"         default="$(find darknet_ros)/config/yolov2-tiny.yaml"/改为arg name="network_param_file"         default="$(find darknet_ros)/config/yolov3.yaml"/

如图:

重新启动YOLO v3

roslaunch darknet_ros darknet_ros.launch


不用英伟达显卡的话fps比较低在0.1左右,为了能达到实时需要修改darknet的makefile,在此之前请先安装英伟达显卡驱动已经CUDA、CUDNN。

这里特别提醒一下,如果显卡是30显卡的要安装,要安装11.0以上的cuda和相对应的cudnn,因为30显卡的架构发生了改变,11.0以下版本的cuda不再适用,安装11.0以上的cuda应该就能解决问题。否则可能会遇到报错比如:CUDA Error: invalid device symbol

在/catkin_ws/src/darknet_ros/darknet中找到Makefile文件。
根据需求自己做出修改:
GPU=1 使用CUDA和GPU(CUDA默认路径为/usr/local/cuda)
CUDNN=1使用CUDNN v5-v7加速网络(CUDNN默认路径/usr/local/cudnn)
OPENCV=1 使用OpenCV 4.x/3.x/2.4.x,运行检测视频和摄像机
OPENMP=1 使用OpenMP利用多CPU加速
DEBUG=1 编译调试版本

完成修改之后需要到工作空间下进行编译:

cd ~/catkin_ws
catkin_make

再启动darknet_ros,可以看到fps已经提高了很多

五、无人机仿真平台的基础搭建

可以参照我之前的博客:https://blog.csdn.net/qq_45067735/article/details/107303796

六、无人机仿真平台的目标检测与追踪

这里要说明一下:XTdrone仿真中有darknet_ros,下面代码是把XTdrone里的darknet_ros复制到catkin_ws中,上面编译的darknet_ros会被覆盖掉。XTdrone里的darknet_ros是XTdrone作者修改过的可以运行Yolov4,我之前仿真的时候还没有这个修改。这可能会导致在无人机仿真运行darknet_ros的时候可能会出现问题,同时为了到时候节省时间,请把上文的权重文件复制备份省的编译的时候要再度下载耗时间。若是有问题请到XTdrone官网(https://www.yuque.com/xtdrone/manual_cn/target_detection_tracking)去看看有没有解决方法

再度编译darknet_ros

cp -r ~/XTDrone/sensing/object_detection_and_tracking/ ~/catkin_ws/src/
cd ~/catkin_ws
catkin_make

启用YOLO

source devel/setup.bash
roslaunch darknet_ros target_track.launch

此时先是加载网络参数,然后等待图像到来

然后启动PX4室外场景仿真,此时YOLO收到了图像,开始进行目标检测

cd ~/PX4_Firmware
roslaunch px4 outdoor1.launch

一开始会看到水,是因为摄像头有一部分浸没在地面,而地面以下是海洋。这个场景比较大加载出来之后把场景向右进行拖动,红色箭头指的是无人机的初始位置。

建立通信

cd ~/XTDrone/communication
python multirotor_communication.py typhoon_h480 0

控制无人机起飞

cd ~/XTDrone/control
python multirotor_keyboard_control.py typhoon_h480 1 vel

启用云台控制(这个脚本一定要开,否则无法追踪)

cd ~/XTDrone/sensing/gimbal
python run.py typhoon_h480 0

您可以选择在原地等待行人走过来,也可以主动控制飞机去找行人。等目标出现后,先关闭multirotor_keyboard_control.py(不然两个程序的指令会冲突),然后启动(注意该脚本中的sys.path.append(‘/home/robin/catkin_ws/devel/lib/python2.7/dist-packages’)路径要对应修改)

cd ~/XTDrone/control
python yolo_human_tracking.py typhoon_h480 0

然后飞机会自动跟踪检测到的行人。
有的时候草坪的贴图会显示不出来,但不影响仿真进行,只是不太美观。

参考资料:
https://github.com/leggedrobotics/darknet_ros
https://gitee.com/robin_shaun/XTDrone
https://www.yuque.com/xtdrone/manual_cn/target_detection_tracking
https://blog.csdn.net/qq_42145185/article/details/105730256

darknet_ros安装的以及在PX4无人机仿真平台的目标检测相关推荐

  1. Ubuntu18.04下基于ROS和PX4的无人机仿真平台的基础配置搭建(XTDrone的)

    摘自:https://www.ngui.cc/51cto/show-23557.html Ubuntu18.04下基于ROS和PX4的无人机仿真平台的基础配置搭建 编程学习 · 2020/7/12 1 ...

  2. Ubuntu18.04基于ROS和PX4的仿真平台配置

    1.前言 作者只是一名双非本科院校飞控专业的大二学生,想以此记录一下自学飞控的经历,也希望能给刚刚入门的同学一些微薄的帮助. 这个环境的安装可以说是西天取经一般,但安装完后发现如果有领路的人,其实花费 ...

  3. [UAV] 无人机仿真平台搭建

    [Amovlab] 开源项目 从0开始的无人机仿真平台搭建 1. 基础环境 1.1 新建本地代码仓库 1.2 编译 添加路径(记得 将Path To Prometheus替换成你的文件路径) 1.3 ...

  4. XTDrone无人机仿真平台

    XTDrone无人机仿真平台 背景 XTDrone 展示 背景 近年来,无人机的智能化程度不断提高,集群的规模不断增大,在这种背景下,良好的无人机通用仿真平台的重要性越发凸显.相较于无人车和地面机器人 ...

  5. ROS+Bebop2无人机+YOLO算法实现无人机视角的实时目标检测

    前言: 很久之前,用TK1玩过一段时间的ROS,再加上各种硬件(Arduino.激光雷达.编码电机等),模仿着做过Turtlebot小车,实现了部分Turtlebot部分的功能,最后因为雷达被我玩烧了 ...

  6. 树莓派4B安装系统,pytorch,opencv搭建深度学习目标检测模型

    树莓派4B跑深度学习模型 树莓派目标检测 树莓派4B跑深度学习模型 树莓派4B简介 树莓派系统烧录 烧录步骤 配置树莓派开机wifi连接 远程连接前的配置 远程连接 获取树莓派的IP地址 进入到树莓派 ...

  7. 无人机巡检场景小目标检测与量化加速部署方案详解

    ‍‍在社会活动和社会生产中,巡检是一个必不可少的环节.然而,传统的人工巡检方式存在效率低下.成本高昂.安全风险大等问题,限制了巡检的效果和范围.无人机巡检因其高效.灵活.安全的特点被越来越多的企业采用 ...

  8. Ubuntu PX4无人机仿真环境配置

     目录 一.VM虚拟机安装ubuntu18.04 1.VMware安装 2.新建虚拟机 二.Ubuntu系统配置 1.更改软件安装源 2.安装中文输入法 三.PX4环境搭建 1.安装git 2.下载p ...

  9. 无人机仿真平台的搭建

    安装系统 Ubuntu 18.04的安装具体可参考这篇博文 安装仿真软件 简介 1.ROS(Robot Operating System,机器人操作系统),是专为机器人软件开发所设计出来的一套电脑操作 ...

最新文章

  1. 去除MyEclipse频繁弹出的Update Progress窗口
  2. WordPress,SAP Kyma和微信三者的集成
  3. cocos2d-x开发之动作游戏实战--5
  4. BeetleX实现MessagePack和Protobuf消息控制器调用websocket服务详解
  5. c++中的异常---2(异常接口声明,异常变量的生命周期,异常的多态使用)
  6. 使用PostgREST的RestAPI操作之 类型转JSON对象 | 嵌入视图
  7. LOJ10155数字转换
  8. 监控PGA最大空间、分配
  9. spring hibernate druid mysql_使用Spring4的JavaConfig整合Druid Hibernate4.3
  10. Swift - 动画效果的实现方法总结(附样例)
  11. 左程云《程序员代码面试指南》C++实现
  12. 蘑菇战争2显示没有连接服务器,蘑菇战争2新手怎么玩?四步带你解决新手难关[多图]...
  13. linux测试上下行最大网速和实时网速
  14. 点集拓扑——基本知识点整理归纳
  15. 国科大学习资料--最优化计算方法(王晓)--期末考试试卷2
  16. 生产力 生产关系 生产工具_破坏生产力的5种方法
  17. 等势线matlab仿真
  18. 全志H616开发板Orange Pi Zero2连接香橙派5寸TFT液晶屏的测试说明
  19. CSP-SM常见问题及解答
  20. 人行征信上贷款余额指的是什么?(图文)

热门文章

  1. js之DOM操作(插入节点insertBefore())
  2. 炉石传说服务器维护时间2020,炉石传说新版本更新时间 2020炉石传说版本时间表...
  3. tgp服务器怎么修改密码,tplogin.cn怎么重新设置(修改)密码? | 192路由网
  4. JAVA DDOS 攻击
  5. 有关微信公众号文章的那些事儿(Spider版)
  6. Oracle数据库体如何用才是最好用的呢?
  7. 用python打印三角形图形创意图片_实训二  2、以惠山泥人“大阿福”为载体,运用图形创意的方法进行图形的三维拓展。...
  8. 【机器学习】生成对抗网络 GAN
  9. 如何让ChatGPT显示图片,连续找图
  10. java计算机毕业设计猫咪伤患会诊复查医疗平台源码+系统+mysql数据库+lw文档