我正在构建一个自平衡机器人,我已设法配置陀螺仪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方向倾斜?
我知道这些可能是一些简单的问题,但我真的很感激帮助消除我的困惑。
谢谢。
答案 0 :(得分:1)
在一个完美的世界中,你可以将角加速度的两倍积分。但实践中,有一个重要的偏差:它无法正常工作。
唯一可行的解决方案是合并来自加速度计,陀螺仪和磁力计的数据。这就是我们所说的AHRS。有两种可行的解决方案:
On this page,您将找到MPU-9250的实现(源代码和示例),MPU-9250是MPU-6050的大哥