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 方向倾斜?

4

1 回答 1

1

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

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

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

在此页面上,您将找到一个带有 MPU-9250 的实现(源代码和示例),它是您的 MPU-6050 的老大哥

于 2017-12-17T18:44:44.410 回答