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

2023-05-16

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_raw
    queue_size: 1

改成

subscribers:
  camera_reading:
    topic: /usb_cam/image_raw
    queue_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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 【ROS学习笔记10】ROS中配置自定义Cpp头文件和导入自定义Python库

    ROS学习笔记10 ROS中配置自定义Cpp头文件和导入自定义Python库 文章目录 ROS学习笔记10 ROS中配置自定义Cpp头文件和导入自定义Python库一 ROS中的头文件和源文件1 1 自定义头文件调用1 2 自定义源文件调用
  • 【ROS学习笔记13】ROS中的TF坐标变换

    ROS学习笔记13 ROS中的TF坐标变换 文章目录 ROS学习笔记13 ROS中的TF坐标变换前言1 静态坐标变换2 动态坐标变换3 多坐标变换4 坐标系关系查看5 TF坐标变换实操Reference 写在前面 xff0c 本系列笔记参考
  • Android---bitmap优化

    目录 Bitmap 占用内存大小计算 Bitmap Drawable InputStream Byte 之间进行转换 Bitmap 相关方法 BitmapFactory 工厂类 Bitmap 占用内存大小计算 Bitmap 作为位图 xff
  • Linux的基础命令

    一 切换用户 su 用户名 1 切换管理员用户root 需要输入登录时的密码password 密码不显示 2 切换回普通用户 不需要输入密码password 二 目录操作 1 切换目录 1 cd 切换到系统根目录 2 cd 切换到当前用户的
  • uC/OS_II操作系统移植,亲测可用

    uC OS II简介 uC OS II由Micrium公司提供 xff0c 是一个可移植 可固化的 可裁剪的 占先式多任务实时内核 xff0c 它适用于多种微处理器 xff0c 微控制器和数字处理芯片 xff08 已经移植到超过100种以上
  • 树莓派开机出现正确密码循环输入的问题

    树莓派开机出现正确密码无限循环输入的问题 问题状况 树莓派开机后在登录界面输入正确密码后 xff0c 屏幕闪了一下然后还要输入密码 无限循环该现象 问题出现背景 在上一次关机之前进行了Tomcat等环境变量的配置 问题原因 就是最近的一次操
  • 机器人技术(RoboCup 2D)如何进行一场球赛

    合工大RoboCup 2D主要函数注释 以及 机器人技术实验五十题代码已更新 博文连接如下 博文连接点这里 进行一场球赛 xff1a 畅所欲言 欢迎交流 1 启动服务器 打开终端 xff0c 输入rcssserver xff08 tab键自
  • React几种传递参数的方法

    1 父组件向子组件传参 回调函数也是参数的一种 xff0c 也可以传给子组件 xff0c 达到子组件控制父组件的目的 import React from 39 react 39 import ReactDOM from 39 react d
  • Git拉取项目,拉取git更新后的项目

    1 首次拉取git上的项目 这里以idea2020 1展示 1 首先在git上找到克隆链接 2 复制链接之后 回到idea 找到VCS gt Get from Version Control Clone就可以 2 拉取git更新后的项目 第
  • 如何轻松的完成属于自己的一架无人机(免费领取PCB)

    64 翼风室内有刷F1飞控教程 本篇博客的目的 为了让各位无人机爱好者轻松的制作一架属于自己的无人机 xff0c 本篇文章基于翼风室内有刷F1飞控板 xff0c 围绕接口介绍以及使用教程展开介绍 xff0c 希望大家喜欢 xff0c 废话不
  • linux下jps命令找不到的问题

    jps是用来查看进程的命令 搭建rocketmq时 xff0c 常常要用jps来查看名称服务是否已启动 xff0c 但是某些机器报错如下 xff1a bash jps command not found 解决办法如下 xff1a 一 检查基
  • 如何轻松的完成属于自己的一架无人机下篇——调参(免费领取PCB)

    如何轻松的完成属于自己的一架无人机下篇 调参 xff08 免费领取PCB xff09 64 翼风室内有刷F1飞控教程 xff08 QQ群 xff1a 708260375 xff09 本篇博客的目的 上篇主要针对需要的材料以及硬件教程进行了教
  • copy outerHTML、python爬取csdn文章、一键打包个人csdn文章保存到本地

    文章目录 1copy outerHTML复制网站源码法1 1复制源码1 2 遇到的问题 2 python爬取CSDN博客文章 xff08 保存为html xff0c txt xff0c md xff09 2 1 安装依赖2 2 完整代码 3
  • 一、视觉SLAM基础概述

    视觉SLAM主要是以视觉为传感器 xff0c 解决定位与建图的问题 xff0c 其主要可以分为前端 后端 回环检测和建图等四个部分 xff0c 其中各个部分的作用分别为 xff1a xff08 1 xff09 前端 xff1a 前端也称为视
  • HAL库 MPU6050的使用

    HAL库 amp amp MPU6050 HAL库 MPU6050的使用 xff1a 今天在本教程中 xff0c 我们将使用STM32接口MPU6050 xff08 GY 521 xff09 加速度计陀螺仪 同时 xff0c 我将在PC上利
  • HAL库 AB相编码器

    HAL库 AB相编码器 文章涉及Cube MX的配置 Keil代码的编写以及模板存放之BaiDu Pan 用到的软件 xff1a STM32CubeMX amp Keil 5 用到的硬件 xff1a 光电式编码器 F411RE NUCLEO
  • CUBLI 简化 一维模型(有bug)

    CUBLI 简化 一维模型 xff08 有bug xff09 文章目录 CUBLI 简化 一维模型 xff08 有bug xff09 前言一 CUBLI是什么 xff1f 二 制作步骤1 MPU6050 amp amp 编码器操作2 什么是
  • 阻滞增长模型--Logistic模型

    文章目录 写在前面一 思路二 原始数据三 源代码四 结果 写在前面 做了一个作业 xff0c 觉得挺有意思 xff0c 有空就发上来了 阻滞增长模型 Logistic模型的部分推导 思路 xff0c 并给出参考代码 参考书籍 xff1a 数
  • Linux 图形化Git客户端

    Linux用户主要可以通过命令行来管理Git xff0c 不过外面有几种图形化用户界面 xff08 GUI xff09 Git客户软件 xff0c 它们便于用户在Linux桌面上高效 可靠地使用Git xff0c 即便提供不了所有命令行操作
  • .yml文件语法

    项目里用到yml文件作为配置文件 xff0c 了解下其实挺简单 xff0c 它的基本语法如下 大小写敏感使用缩进表示层级关系缩进时不允许使用Tab键 xff0c 只允许使用空格 缩进的空格数目不重要 xff0c 只要相同层级的元素左侧对齐即

