延迟偏航,俯仰和滚转值

时间:2012-11-21 18:34:22

标签: windows-phone-7 accelerometer

我正在windows phone 7.1中开发一个应用程序,我需要手机在x和y轴上的当前旋转度。我尝试使用动作API并使用偏航音高和滚动提供的适当值。但它所提供的价值是延迟的,因为如果我将手机移动太快并将其旋转到90度,相应的值需要一点时间才能到达那里,这违背了我的目的。

我在Android中做了同样的事情,我可以使用类似的东西来计算手机的即时轮换。

这个问题可以在wp7上使用陀螺仪完成,但我想使用加速度计,以便我可以满足更多设备。

任何有关如何实现目标的帮助都将受到赞赏

1 个答案:

答案 0 :(得分:1)

我遇到了与WP8 Motion API类似的问题。延迟不是唯一的问题。看起来Motion API对各种罗盘(或磁力计)误差也非常敏感。更糟糕的是,这些只会影响偏航。运动类AHRS算法似乎将俯仰和滚动与偏航耦合。因此,当罗盘延迟或其他方式疯狂时,投球和滚动也是如此。

我怀疑你没有陀螺仪。从理论上讲,你只能从加速度计获得欧拉角(偏航,俯仰和滚转),但只有在手机静止不动的情况下。最轻微的运动会导致线性/向心加速度,从而破坏您的方向计算。我会说任何用手机等手持设备做这件事的尝试都注定要失败。此外,除了加速度计之外,Motion API本身还需要罗盘和陀螺仪硬件。

无论如何,一切都不会丢失。我完全摆脱了Motion类,并实现了“我自己的”IMU和Sebastian Madgwick的IMU算法。 IMU / AHRS报告带有C代码:

http://www.x-io.co.uk/res/doc/madgwick_internal_report.pdf

C源代码可以在这里找到:

http://www.x-io.co.uk/open-source-imu-and-ahrs-algorithms/

通过适当的测试版收益,Madgwick的IMU就像Windows Phone上的魅力一样。 IMU不提供偏航,只是俯仰和滚动。它只使用陀螺仪和加速度计硬件。如果您也需要偏航,您可以实现上述两个来源中包含的完整AHRS算法。那当然也需要指南针。

Madgwick算法不包括欧拉角计算(只是描述地球和传感器帧之间旋转的四元数),但您可以从Madgwick的报告中找到方程式。

我没有完整的AHRS(或Madgwick称之为MARG)的经验。然而,该算法将罗盘偏航与俯仰和滚转计算分离,因此即使存在磁干扰,人们也可以期望获得合理的俯仰/滚动读数。

请注意,坐标系不同。在WP中,X =俯仰轴,Y =滚动轴,Z =偏航轴。在上述算法中,Y =俯仰,X =滚动,Z =偏航。因此,您需要交换X和Y以及反转Z加速度的方向。您还需要反转陀螺仪速率(并交换X和Y速率)。

希望这会有所帮助:)