安卓如何计算旋转向量?

3
Android文档中提到这里(仅需阅读前4-5行),旋转矢量传感器是基于软件的。但是大多数Android设备实际上都有三个传感器,即加速度计、陀螺仪和磁力计。因此必须有一种转换算法将这些实际传感器的数据转换为虚拟旋转矢量传感器的数据。但是我找不到任何文章或源代码,可以看到用于计算旋转矢量的算法。如果有人在这个领域有任何经验,也许他可以指引我正确的方向。
我需要知道是否有必要从旋转矢量传感器获取旋转数据,还是我可以使用基于硬件的传感器自己计算它。
1个回答

3
通过以下url访问的实现使用了扩展卡尔曼滤波器,这是一种融合加速度计、陀螺仪和(可选)磁力计数据的标准方法:https://android.googlesource.com/platform/frameworks/native/+/refs/heads/master/services/sensorservice/Fusion.cpp。关键方法为predictupdate,它们对应于卡尔曼滤波器的相应阶段。输出为四元数(可通过getAttitude方法获取),这是表示三维方向的一种便捷方式。术语“旋转向量”只是Android用于四元数的别名。传感器融合的其他选择包括Madgwick和Mahony滤波器。有丰富的资源(甚至许多开放实现)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接