基于ADRC控制器的多MC四旋翼系统设计
2022-09-09王慧梁展豪叶炽鹏刘威凌陈倬彬
王慧 梁展豪 叶炽鹏 刘威凌 陈倬彬
(广东海洋大学电子与信息工程学院 广东省湛江市 524088)
随着如今硬件的性能的不断提高,各种智能硬件产业蓬勃发展,而四旋翼凭借自身独特优势已逐渐渗透到许多的工业场景以及影视生产的应用之中,为人类的工作和生活带来了极大的便利。
然而,在目前四旋翼系统设计的领域,抗扰动姿态控制算法和飞行器上单片机的运算性能限制是亟待优化的重大难题,采用多MCU 的四旋翼系统能够让飞行器的运算能力突破限制,且减少硬件错误发生和任务复杂时以至单片机无法处理的情况发生。同时ADRC 控制算法的出现让控制效果得到的进一步提高,将两种方法结合,然后将之有效融入四旋翼系统的设计开发之中,能有效解决上述的问题,并且从软件和硬件层面,提高系统的稳定性和可拓展性。这些技术的结合使用,将会是四旋翼在实用化和智能化的路上效率更高的关键。
本设计中用多块STM32 芯片作为四旋翼系统中的主控芯片,使用ADRC 和PID 的串级控制实现定高和姿态的控制,以及使用光流传感器识别的结果反馈到飞行器的水平控制上,让其能够判断机体是否在移动,并使用Openmv 摄像头来实现外界图像信息处理,以实现四旋翼系统的跟踪物体,避障等功能。
在本文中,重点讲述系统的软件部分,姿态解算使用基于四元数梯度下降法并且将四旋翼的姿态解算单独由一块MCU 处理,四旋翼系统稳定控制器使用的是串级ADRC 结合PID 的控制器,该任务也同样交给另外一块MCU 处理,同时将系统的人机交互界面和内存管理单独由一块MCU 处理。
1 系统总体方案设计
1.1 系统总体结构
基于ADRC 控制器的多MCU 四旋翼系统的总体结构由3 块MCU、2.4 G 遥控器、光流模块、Openmv 摄像头模块、飞行器姿态控制器、飞行器高度控制器、飞行器水平位置控制器、地面站上位机、无刷电机及电调等模块构成,三块MCU 通过内部的总线合理分配资源和传送数据,并实现互相协助,各模块之间相互联系,相互协调,让整个系统稳定运行,使多MCU四旋翼系统能够稳定工作,完成各项要求。总体结构如图1 所示。
图1 :系统总体结构
1.1.1 各核心系统说明
(1)多MCU 核心系统:在过去的大多数飞行器控制系统中,多数使用的都是单块MCU,作为核心处理器,但是单块芯片的运算能力是有限的,一旦随着飞行器系统的任务繁杂,整个系统的稳定性也随之下降,本项目使用的3 块MCU,作为的整个系统的核心。其中通过高速度的DMA 总线互相传输数据。
(2)接收机模块:飞行器系统在运行过程中,要收到地面站或者遥控器的指令才能正常的运行,控制指令由2.4G的接收机模块输入,通过定时器的捕获俯仰角、横滚角、偏航角、油门以及其他特别的输入信号,转换数值信号。以此传送到控制器内部,完成控制要求。
(3)DMA 总线:使用的DMA 传输的特点,不占用CPU 的处理资源,姿态解算部分的MCU 解算完三轴的各种运动数据后添加头部和尾部的标志帧后,通过总线传送到人机交互的MCU 作为数据可视化和保存到内存卡内,同时也会传送到负责控制系统的MCU 中。
(4)人机交互模块:主要有运算能力不高的MCU 去处理,负责完成将飞行器系统的整个交互,如飞行器状态显示、飞行器校准信息、以及航行数据的记录到内存卡中的任务,方便飞行器脱机调试,保证飞行器的使用更加人性化与实用性。
(5)Openmv 摄像头模块:这是一款使用H7 系列芯片的摄像头模组,其强大的运算频率可以实现许多硬件上的可以运行的智能算法和图像识别的算法,这个就可以使飞行器脱离于沉重的路由器以及单独在硬件上就可完成的图像相关的任务。
(6)光流模块:使用的是稀疏光流,用于读出机体相对于东北天坐标系的相对的XY 轴的速度,融合进控制系统中,使得飞行器能更好地悬停。
1.2 控制系统硬件设计
在硬件系统的设计中,电源的稳定性是所有东西基本保障,并且对于四旋翼系统中的姿态解算所需要用到的传感器都是对电源的纯净有着非常高的要求,也就是需要电源的噪声低,电源的谐波要隔绝开来,同时对于整体硬件系统而言,最大输如电流,纹波抑制大小,电压波动范围都是非常重要且需要仔细设计参数,本实验采取将主控供电和传感器供电分离得方案,并且做好电源接入处放反接电路,以及自恢复保险丝电路,对核心电路形成更良好得保护。同时对于IMU 模块,因为飞行器系统在电机工作的时候会产生大量的中高频的震动以及带来大量风,所以同时将IMU 模块单独使用一块减震球放置,并且使用粘合剂使其在防抖消除震动的效果上更加良好,同时方式气压计的数据被大风干扰,还需要尽量将气压计与外界隔离,减少气流对传感器数据的影响。
1.3 系统电源设计
电源的输入主要来自于12.4V 的航模3S 电池,经过DC-DC 模块,将电压稳定到5V 然后输入到整个系统当中,然后经过防反接电路最后经过不同的LDO 模块,对3 块MCU 的供电以及传感器模块供电。图2 是电源设计的框架图。
图2 :电源框架图
2 系统软件设计
2.1 ADRC控制器
ADRC 控制器设计:ADRC 控制算法又称为自抗扰技术,该技术通过安排积分误差产生过度过程,以及使用TD(跟踪微分器)提取微分信号,以及使用非线性的误差组合和采用ESO(扩张状态观测器)估计总体扰动。姿态环中使用四环串级的ADRC 控制。在高度环上使用PID 和ARDC 混合控制。作为本系统中的一个核心算法。
其中ADRC 控制器中,主要包含三大主要部分的结构:
(1)跟踪微分器;
(2)扩张状态观测器;
(3)非线性反馈控制器。
跟踪微分器将产生的误差先经过一个过渡过程,防止出现误差的偏差过大的波动。这样能防止出现在传统控制中出现的超调和响应速度的矛盾。并且在一节惯性环节中,会不可避免的引入噪声,通过跟踪微分器的思想,将一阶系统改为二阶系统,这个二阶系统就会对高频噪声产生一定的抑制作用。第二部分就是非线性反馈控制器。这个控制器是基于传统控制器的线性叠加的想法改变而来,往往在实际工业场景中,线性组合的控制器并不能带来比较好的控制效果,而非线性控制的输入由跟踪微分器TD 输出的经过过渡过程处理的误差信号和信号的微分组成。并且同时将来自ESO 的三个状态向量作为输入所以总共由五项输入。而ADRC 中的第三部分ESO 就是核心。其本质是一个扩张的状态方程。通过观测方程将输入量和无关项扰动全部观测出来,通过扩张状态观测器不仅可以得到各个状态变量的估计,还能将四旋翼系统飞行的时候的不确定模型和外扰。以此作为反馈输入到控制器中,对这种扰动进行补偿。
图3 为ADRC 的整体控制框图。
图3 :ADRC 控制图
2.2 飞行水平控制器
飞行器水平位置控制器:整体的飞行器系统的水平控制器由四个ADRC 环路构成,具体为:三轴位置环+三轴速度环+三轴角度环+三轴角速度环的四级控制逻辑,并且通过光流,GPS,IMU 等模块快的数据传来,实现飞行器的水平位置不移动以及飞行系统的姿态自稳。要实现水平控制,设置达到悬停,四闭环控制是非常有必要,最里面两环形成对姿态自稳最基本的控制,而姿态控制又是四旋翼飞行器系统实现位置控制的基础,外面两环则是控制四旋翼三轴的速度及三轴位移的控制闭环,外面两个环路对于实现四旋翼的稳定选地有着非常重要的作用。通过使用光流得到一个相对的速度,加上加速度计的补偿,得到飞行器的相对速度作为ADRC 速度环的反馈回路,而通过GPS 和加速度计两次积分得到的位置数据得到XY 轴的位置速度,以此作为ADRC水平位置环的输入。对位置的微分速度,而角度的微分则是角速度,同时三轴的速度期望作角度的输入信号,在四旋翼运动不大时候,对于速度的期望相当于对三轴角度的期望的,以此初步建立起四级串级闭环的ADRC 控制环路。实现通过图4 为飞行器水平控制框图。
图4 :飞行器水平控制框架图
2.3 飞行定高控制器
飞行器高度控制器: 整体采用了三环串级PID 和ADRC控制,具体来说,是通过气压计、超声波、GPS 以及加速度计的互补融合出估计的高度数据,以此作为反馈信号进入系统的高度位置控制器,并且构造位置环、油门Z 轴速度环、油门Z 加速度环的三环控制器。首席按接受来自接受机指令的高度值,作为期望值和经过气压计、超声波、GPS 三传感器经过数据融合产生的估计高度,两者作差,产生误差进而输入到高度位置的ADRC 控制环,该环的输出信号作为下一环油门速度P 控制的信号,控制环的反馈信号是来自梯度下降法求解出来剔除Z 轴加速度的Z 轴速度,并且该Z 轴速度也是同样作为一种油门的速度解释而A 轴速度的控制使用的最简单的比例控制即P 控制器。该环的输出继续下一环Z 轴加速度的输入,该控制环路使用的PID 控制器,因为内环控制的输出最终是一个油门值,与PID 的传统应用非常类似,所以采用PID 控制。最后三环串级的定高控制系统设计完成。
图5 为飞行器高度控制框图。
图5 :飞行器高度控制框架图
2.4 姿态解算系统
四旋翼飞行器在飞行过程中,受到气体动力学和电机升力的变化等因素影响,所以姿态解算是整飞行器系统的核心所在。本文的姿态解算主要是利用惯性测量元件IMU 中的加速度计、陀螺仪以及地磁计。使用IIC 或者SPI 协议先读取传感器的数据,即加速度计和陀螺仪的数据,滤波算法主要是将获取到的陀螺仪和加速度计的数据融合进行去噪声及融合,得出正确的角度数据(欧拉角或四元数),数据融合常见的算法,主要采用互补滤波或者卡尔曼滤波。本实验使用的互补滤波的提升版,梯度下降的互补融合。其核心思想都是通过加速度计来补偿陀螺仪的积分误差。具体的实现过程是,先初始化四元数,通过DMA 宗信从负责姿态解算的MCU 中获取传感器的三轴加速度和角速度的数据,随后加速度值规范化,用四元数求重力分量,计算重力分量和加速度测量的误差,通过加速度计算出一套机体坐标系下的四元数,再通过陀螺仪计算出另一组机体坐标系下的四元数,然后构造出目标函数,求偏导,得到梯度下降融合公式,求得陀螺仪的误差,并以此对陀螺仪得测量值进行修正,将更新得到得新的陀螺仪下的四元数为新的四元数,然后反解出欧拉角即三轴姿态角。随后算法不断递归迭代,不断更新四元数,从而求解出飞行器系统的姿态角。
2.5 实验结果与分析
本实验飞行器实现的悬停,稳定起飞,跟踪物体,以及识别相应的物体降落等功能。借助于多串接的闭环控制算法,可以使得飞行器系统较平稳低从地面静止到在空中悬停的一整套动作的完成。在进入姿态控制模式的时候,遥控器的快速打杆后飞行器响应速度快,跟随性能好。同时在小角度刹车时候,飞行器的刹车效果比较可观;在GPS 或光流定点悬停以及跟踪物体时,定位精度在cm 级,在室外开阔场地能够定位准确。通过实际飞行和上位机的通信,可看出四旋翼的响应以及抗干扰性的效果都比较不错。并且通过对四轴的简单建模,并且应用ADRC 的控制算法进行验证,使用matlab2016b 的Simulink 建模的仿真模型,通过整定参数,运行仿真模型也可以进一步看出,控制性能较好。可以得到其控制仿真数据波形图6。绿色线的表示期望的输入,而红色线则是控制器的输出,可以看出,ADRC 控制器的性能良好。
图6 :数据波形图
3 结束语
本次设计,基于多MCU 的四旋翼飞行器从理论到系统硬软件系统的实现,通过一步步实践做出实物并验证了编程验证理论的合理性。在多MCU 系统中采用ADRC 控制算法的方面都有很不错的控制效果,本文提及的算法和软件系统设计还需要进一步优化以及调试,以达到稳定且可靠的效果。