计算机系统应用  2018, Vol. 27 Issue (1): 61-65   PDF    
四旋翼飞行器控制系统设计
曹凯, 马贝, 王翔武     
西安工业大学 电子信息工程学院, 西安 710032
摘要:四旋翼飞行器姿态控制是四旋翼飞行器控制系统的核心. 通过分析四旋翼飞行器的飞行原理, 模型建立, 设计了四旋翼飞行器的姿态控制系统; 在该系统中采用STM32系列处理器作为主控芯片, MPU6050三轴加速度集和三轴陀螺仪惯性测量单元、磁力计等传感器用于姿态信息检测. 本文中传感器使用结构简单的数字接口对数据进行交换, 运用模块化的思想对系统进行设计. 使用PID控制算法进行姿态角的闭环控制, 最终实验结果表明, 在实验平台上四旋翼飞行器飞行效果稳定, 系统满足四旋翼飞行器飞行姿态控制的要求.
关键词: PID控制    STM32控制器    四旋翼飞行器    姿态控制    
Design of Quadcopter Aircraft Control System
CAO Kai, MA Bei, WANG Xiang-Wu     
Eletronic and Information Academy, Xi’an Technological University, Xi’an 710032, China
Abstract: The quadrotorcraft attitude control is the core of the four rotorcraft control system. In this study, the attitude control system of four rotorcraft is designed by analyzing the flight principle and model of the four rotorcraft. In this system, the STM32 series processor is used as the main chip, MPU6050 triaxial acceleration set, the triaxial gyroscope inertia measurement unit, magnetometer, and other sensors to detect posture information. The system is based on the idea of modular design and the sensor uses a simple structure of the digital interface to exchange data. The closed-loop control of attitude angle is carried out by double closed-loop PID control algorithm. Finally, the experimental results show that the flight effect of the four rotorcraft is stable on the experimental platform, and the system meets the requirements of flight attitude control of four rotorcraft.
Key words: PID controller     STM32 controller     quadrocopter     attitude control    

四旋翼飞行器是指可以实现自主或遥控飞行, 且不需要操作人员、具有四个旋翼的飞行动力装置[1]; 与常规旋翼式飞行器相比, 其分布对称、结构简单紧凑、易于维护、机动性能强, 不需要类似于直升机上面的尾桨来抵消反扭矩. 因此特别适合在空间比较狭小, 人员难以到达的地方展开任务. 随着微电子和传感器技术等相关科学的不断发展, 特别是在民用和军事领域有很多应用, 促进了四旋翼飞行器的快速发展[2]. 可执行的任务越来越复杂和多样化, 功能越来越完备, 成为世界范围内研究较为热门的一个领域. 四旋翼飞行器技术的不断成熟和门槛的逐步降低不断吸引着越来越多的四旋翼飞行器爱好者投入到了四旋翼飞行器的研制中. 文献[3]通过对四旋翼飞行器动力学和运动学分析, 建立其数学和物理模型, 在此基础上提出了一些控制算法, 并进行验证. 文献[4]采用Atmega128作为主控芯片, 使用了气压传感器, 红外传感器, 三轴加速度计, 两轴陀螺, 三轴磁力计等传感器, 完成对四旋翼飞行器硬件系统的设计与实现, 最终能完成定高, 悬停等任务. 本文在四旋翼飞行器飞行原理基础之上进行四旋翼飞行器控制系统的硬件和软件的设计, 将设计的四旋翼飞行器进行试验试飞, 得出相关结论.

1 飞行器基本工作原理

四旋翼飞行器的控制由四旋翼飞行器上四个电机旋转速度变化来实现的, 无需复杂的传动装置, 机械结构相对简单. 四旋翼飞行器在飞行时的动作可分为6种, 即沿轴向的线性运动和围绕轴向的旋转运动. 线性运动为沿着x, y, z方向的运动, 线性运动即为前后左右位置上的变化, 旋转运动则可分为滚转运动(roll)、俯仰运动(pitch)、偏航运动(yaw). 如图1所示, 按照布置方式可分为X和十模式. 两种模式对于姿态测量和控制而言没有差别. 本设计中考虑到四旋翼飞行器前方可能会安装摄像头等一些传感器, 为了不遮挡视线, 所以本论文中使用X模式布置方式[4].

图 1 两种四旋翼飞行器模式示意图

