发布网友 发布时间:2024-10-24 13:36
共1个回答
热心网友 时间:2024-11-01 02:41
更新了卡尔曼滤波的介绍
更新了DMP的使用介绍
获取数据,计算角度等过程放到中断里,使用 dt 中断时间。
上电后延时一段时间再工作,避免使用互补滤波,因为如果上电时第一次数据出错,可能导致后面的数据一直是错的。
使用MPU6050传感器需要通过I2C通信读取/写入寄存器的值。
使用stm32f103c8t6微控制器。
配置好stm32的GPIO、I2C等功能,初始化MPU6050,读取原始数据。
读取原始数据后,处理数据包括滤波(互补滤波、卡尔曼滤波、读取DMP的值转换)、计算角度。
初始化GPIO、I2C的函数。
初始化MPU6050的函数。
读取原始数据的函数。
判断原始数据是否正确,例如根据量程计算加速度和角速度的精度。
在传感器水平静止时,陀螺仪角速度的值应该为零,加速度计的X轴、Y轴的值应该为0,Z轴的值应该为8192。
数据处理包括校准数据(零点漂移)、换算成单位(g、°/s)、进行滤波和数据融合。
互补滤波融合加速度计和陀螺仪数据得到角度值。
卡尔曼滤波是一种基于概率的优化系统(滤波)的方法,利用线性系统状态方程和系统输入输出观测数据对系统状态进行最优估计。
通过DMP解算四元数,得到的角度数据较可靠,但移植过程较复杂。