首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android是如何计算旋转向量的?

Android是如何计算旋转向量的?
EN

Stack Overflow用户
提问于 2019-09-12 19:24:00
回答 1查看 719关注 0票数 1

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

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

EN

回答 1

Stack Overflow用户

发布于 2019-09-26 16:18:09

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

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

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57905663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档