如何计算mpu6050的倾斜角度?

问题描述 投票:1回答:1

我正在构建一个自平衡机器人,我已设法配置陀螺仪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方向倾斜?

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

谢谢。

c embedded microcontroller electronics mpu6050
1个回答
1
投票

在完美的世界中,您可以将角加速度的两倍积分。但它的实践,有一个重要的漂移:它不能正常工作。

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

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

On this page,你会发现一个MPU-9250的实现(源代码和示例),这是你的MPU-6050的大哥

© www.soinside.com 2019 - 2024. All rights reserved.