0

我正在尝试使用来自 IMU 的加速度计值来获得绕轴的旋转。我在 Arduino IDE 上解耦轴之间的旋转时遇到了困难。使用下面的代码,当我围绕 x 轴旋转时,我设法获得了 0-360 之间的完整范围,并且在围绕 x 轴旋转时它工作正常。但是,当我绕 y 轴旋转 90 度并绕 x 轴旋转 0 度时,它会在 x 轴上显示 180 度转动。我知道问题的出现是由于 atan2 函数认为它位于第二象限,但我该如何解决这个问题。xz 和 y 是各自方向上的加速度读数。

if( z < 0){
  accXangle = (atan2(y, -sqrt( pow(x,2) + pow(z,2)) ) * 180 /PI) + xErr;
}
if(z > 0){
  accXangle = (atan2(y, sqrt( pow(x,2) + pow(z,2))) *180/PI) - xErr;
}
4

0 回答 0