——
该模块工作原理较为复杂且涉及到数字信号处理本文只是简单的描述其工作原理并捎带上一些基础理论。
JY61MPU6050简介
MPU6050由四部分组成加速度计、陀螺仪、DMP、温度传感器检测温度通过算法优化来减少温漂。
JY61和MPU6050为从属关系。六轴模块jy61自带稳压电路包含陀螺仪加速度计MPU6050和STM8单片机STM8通过IIC读取 MPU6050 中DMP的测量数据然后通过串口输出免去了用户自己去开发 MPU6050 复杂的 IIC 协议同时保留了 MPU6050 的 IIC 接口以满足用户访问底层测量数据加速度、角速度的需求。 在大部分情况下二者名称可以混用因为通常MPU6050不会单独进行应用。实际上使用MPU6050作为搜索关键词能找到的资料更多。
jy61通过串口与外部单片机进行通信。
轴向说明
如上图所示模块的轴向在上图标示出来向上为 X 轴向左为 Y 轴垂直模块向外为 Z 轴。 旋转的方向按右手法则定义即右手大拇指指向轴向四指弯曲的方向即为绕该轴旋转的方向。 X 轴角度滚转角 Roll即为绕 X 轴旋转方向的角度Y 轴角度俯仰角 Pitch即为绕 Y 轴旋转方向的角度Z 轴角度偏航角 Yaw即为绕 Z 轴旋转方向的角度 三者合称姿态角/欧拉角Euler angles。
对于导航和控制问题姿态角等同于欧拉角这是因为旋转顺序是按ZYX提供坐标二者实际有所不同。 详情https://zhuanlan.zhihu.com/p/28514084 欧拉角与姿态角旋转矩阵和四元数的一些思考
姿态融合
MPU6050的正式名称为六轴运动姿态陀螺仪传感器可测量三维加速度三维角速度和三维角度之所以称其为“六轴”是因为MPU6050是一个6轴运动处理组件包含了3轴加速度计和3轴陀螺仪可分别输出三轴加速度和三轴角速度然后再根据以上原始数据在DMP(Digital Motion Processor数字运动处理器)中使用算法进行姿态融合解算出三轴的角度数据。 常用的姿态融合算法有四元数法 、一阶互补算法和卡尔曼滤波算法其中第三者最为常用。
卡尔曼滤波算法简述对于姿态传感器模块来说角度解算来源与两种类型的数据第一种是通过加速度和磁场数据进行运动学解算可以求出三轴的姿态角优点是没有长期漂移和误差累计但缺点是精度差而且仅在静态时能保证精度。第二种时通过陀螺仪测量出来的角速度进行积分运算可以得出三轴姿态角优点是精度高可以进行动态测量对加速度不敏感缺点是有累积误差和漂移时间越长累积误差越大。卡尔曼滤波就是一种数据融合算法结合加速度计和陀螺仪的信息共同来解算姿态集合二者的优点获得在动态环境下可以准确测量姿态的方法[^1]。
JY61工作的总体过程为将模块的姿态用四元素表示作为系统的状态量模块的姿态运动学方程作为滤波的状态转移方程加速度信息作为滤波的观察量信息然后利用卡尔曼滤波的计算方法迭代计算更新[^2]。
由于没有参考量所以无法求出当前的Yaw角的绝对角度另外两个角可得出因此Z轴角度通过角速度积分运算得来会有累积误差。如果必须要获得绝对的Yaw角那么应当选用MPU9250九轴,jy901内置它相比较前者自带一个三轴电子罗盘从而根据地球磁场方向计算Z轴角度避免漂移现象。当 901 使用环境有磁场干扰时可以在上位机中配置算法转换尝试用 6 轴算法检测角度
数据校准
由于MPU6050输出的各项数据有偏移现象零点漂移静态时且具有较大噪音因此需要先对数据偏移进行矫正再进行滤波。
数据偏移处理 传感器在出厂时都会有不同程度的零偏误差需要手动进行校准后测量才会准确。 角速度可通过统计求平均的方法来获得。 加速度通常只进行单独校准读数偏移。 以上二者皆可通过上位机程序进行校正详询厂商说明书。
数据滤波 即卡尔曼滤波算法。一个卡尔曼滤波器接受一个轴上的角度值、角速度值以及时间增量估计出一个消除噪音的角度值。 这一过程实际上被包含在姿态融合过程中。
https://zhuanlan.zhihu.com/p/20082486 Arduino教程MPU6050的数据获取、分析与处理
提高输出精度的方法
jy61在日常实验应用中会时而表现出较大的角度输出误差鉴于硬件陀螺仪和加速度计本身精度尚可推测为
综上选用精度更高的传感器如jy901等从成本上来看显得更为划算。
详情可参考 MPU6050 /jy61帮助文档 二者内容相似 MPU9250 /jy901帮助文档 二者内容相似