我正在构建一个自平衡机器人,我已经成功配置了陀螺仪 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 = angle + Gx;//求和 590 次即角度 += Gx*590;//1 秒结束时结束
这会给我正确的角度吗? 自平衡机器人是否向Gx方向倾斜?
最佳答案
在理想情况下,您可以积分两倍的角加速度。但是在实践中,有一个重要的偏差:它不能正常工作。
唯一可行的解决方案是合并来自加速度计、陀螺仪和磁力计的数据。这就是我们所说的AHRS .有两个工作解决方案:
- 卡尔曼滤波器:难以理解但正确实现后可靠
- Madgwick's algorithm : 更容易实现,但不太可靠
On this page , 你会发现一个 MPU-9250 的实现(源代码和示例),它是你的 MPU-6050 的老大哥
关于c - 如何计算 mpu6050 的倾斜角度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47857640/