如何计算mpu6050的倾斜角度?

时间:2017-12-17 17:24:14

标签: c embedded microcontroller electronics mpu6050

我正在构建一个自平衡机器人,我已设法配置陀螺仪mpu6050,我现在有六个读数Ax,Ay,Az和Gx,Gy,Gz。我的问题是如何计算Ax,Ay,Az和Gx,Gy,Gz的倾斜角度。

这是我目前所知道的。如果我错了,请纠正我。

我可以计算在水平位置测量的g的重力,其中Ax = Ay = 0且Az = 1。我使用它来找到倾斜角度为angle_accel = arctg( Ay / sqrt( Ax^2 + Az^2 ) )。但我不确定我的倾斜是否在Ay方向?

我可以通过整合获得陀螺角度。我的陀螺仪在1秒钟内读取(Gx)590次。 float angle; //gyro angle angle = angle + Gx; //sum 590 times i.e angle += Gx*590; //END when 1 second is complete

这会给我正确的角度吗? 自平衡机器人是否在Gx方向倾斜?

我知道这些可能是一些简单的问题,但我真的很感激帮助消除我的困惑。

谢谢。

1 个答案:

答案 0 :(得分:1)

在一个完美的世界中,你可以将角加速度的两倍积分。但实践中,有一个重要的偏差:它无法正常工作。

唯一可行的解​​决方案是合并来自加速度计,陀螺仪和磁力计的数据。这就是我们所说的AHRS。有两种可行的解决方案:

  • 卡尔曼滤波器:难以理解,但在正确实施时可靠
  • Madgwick's algorithm:更容易实施,但不太可靠

On this page,您将找到MPU-9250的实现(源代码和示例),MPU-9250是MPU-6050的大哥