基于地面站上的深度学习软硬件,实现室外飞行无人机对目标的识别与跟踪。

一、系统框架

卷积神经网络是YOLOv3 :

操纵系统Ubuntu16.04;

GPU为一块NVIDIA GeForce GTX 1080Ti;

程序调用DroneKit

生成各种指令所对应的通讯协议;

无人机通讯协议MAVLink :

数传为3DR电台;

飞控硬件Pixhawk,固件Ardupilot ;

相机是SJCAM,使用飞越两轴云台;

图传为RC832 和 TS832模块,接收端配合EasyCap USB视频采集卡 。

二、飞行演示

直接使用YOLO官网提供的权重文件,检验程序对人体不同姿态、不同角度、被遮挡状态的识别情况,并完成无人机对人行走的跟踪。

无人机初始高度5m,云台角度固定,使相机有相对水平面向下45°的夹角。

https://zhuanlan.zhihu.com/p/50900595

三、踩过的坑

1.四旋翼套装配备的廉价电池充电器质量低劣,先后造成四块电池被搞坏。

2.廉价遥控器曾经发生各种意想不到的情况导致坠机。

3.首先选择的是APM飞控板,计划使用DroneKit发送命令,后来发现想要DroneKit发送相对于机体坐标系的运动指令,Ardupilot固件版本要比较高,而APM飞控板对Copter最高只支持到3.2.1版本,于是只能更换Pixhawk飞控板。

4.参考其他DroneKit用户,Pixhawk的固件版本最好为AC3.3。尝试了多种刷固件方式几近绝望,最后发现“下载ArduCopter源代码+使用QGroundControl上传”的方式可行。

5.廉价云台不能设定云台的初始角度,而通过遥控器更改云台俯仰角之后,云台保持角度的功能发生问题。

6.为了把工作站搬到室外使用,买了汽车蓄电池和充电器,希望通过逆变器将其转换成220V交流电,但是发现逆变器的功率不仅要高于工作站内CPU、GPU等元器件的总功率,而且要高于工作站电源的功率,才能顺利启动。

四、仍存在的问题

1.图传或视频采集卡质量差,导致1080P相机拍摄的视频,传回工作站之后分辨率只有640*480。相对于机载处理器,地面工作站进行深度学习的优势在于算力更强、可以对高清图像实时处理,然而目前的图传埋没了这种能力。

2.疑似数传功率低,导致飞机稍微远离工作站后数据链便容易丢失。但是这种现象在使用笔记本操纵无人机的时候并没有出现。

3.多种电源需要单独供电(四旋翼、相机、图传接收、工作站),降低了工作效率。如果使用机载TX2进行目标识别,并让无人机电源给相机供电,似乎只需要一块电池。

4.并没有使用改变飞机偏航角的命令(DroneKit目前还不支持定义偏转角速度),所以飞机是以“平行跟随”的方式完成的跟踪,并没有“尾随”的效果。

5.光线的影响:在晴天试验,本以为飞机顺光方向拍摄效果会比较好,但事实上顺光拍摄时目标识别召回率比逆光要低,原因尚不明。

6.最严重的问题:DroneKit/Mavlink在接收到的运动指令与当前执行运动指令不同时,总是需要先停止当前运动,再执行新的运动。这使其在接收连续变化运动指令时,飞机姿态持续抖动,无法实现平滑的变速、变向。目前还没有搞清问题原因究竟在于DroneKit还是Mavlink,但是它迫使我放弃了对飞行速度的PID控制而只能使用定常速度,严重影响了跟踪效果。如果不能解决此问题,可能最终还是要放弃DroneKit/Mavlink而转向MavROS?