基于陀螺仪与加速度传感器的动态姿态检测系统设计毕业论文
2020-04-10 16:11:53
摘 要
本文采用InvenSense公司生产的MPU6050芯片进行动态姿态检测,对陀螺仪和加速度传感器进行不同方式的数据融合和姿态解算,旨在提高姿态检测的精度、时效性和可靠性。
为了达到本次设计的目的,本文主要研究了传感器融合算法和上位机姿态检测显示,主要内容包括:(1)分析了各单一传感器对姿态测量原理和单一传感器测量的不足;(2)分析了测量误差产生原因,采取了滑动加权滤波器消除角速度传感器随机误差和系统误差的消除;(3)分别利用卡尔曼滤波算法融合和读取mpu6050里的数字运动处理器解算出的四元数数据两种方法来进行动态姿态检测,利用实验法不断修正卡尔曼滤波器参数,设计科学合理的卡尔曼增益计算式,增加姿态动态检测的准确性和时效性,动态姿态检测精度在0.1度以内;(4)进行了上位机设计,用Labview编写上位机实现了对姿态的动态检测的显示功能,分别对解算出来欧拉角数值、二维动态曲线、和3D模型进行动态显示。
关键词:动态姿态检测;陀螺仪;加速度传感器;MPU6050;STM32;Labview
Abstract
In this paper, dynamic attitude detection using the MPU6050 chip manufactured by Inven- Sense. Different ways of data fusion and attitude solving for gyroscopes and acceleration sensors to improve attitude detection accuracy, timeliness, and reliability.
In order to achieve the purpose of this design, this paper mainly studies the sensor fusion algorithm and the host machine attitude detection display. The main contents include: (1) Analysis of the insufficiency of attitude measurement principle and single sensor measurement for each single sensor; (2) Analyze the cause of the measurement error, adopt the sliding weight filter to eliminate the random error of the angular velocity sensor and eliminate the systematic error; (3) Using the Kalman filter algorithm to fuse and read the quaternion data solved by the digital motion processor in the mpu6050, respectively, to perform dynamic attitude detection, The Kalman filter parameters are continuously modified using experimental methods, a scientific and reasonable Kalman gain calculation formula is designed to increase the accuracy and timeliness of the attitude detection, and the dynamic attitude detection accuracy is within 0.1 degrees; (4) The upper computer is designed, and the upper computer of Labview is used to realize the dynamic detection of the attitude. The Euler angles, two-dimensional dynamic curves and 3D models are displayed dynamically.
Key Words: Attitude detection; Gyroscope; Acceleration sensor; MPU6050;STM32;Labview
目录
第1章 绪论 1
1.1设计的背景、目的和意义 1
1.1.1设计的背景 1
1.1.2设计的目的和意义 1
1.2国内外研究现状 1
1.2.1国内研究现状 1
1.2.2国外研究现状 2
1.3设计内容 2
第2章 设计方案的比较、选择与设计 4
2.1总体设计方案 4
2.2姿态检测方案设计 4
2.2.1加速传感器工作原理和角度测量 4
2.2.2 陀螺仪传感器工作原理和角度测量 6
2.2.3 传感器选型 7
2.3处理器选择方案 8
2.3.1 AT89C51 8
2.3.2 STM32系列处理器 8
2.3.3 处理器选择 8
2.4编程软件选择 8
2.5姿态解算方案 9
2.5.1 姿态解算原理 9
2.5.2姿态解算方案设计 9
2.6上位机编写软件选择和设计方案 10
2.6.1 编程软件选择方案 10
2.6.2上位机功能设计 10
第3章 硬件电路设计 12
3.1处理器最小系统 12
3.1.1时钟电路 12
3.1.2复位电路 13
3.2 ST-LINK V2下载电路 14
3.3 USB-TTL串口通信电路 14
3.4 MPU6050与STM32连接电路 15
第4章 软件设计 17
4.1 程序功能分析和设计 17
4.2 系统程序设计 18
4.2.1系统总体实现流程 18
4.2.2读取MPU6050数据程序设计 18
4.2.3数据处理设计 21
4.2.4下位机与上位机的通信程序设计 22
4.2.5 上位机程序设计 24
第5章 调试和结果分析 26
5.1调试 26
5.2结果分析 26
5.2.1对比分析 26
5.2.2误差分析 30
第6章 总结与展望 31
参考文献 32
附录 34
致谢 35
第1章 绪论
1.1设计的背景、目的和意义
1.1.1设计的背景
在当今科技发展进步的背景下,姿态检测涉及各行各业。平衡车、无人飞行器、无人驾驶、机器人、虚拟现实装备、导弹快速跟踪……等都需要动态姿态检测。获取更高的检测精度和提高姿态检测的可靠性成为当前急需攻克的研究方向。一些如机械陀螺仪以及光纤陀螺仪等高精度惯性导航传感器不仅体积大,而且价格昂贵。单一的陀螺仪或加速度传感器又不能满足动态检测的精度,各种的检测误差都会使检测的准确度下降。所以,通过多个传感器的进行姿态检测,借助数据融合算法提高姿态检测的精度成为研究的热点[1]。
1.1.2设计的目的和意义
针对单一的陀螺仪或加速度传感器都不能满足姿态检测精度要求,采取数据融合算法提高检测精度。合理科学的融合算法不仅可以得到一个最优估计值,还可以提高检测系统的时效性。为进一步的姿态控制系统提供有效准确的信息基础,对各项涉及姿态检测的科学研究和项目具有重大意义。目前常见的姿态数据融合算法有互补滤波算法、卡尔曼滤波算法和四元数姿态解算,各有各自得优点和缺点。其中互补滤波算法可以看成是一种定值的卡尔曼滤波算法,本次设计采用改进后的卡尔曼滤波算法,旨在提高姿态动态检测的准确度,同时实验验证和对比测量结果,对本次设计进行评估。编写上位机,动态显示测量值和3D动态模型,使测量结果看起来更加直观和生动。
1.2国内外研究现状
1.2.1国内研究现状
目前,国内关于姿态检测涉及领域,如无人机飞行器,发展已经相当成熟。但由于高精度的检测传感器意味着高成本,较高成本从某种意义上也就限制了其普遍使用和广泛传播。所以降低制造成本和提高姿态算法的性能还是研究的方向和热点。对不同传感器的信号进行融合,利用手动转台来实现静态标定,纠正零偏[2]。采用高精度的陀螺仪进行动态标定。基于补偿卡尔曼滤波器的动态姿态估计,在很大程度上提高了姿态估计的精度。国内很多学者都在进行基于传感器的动态姿态检测的研究,例如通过加速度传感器来检测人体是否跌倒[3],利用惯性导航对机器人的水平运动姿态进行检测[4]。
1.2.2国外研究现状
国外许多学者提出了很多种姿态滤波解算方法。陀螺仪和速度传感器进行数据融合[5],修正陀螺仪的累积误差。Madgwick等基于四元数的描述方法,研究出来了基于梯度下降算法的姿态估计算法[6]。Tian等研究出了基于自适应增益的补偿滤波算法,准确的估算出了陀螺仪误差。总之,提高姿态检测的准确度和提高检测的时效性仍然是国外研究热点。
1.3设计内容
本文设计内容是基于陀螺仪和加速度传感器的动态姿态检测系统设计,旨在通过对陀螺仪和加速度传感器的信号进行数据融合,检测出可以表示姿态的一组欧拉角[7],分别是Pitch、Yaw、Roll。
首先由姿态检测原理可以知道,加速度传感器对姿态的静态检测准确好,但动态检测效果差。而陀螺对姿态动态检测好,静态检测不准确,会产生累积误差的缺点。针对以上问题,对陀螺仪和加速度传感器进行数据融合,利用加速度传感器的解算姿态角去修正陀螺仪积分的误差,实现优势互补,提高姿态检测的精度。考虑到利用磁力计校正陀螺仪对Yaw的测量造成的误差与加速度计校正陀螺仪的积分误差原理一致,并且本文主要在于算法的设计和出于本次设计成本的考虑,再加上对Yaw的校正在本次设计种意义不大。本次仅对Pitch和Roll进行了校正,而Yaw角仍然是由单一的陀螺仪检测出来,所以仍然存在误差。本次设计不仅对检测出姿态的欧拉角,还具有一点准确度和时效性。
目前对MPU6050测量值姿态解算有三种常用方法,分别是互补滤波数据融合方法、卡尔曼滤波最优估计方法和MPU6050自带的DMP处理。这三种方法相比单一的陀螺仪都在一定程度上的消除了累积误差,相比单一的加速度传感器对姿态的检测,都在一定程度上消除了高频噪声和检测抖动。在互补滤波算法[8]中的滤波器系数和卡尔曼滤波算法中的协方差Q、R的取值需要经不断的实验确定才能得到较理想的融合效果,DMP处理实质采用四元数解算姿态,计算较为繁琐,加速度传感器对陀螺仪的修正快慢程度也取决于一些参数的设定。相比前两种方法,解算效果好但其收敛速度较慢。本文采用了不同的姿态解算方法,同时不断改进卡尔曼滤波器的参数和其中卡尔曼增益计算式子,通过设计的硬件实验平台的测试,实验结果具有一定的检测精度和动态性能,并且在上位机进行了姿态动态检测生动直观展现设计,3D模型跟随效果也很好,在实际生活中,这对于姿态控制系统设计和运行过程分析都具有一定的意义。
第2章 设计方案的比较、选择与设计
2.1总体设计方案
基于本次设计的要求和目的,需选用传感器对动态姿态进行检测。然后通过处理器将传感器的输出信号进行科学的处理,进行姿态解算,最后得出可以表征姿态的欧拉角。再将欧拉角传送到上位机,上位机对传送上来的欧拉角进行显示,同时上位机上3D模型依据传递上来的欧拉角对物体实际的姿态进行实时的动态模拟。同时在上位机上设置姿态储存按钮,可以达到自由储存动态姿态的欧拉角信息,以便在实际姿态检测中,对姿态分析、姿态解算算法的改进和出现错误姿态检测信息的分析。总体方案功能实现见图2.1。
图2.1 设计总体方案图
2.2姿态检测方案设计
加速度传感器、陀螺仪、磁力传感器、GPS、气压传感器及超声波等都可以对姿态进行检测[9],为了获取精确的姿态信息,需要融合以上多个传感器的测量数据,实现优势互补,达到高精度的测量基于本次设计的目的,采用加速度传感器和陀螺仪进行设计。
2.2.1加速传感器工作原理和角度测量
加速度传感器是通过对重力加速度分量在不同方向的测量,然后通过三角函数关系进行计算,得出需要测量的角度[10]。三轴加速度可以对重力加速度在运动坐标系上的分量进行测量,得出运动姿态的欧拉角,也即是运动物体相对于水平坐标轴的倾角。
假设传感器的X轴与水平面xy的夹角记为α,本文中也称为俯仰角,Y轴与水平面xy的夹角记为β,本文中也称为滚转角,而Z轴和重力的夹角记为γ,各夹角如图2.2所示。
图2.2 加速度传感器测量原理
由于三个轴传感器的读数其实就等于重力加速度在传感器XYZ三个轴上的投影,所以可以分别计算出:
(2.1)
同时传感器三个轴加速度的矢量和等于重力加速度,即为:
(2.2)
依据以上两式可以推导出计算三个角度的另一种表达式:
(2.3)
经上面分析,加速度传感器可以测量出来角度,但是也正因为它的这些测量原理,所以它容易受到振动噪声影响。当加速度传感器运动时,测量出来是合加速度传感器的分量,并不是单一的重力加速度传感器分量,造成了其动态测量性能差。
2.2.2 陀螺仪传感器工作原理和角度测量
陀螺仪作为一种角速度传感器,它对角度的测量时间接实现的。加速度仅是角度的导数,所以陀螺仪具有良好的动态性能,通过对角速度进行积分可以得到角度,实现了角度的测量[11]。陀螺仪是利用其陀螺效应与初始方向平行的特性,计算陀螺仪的偏差得出旋转方向和角度值。依据测量原理,理论上陀螺仪可以单独完成导航任务,单独的进行姿态测量。当对陀螺仪测量数据进行积分即可以得到三个方向上的旋转角度,也即使姿态的欧拉角。但是在实际的测量中,由于存在误差噪音,并不能够通过单一的陀螺仪完成对姿态进行准确的测量。尤其是运行一段时间以后,积分误差的累积随之会让得到的姿态误差很大。依据误差产生原因,误差噪音可以分为零点漂移、温度度漂移、白噪声和加速度影响、积分误差。
角速度传感器用来测量一段时间内角度变化速率。对两次测量时间差值进行积分可以得到角度增量。增量值可正可负,正值表示角度向增大方向旋转,负值表示向角度减少反向旋转,积分后与测量前初始角度求和可以计算出当前角度。
(2.4)
其中,θ是旋转角度值,是上一次旋转角度值,w是角速度测量值,t是测量间隔时间。
所以在测量的时候,使测量的加速度值更加可靠,可以对连续测量的两次数据进行平均来减少误差。同时应该注意尽量缩短两次测量时间的间隔。否则会由于一点误差经过多次积分,致使最后的测量值很不准确可靠。同时本身陀螺仪的就存在制造误差,这也会致随着积分时间的增加积分后的测量角度不准确。综上,应该尽量的缩短测量时间和不断的校正测量值来减少该误差。
2.2.3 传感器选型
本次传感器的选择可以购买单一的不同类型传感器,然后焊接。也可以直接购买模块。基于本次设计目的并且出于成本的考虑,本次设计采用MPU6050模块。
MPU6050模块是集成陀螺仪和加速度传感器的模块,该模块具有消除了陀螺仪与加速度传感器的时间轴误差的优点。陀螺仪的全格感测范围可以通过编程进行选择,适当的选择可以对动作进行快速与慢速追踪。加速度全格感测范围也可以进行设置。其可以通过高达400KHz的I2C来与模块外的设备进行通信。同时其集成度较高,具有小巧的特点。同时其还带有一个温度感测器和一个性能良好的振荡器。MPU6050实物芯片机器引脚可见图2.3。可显然看到图中具有I2C通信时用到的SDA和SCL,处理器可以通过这两根信号线与MPU6050进行实时通信。
图2.3 MPU6050实物图
2.3处理器选择方案
2.3.1 AT89C51
AT89C51作为一种8位微处理器,其开发简单价格便宜,但计算能力不强。其包含较为丰富的开发资源,例如32个IO口,五种两级中断,两个定时器和计数器等,所以其可以为许多嵌入式系统完成较高性能且价格便宜的设计方案。
2.3.2 STM32系列处理器
STM32F系列微处理器是由意法半导体公司研发内核为Cortex-M3的处理器。该处理器具有丰富的开发资源和丰富的IO口,很适合用于开发研究。其依据芯片中的Flash的大小可以分为三种容量的处理器,可以依据自己设计研究所需要的Flash大小进行合理的选择。该处理器集成度高,具有较丰富的外设。该系列处理器由于具有很多型号,所以选择方案多。其处理实时性能好,并且可以通过自带的独立时钟开关来关闭对应的时钟达到降低功耗的作用。该处理器价格也便宜,开发成本低,所以性价比很高。并且STM32不需要昂贵的仿真器来进行下载调试,仅仅需要一个串口就可以进行代码下载,同时支持SWD和JTAG。如果选择SWD调试模式时,由于只采用了2个IO口完成调试任务,所以采用该模式可以为设计研究带来很多的方便。
2.3.3 处理器选择
基于本次设计的计算量较大,涉及很多求反三角函数的计算,虽然AT89C51价格相比便宜,但计算能力明显弱于STM32系列处理器,所以选择STM32系列处理器中的STM32F103ZET6进行设计。
2.4编程软件选择
本次设计的处理器选择是STM32,由于以前采用keil4对AT89C51进行程序开发设计,其开发语言是C语言,较为容易,所以本次设计选用MDK作为本次的开发工具。
2.5姿态解算方案
2.5.1 姿态解算原理
在一个姿态参考系统中,由于运动是相对的,为了描述姿态我们首先需要定义两个坐标系:分别为运动坐标系p和参考坐标系 b 。其中参考坐标系b时以地球作为参考设置的坐标系,而运动坐标系p是以待检测运动物体作为参考的坐标系,取Y轴为前进的方向,向右运动为X轴正方向,取向上的方向为Z轴正方向。
为了描述一个姿态,采用欧拉角进行表针。刚体定点转动位置的确定需要一组含有三个独立角度来表示,分别由章动角,旋进角和自转角组成,这组角度参量就是欧拉角。也就是对应于惯性导航中所说的横滚角、俯仰角和偏航角。所以一组欧拉角可以准确表征一个姿态。只要能得到欧拉角,就能实现对动态姿态的检测。
以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。
相关图片展示: