基于深度学习的多旋翼无人机着陆地标识别研究

2019-09-10 07:22鲁青青宋志强陈豪
甘肃科技纵横 2019年6期
关键词:树莓派

鲁青青 宋志强 陈豪

摘 要:首先通过树莓派3B和开源Pixhawk飞行控制器构建性价比高的多旋翼无人机,将Google深度学习框架TensorFlow应用于多旋翼无人机着陆地标识别,采用卷积神经网络模型,将无人机拍摄的停机坪、飞机场、水面、建筑物、森林、草地、道路等图片作为训练集输入神经网络,通过多次训练校正神经网络参数,得到可用于多旋翼无人机着陆时可识别停机坪的神经网络模型,为多旋翼无人机的自主着陆奠定了基础。

关键词:树莓派;PX4飞控;多旋翼无人机;着陆地标识别

中图分类号: TP391               文献标识码: A

0  引言

随着现代技术的进步,特别是人工智能技术的快速发展,未来无人机+行业应用的模式具有广阔的应用前景。多旋翼无人机的起飞和着陆无需跑道,特别是其悬停的特征对于监视一些感兴趣的区域具有非常大的吸引力。自主着陆操作技术对于其能否智能地自主完成任务具有较大的影响,这也是学术界和工业界均希望迫切解决的关键技术,多旋翼无人机能够安全精准地完成自主着陆成为多旋翼无人机技术应用发展的重难点之一。深度学习技术近几年在图像、机器视觉、自然语言处理等领域取得了重大突破,基于TensorFlow的深度学习技术应用日益广泛[1-3],将其应用于多旋翼无人机自主着陆地标识别是有益的尝试。

1  基于Pixhawk的无人机组装

采用Pixhawk飞行控制器[4]结合自行采购的其他部件组装无人机,组成无人机的主要部件如表1所示。

组装后的无人机实物图如图1所示,飞行控制器固件采用开源固件PX4,地面站采用QGroundControl,运行于操作系统Ubuntu 16.04 LTS之上。

基于Pixhawk飞行控制器的无人机主要硬件配置[5]:

主控制器:32位STM32F427 ARM Cortex M4 核心外加浮点运算单元,主频168MHz;

故障保护协处理器:32位STM32F103;

存储器:2M RAM和256K运行内存;

三轴加速度计/陀螺仪:InvenSense MPU6000,测量将三轴加速度和角速度,用于后续姿态控制;

16位陀螺仪:ST Micro L3GD20,用于测量旋转速度;

14位加速度计/磁力计:ST Micro LSM303D,用于确认外部影响和罗盘指向;

气压计:MS5611 MEAS,,用来测量高度。

2  基于树莓派3B的无人机系统硬件构成

树莓派3B和Pixhawk飞行控制器的接线如图2所示。Telem 2的5V连接树莓派的5V (Pin 2);Telem 2的GND连接树莓派的GND (Pin 6);Telem 2的RX连接树莓派的TX (Pin 8);Telem 2的TX连接树莓派的RX (Pin 10)。Pixhawk上,Telem 2的5V接口支持大电流输出,可以给树莓派供电,这样树莓派可作为机载电脑充当决策者的角色,决定无人机的飞行路线。

树莓派3B安装raspbian-stretch版操作系统,TF卡中写入2018-11-13-raspbian-stretch.img系统镜像,其内核为Linux。树莓派3B充当高性能的机载指挥和决策平台,可读取飞行控制器的状态信息,运行机器学习、图像识别等程序,给飞行控制器发送指令,控制无人机的飞行。将连接有摄像头的树莓派与无人机通过串口连接后,树莓派通过无人机供电,搭载树莓派的无人机实物图如图3所示。

3  着陆地标识别系统设计

3.1  着陆地标图片获取

树莓派系统上电启动后自动启动拍照程序。通过无人机在距离地面2米、4米、8米、12米时拍摄的停机坪照片(确保模型训练的强度),作为着陆地标(停机坪)训练集。每次拍摄200张照片,每张照片拍摄时延时3秒,Python程序源代码如下:

import cv2

import os

import numpy as np

import time

i=0

cap = cv2.VideoCapture(0)

while(1):

# get a frame

ret, frame = cap.read()

dir_name='/home/pi/video/'

if not os.path.isdir(dir_name):

os.makedirs(dir_name)

if i<200:

now=time.strftime("%Y-%m-%d-%H_%M_%S",time.localtime(time.time()))

cv2.imwrite(dir_name+now+'.jpg',frame)

time.sleep(3)

i+=1

else:

cap.release()

cv2.destroyAllWindows()

os._exit(0)

無人机在距离地面8米时,拍摄的其中一幅停机坪照片如图4所示。

3.2  其他图片获取

除通过无人机实际拍摄停机坪图片作为训练、测试图片外,还从百度图片中下载水面、飞机场、建筑物、森林、草地、道路等图片,和着陆地标一起形成7个类别的训练集和测试集。

3.3  图片预处理

训练前,首先对获取的图片进行预处理,将图片转维(reshape)成64×64大小,以节省训练时间。程序部分包括:制作Tfrecords数据,将图像的大小转换成64*64,读取Tfrecords数据获得各个图像所对应的image和label,为后续的操作提供数据支持。完整的图像识别步骤如图5所示。

