【问题标题】:How does Android calculate Rotation Vector?Android如何计算旋转向量?
【发布时间】:2019-09-12 11:23:59
【问题描述】:

Android 文档说 here(只需阅读前 4-5 行)旋转矢量传感器是基于软件的。但大多数 Android 设备实际上有 3 个传感器,即。加速度计、陀螺仪和磁力计。因此必须有一种转换算法,将这些实际传感器的数据转换为虚拟旋转矢量传感器。但是我找不到任何可以看到用于计算旋转向量的算法的文章或源代码。如果有人在这方面有任何经验,也许他可以指出我正确的方向。

我需要它知道是否有必要从旋转矢量传感器获取旋转数据,或者我可以使用基于硬件的传感器自行计算。

【问题讨论】:

    标签: android rotation sensors motion-detection


    【解决方案1】:

    通过以下 url 访问的实现使用扩展卡尔曼滤波器,这是一种融合加速度计、陀螺仪和(可选)磁力计数据的非常标准的方法:

    https://android.googlesource.com/platform/frameworks/native/+/refs/heads/master/services/sensorservice/Fusion.cpp

    关键方法是predictupdate,分别对应卡尔曼滤波器的各个阶段。输出是一个四元数(可通过getAttitude 方法获取),这是表示 3D 方向的便捷方式。术语“旋转向量”只是 Android 对四元数的别名。

    传感器融合的其他替代方案包括 Madgwick 和 Mahony 滤波器。那里有大量资源(甚至还有许多开放的实现)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多