基于Arduino的四旋翼飞行器设计与实现
- 格式:doc
- 大小:22.00 KB
- 文档页数:5
龙源期刊网
基于Arduino的四旋翼飞行器设计与实现
作者:董瑞智 李泽文 徐振平
来源:《电脑知识与技术》2017年第28期
摘要:针对四旋翼飞行器姿态数据测量存在误差、控制算法选择较难的问题,该文选用Arduino开发板作为系统控制板,构建基于Arduino的四旋翼飞行器。选择惯性测量单元六轴组件MPU6050、电子罗盘HMC5883L及气压计BMP085等多个MEMS传感器实时采集飞行器姿态数据,并由双闭环PID控制器实现对两组四路电机的转速控制。为降低传感器数据的测量误差,该文采用卡尔曼滤波算法对飞行器姿态数据进行滤波与融合,为飞行器的姿态控制提供有利条件。经飞行实验显示,该文设计的飞行器实现了悬停、升降和转弯等功能,并验证了该文使用卡尔曼滤波算法降低姿态数据测量误差和双闭环PID控制器控制飞行器状态的有效性。
关键词:四旋翼飞行器;MEMS传感器;卡尔曼滤波;姿态解算;PID控制
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2017)28-0263-03
Abstract: In order to solve the problem of the measurement error of the attitude data of the four
rotor aircraft and the difficulty of the selection of the control algorithm. This paper uses Arduino
development board as the system control board to build a Arduino based four rotor aircraft, and
select some MEMS sensors, such as the inertial measurement unit six axis components MPU6050,
HMC5883L electronic compass and barometer BMP085, to collect aircraft attitude data. Then, use
double closed-loop PID controllers to control the speed of two groups of four motors. In order to
reduce the measurement error of sensor data, the Calman filtering algorithm is used to filter and fuse
the attitude data of aircraft, which provides favorable conditions for attitude control of spacecraft.
The flight experiment shows that the design of the aircraft can hovering, lifting and turning
function, and verified effectiveness of using the Calman filter algorithm to reduce the measurement
error of attitude data and using double closed-loop PID controllers to control the state of the aircraft.
Key words: quad-rotor helicopter; MEMS sensor; kalman filtering; attitude calculation;
PID controller
1 概述
四旋翼飞行器,一种由4个转子推动飞行[1],六自由度垂直起降飞行器[2],能够完成悬停、飞行、垂直起降等功能。通过改变每个转子的速度,机身在各个方向承受不同的推力,从而实现机身倾斜,以达到转向和控速的目的。目前,无人机的应用领域相当广泛,如农业上的植保无人机,商业上的摄影无人机,亚马逊的快递无人机,工程质量检测上的巡回无人机,地形检测的无人机等等。四旋翼飞行器以其小巧易控制,稳定操控等优点得到市场的广泛认可。 龙源期刊网
近年来,众多学者针对四旋翼飞行器提出了多种控制算法,如自适应单神经元控制算法、鲁棒控制算法、滑模控制算法等,但这些算法对中控处理器性能有较高的要求。本文则以Arduino开发板为主控板,辅以双闭环PID控制器,即基于Arduino的四旋翼飞行器,能够节约成本,并可有效控制飞行器的设计方案。
2 飞行原理
四旋翼飞行器的主体是十字形交叉结构,在每个机架的顶端固定有独立电机分别驱动各自的螺旋桨。如图1所示,螺旋桨1和螺旋桨3的旋转方向一致,由一组电机驱动;螺旋桨2和螺旋桨4的方向一致,由另一组电机驱动。两组电机按照指定的转速旋转,提供了四旋翼飞行器所需升力,垂直上下等;通过改变某电机的旋转速度形成差动力矩,实现飞行器的翻滚和前进控制。
3 系统结构设计
四旋翼飞行器控制系统的硬件结构由主控模块、微传感器测量模块、无线遥控模块、电机驱动装置等组成。如图2所示,飞行器的整个工作过程可以分为以下4个步骤:
1) 获取陀螺仪、加速度计、电子罗盘和气压计等传感器采集到的数据,将其处理后得到姿态数据A;
2) 由无线模块获取遥控器给予的信号量B;
3) 姿态数据A由I2C协议、遥控器信号量B由SPI传给主控芯片进行PID控制;
4) 根据形成的四路PWM占空比波形来控制两组四路电机的旋转速度。
3.1 主控模块
本文选用Arduino Uno单片机作为主控板,该主控板的核心处理器为Atmega128,具有14个数字I/O端口(其中6个端口可作为PWM输出端口),6个模拟输入端口, I2C和SPI通信接口串口,以及10位内置 A/D端口。Arduino Uno主控板的这种结构能够满足系统设计要求[3]。
3.2 传感器模块
图2中所用传感器模块型号分别为:MPU6050模块(包含三轴陀螺仪和三轴加速度计两种MEMS传感器)、HMC5883L磁力计(电子罗盘)、BMP085气压计。MEMS传感器的测量非常灵敏,对机身震动敏感,因此机身震动对陀螺仪和加速度计测量有较大干扰,这将导致瞬间角速度值产生较大误差。为保证系统能得到稳定的姿态信息,可将MEMS传感器与龙源期刊网
HMC5883L磁力计一同使用。MPU6050模块、HMC5883L磁力计和BMP084气压计这三个传感器均是由端口通过I2C协议进行通信。
3.3 无线遥控
为保证飞行器接收信号的稳定性和正确性,无线遥控模块采用NFR2401,其工作频段在2.4G — 2.5GHz,其传输速率稳定且高达2M bit/s。正是由于NFR2401具有非常高的传输速率,飞行器在很短的传输距离内能有效避免信号的干扰,达到信号稳定传输。
3.4 驱动模块
考虑到飞行器所需升力较大,传统电机无法满足要求,故采用无刷电机作为旋翼驱动电机。又由于无刷电机所需驱动电流较大,Arduino主控板所能驱动的电流无法达到此要求,因此本文采用电调驱动四个无刷电机,电调采用了线性稳压技术,能提供较高且稳定的无刷电机所需电流。
4 飞行器姿态解算
4.1 数据滤波处理
虽然采用MEMS微传感器进行数据测量精度较高,但是由于传感器的高敏感性,以及飞行器飞行过程中的机身震动,测量出来的数据存在误差。MPU6050模块包含加速度计和陀螺仪两个功能组件,加速度计用来测量加速度值,但加速度计容易受外界干扰,如飞行器震动等,瞬时误差较大;陀螺仪用于角运动的检测,而陀螺仪由于其自身测量存在着积分漂移误差和温度漂移误差,当其测得数据经由自身积分处理后,随着时间的增加积分误差逐渐加大,所以MPU6050模块所测量的数据在短期内有效。HMC5883L磁力计的测量也是针对短期内的测量有效,长时间的积累误差不可避免。因此,本文将HMC5883L磁力计的测量值用于MPU6050模块中加速度计测量值的修正。
总的来说,在飞行器飞行过程中,虽然陀螺仪测量的数据值短时间内比较可靠,但在长时间内使用电子罗盘测量值修正后的加速度计采集数据会更加可靠[4],其操作实质是将陀螺仪和加速度计的测量值分别与电子罗盘的测量值进行融合,得到陀螺仪和加速度计在阶段性更加可靠的信号。本文针对传感器在长时间采集数据误差大的问题,利用卡尔曼滤波算法对多个传感器测量得到的数据进行滤波与融合处理,降低测量误差,为飞行器的姿态控制提供有利条件。
卡尔曼滤波算法在飞行器设计中具体实现流程如图3所示[5]。
卡尔曼(Kalman) 滤波[6]算法包括预估和校正两个主要过程[7]。预估过程利用时间更新方程对当前状态进行先验估计,并及时向当前推算当前状态变量和误差协方差估计的值,以便为下一个时间状态构造先验估计值;校正过程负责反馈,在预估过程中的先验估计值及当前测龙源期刊网
量变量的基础上利用测量更新方程建立起当前状态的改进后验估计[8]。如图4所示,这里以飞行器的翻滚角为例,将测量值融合前后进行对比,可以看到融合之后的数据剔除了部分误差,使得翻滚角的值不再有较大的上下浮动,数据曲线相对比较平滑,由此说明卡尔曼算法的有效性。
4.2 姿态解算
飞行器姿态解算,顾名思义是对飞行器运行过程中的姿态进行计算,从而得知飞行器是否倾斜、高度多少等信息。在得到计算后的姿态信息,可对飞行器进行更好的操控,如翻转、悬停、上升下降等动作。由此可见姿态解算是飞行器设计中非常重要的环节,主要包括两大部分:融合传感器数据和双闭环PID控制。
传感器测量数据融合,通过互补滤波器等方法将传感器的多轴数据从四元数形式转换到欧拉角进行计算,从而得到飞行器的姿态信息,如姿态角和角速率。
双闭环PID控制,控制器的重点是对飞行器电机的转速进行控制,以达到对飞行器姿态的控制。如图5所示,控制器的外环是飞行器姿态角度的PID控制,内环是角速率的PID控制。控制器的外环首先对期望姿态角度和传感器测量的实际姿态角度相比较得到误差角度,然后将误差角度经由PID控制器处理计算出期望角速率,接着将期望角速率和传感器测量的实际角速率作为内环的两个输入量,经PID控制器计算后得到飞行器姿态数据。最后,经过程序处理将姿态数据转换成PWM信号,达到控制电机转速。