无人机抓捕

本文档详细介绍了使用DJI Onboard SDK开发无人机抓捕系统的过程,包括目前在仿真环境中实现的物体跟踪功能,硬件和软件平台配置,ROS网络图的工作流程,以及在Windows和Linux环境下的仿真步骤。遇到的问题包括无人机检测不稳定,需要改进数据集和跟踪算法,同时记录了在开发过程中遇到的bug和解决技巧。
摘要由CSDN通过智能技术生成

无人机开发(基于Dji onboard SDK)

目前成果

仿真:发现物体能向大致方向飞行,没检测到飞机会停住。

实验:飞机没检测到无人机无法悬停,跟踪不稳定。

1.很容易出现检测不到无人机的情况,后面需要在新的场景中训练数据集,并且需要在数据集中加入远处的无人机的照片。

2.需要加入uav的probability阈值。

3.记录写下的所发点的坐标,写入log文件,以便后面分析。

4.加入跟踪算法(在ROS中比较麻烦)。

硬件软件平台的搭建

无人机平台 :Dji M210 V2 (with RTK)
机载电脑:Manifold 2-G
相机: Zenmuse X7
开发环境:ROS and C++
在这里插入图片描述

ROS

网络图

在这里插入图片描述

工作流程

dji_sdk作为服务端发布setup_camera_stream服务,这个服务是darknet_ros订阅main_camera_images的前提,需要drone_get_img这个节点召唤这个服务。

dji_sdk发布主相机(Zenmuse X7)的图片(/dji_sdk/main_camera_images)给darknet_ros。

darknet_ros接受图片并识别uav,把uav的信息(/darknet_ros/bounding_boxes)发布给drone_catcher_target。

drone_catcher_target接受uav的信息和飞机的姿态信息(/dji_sdk/attitude),利用图片的信息和本身的姿态通过卡尔曼滤波将识别到的uav转换成相对与飞机的ENU坐标,并将该坐标发布给flight_dots节点。

flight_dots与dji_sdk之间互相通信完成飞点。

节点介绍
dji_sdk

初始化飞机的参数,发布一些例如飞机姿态的信息,发布一些有关飞机的功能的服务例如后续要用的camera_stream。

同时在这个节点中可以关闭advanced sensing功能,这个功能和Windows中的仿真互相矛盾,当要用到windows中DJI Assistant 2 For Matrice 的Simulator时,要将代码中的

enable_advanced_sensing = true;

改为

enable_advanced_sensing = false;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KUJucyMX-1573643040093)(C:\Users\iusl\AppData\Roaming\Typora\typora-user-images\image-20191112204343151.png)]

还有当妙算与M210用USB相连时,妙算会把M210自动识别为USB device,此时遥控器上会黑屏,并且显示X7 SD卡内存不足,此时需要将飞机标识为相机设备,具体方法为

vehicle->advancedSensing->setAcmDevicePath("/dev/ttyACM0");

启发于linux版本的camera_stream_callback_sample例子。

在这里插入图片描述

drone_get_img<
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值