1

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

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

4

1 回答 1

3

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

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

在计算叉积之前,您可能希望至少对数据应用一个简单的移动平均线。

一般来说,使用roll、pitch和yaw并不是一个好主意,所以请不要。无论如何,你不需要它。

加速度计读数a、叉积a x m以及加速度计读数的叉积和叉积a x ( a x m ) 为您提供 3 个成对垂直向量。通过将它们乘以它们各自长度的倒数来使它们成为单位向量。这 3 个单位向量将为您提供一个旋转矩阵

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

如果设备的 API 提供了旋转矩阵,那么它只是在代码行中获取磁航向。

于 2011-11-06T14:58:46.537 回答