四旋翼飞行器的运动可以分解为平动与转动两种运动, 平动主要研究飞行器的位置, 转动则主要分析飞行器的姿态. 大地坐标系(惯性坐标系或者导航坐标系, 用e、N或者G表示)用于研究飞行器相对大地的运动状态以及空间位置坐标. 机体坐标系(用b或B)坐标原点取机体的重心, 用于研究飞行器相对于重心的旋转运动, 在图2四旋翼飞行器动力模型图中xB方向指向飞行器的前(横滚轴)、yB方向指向飞行器的右(俯仰轴)和zB方向指向飞行器的下(偏航轴)方向. 选取导航坐标系N为参考坐标系[5], 以坐标轴xN指向北、yN指向东和zN指向重力方向. MF分别代表飞行器受到转矩和升力.

四旋翼飞行器产生基本动作的原理为: 由于旋翼飞行器陀螺效应和空气动力扭矩效应的存在, 为使其效应消失, 四旋翼飞行器上两两相邻的电机转速方向是相反的, 保证4个电机转速一致时机身不发生转动. 当四个电机转速相同并且同时增大时, 四旋翼飞行器升力将克服四旋翼飞行器的自身重力产生Z轴方向垂直向上的力, 使得四旋翼飞行器垂直上升. 当升力小于重力时, 垂直下降, 当升力等于重力时, 便保持悬停状态. X轴方向的两个电机不同时处于同一水平面时产生的运动叫俯仰运动, 即电机1、4的转速不发生变化, 电机2、3的转速增大, 则会导致电机2和电机3上产生升力不同, 从而导致四旋翼飞行器发生X轴方向的俯仰运动. 滚转运动和俯仰运动类似, 区别在于滚转运动机身是沿着Y轴方向发生倾斜[6]. 偏航运动中巧妙的使用了于反扭矩的存在, 使得四旋翼飞行器跟随旋翼自转. 当四旋翼飞行器对应的转速方向相同的两个电机转速和另外两个电机转速速度不一样时, 四旋翼飞行器将会顺着电机转速快的那两个电机旋转方向旋转, 实现绕Z轴顺时针或是逆时针的变化, 即为偏航运动.

图 2 四旋翼飞行器动力模型

2 系统结构和姿态解算

飞行器系统结构图如图3所示. 在此系统中磁力计、加速度计、陀螺仪组成姿态测量系统, 主控制器将姿态测量系统的数据进行姿态解算得到当前四旋翼飞行器的飞行姿态, 再结合遥控器给定的信号作为PID控制器的输入, 随后通过PID控制器输出PWM信号到电子调速器, 控制电机转速发生不同的变化, 实现对四旋翼飞行器姿态的控制.

通过姿态测量系统首先的到传感器的原始数据, 获取初始姿态, 使用四元数对姿态进行更新, 为了便于程序实现四旋翼飞行器控制. 由于四元数线性方程组计算量小, 易于操作, 比较贴近工程实际, 欧拉角转换成四元数算法进行姿态更新, 通过互补滤波器进行姿态修正, 然后对四元数进行规范化处理, 进行下一次的姿态更新[7].

2.1 初始姿态获取

在研究物体转动和位置变化中, 常用来唯一的确定定点转动位置的三个一组参量, 由俯仰角θ、偏航角ψ和滚转角 $\gamma $ 组成, 各轴之间的角度变化用欧拉角来表示, 需要分别绕三个坐标轴转动三次方能实现. 从导航坐标系n到载体坐标系b的姿态转换矩阵如公式(1)所示.

图 3 飞行器系统结构图

$R_b^n = \left( {\begin{array}{*{20}{c}}{{r_{xx}}}&{{r_{xy}}}&{{r_{xz}}}\\{{r_{yx}}}&{{r_{yy}}}&{{r_{yz}}}\\{{r_{zx}}}&{{r_{zy}}}&{{r_{zz}}}\end{array}} \right) = \left( {\begin{array}{*{20}{c}}{\cos \theta \cos \psi }&{ - \cos \phi \sin \theta + \sin \phi \sin \theta \cos \psi }&{\sin \theta \sin \psi + \cos \phi \sin \theta \cos \psi }\\{\cos \theta \sin \psi }&{\cos \phi \cos \psi + \sin \phi \sin \theta \sin \psi }&{ - \sin \phi \cos \psi + \cos \phi \sin \theta \sin \psi }\\{ - \sin \theta }&{\sin \phi \cos \theta }&{\cos \phi \cos \theta }\end{array}} \right)$ (1)

欧拉角的更新方程公式(2):

