【问题标题】:Can anyone tell me whether gravity sensor is as a tilt sensor to improve heading accuracy?谁能告诉我重力传感器是否可以作为倾斜传感器来提高航向精度?
【发布时间】:2011-12-23 01:27:43
【问题描述】:

当手机与当地地面水平时,磁力计的 X 和 Y 轴可用于计算北向。但是在滚动或俯仰手机时,我们应该使用滚动和俯仰度来消除倾斜误差。

现在,我想知道是否将重力传感器用作倾斜传感器来获取横滚和俯仰,以帮助提高向北行驶的准确性?

【问题讨论】:

    标签: accelerometer heading magnetometer tilt


    【解决方案1】:

    这里我描述了如何获得设备相对于水平面和磁北的方向。从方向(旋转矩阵)获取磁航向只需 1 行代码。

    将加速度计和磁力计读数 am 作为 3 维向量。 a x m cross-product 指向东方或西方,无论手机的方向如何。叉积是指向东还是西取决于您的符号约定(向上是正数还是负数)和坐标系的手性(左手或右手)。

    在计算叉积之前,您可能希望至少将 a simple moving average 应用于您的数据。

    一般情况下,it is not a good idea 使用滚动、俯仰和偏航,所以请不要。反正你不需要。

    加速度计读数 a,叉积 a x m,以及加速度计读数和叉积的叉积a x (a x m) 为您提供 3 个成对的垂直向量。通过将它们乘以它们各自长度的倒数来使它们成为单位向量。这 3 个单位向量会给你a rotation matrix

    旋转矩阵相当于设备的方向。在我的应用程序中,磁航向是atan2(R[Y][Y], R[Y][X]),其中 R 是旋转矩阵。您可能需要采用旋转矩阵的不同元素,并且可能需要更改符号,具体取决于您遵循的约定。

    如果设备的API提供了旋转矩阵,则只需一行代码即可获取磁航向。

    【讨论】:

    • 通常情况下,当手机处于静止状态时,我可以从加速度计获得滚动和俯仰。然而,当手机在移动时,我得到的滚动和俯仰是不准确的。当手机不稳定时,您的方法也不准确。而且我认为您的方法很像以下方法(f 和 q 是滚动和俯仰)。 XH = Xcos(f) + Ysin(q)*sin(f) - Zcos(q)*sin(f) YH = Ycos(q) + Z*sin(q) 方位角 = arcTan (YH / XH)
    • 嗯,你只提到了加速度计。如果你也有陀螺仪,你可以让它非常准确。如果您没有陀螺仪,解决方法是移动平均过滤,它会有所改善。我不使用滚动和俯仰。在我的应用程序中,我使用了陀螺仪和旋转矩阵,它就像一个魅力:)
    猜你喜欢
    • 1970-01-01
    • 2020-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    • 2017-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多