任丽莉,成子健,康 冰,闫冬梅
(1.长春师范大学网络中心,吉林长春 130032;2.吉林大学通信工程学院,吉林长春 130022;3.吉林大学大数据和网络管理中心,吉林长春 130000)
四旋翼飞行器(quadrotor)是指由4个螺旋桨交叉安装构成的旋翼式飞行器[1]。一般采用微型控制器作为其控制核心,其飞行姿态只需要通过改变4个电机的转速就能实现。四旋翼飞行器的概念提出已经有100多年的历史,早在20世纪初就出现了旋翼式飞行器的原型机[2]。目前多旋翼飞行器有着轻便、灵活、机动性强、拓展性广的诸多优点,在商业、军事上愈来愈受到国内外的重视。
随着图像处理技术的日益成熟,四旋翼无人机在灾难环境下的目标搜索、农业上的农药喷洒和应用在军事上的侦查工作,都成为研究热点[3]。本文的设计涵盖了本科教学中闭环控制、图像处理、通信、电机控制等多项知识,可以作为本科生实验的平台。
描述飞行器飞行姿态可以使用四元数和欧拉角两种方法[4-5],四元数在计算上比较方便,而欧拉角更符合人们的直观感受,欧拉角表示和四元数表示分别如图1和图2所示。对陀螺仪和加速度计获取的角速度和角加速度,通过归一化和一阶龙格库塔计算出四元数,并转化为欧拉角。
公式(1)展示的是欧拉角和四元数的转换,通过计算并更新四旋翼当前的俯仰角、偏航角和翻滚角。
(1)
四旋翼下方搭载Pix4Flow光流传感器,其内部集成的算法可以直接输出与地面x,y方向的相对速度,通过IIC接口发送给四旋翼的MCU[6-7]。
在室内环境中,在精度允许的范围内选取超声波模块来测量四旋翼的当前飞行高度。
图1 欧拉角表示
图2 四元数表示
四旋翼下方搭载的USB摄像头采集图像,通过具有集成了openwrt的WIFI图传模块将图像传输到PC机,只需在PC机上连接图传模块的WIFI,读取视频流,即可获得USB采集的图像[8]。此外,图传的速率可以达到150 Mbit/s,能够满足实时处理的需求。
摄像头采集到的图像格式为RGB格式,而HSV格式更能被人们直观感受,从而被方便调节所需要识别的颜色[9]。HSV格式中的分量:色调(H)、饱和度(S)、亮度(V)。这三个分量中,S和V取值范围在0~1,影响了判别颜色的精确程度。而H的取值在0~360,其中,橙色:0~22、黄色:22~38、绿色:38~75、蓝色:75~130、紫色:130~160、红色:160~179。因此,只需要调节H的阈值,便可以改变需要识别的物体的颜色。RGB转换为HSV的公式如下:
(2)
(3)
V={R,G,B}max.
(4)
在得到HSV格式的图像后,利用OpenCV的函数库,根据设定好的HSV阈值进行二值化处理,在得到的二值图像上,利用开运算去除背景噪声,再应用闭运算填充目标内的孔洞,便提取出阈值颜色内的物体,然后计算出所识别物体中心与图像中心的偏差,传递给四旋翼的MCU。
四旋翼自主追踪智能车流程如下:
首先,四旋翼的姿态控制依靠MCU输出四路PWM,通过电子调速器控制无刷电机的转速来实现以下6个动作:垂直、俯仰、偏航、翻滚、前后、左右[10]。
其次,通过进行翻滚、俯仰和偏航这3个动作保持欧拉角在一定误差范围,使四旋翼保持平稳飞行的姿态。而追踪物体首先需要自身高度恒定,在设置目标高度后,通过超声波模块获得的高度数值,利用串级PID,即当前高度和目标高度差作外层PID,当前速度和目标速度作内层PID运算,调节适当的PID参数便可以实现四旋翼恒定高度飞行。
图3 系统结构图
最后,通过上位机发送的四旋翼机体与目标偏差位置的x,y坐标,建立平面坐标系并给偏差坐标赋予加权值,计算出x和y两个方向的期望速度。通过光流传感器获取的当前速度与期望速度作PID运算,调节四旋翼作出相应的前后、左右动作,实现对目标的追踪[11-12],如图3所示。
为了便于控制,利用Qt平台结合OpenCV函数库编写用于操作的上位机软件(图4)。图4中在行进中的智能车上放置红色标识物(图4中黑框已标出),系统启动后,在上位机视图中可见四旋翼采集回传的图像,其中目标物体能被精准地识别。
图4 上位机界面
四旋翼的起飞过程是缓慢增加油门值,离地后进入定高状态。图5中,下面的曲线为四旋翼离地高度,上面曲线为电机的油门值,可见在接近预期高度时油门增加速度减慢,防止上升过快导致失调。同样,在控制高度一定过程中串级PID发挥了很大的作用,使四旋翼始终保持同一水平高度飞行。
图5 高度和油门值
四旋翼在飞行过程中,保持姿态角的稳定至关重要。图6中曲线表示俯仰角变化,图7中曲线表示飞行过程中的翻滚角变化。可见,收到外界干扰时四旋翼利用PID调节仍能保持自身趋于稳定的状态。
图6 俯仰角变化
图7 翻滚角变化及抑制
本系统通过四旋翼下方搭载的USB摄像头采集地面信息,利用WIFI模块传输给PC机,在PC机上对传输的图像进行处理,识别出行进中的智能车,并将两者的相差位置坐标发送到四旋翼的MCU,进而控制四旋翼追踪智能车。
四旋翼主控板为STM32F103VCT6,利用MPU6050获取数据并计算出当前的姿态角,通过Pix4Flow光流传感器获取四旋翼対地速度,由超声波模块得到四旋翼高度,在高度控制和姿态控制上都采用了串级PID算法,使四旋翼能够按指令定向。而在图像处理方面,利用Qt平台和OpenCV函数库结合编写上位机,作为系统间的纽带,同时完成对目标识别和控制指令的传输,最终完成四旋翼和智能车的联动。