android - 如何获得加速度计轴和运动矢量之间的旋转?

标签 android algorithm rotation orientation accelerometer

我正在开发 Android 上的行人导航系统。我目前正在尝试获取 3 轴加速度计引用和应用于设备的运动之间的旋转矩阵。

假设您手持设备向前直走,但加速度计的 Y 轴(因此设备的 Y 轴)与您自己前进的方向不同(基本上您以笨拙的方式握住设备)。 然后,如果我想应用距离(基于步进检测),将它们应用到加速度计引用(我知道方向)是错误的:它必须根据运动方向旋转。

这就是为什么我想知道您能否启发我一种计算加速度计读数以将其转换为旋转角度(或矩阵)的方法。这种方法甚至必须避免对加速度进行一次积分,因为在便宜的加速度计上误差非常大(否则我认为执行起来会很容易)。

编辑: 磁力计和陀螺仪即使在静止时也能帮助您找到设备的方向,但无法让您知道设备移动的方向。我有第一个,我正在寻找第二个。基本上:

人体引用(运动方向)-> 设备引用(或加速度计引用)-> 地球引用

我正在寻找找到旋转矩阵的方法来计算从 HR 到 DR 的距离,然后我将其应用于我发现从 DR 到 ER 的旋转矩阵。

最佳答案

我找到了一篇可能有用的文章,这里是 link .
这个想法是基于获取 3 轴上的加速度计数据,(这是 n 乘以 3 矩阵)并找到矩阵的 PCA(主成分分析)。 PCA是矩阵中能量最高的3个向量。
理想情况下,主矢量(能量最高)方向是向上,其次是航向。 您可以在文章中阅读所有内容。 我尝试在matlab中实现该算法,结果是好的。 (不是很好) 希望你能做得更好(我想听听好的结果)。

希望对你有帮助

爱丽儿

关于android - 如何获得加速度计轴和运动矢量之间的旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10207044/

相关文章:

android - 通过 Android 中的 ADB 在 Work Profile 中安装 APK

android - 如何创建一个具有透明背景和阴影的形状,但形状轮廓后面的阴影不应该是可见的?

java - 如何避免不必要的计算寻找最大独立集?

c++ - 循环链表的循环起始节点

postgresql - pgr_drivingDistance 在每条路线上具有灵活的距离值

android - Restcomm android sdk 与其他 sip 服务器

android - java.lang.ClassNotFoundException : org. gradle.wrapper.GradleWrapperMain 问题

c++ - 旋转矩阵不是真正对称的(OpenCV)

android - View 转换后图像越界

swift - 如何在始终面向前方移动时旋转 Spritenode?