3.4  模型构建及模型训练

建立神经网络模型,将数据输入到神经网络训练,并保存训练好的网络参数。模型结构表如表1所示。

表1网络模型结构表

3.5  基于DroneKit的Python程序开发

树莓派端采用Python进行程序设计,为达到快速开发的效果,采用DroneKit-Python库,其提供了控制无人机的库函数,代码独立于飞行控制器,可运行于机载电脑,本研究将树莓派3B作为机载电脑,可采用串口或无线方式通过MAVLink协议和飞行控制器通信。树莓派操作系统raspbian-stretch或Ubuntu 16.04 LTS安装DroneKit方法比较简单,在终端输入如下命令:

sudo pip install dronekit

树莓派3B通过串口可和Pixhawk飞行控制器通信。

3.6  实验环境搭建

在做树莓派与飞行控制器联调测试之前,应先对树莓派端的Python程序进行仿真,以测试程序是否正确,这样可最大程序地减少坠机的危险。在Ubuntu 16.04 LTS下进行仿真,环境的搭建步骤如下:

1. 建立Pixhawk原生固件PX4编译环境,具体可参考官方教程[6];

2. 采用jMAVSim作为仿真软件,在PX4源码中自带jMAVSim仿真源码,路径为:/Firmware/Tools/jMAVSim,因此不需要另外下载源码。执行如下步骤:

(1) 打开终端,切换至Firmware文件夹:

cd Firmware

(2) 输入以下指令:

make posix_sitl_default jmavsim

上述指令意思為将Firmware目标代码编译为posix系统软件仿真代码,并用JMAVSim仿真器打开编译好的目标文件。

若编译成功,则打开三维仿真界面。在仿真过程中JMAVSim终端会显示来自仿真四旋翼无人机的MAVLink指令。三维仿真界面效果图如图6所示。

若安装过程中出现如下错误:

"com.jogamp.opengl.GLException: J3D-Renderer-1: createImpl ARB n/a but required, profile > GL2 requested (OpenGL >= 3.1). Requested: GLProfile[GL3bc/GL3bc.hw], current: 3.0 (Compat profile, compat[ES2], FBO, hardware) - 3.0 Mesa 17.2.8"

则为OpenGL的版本问题,需要更新OpenGL版本,在终端按序输入以下三条命令:

sudo apt-add-repository ppa:oibaf/graphics-drivers

sudo apt-get update

sudo  apt-get dist-upgrade

在Ubuntu 16.04 LTS测试通过的Python程序在树莓派3B上也能运行。将训练好的模型应用于无人机着陆仿真,无人机检测到停机坪后,飞控就可以控制无人机飞向停机坪。代码通过仿真测试后,将连接无人机的代码修改为:vehicle= connect(‘/dev/ttyAMA0’,baud=57600,wait_ready=True),即可进行树莓派3B和无人机通过串口连接后的真机测试。

4  结束语

多旋翼无人机的自主着陆系统研究对于其智能应用具有重要作用。着重研究如何通过树莓派3B和开源Pixhawk飞行控制器构建性价比高的多旋翼无人机自主着陆系统,从硬件构成、开发环境搭建、基于TensorFlow的着陆地标识别、软件仿真等方面作了较为详细的介绍,可给经费紧张的研究人员搭建系统提供有益参考,仿真实验证明了方案的可行性。机载电脑与飞行控制器相连,机载电脑作为指挥和决策平台,采用Python程序结合DroneKit库开发机器学习、图像识别等程序,以便机载电脑控制飞行控制器的动作,使之具备更高的智能。本文通过树莓派3B作为机载电脑,详细阐述了这一方案的可行性,对于使用Pixhawk开源飞行控制器的开发者进行二次开发具有很好的借鉴意义。

参考文献:

[1] 刘帆, 刘鹏远, 李兵, et al. TensorFlow平台下的视频目标跟踪深度学习模型设计[J]. 激光与光电子学进展, 2017,(9):283-291.

[2] 冯伟, 易绵竹, 马延周. 基于TensorFlow的俄语词汇标音系统[J]. 计算机应用, 2018,38(4):971-977.

[3] 张春露, 白艳萍. 基于TensorFlow的LSTM模型在太原空气质量AQI指数预测中的应用[J]. 重庆理工大学学报(自然科学), 2018, 32(8):143-147.

[4] 华清远见.飞行控制器Pixhawk简介[EB/OL].http://emb.hqyj.com/Column/7615.html,2018-08-15/2019-04-26.

[5] 杨小川, 刘刚, 王运涛, 等. Pixhawk 开源飞控项目概述及其航空应用展望[J]. 飞航导弹, 2018,(4): 25-32.

[6] DroneCode.Linux开发环境[EB/OL]. http://dev.px4.io/zh/ setup/dev_env_linux.html, 2019-01-01 /2019-04-26.

猜你喜欢
树莓派
基于Raspberry Pi的智能教室系统
基于树莓派的车载无线视频传输系统
基于微信端的智能家居监控系统的设计与实现
智能安全防盗探测小车
手势绘图锁的应用研究
基于嵌入式技术的农村医疗系统设计