如何处理电子陀螺仪MPU6050的零点漂移问题

在前面的小车视频中,我利用MPU6050输出的偏航角yaw作为反馈数据,对小车进行pid控制.就是刚开始的时候传感器输出的角度还挺准的,用着用着传感器输出的角度就不准了.而且时间越长误差越大,令人头疼.今天我们就来尝试的解决这一数据漂移的问题.

解决问题的主要的思路是:首先采集一定数量的yaw数据,然后对数据图形化看看是否可以发现问题,最后再依靠数学算法去解决问题.

首先是数据采集,我让小车保持不动,也就是yaw一直为0的状态下,测试传感器实际输出的yaw的漂移情况.我利用串口对mpu6050的yaw角进行了采集.100ms一次,采集了6000个数据样本,耗时是10分钟.然后利用matlibplot对数据进行了图形化.图形的x轴就是时间T,y轴就是传感器输出的角度值direct,也就是航片角yaw.经过10分钟的运行,可以发现,我所使用的传感器的零漂其实是比较严重的.在温度稳定在30°C左右的条件下,零点漂移就已经达到2°左右.这是非常糟糕的.

但是好的方面是,传感器零漂的曲线基本是线性的,基本是满足y=kx+b这一线性方程的规律的.于是我考虑如果计算出数学模型中的斜率k和偏置b,然后预测出不同运行时间下.零点漂移的值,yaw_zero_predict.然后用传感器的测量值yaw减掉预测值yaw_zero_predict也就能得到比较准确的实际值yaw1.

最后我们来解决问题.我使用这6000个数据,使用sklearn的线性回归算法,回归出mpu6050零点漂移的线性模型.y=kx+b.最终得到k=0.00040329,b=-48903838.

也就是mpu传感器零漂的规律大约是y=0.0004x-0.49. 接着在单片机程序里对mpu6050的航偏角测量值yaw进行插补修正得到实际值yaw1.也就是yaw1=yaw-0.0004T+0.49.T为mpu6050的运行的时间.经过补偿后的yaw的实际输出值,如下图所示.在开机之后的10分钟时间内,yaw基本保持在0线附近,误差在1°以内.应该能满足初涉小车控制的兄弟们的使用需求了.

下期视频我将对mpu6050的温度漂移的问题进行测试和分析.关注我,我们一起探索更多关于小车控制技术.

下期视频我将对mpu6050的温度漂移的问题进行测试和分析.关注我,我们一起探索更多关于小车控制技术.

如何处理电子陀螺仪MPU6050的零点漂移问题 - 知乎 (zhihu.com)

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值