# parrot2无人机yolov3目标物体追踪
- yolov3目标识别
- opencv颜色识别
- 物体追踪
- 无目标搜索(施工中ing20181106)
## Overview
- [MRZIRC比赛](http://www.mbzirc.com/challenge/2020)的第一个竞赛项目是无人机在100X60m的区域下寻找有悬挂气球的无人机,并且捕获目标气球,学校校内赛是在50mX60m的范围内寻找目标气球并且刺破;
- [ROS](www.ros.org)是一款为机器人设计的系统框架,[parrot2](http://www.parrot.com.cn/)无人机提供ROS的开发通信环境[bebop_autonomy](http://wiki.ros.org/bebop_autonomy);
- [darknet yolov3](https://pjreddie.com/darknet/yolo/)是深度学习的目标检测框架,C++/C编写;
- 这个项目是基于一位外国的github的项目修改的[darknet_ros](https://github.com/leggedrobotics/darknet_ros)项目。
<img src="doc/record.gif">
## Prepare
- 笔记本配置:i5,GTX1060
- 软件环境:Ubuntu16.04、 kinetic版本ROS
## Vidio
- [YouTube](https://youtu.be/F69QrPSHUOs)
## How to used
### build
```
cd catkin_ws/src
git clone https://github.com/AutonomyLab/bebop_autonomy.git
git clone https://github.com/ShiSanChuan/darknet_ros.git
cd ..
catkin build bebop_autonomy
catkin build darknet_ros -DCMAKE_BUILD_TYPE=Release
source devel/setup.bash
```
### Download weights
- 原COCO data 训练好的框架
```
wget http://pjreddie.com/media/files/yolov3-voc.weights
wget http://pjreddie.com/media/files/yolov3.weights
```
- 比赛训练的模型框架文件(待传)
### run
- 参照bebop_autonomy的链接,打开parrot2后笔记本连接parrot的网络,运行
```
roslaunch bebop_driver bebop_node.launch
```
- 运行成功后运行darknet ros,启动后飞机会自动起飞,注意安全,若不希望起飞在代码中修改下
```
roslaunch darknet_ros yolo_v3.launch
```
- 停止运行,在terminal输入
```
rostopic pub --once /bebop/land std_msgs/Empty
```
<img src="doc/opencv_detect.png">
<img src="doc/YOLO V3_screenshot_25.09.2018.png">
- opencv颜色提取获取参数,使用的是RGB设置的阈值,可修改为HSV,文件中有个全色图圈可用来测试下范围,调整完的参数在程序中修改
```
cd doc
g++ -std=c++11 Inrang.cpp -o Inrang `pkg-config --cflags --libs opencv`
./Inrang YOLO V3_screenshot_17.10.2018.png
```
<img src="doc/opencv_use.png">
## Thinking
- 通过深度学习框架比如yolo来识别物体是可以的,不过受到图片尺寸问题,对于近处目标(大概3米)的目标可以识别,但对于远处目标(在parrot传来的428x240图片里大概占5个像素),这种目标是无法分辨出来的,因此在原基础代码上添加opencv的颜色识别的线程,用于辅助yolo的识别,使得无人机在比较远处能先靠近物体,若不是该目标物体再移动视角环境,找下一个疑似目标;
- 由于目标是移动的或者静止的,因此通过PID调整飞行参数使得目标的中心位置与图像中心位置重合。
## Parament
- 安装原darknet_ros程序步骤,需要将训练模型的weight和cfg文件配置好,比赛识别的目标是气球因此专门为气球识别训练了几组weight
```
catkin_wc/src/darknet_ros/darknet_ros/yolo_network_config/weights/
catkin_wc/src/darknet_ros/darknet_ros/yolo_network_config/cfg/
```
- 在launch文件里修改launch启动文件,yaml文件设置识别阈值和目标类型
```
catkin_wc/src/darknet_ros/darknet_ros/launch/yolo_v3.launch
<rosparam command="load" ns="darknet_ros" file="$(find darknet_ros)/config/yolov3-MBZIRC.yaml"/>
```
## used on other UAV
- 若要使得该无人机目标追踪能在其他平台上使用(比如M100),除了处理修改自己要的识别目标的模型文件外,还必须按照bebop的话题修改ROStopic,同时对于无人机的控制命令(起飞、降落、姿态调整)的rostopic保持一致;
```
<param name="bebop_topic_head" value="/bebop" />
```
- 若要修改识别目标,先按照darknet官网训练目标的模型文件,在调节下远处目标识别的大概颜色。
## Some Problem
- 在代码里面加入无目标时的路径搜索,参考的是这个大佬的[网页动画](http://www.webhek.com/post/pathfinding.html),先在20x20的框图以起始和中心(或者其他目标点),所以没有目标时无人机回往中心点靠;
- 问题一是~~没有GPS~~,所以每次发送控制命令时计算无人机坐标有点难;
- 问题二是无人机摄像头识别范围,每次无人机经过地图的点,将没有目标的地图点的高度下降,再随时间上涨
- 问题三是有摄像头通过opencv识别到物体时,如何确定物体在地图中的点(距离),靠近后用yolo下不是该物体同样方法至该点至最负
## Contributier
- 队友[Voyager](https://github.com/VoyagerIII)
- M. Bjelonic
**"YOLO ROS: Real-Time Object Detection for ROS"**,
URL: https://github.com/leggedrobotics/darknet_ros, 2018.
@misc{bjelonicYolo2018,
author = {Marko Bjelonic},
title = {{YOLO ROS}: Real-Time Object Detection for {ROS}},
howpublished = {\url{https://github.com/leggedrobotics/darknet_ros}},
year = {2016--2018},
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于opencv+C++开发的无人机yolov3目标物体追踪(以气球为目标)+开发文档说明,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于opencv+C++开发的无人机yolov3目标物体追踪(以气球为目标)+开发文档说明,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于opencv+C++开发的无人机yolov3目标物体追踪(以气球为目标)+开发文档说明,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 项目简介: parrot2无人机yolov3目标物体追踪 yolov3目标识别 opencv颜色识别 物体追踪 无目标搜索
资源推荐
资源详情
资源评论
收起资源包目录
基于opencv+C++开发的无人机yolov3目标物体追踪(以气球为目标)+开发文档说明(毕业设计&课程设计&项目开发) (190个子文件)
CheckForObjects.action 187B
yolo_v3.launch.bak 1KB
lsd.c 44KB
data.c 44KB
parser.c 43KB
go.c 43KB
image.c 42KB
classifier.c 34KB
network.c 30KB
detector.c 28KB
lstm_layer.c 24KB
region_layer.c 19KB
convolutional_layer.c 18KB
darknet.c 18KB
attention.c 15KB
rnn.c 15KB
utils.c 14KB
gru_layer.c 13KB
nightmare.c 13KB
coco.c 13KB
yolo_layer.c 12KB
yolo.c 11KB
connected_layer.c 11KB
captcha.c 11KB
compare.c 11KB
demo.c 10KB
batchnorm_layer.c 10KB
detection_layer.c 10KB
rnn_layer.c 10KB
deconvolutional_layer.c 10KB
blas.c 9KB
crnn_layer.c 9KB
local_layer.c 9KB
box.c 8KB
gemm.c 8KB
cifar.c 8KB
segmenter.c 8KB
regressor.c 7KB
rnn_vid.c 7KB
normalization_layer.c 5KB
cost_layer.c 5KB
reorg_layer.c 5KB
voxel.c 5KB
layer.c 4KB
writing.c 4KB
tag.c 4KB
matrix.c 4KB
cuda.c 4KB
maxpool_layer.c 4KB
route_layer.c 4KB
tree.c 4KB
super.c 4KB
dice.c 4KB
activations.c 3KB
softmax_layer.c 3KB
upsample_layer.c 3KB
option_list.c 3KB
shortcut_layer.c 3KB
crop_layer.c 3KB
swag.c 2KB
logistic_layer.c 2KB
avgpool_layer.c 2KB
l2norm_layer.c 2KB
activation_layer.c 2KB
dropout_layer.c 2KB
art.c 1KB
list.c 1KB
col2im.c 1KB
im2col.c 1KB
image_interface.c 732B
YoloObjectDetector.cpp 27KB
camer_fix.cpp 10KB
Inrang.cpp 2KB
yolo_object_detector_node.cpp 427B
blas_kernels.cu 33KB
convolutional_kernels.cu 10KB
crop_layer_kernels.cu 7KB
activation_kernels.cu 6KB
deconvolutional_kernels.cu 5KB
maxpool_layer_kernels.cu 3KB
col2im_kernels.cu 2KB
im2col_kernels.cu 2KB
avgpool_layer_kernels.cu 2KB
dropout_layer_kernels.cu 1KB
LICENSE.fuck 474B
LICENSE.gen 6KB
record.gif 21.58MB
.gitignore 270B
.gitignore 200B
LICENSE.gpl 34KB
stb_image.h 254KB
stb_image_write.h 63KB
darknet.h 19KB
blas.h 7KB
activations.h 3KB
image.h 2KB
convolutional_layer.h 2KB
data.h 2KB
utils.h 2KB
local_layer.h 943B
共 190 条
- 1
- 2
资源评论
- ajiaa_2024-05-19资源使用价值高,内容详实,给了我很多新想法,感谢大佬分享~
梦回阑珊
- 粉丝: 3008
- 资源: 855
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功