随机推荐

  • 嵌入式总线协议(二)——RS232、RS485

    定义 RS232 RS485为电气层 xff08 物理层 xff09 协议 xff0c 依赖于串口 xff08 UART xff09 存在 xff0c 在电气层进行优化处理 xff0c 达到提高抗干扰能力 提高传输速度 增大传输距离的效果
  • 测试TensorFlow的GPU版本安装成功方法

    程序如下 xff1a import tensorflow as tf print 39 GPU 39 tf test is gpu available a 61 tf constant 2 b 61 tf constant 4 print
  • 深度学习数据集下载

    猫狗识别数据集 链接 xff1a https pan baidu com s 1vQcmQts1jIi5 oA6O411aA amp shfl 61 sharepset 提取码 xff1a 5si6 MNIST数据集 链接 xff1a ht
  • PyTorch版本检测及GPU是否安装成功检测

    PyTorch GPU版本安装方法 xff0c 请看anaconda虚拟环境下镜像安装PyTorch 利用jupyter notebook访问虚拟环境 检测程序如下 xff1a span class token keyword import
  • 树莓派 | 摄像头模块的使用方法

    如果觉得本篇文章对您的学习起到帮助作用 xff0c 请 点赞 43 关注 43 评论 xff0c 留下您的足迹 x1f4aa x1f4aa x1f4aa 在此项目中 xff0c 将了解如何使用树莓派摄像头模块进行拍照 xff0c 录制视频等
  • 树莓派小实验 | 制作一个带快门的照相机 & 录像机

    如果觉得本篇文章对您的学习起到帮助作用 xff0c 请 点赞 43 关注 43 评论 xff0c 留下您的足迹 x1f4aa x1f4aa x1f4aa x1f4aa 在此项目中 xff0c 通过连接GPIO引脚的按钮控制拍照 xff0c
  • Jetson Nano 关机、重启命令

    如果觉得本篇文章对您的学习起到帮助作用 xff0c 请 点赞 43 关注 43 评论 xff0c 留下您的足迹 x1f4aa x1f4aa x1f4aa 1 重启命令 xff1a span class token function sudo
  • python保存虚拟环境requirement.txt

    保存 pip freeze span class token operator gt span requirement txt 安装 pip span class token function install span r requirem
  • python虚拟环境移植到另一台电脑

    如果觉得本篇文章对您的学习起到帮助作用 xff0c 请 点赞 43 关注 43 评论 xff0c 留下您的足迹 x1f4aa x1f4aa x1f4aa 本篇文章为python环境打包离线安装移植的所做笔记 xff0c 一是为了日后查找方便
  • python安装jupyter lab和使用插件

    如果觉得本篇文章对您的学习起到帮助作用 xff0c 请 点赞 43 关注 43 评论 xff0c 留下您的足迹 x1f4aa x1f4aa x1f4aa 本篇文章为python安装jupyter lab和使用插件的所做笔记 xff0c 一是
  • Bean的初始化和销毁(java配置方式)

    bean生命周期管理 spring对bean的生命周期的操作提供了支持 xff0c java配置和注解配置分别使用如下方式 xff1a 1 java配置 xff1a 使用 64 Bean 的initMethod和destoyMethod 2
  • UWB使用教程

    前言 本篇文章主要对淘宝商家给的UWB资料进行整理 xff0c 方便大家快速入门 注重UWB定位模块的使用 xff0c 不解释具体的原理 实现功能 xff1a 搭建UWB基站使用上位机配置参数ROS接受UWB的定位信息修改IMU的STM32
  • 【Tiva_C系列】一、ARM Cortex-M4F 处理器

    ARM Cortex M4F 处理器 0 引言1 Cortex M4处理器和基于Cortex M4的MCU2 Cortex M4F处理器结构3 存储器映射4 处理器模式和软件执行的权限级别5 内核寄存器6 异常和中断处理6 1 优先级6 2
  • Windows11解决无法设置移动热点

    文章目录 前言1 解决办法 前言 今天装了个Win11 xff0c 回头发现移动热点无法打开 xff0c 在网上找了好久 xff0c 才找到解决方案 xff0c 这里分享下解决方案 1 解决办法 打开设备管理器 找到网络适配器 启用这两个设
  • python实现aruco的生成和检测

    OpenCV aruco的生成 import cv2 as cv import numpy as np if name 61 61 39 main 39 Load the predefined dictionary dictionary 6
  • SMPL经典论文

    摘要 模型参数从这些数据中学习 xff1a 休息姿势模板 混合 xff08 blend xff09 权重 与姿势相关的混合形状 与身份相关的混合形状 从顶点到关节位置的回归器与姿势相关的混合形状是姿态旋转矩阵的线性函数 xff0c 这个简单
  • 灰度图片二值化matlab

    rge图片灰度化之后 xff0c 往往存在灰度值比较近的情况 根据自己的需求将灰度值调到两个极端值 xff0c 也叫做阈值处理 本文的阈值是自定义的 xff0c 建立在已经读取到灰度图片灰度值的基础之上 存在获取灰度图片最佳阈值的算法 大津
  • Maven Helper插件下载&Maven导入jar包(依赖管理)

    1 maven Helper插件 1 1搜索 File gt Settings gt Plugins gt 搜索Maven Helper 发现没有 1 2 安装 点击Browse reositories gt 选择maven Helper
  • Ubuntu18.04下基于ROS和PX4的无人机仿真平台的基础配置搭建

    Ubuntu18 04下基于ROS和PX4的无人机仿真平台的基础配置搭建 参考资料 xff1a https www yuque com xtdrone manual cn basic config 1 11 https blog csdn
  • darknet_ros安装的以及在PX4无人机仿真平台的目标检测

    darknet ros的安装以及在PX4无人机仿真平台的目标检测 参考资料 xff1a https github com leggedrobotics darknet ros https gitee com robin shaun XTDr