1. 引言
MEMS是微机电系统(Micro-Electro-Mechanical Systems)的英文缩写,它是随着半导体集成电路微细加工技术和超精密机械加工技术的发展而发展起来的 [1] 。关于航姿演示系统的设计,使用MEMS惯性传感器来测量载体航姿的研究并不少见,但是利用MPU6050测量航姿并且将航姿利用3D模型实时展示出来的研究较少。本系统中使用MPU6050作为惯性测量单元,采集载体的三轴加速度和三轴角速度数据,通过Arduino板上的MEGA328P微处理器进行滤波和解算,并将解算出的航姿角信息通过BT-HC05蓝牙传输给计算机,计算机中的Labview程序根据航姿角信息调动3D模型实现模型与载体同步转动。本方案对于航姿教学演示有着重要意义。
针对航姿角的解算,单独使用加速度数据或角速度数据都不能解算出满足系统精度要求的航姿角,因此本研究中先对角速度数据进行卡尔曼滤波,然后融合加速度和角速度数据 [2] 并应用基于四元数的互补滤波算法,最终解算出能够满足系统要求的航姿角。
2. 系统总体结构
航姿演示系统包括上位机和下位机两部分,其中下位机主要由MEMS惯性传感器MPU6050、Arduino开发板和BT-HC05组成,下位机即载体航姿测量平台的硬件系统;上位机由BT-HC05、CP2102和计算机组成,上位机即航姿演示系统。系统的总体结构如图1所示。
惯性传感器模块采用MPU6050,采集载体的加速度和角速度信号;Arduino开发板上的MEGA328P微处理器,可以实现与MPU6050的I2C通信,并根据接收到的加速度和角速度信号进行航姿解算;BT-HC05蓝牙模块共使用了两个,一个作为发送端,属于下位机,另一个作为接收端,属于上位机;CP2102是USB-UART转接器;计算机中的Labview程序可以显示出载体三个航姿角的数值变化,并且显示出飞机3D模型的转动情况。
3. 载体航姿角的解算
在航姿演示系统中,MPU6050主要用于采集载体的三轴加速度和三轴角速度信号,MPU6050包含加速度计和陀螺仪,这两种传感器在频域上有着不同的特点。对于陀螺仪而言,陀螺仪的动态响应较好,对于载体的频繁运动较为敏感,但是利用陀螺仪计算航姿时会存在累积误差,它会随着时间延长不断增大;利用加速度计解算航姿不存在累积误差,但是它的动态响应较差,不能及时跟踪载体的航姿变化,这两种传感器刚好在频域上可以互相弥补对方的缺点。因此为了得到更加精准的航姿角,使系统有更好的动态性能,本方案在解算航姿角时利用互补滤波算法融合加速度计和陀螺仪的测量数据。

Figure 1. The overall structure of the system
图1. 系统总体结构
为进一步提高航姿角的解算精度,先对MPU6050输出的角速度信号进行卡尔曼滤波,然后融合加速度和滤波后的角速度数据并应用基于四元数的互补滤波算法解算出载体的航姿角。互补滤波的思想就是融合加速度计和陀螺仪数据,用加速度计的输出校正陀螺仪的累积误差,以达到提高航姿解算精度的目的 [3] 。当被测载体发生转动时,惯性测量单元感应出载体三个轴方向上的加速度和角速度变化,微控制器根据给出的算法解算出载体实时的姿态角,解算过程如图2所示。
基于四元数的互补滤波过程如图3所示。
图3中
是重力向量,e即计算出的误差,这个误差其实是误差偏角的正弦值,但是当这个角度足够小时,它的正弦值就可以看作与它相等。
为测试基于四元数的互补滤波算法的解算效果,同时采集一段时间内使用此种方法解算出来的载体航姿角数据和使用快速解算法(使用测得的加速度或角速度直接解算载体航姿角)解算出来的两组载体航姿角数据,并使用Matlab进行仿真对比,结果如图4所示。

Figure 3. Complementary filtering algorithm based on quaternion
图3. 基于四元数的互补滤波算法
(a) 俯仰角
(b)滚转角
(c) 偏航角
Figure 4. Comparison of the two solutions
图4. 两种解算方法效果比较
由图4可以明显看出,使用基于四元数的互补滤波算法解算出的航姿角数据更加稳定,更能符合系统的要求。
4. 系统的硬件结构
4.1. 载体平台的硬件系统
载体平台硬件系统即下位机的硬件载体,Arduino开发板作为航姿测量的硬件平台共有三个作用,一是读取MPU6050的输出,二是根据MPU6050的输出进行航姿解算,三是将解算后的航姿角数据通过蓝牙发送出去。开发板的核心是MEGA328P微处理器,引脚如图5所示。
4.2. 惯性测量单元
MPU6050是一款六轴MEMS惯性传感器,上面集成了三轴加速度计和三轴陀螺仪,其中每一个轴的输出都为16位的ADC,陀螺仪的量程可选为±250、±500、±1000、±2000˚/s [4] 。引脚描述如图6所示。
4.3. 无线数据传输模块
系统中使用BT-HC05蓝牙模块满足下位机与上位机之间的无线通信需求。BT-HC05蓝牙模块的有效传输距离为10 m,借助USB-UART桥接器CP2102和串口调试助手软件可以方便对蓝牙的通信参数进行调试。
5. 系统的软件结构
系统软件主要完成载体航姿的解算、系统之间的通信以及3D模型的建立和调动问题。系统总体的软件结构如图7所示。软件部分包括上位机部分和下位机部分,上位机部分包括Labview软件平台和3D模型,下位机部分包括航姿解算和数据通信 [5] 。
上位机中Labview软件平台是整个软件系统的基础,它可以分为数据通信、数据处理和调动3D模型三个部分;3D模型部分使用Vrmlpad软件编写飞机的3D模型,该模型由Labview程序调动。
下位机航姿解算部分包括MEGA328P中的数据滤波算法和航姿角解算算法,而数据通信部分包括微处理器与MPU6050的通信以及微处理器、蓝牙和计算机之间的通信。

Figure 8. Labview data communication
图8. Labview数据通信
Labview程序的数据通信部分主要使用VISA,如图8所示,使用VISA配置串口对串口通信的各项参数进行设置;数据处理部分主要用到队列操作函数和While循环,例如获取队列引用和元素出入队列等等;调动3D模型部分主要用到加载VRML文件、旋转对象、清除变形设置等等,如图9所示。程序可以根据输入的三个轴上的角度数据,在3D模型的三个轴方向上进行旋转,使其能够实时跟踪载体的航姿。
6. 系统测试
完成每一个模块的设计后,组装整个系统并测试效果,航姿演示系统的工作流程如图10所示。
1) 选择端口
点击前面板“端口选择”,演示系统的端口号选为CP2102与计算机连接的端口号,此次调试中端口号选为COM7,如图11所示。
2) 系统开始运行
点击程序中工具栏操作选项中的运行,系统开始工作,如图12。系统开始运行,工作时间开始计系统开始运行时;示波器显示出三个角度的变化情况;出现飞机模型并且随着载体的转动而转动。
3) 结束运行
点击前面板上“停止”按钮,则系统停止运行,前面板上全部示数保持不变。如图13所示。
7. 结语
本方案采用arduino开发板、MPU6050、两个BT-HC05模块,利用labview软件实现了载体航姿的演示功能;并且采用了卡尔曼滤波和基于四元数的互补滤波算法,使得解算出的航姿角更加稳定和精确。系统测试表明本方案能够快速响应航姿变化并将其测量和显示出来,该方案具有一定的工程参考和应用价值。