$\left\{ {\begin{array}{*{20}{c}}{\psi = {{\tan }^{ - 1}}\left( {\displaystyle\frac{{{r_{yx}}}}{{{r_{xx}}}}} \right),[ - \pi ,\pi ]}\\[5pt]{\phi = {{\tan }^{ - 1}}\left( {\displaystyle\frac{{{r_{zy}}}}{{{r_{zz}}}}} \right),[ - \pi ,\pi ]}\\[5pt]{\theta = {{\sin }^{ - 1}}\left( { - {r_{zx}}} \right),[ - \displaystyle\frac{\pi }{2},\displaystyle\frac{\pi }{2}]}\end{array}} \right.$ (2)
2.2 四元数姿态更新

定义一个四元数, 如公式(3):

$\begin{array}{c}q = {\left[ {w\;\;x\;\;y\;\;z} \right]^T}\\{\left| q \right|^2} = {w^2} + {x^2} + {y^2} + {z^2} = 1\end{array}$ (3)

通过旋转轴和绕该轴旋转的角度可以构造一个四元数, 如公式(4):

$\begin{array}{c}w = \cos \left( {\alpha /2} \right)\\x = \sin \left( {\alpha /2} \right)\cos \left( {{\beta _x}} \right)\\y = \sin \left( {\alpha /2} \right)\cos \left( {{\beta _y}} \right)\\z = \sin \left( {\alpha /2} \right)\cos \left( {{\beta _z}} \right)\end{array}$ (4)

其中, α是绕旋转轴旋转角度, cos(βx)、cos(βy)、cos(βz)为旋转轴在xyz方向的分量, 由此确定旋转轴.

四元数单位化, 如公式(5):

$\begin{array}{c}\left\| q \right\| = Norm\left( q \right) = \sqrt {{w^2} + {x^2} + {y^2} + {z^2}} \\Normlize\left( q \right) = q/Norm\left( q \right) = q/\sqrt {{w^2} + {x^2} + {y^2} + {z^2}} \end{array}$ (5)

欧拉角表达形式简单、便于理解, 四元数计算过程简单, 传感器中以欧拉角形式输出各姿态量, 使用欧拉角转四元数的方式作为姿态更新方法. 公式(4)和公式(5)是它们之间的相互转化的公式. 由四元数表示方向余弦矩阵如下:

$\begin{array}{l}C_b^e = \left[ {\begin{array}{*{20}{c}}{{C_{11}}}&{{C_{12}}}&{{C_{13}}}\\{{C_{21}}}&{{C_{22}}}&{{C_{23}}}\\{{C_{31}}}&{{C_{32}}}&{{C_{32}}}\end{array}} \right] = \\[7pt]\left[ {\begin{array}{*{20}{c}}\!\!\!\!\! {\left( {q_0^2 + q_1^2 - q_2^2 - q_3^2} \right)}\!\!&\!\!{2\left( {{q_1}{q_2} - {q_0}{q_3}} \right)}\!\!&\!\!{2\left( {{q_1}{q_3} + {q_0}{q_2}} \right)} \!\!\!\!\! \\\!\!\!\!\! {2\left( {{q_1}{q_2} + {q_0}{q_3}} \right)}\!\!&\!\!{\left( {q_0^2 - q_1^2 + q_2^2 - q_3^2} \right)}\!\!&\!\!{2\left( {{q_2}{q_3} - {q_0}{q_1}} \right)} \!\!\!\!\! \\\!\!\!\!\! {2\left( {{q_1}{q_3} - {q_0}{q_2}} \right)}\!\!&\!\!{2\left( {{q_2}{q_3} + {q_0}{q_1}} \right)}\!\!&\!\!{\left( {q_0^2 - q_1^2 - q_2^2 + q_3^2} \right)} \!\!\!\!\! \end{array}} \right]\end{array}$ (6)

由方向余弦表示欧拉角有:

$\begin{array}{c}\phi = \arctan \left[ {{\textstyle{{{c_{32}}} \over {{c_{33}}}}}} \right]\\\theta = \arcsin \left[ { - {c_{31}}} \right]\\\varphi = \arctan \left[ {{\textstyle{{{c_{21}}} \over {{c_{11}}}}}} \right]\end{array}$ (7)
3 四旋翼飞行器软件系统设计

软件系统中的包含的主要模块有主逻辑模块、传感器数据采集模块、数据处理模块、初始化模块、电机驱动模块、无线遥控模块、飞行控制模块、报警模块等.

软件设计采用模块化的思想对四旋翼飞行控制系统进行设计, 模块主要包括数据采集与处理模块、控制算法模块、指令收发模块等等. 系统上电后首先对系统的硬件进行初始化, 此过程中完成四旋翼飞行器上各传感器校准以及电子调速器的自检等, 此时如果四旋翼飞行器控制板上出现问题, 板上的LED等会发出故障信号主要包括各姿态传感器以及电调电机的自检和传感器校准. 完成初始化后, 系统等待遥控控制指令, 判断是否解锁, 解锁后STM32对姿态传感器MPU6050采集到的数据姿态解算, 然后给每个电机给定一个输出量, 实现对四旋翼飞行器的控制, 同时四旋翼飞行器上的信息和各个传感器数据传输给上位机, 飞行控制主程序流程图如图4所示.

图 4 飞行控制器主程序流程图

图5是捷联式惯性导航原理图, 捷联式惯性导航系统在工作时不依赖外界信息, 也不向外界辐射能量, 不易受到干扰破坏, 是一种自主式导航系统. 它省去了惯性平台, 陀螺仪和加速度计直接安装在飞行器上, 使系统体积小、重量轻、成本低、维护方便. 此四旋翼飞行器位姿解算中使用的就是捷联式惯性导航.

图 5 捷联式惯性导航原理图

四旋翼飞行器的控制目标是按照操作者的控制在有操作时按照完成指定的操作任务, 无操作时保持悬停状态. 本文使用PID控制器对四旋翼飞行器进行的姿态控制, 原理图如图6所示. PID控制无需对系统进行精确地建模, 以姿态欧拉角的期望值与当前姿态角度的计算值之差作为PID控制器的输入, 输出PWM控制量到每个电机, 三个PID输出量叠加到不同的位置的电子调速器上, 驱动电机速度发生变化, 使飞行器能够完成三维空间的各种运动[9].

图 6 姿态PID控制整体流程图

四旋翼飞行器系统是一个非线性系统, 当四旋翼飞行器处于悬停和稳定平稳飞行时, 可已经四旋翼飞行器系统近似为线性系统[10]. 实际对四旋翼飞行器的控制对象是电机和螺旋桨, 螺旋桨的转动是通过电机转动而转动, 从而产生力矩和扭矩, 然后作用于四旋翼飞行器. 陀螺仪得到各姿态的角速率, 经过积分得到各姿态角. 由于对四旋翼飞行器控制时, 实时性要求很高, 同时微处理器处理信息、发送指令、无刷电机相应都会产生微秒级的延迟. 假如不进行校正, 会直观地发现滞后比较严重, 所以要进行校正, 使响应提前达到稳定的范围之内. 系统中采用PID控制器, 使用比例参数决定系统的相应速度, 积分参数消除四旋翼飞行器系统的稳态误差, 微分参数可以使整个系统的相位提前, 又可以消除飞行器抖动, 从而保证整个系统的稳定. 根据每个四旋翼飞行器系统的实际情况, 选择合适的控制参数才能得到理想的飞行结果.

4 结论

论文中该系统主控芯片采用STM32F103微控制器, 利用四元数算法得到姿态解算, 设计了改进的变参数PID控制算法的姿态控制系统. 本论文的优点全面分析和设计了四旋翼飞行器的硬件和软件, 最终实现四旋翼飞行器指定的功能, 并试验. 使用STM32芯片, 便于以后对功能进行扩展, 如添加GPS模块、图传模块等. 在于经过大量的飞行测试, 表明该飞行控制系统能够实现四旋翼飞行器稳定的姿态控制, 实现了定点悬停、定高悬停、前后侧向飞行等功能.

图 7 四旋翼飞行器室外悬停

PID参数的调节需要耐心细致的工作态度才能得到比较好的结果. 通过不断地试验, 所设计的原型样机已经能够实现平稳的飞行(如图7, 飞行器室外悬停), 基本达到了预期的目的.

参考文献
[1]
米培良. 四旋翼飞行器控制与实现[硕士学位论文]. 大连: 大连理工大学, 2015.
[2]
郭宝录, 李朝荣, 乐洪宇. 国外无人机技术的发展动向与分析. 舰船电子工程, 2008, 28(9): 12-21.
[3]
赵敏. 浅谈四旋翼飞行器的技术发展方向. 科技创新与应用, 2016(16): 100.
[4]
吕强, 郭善亮, 王冬来, 等. 基于DSP四旋翼飞行器姿态控制系统硬件设计. 计算机与数字工程, 2011, 39(7): 144-146.
[5]
刘峰, 吕强, 王国胜, 等. 四轴飞行器姿态控制系统设计. 计算机测量与控制, 2011, 19(3): 583-585, 616.
[6]
张广玉, 张洪涛, 李隆球, 等. 四旋翼微型飞行器设计. 哈尔滨理工大学学报, 2012, 17(3): 110-114.
[7]
张镭, 李浩. 四旋翼飞行器模糊PID姿态控制. 计算机仿真, 2014, 31(8): 73-77.
[8]
陈永冰, 钟斌. 惯性导航原理. 北京: 国防工业出版社, 2007.
[9]
张金楼. 经济型运动载体航向姿态测量系统的研究与开发[硕士学位论文]. 西安: 西安电子科技大学, 2007.
[10]
刘焕晔. 小型四旋翼飞行器飞行控制系统研究与设计[硕士 学位论文]. 上海: 上海交通大学, 2011.