如何获得磁场矢量,与设备旋转无关?

Rid*_*lly 11 android android-sensors

我想要的是一种位置的"磁性指纹".我使用MAGNETIC_FIELD传感器,如果我得到(不幸的是没有进一步说明)X,Y和Z轴的3个值.

问题是,当我旋转设备时值会改变,所以我猜3轴是相对于设备的.什么我需要的是让我得到同样的3个值,而无论该设备是如何旋转补偿装置的旋转.

我试图乘以旋转矩阵(我知道如何得到它),试图乘以倾角矩阵等等,但没有任何效果.无论我尝试什么,旋转设备时值仍会改变.

那么有谁知道如何做对吗?最好使用代码,因为我读了很多像'那么你必须使用旋转矩阵补偿它',但没有找到一个具体的工作实例.

Ben*_*ijl -1

磁场矢量的坐标是相对于手机给出的,如下图所示:

在此输入图像描述

得到下图坐标系下的磁场矢量:

在此输入图像描述

您必须将磁矢量与从getRotationMatrix()m检索到的旋转矩阵相乘,例如。该矢量将穿过地球指向磁北极。RR * m

如果您还将它与 inclination 相乘I,则矢量将围绕 X 轴旋转以完全在 Y 轴上:

[0 m 0] = I * R * 地磁(m = 地磁场强度)

该矢量对于地球上的每个位置都应该是恒定的。然而,您的手机上的结果可能会出现轻微偏差,因为您必须非常小心,在旋转设备时不要改变传感器的位置。