付 强,张树禹,王久斌,冯富森
1) 北京科技大学自动化学院,北京 100083 2) 北京科技大学人工智能研究院,北京 100083
扑翼飞行器是一种模仿鸟类或者昆虫的飞行方式实现飞行的新型无人飞行器,涉及仿生学、空气动力学、机械设计、材料科学、计算机、通信与控制等多门学科.与传统的固定翼和旋翼飞行器相比,扑翼飞行器具有更高的飞行效率和更灵活的飞行机动性[1],因此受到越来越多的关注与研究.国内外的一些研究机构和高校已经研制出几款能够飞行的扑翼飞行器.
德国Festo公司研制出一款名为SmartBird[2]的仿海鸥扑翼飞行器,重450 g,翼展2 m,可以自主飞行和降落,空气动力效率高达80%.美国麻省理工学院研制出一款名为Phoenix[3]的扑翼飞行器,可以通过手动遥控实现简单的飞行动作,但控制系统不完善,稳定性差,飞行时间短.
飞行控制是扑翼飞行器研究的关键技术之一,影响着扑翼飞行器的飞行性能,而定高飞行控制是飞行控制的一个基本要求,在巡航搜查、军事侦察等方面有着重要应用.扑翼飞行器定高控制方面,Ryu等[4]在一款微型扑翼飞行器上搭载了微型第一人称视角(first person view,FPV)摄像头,利用图像处理算法实现扑翼飞行器的定位,结合控制算法实现了定高飞行.台湾淡江大学Lin等[5]采用外部双目相机检测微型扑翼机的位置信息,加入闭环控制系统,可以在室内定高飞行.西北工业大学研发的仿信鸽扑翼飞行器Dove[6],结合GPS和惯性导航系统获取其飞行姿态和位置信息,将无损卡尔曼滤波(unscented Kalman filter,UKF)加入控制算法中,实现其自主定高飞行.北京科技大学贺威[7]团队对一款X翼扑翼飞行器进行改装,加入了自主研发的控制芯片,同时搭建了基于多目相机的地面站,利用OptiTrack动作捕捉系统捕捉扑翼飞行器的位置信息,通过PID控制系统实现了定高飞行.
扑翼飞行器灵活度高,飞行机理复杂,导致其运动模型也较为复杂,且翅膀扑动导致的振动问题[8]不能被忽视.此外,大多数扑翼飞行器的体积小、质量轻,容易受到外界环境因素(例如风)的干扰,小负载导致高精度但质量大的传感器不能使用[9],只能使用低精度质量小的传感器,因此扑翼飞行器的定高飞行控制仍处于早期阶段且面临诸多问题.定高飞行控制常用的传感器有惯性元件、GPS、气压计和视觉传感器.惯性元件具有误差累积缺陷,对初始值过于敏感;GPS不能在一些特定环境(例如室内)使用;气压计测量精度低,容易受天气影响.视觉传感器的误差不会累积,抗干扰能力强、适用范围广,更善于捕捉运动物体[10],被越来越多的应用在无人机导航系统中.
现有基于视觉的扑翼飞行器定高控制方案主要采用深度相机、双目相机或者是动作捕捉系统.深度相机可以检测物体的深度信息[11],但是测量范围窄、测量噪声大,容易受到环境的干扰,并且需要额外的设备,使用成本较高.双目相机基于视差原理计算图像对应点的位置偏差,可以获取物体的大小和距离,但是使用前需要进行参数标定工作[12],量程和精度[13]受双目基线[14]和分辨率的限制.动作捕捉系统例如OptiTrack和Vicon基于立体视觉原理,采用多个相机拍摄被标记物体,可以获得标记点的空间位置[15],但是其参数标定工作复杂,计算量大,设备成本高昂且不易携带.
本文采用LED灯标记扑翼飞行器,单目USB摄像头采集图像数据,通过地面站实时图像处理程序获取标记点在图像上的像素坐标,经过单神经元PID控制算法得出控制量并发送给扑翼飞行器,使其在图像上的坐标保持在图像的中心横线处,实现定高飞行,其具有以下特点:
(1)搭建了一款微型扑翼飞行器,搭载自主研发的控制电路板,实现了定高控制飞行;
(2)基于图像的定高飞行,相比于基于位置的定高飞行,无需进行相机的内外参数标定工作;
(3)采用单神经元PID控制器,控制效果好于常规的PID控制器.
为了排除环境因素的影响,实验环境被设定为室内.由于室内实验环境有限,为防止其飞出实验范围并造成物品损坏,需要对扑翼飞行器的飞行范围加以限制.
如图1所示,X翼扑翼飞行器通过一根细线连接在一个带底座的钢管上,连接处安装有轴承来保证其飞行过程中不会受到钢管的摩擦阻力.细线为扑翼飞行器提供了向心力,保证其绕杆进行圆周运动,同时还提供了向上的拉力,当扑翼飞行器飞行时,向上拉力减小,没有改变扑翼飞行器的飞行高度与翅膀扑动频率正相关的关系,而扑动频率由自身的空心杯电机的转速决定,要使扑翼飞行器在图像上的坐标保持在中心横线处,需计算出相应的电机转速.扑翼飞行器的飞行机理复杂,运动参数较多且耦合性强,若通过建立运动模型计算出特定飞行高度所需的电机转速,需要精确的运动模型,计算量大且需要对模型进行实验验证,将消耗大量时间,并且适用模型单一,推广性较差.因此本文采用单目相机拍摄扑翼飞行器的飞行图像,基于无模型单神经元PID控制系统控制扑翼飞行器在图像的中心横线附近飞行,实现基于图像的定高飞行.当单目相机水平放置时,扑翼飞行器将与单目相机等高度飞行.
图1 问题描述示意图Fig.1 Illustration of the problem formulation
本文的扑翼飞行器采用X翼结构,有两对翅膀,如图2所示.该扑翼飞行器重16 g,翼展25 cm,由于机身重量轻、翅膀面积小,所以抗风性能较弱,只适合在室内飞行.机身骨架由3D打印制成,具有轻巧、定制程度高的特点,翅膀采用聚氯乙烯薄膜制成.采用6 mm空心杯电机和3.7 V的70 mA·h锂电池.扑翼飞行器头部添加了一颗蓝色LED灯,作为标记点,并且搭载了自主研发的飞行控制电路板.
图2 X翼扑翼飞行器Fig.2 FWAV with the X-wing
飞行控制电路板如图3所示,长39 mm,宽26 mm,重3.8 g,包含一颗32位的基于ARMCortex-M3架构的低功耗芯片STM32L151、蓝牙通讯模块HC-06、电源转换模块、一个3.7 V空心杯电机输出口和一个LED灯输出口,该电路板采用3.7 V电池供电.飞行过程中,控制电路板通过蓝牙模块接收地面站发送的控制信号,控制空心杯电机的转速和LED灯的亮灭.控制电路板接收到地面站发送的控制信号后,便保持该控制状态,直到下一次地面站的控制信号发送过来,降低了地面站的通讯工作量.
图3 飞行控制电路板Fig.3 Flight control circuit board
单目相机的成像原理[16]如图4所示:世界坐标系O−XwYwZw中 的点P(Xc,Yc,Zc)通过透视投影在像平面成像,成像点为p,像平面的像素坐标系以像素点为单位,以图像左上角O0点为原点,成像点p在以O0点为原点的坐标系中的坐标为由于本文是控制扑翼飞行器始终处于图像的中心横线上,是基于图像而不是基于位置的飞行高度控制,所以不需要进行相机的内外参数的标定工作.
图4 单目相机成像原理图Fig.4 Imaging principle of the monocular camera
本文采用标记点检测法检测扑翼飞行器在图像上的位置信息,采用主动发光标记点,即LED灯,相比较被动式标记点例如红外反光标记点,不需要额外的红外光源和红外相机,使用成本低,适用范围更广.视觉检测流程如图5所示,单目相机采集到的图像经过高斯滤波去除噪声,之后转换为HSV色彩空间图,设置颜色阈值进行二值化,分割出蓝色区域.为了排除其他反光物体造成的干扰,对分割图进行轮廓检测,并计算每块轮廓的面积,采用面积最大的轮廓作为蓝色LED灯的轮廓,计算该轮廓质心坐标作为LED灯在图像上的坐标.
图5 视觉检测流程图Fig.5 Flowchart of visual detection
本文对视觉检测各环节的耗时进行了测试,测试环境为:120 Hz高速摄像头,图像分辨率为640像素×480像素,电脑CPU型号为i5-4210U,主频1.7 GHz,4 G内存,Windows 10操作系统.运行耗时如表1所示,平均每帧耗时12 ms.考虑到卡尔曼滤波、单神经元PID控制系统、地面站界面更新、串口发送数据等环节都会消耗时间,本文将图像采样周期设置为33 ms,既能满足控制需求,又能避免图像检测部分耗时过多而导致地面站运行卡顿的现象.
由于环境因素(如光线)的干扰以及扑翼飞行器姿态的变化,标记点的检测结果具有一定的噪声.卡尔曼滤波可以根据运动目标上一时刻的运动状态预测当前时刻运动状态,并结合当前时刻的观测值得出最优估计值,消除噪声.
表1 视觉检测各部分耗时表Table 1 Time cost of visual detection
式中,Δt为采样时间,则卡尔曼系统状态方程和观测方程如下:
式中,X(t|t−1)是根据t−1时刻最优值X(t−1|t−1)得出的t时刻预测值,P(t|t−1)和P(t−1|t−1)分别对应X(t|t−1)和X(t−1|t−1)的协方差.Q为系统过程的协方差矩阵.
结合当前时刻的预测值和观测值,可以得到当前时刻的最优估计值X(t|t)和协方差P(t|t):
式中,I为单位矩阵,K(t)为卡尔曼增益(Kalman gain):
式中,R为观测噪声的方差.
此外,利用单目相机检测运动物体可能会出现标记点被短暂遮挡、检测目标丢失的现象.利用卡尔曼预估可以得到当前运动状态的估计值,用于控制系统的反馈,直到运动物体再次被检测出,增加系统的鲁棒性.如图6所示,根据当前时刻的观测结果判断标记点是否被遮挡,如果没被遮挡,则将观测值带入卡尔曼滤波器中,得出最优估计值反馈给单神经元PID控制器;如果标记点被遮挡,则通过卡尔曼预测即公式(3)得出预测值,作为当前时刻的最优估计值,反馈给控制器.
图6 观测结果处理流程图Fig.6 Flowchart of observation result processing
图7、图8是定高控制系统的示意图与结构框图:外部单目相机拍摄扑翼飞行器的飞行图像,通过地面站图像检测算法检测出标记点在图像上的坐标,经过卡尔曼滤波反馈给单神经元PID控制器,计算出电机转速并通过蓝牙发送给扑翼飞行器的飞行控制电路板,从而实现定高控制.
图7 定高控制系统示意图Fig.7 Illustration of the fixed-height control system
由于常规PID控制器的参数无法在控制过程中实时调整,适应能力较弱,因此本文采用单神经元PID控制器.单神经元又被称为感知器,是神经网络的重要组成单元,单神经元对不同的输入施加不同的权重并求和,并通过激励函数得出结果,通过学习算法修改权重值来实现其自学习功能[17],因此对环境的变化具有一定的适应能力,有较强的鲁棒性.
图8 控制系统结构框图Fig.8 Structure diagram of the control system
假设图像中心横线的纵坐标为vc(k),k表示当前是第k个控制周期,扑翼飞行器的实际高度为y(k),单目相机检测到扑翼飞行器头部标记点在图像上的纵坐标经过滤波算法得到vz(k),则误差e(k)=vc(k)−vz(k);由于位置式PID表达式:
则单神经元的输入x1、x2、x3分别为:
单神经元的输出为:
式中,Ku为单神经元的输出增益系数,wi(k)为第i个输入量的权重,对应于公式(6)PID控制器中比例系数KP、积分系数KI、微分系数KD.
单神经元采用有监督Hebb学习规则,实现单神经元输入权重的自调节.Hebb学习是一类相关学习,其基本思想是如果两个细胞在同一时刻被激发,则两者之间的联系会增强,反之减弱;将期望与输出引入Hebb学习规则中,构成有监督Hebb学习规则,得到PID参数自适应的单神经元的学习规则:
式中,ηi是第i个输入对应权重wi(k)的学习率.
单神经元PID控制器的控制效果与单神经元的输出增益系数Ku、第i个输入量的权重wi、输入权重的学习率ηi有关,在使用前需要进行调整,经过多次实验,总结出以下调整规律:
(1)Ku值的调整:先确定一个较小数值(如0.1),根据实验结果进行调整,超调过大则减小Ku,稳定时间太长就增大Ku;
(2)权重wi的初始值:初始值对控制效果影响不大,数量级在0.01到10之间即可,三个权重初始值可保持一致;
(3)学习率ηi的调整:若稳定时间太长,则增大η1和η3;若响应从超调迅速下降至给定值以下,之后缓慢上升,稳定时间太长,则可降低η1,增大η2.
掌握调试规律后,一般可在10次以内调试出合适的控制器参数.
为了验证上述定高方案在实际环境下的可行性,搭建了基于外部单目视觉的X翼定高控制系统.系统由地面站软件和电脑、单目相机、三脚架、X翼扑翼飞行器、底座等硬件组成.地面站软件采用C++语言和Qt平台编写,图像处理部分基于OpenCV开源函数库.地面站软件主界面如图9,包含图像采集、定高控制和串口通讯三个子界面.
图9 地面站界面Fig.9 Software interface of the ground station
单目相机采用USB高速摄像头,型号为QRUSBFHD01M.该摄像头能达到的最高分辨率为1920像素×1080像素,但过高分辨率会降低系统的运行速度,因此本文采用的分辨率为640像素×480像素,图像采样周期为33 ms,即每秒30帧;地面站所用电脑型号为华硕x555ld,CPU为酷睿i5-4210U,主频1.7 GHz,4 G内存,Windows 10操作系统.
如图10所示,单目USB摄像头固定在经过水平仪水平校准的三脚架平台上,通过USB接口接入电脑,X翼的初始位置为自然垂落的最低点位置.启动地面站软件并打开摄像头和LED标识灯,如果采用常规PID控制,则需在控制界面输入PID控制参数;若采用单神经元PID控制则需要事先对单神经元的初始权重和学习率进行调试,不用输入PID控制参数.
图10 实物实验图Fig.10 Physical experiment
在搭建好的实验平台上进行多次定高飞行实验,图像分辨率为640像素×480像素,中心横线的纵坐标为240像素,扑翼飞行器的初始状态为自由下垂,纵坐标为212像素.在某一时刻提供阶跃信号,此时记为第0帧,阶跃响应如图11所示.常规PID控制器控制下:扑翼飞行器分别在第31帧(第1秒)和第114帧(第3.8秒)到达阶跃稳态值的10%和90%,上升时间为2.8 s;单神经元PID控制器控制下:扑翼飞行器分别在第31帧(第1秒)和第123帧(第4.1秒)到达阶跃稳态值的10%和90%,上升时间为3.1 s;但是常规PID控制器的控制精度较低,最大误差约为7%,而单神经元PID的控制精度较高,扑翼飞行器在第256帧(第8秒)后最大误差约为3%.
图11 PID控制飞行高度曲线Fig.11 Flight height curve of the PID controller
通过分析实验结果,得出以下结论:
(1)单神经元PID控制下,扑翼飞行器的飞行高度响应速度稍微低于常规PID控制,但是控制误差要明显小于常规PID控制下的控制误差,而且不需要调节比例、积分、微分参数,做到了参数自适应;
(2)无论是常规PID控制器还是单神经元PID控制器,飞行高度误差总会出现周期性变化,原因是相机成像具有近大远小的特点,单目相机不能检测出飞行器与相机的距离,当扑翼飞行器进行水平圆周运动时,就会周期性的远离或靠近单目相机,导致检测到的飞行高度出现周期性的变化,目标物体离单目相机越远,变化越小;
(3)扑翼飞行器飞行过程中飞行姿态会发生变化,从而影响外部相机捕捉蓝色标记点,降低了控制精度; 可以采用多标记点的方法来降低系统误差,但可能会增加系统的计算量,降低实时性;
(4)扑翼飞行器的负载较低,机身所带发光标记点功耗较低,亮度低.由于采用外部单目相机捕捉蓝色标记点的方法进行扑翼飞行器的识别与定位,因此当扑翼飞行器自由飞行时,飞行半径过大,摄像头难以检测到蓝色标记点,较难实现自由自主飞行.
本文针对扑翼飞行器的定高飞行控制,提出了一种基于外部单目视觉的定高控制系统.采用蓝色LED灯作为扑翼飞行器标识点,利用单目相机拍摄扑翼飞行器,通过图像处理算法获取标记点在图像上的像素纵坐标,结合单神经元PID控制器调节扑翼飞行器的电机转速,实现了基于图像的扑翼飞行器定高飞行.该系统不需要进行相机的内外参数标定,使用成本低,简单易实现,具有一定的应用价值.