基于模糊控制的循迹无人机研究
2021-06-25丰宇航蒋雯怡王冠凌
丰宇航 蒋雯怡 王冠凌 李 旦
(安徽工程大学电气工程学院 安徽芜湖 241000)
四轴飞行器是以四个螺旋桨提供飞行动力的一种可归类于直升机的飞行器[1]。因为其独特的构造,所以可以进行竖直升空降落,空中悬浮等固定翼飞行器无法达到的特殊飞行姿态,起降方式十分自由,几乎不受场地的限制,且可以向任意方向飞行。由于四轴飞行器具有的独特飞行方式以及体积小巧、制作成本低、操作上手门槛低等优点,因此被各种领域所青睐。目前国内对于循迹四轴飞行器[2,3]的自主飞行的研究取得了相当大的成效,从而使循迹四轴飞行器在很多领域都有所应用。本文主要是通过OpenMV机器视觉模块对图像进行采集与处理,经由TI公司生产的MSP432芯片作为飞行器主控芯片来进行处理,实现了四轴飞行器可以按照地面规划好的路径进行自主飞行。
一、系统整体构成
(一)OpenMV。OpenMV Cam H7是一款小型、低功耗,搭载轻量化的机器视觉算法库的开源机器视觉模块,以ARM Cortex-M7处理器STM32H743VI为核心,集成了OV7725图像传感器。由于内置的机器视觉算法库提供了Python接口,因此可以通过microPython语言来调用OpenMV上的机器视觉算法库。不同于庞大的OpenCV库带来的移植上困难,OpenMV可以方便、快速的达成项目设计要求。
(二)FreeRTOS。 RTOS全称“Real Time Operating System”,中文名实时操作系统[4],是一类操作系统,例如LiteOS-M、RT-Thread以及FreeRTOS等。由于RTOS系统一般被用于嵌入式和物联网,因此对其的要求就与PC上平常使用的Windows和Linux等操作系统不同。受嵌入式和物联网的应用环境所限,操作系统必须对外界的信息(一般是由外设触发的事件或者中断)做出及时的反应,这就要操作系统必须在确定的时间内完成全部或者绝大多数的任务。这也是RTOS和Windows、Linux操作系统的最明显区别。
FreeRTOS是RTOS系统的一种,因为FreeRTOS十分的小巧,仅从其源程序上的文件数量就可以看出比UCOS-Ⅱ和UCOS-Ⅲ要小的多,所以对硬件资源的消耗非常低,而且FreeRTOS的内核遵循MIT开源协议,因此FreeRTOS在市场中占据大量的份额,社区论坛异常活跃,官方文档也十分齐全,这对于开发的帮助十分巨大,所以选取FreeRTOS作为四轴飞行器的操作系统。
(三)飞行器整体结构。文中四轴飞行器选取MSP432作为飞行器主控芯片,其余硬件资源有MPU9250模块、BMP280模块、电压测量模块、无线数传、OpenMV模块、电机调速器、无刷电机、光流模块。首先OpenMV负责图像的采集、处理和识别,并将识别后的结果通过串口发送给MSP432主控,再由MSP432主控[5]对该结果信息进行处理,如计算偏差、更新目标姿态、驱动电机调速器改变电机转速等。具体飞行器整体控制图图10将在后面给出。飞行器整体结构如图1所示。
图1 飞机整体结构图
二、图像预处理
(一)图像处理。由于外界环境光照等其他因素的干扰,以及设备自身的误差,会导致一些噪声融入采集到的图像信息中,这会对后面的目标识别产生不利的影响。因此,在获得采集到图像信息后,需要对图像进行相应的处理,从而减弱图像信息中的噪声干扰,图像整体处理流程如图2所示。由于对图像的处理会占用大量的硬件资源,为了保证控制系统的实时性和快速性,以下的操作均是在图像大小为160x120(单位为px)下进行。
图2 图像处理流程
(二)图像灰度化。同灰度图不同,彩色图像含有颜色信息,受限于飞行器搭载的硬件资源,为了保证四轴飞行器的控制效果,将采集的彩图处理为灰度图,即色彩值转化为亮度值,以降低图像处理对资源的占用,保证算法识别的实时性。为了更加明显的看到在识别中彩色图像和灰度图像对帧数的影响,这里使用运算量较大的Apriltag识别来展示。通过OpenMV IDE可以清楚的看到,关于彩色图像和灰度图像对于帧数的影响,其中图3是灰度图和帧数,图中处理后的灰度图的灰度级别为256,图4是原图(RGB565彩色图像)和帧数。由于连接到OpenMV IDE进行图像传输显示会大幅度丢失帧率,因此这里只是作为对比展示,后面在实际飞行中,并不会将图像传到地面站上进行显示,以提高算法识别的实时性。
图3 灰度图
图4 原图(彩色图)
(三)图像腐蚀与膨胀处理。在实际中,由于环境条件的影响,地面上的黑色线条可能会有破损,或者因为光线的影响,导致OpenMV拍摄到的黑色线条有缺陷。因此需要对拍摄到图像进行修补处理。首先需要对拍摄到的灰度图图5进行二值化处理,二值化是通过设定阈值范围的方法将灰度图里面的所有像素点的像素值设置为两个指定的值,一般是0和255。其结果如图6所示。从图像中可以清晰的看到,图像信息中包含的噪点对二值化后目标提取的干扰,因此需要对图像进行腐蚀膨胀处理[6,7]来消除噪点,效果如图7,腐蚀是提取卷积核覆盖的区域内的最小像素值,替代锚点位置的像素值,一般选取卷积核的中心为锚点。相反的,膨胀是提取卷积核覆盖的区域内的最大像素值,替代锚点位置的像素值。这里腐蚀算法使用的核为3X3的卷积核,膨胀算法使用的是5X5的卷积核。式(1)分别为腐蚀和膨胀算法所使用的卷积核。
图5 灰度图
图6 二值化
图7 腐蚀膨胀
三、控制系统设计
通过上面的图像处理,已经得到图像信息较好的路径二值化图像,通过对图像进行线性回归[8,9],即可拟合出路径引导线并获得其参数,如图8所示。通过将其与图像垂直中心线进行运算即可得到偏差eθ和eρ,其中eθ是直线与图像垂直中心线的夹角,右偏为正,左偏为负,eρ为直线与图像垂直中心线的距离。根据得到的角度和距离误差信息,来对更新四轴飞行器的目标姿态[10]。本文设置了角度-角速度的串级控制器来作为四轴飞行器所使用的控制器,采用模糊PID设计角度外环。
图8 线性回归
(一)模糊PID控制原理。PID算法是以偏差的比例、积分和微分进行控制的控制算法,广泛应用于连续控制系统,是最为成熟的一种连续系统控制算法。连续控制系统的理想PID控制规律为:
式中,KP为比例增益系数;TI是积分时间常数;TD是微分时间常数,u(t)为控制器输出的控制信号,e(t)为期望值与输入信号之间的误差。
由于嵌入式微处理器使用的是数字电路,无法直接处理模拟量,所以PID控制律需要离散化。位置式PID就是离散得到一种形式,其式为:
式中,u(k)为第k个采样点处控制器的输出值;e(k)为第k个采样点的差值;∑e(i)是误差的累计;Kp、Ki、Kd分别为比例、积分和微分系数。
模糊控制对信号的模糊处理会导致控制系统的准确性和快速性下降。为了解决这一问题,设计了模糊PID控制器,结构如图9。通过将模糊控制与传统PID控制相结合,由模糊控制器根据误差e和误差变化量ec来调整PID控制器Kp、Ki、Kd的值,再由PID控制器进行控制。由于是模糊PID控制器是建立了误差e和误差改变量ec与传统PID的Kp、Ki、Kd系数之间联系,并没有直接对系统的输出产生影响,从而避免了模糊控制带来的对系统的静态特性和稳态特性的影响[11]。模糊PID控制器的本质是依据输入误差e和误差改变量ec,然后根据模糊原理,实时调整PID控制器的参数,来适应不同的情况。
图9 模糊PID控制器结构图
(二)模糊规则建立。由于输入的信号量是连续量,因此需要对输入进行模糊化[12]。以四轴飞行器与地面飞行引导线的角度误差为例,四轴飞行器与地面飞行引导线的角度误差e和角度误差改变量ec是模糊控制器的输入,输出是PID参数的增量:∆kp、∆ki、∆kd,变化范围由工程经验决定。设输入的模糊子集为{负大,负中,负小,零,正小,正中,正大},对应为{NB,NM,NS,ZO,PS,PM,PB},隶属函数采用三角隶属度函数,完成了输入的模糊化后,就需要建立模糊规则表[13,14](见表1-表3)。
表1 Kp的模糊规则库
表2 Ki的模糊规则库
表3 Kd的模糊规则库
经过模糊推理,将得到的增量∆Kp、∆Ki、∆Kd,叠加到Kp、Ki、Kd的初始值上,从而得到最终的Kp、Ki、Kd参数的值。因此有式(4)。
式中,∆Kp、∆Ki、∆Kd为模糊推理得到的增量;Kp0、Ki0、Kd0为PID参数的初始值;Kp、Ki、Kd为目标值。
(三)模糊PID控制器设计。以线性回归得到直线与图像垂直中心线的角度偏差eθ为例,来设计控制器。令模糊控制器输入为偏差e和偏差变化率ec,输出为∆kp、∆ki、∆kd。
1.输入e:基本论域为[-90,+90];离散论域为{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6};模糊化公式为式(5);模糊子集为{NB,NM,NS,ZO,PS,PM,PB} 。
2.输入ec:基本论域为[-135,135];离散论域为{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6};模糊化公式为式(5);模糊子集同步骤1
3.输出量∆kp、∆ki、∆kd:基本论域分别为[-0.5,0.5]、[-0.07,0.07]、[-4,4];离散论域为{-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7}。解模糊化采用重心法,公式为式(6);模糊子集同步骤1。
式中,uw为控制量的精确值,uB′(uj)表示输出量模糊集合B′中第j个元素uj所对应的隶属度。
根据离散论域和隶属函数对e、ec模糊化,分别得到对应模糊子集的值,经过模糊推理,得到模糊子集中∆kp、∆ki、∆kd的值和对应的隶属值,解模糊化得到输出量uw。通过将 ∆kp、∆ki、∆kd分别与Kp0、Ki0、Kd0叠加获得Kp、Ki、Kd。再由修正后的PID控制器,输出内环的期望,内环输出控制量,完成四轴飞行器姿态的调整。飞行器循迹整体控制图如图10所示。
图10 飞行器整体控制图
四、实验分析
在自主搭建的无人机平台上进行相关试验。因为是对飞行器循迹控制,不涉及高度大幅度变化,所以设定飞行器高度为1.5m,给定飞行器的俯仰角pitch=5°,保证飞行器一直向前飞。
通过无线数传可以将线性规划出的直线与图像垂直中心线的角度和距离发送到地面站。从图11可以看出飞行器对路径的追踪效果,飞行器相对黑线的位置偏差大约在50个像素点内,可以完成对地面黑线的循迹飞行。
图11 地面黑线距离图像中线像素点的偏差量
五、结论
本文设计了使用模糊PID控制器的四旋翼自主循迹控制系统,通过灰度、二值化和腐蚀膨胀预处理,线性回归提取出导航线,最终得到偏差量。设计了角度-角速度的级联控制,控制器分别由模糊PID和位置PID构成,并以偏航角为例说明了设计流程。最后根据实际飞行中,无线数传返回的数据,验证了飞行器能够完成自主循迹飞行。