在 Android 中实施 ROTATION VECTOR

Implementation of ROTATION VECTOR in Android

Android中有一个rotation vector。据我了解,这使用加速度计和陀螺仪进行传感器融合。还有一种叫做 geomagnetic rotation vector 的融合传感器,它使用磁力计代替陀螺仪。

但我无法找到这两个虚拟传感器的传感器融合背后的逻辑。你能解释一下这两个传感器是如何实现的或者使用了什么算法吗?

Android中的旋转矢量有四个数据条目。但通常它只有 3 non-zero 个条目。通常还有另外 9 个条目表示。加速度计 t_a 和陀螺仪 w_p 是不同的东西。不要混淆自己。一次一个问题

对于标题旋转矢量,请阅读以下链接。不可能有人在这里写论文。

https://en.wikipedia.org/wiki/Euler_angles

https://en.wikipedia.org/wiki/Rotation_matrix

https://en.wikipedia.org/wiki/Quaternion

涉及的数学理论:

黎曼几何

李代数和李群

罗德里格斯变换。 等等

如果全部看完,大概需要半年时间。

对于程序员来说,简而言之:

欧拉角级联为直角加法。难以与 motion/accelerometer 连接。有万向节锁定问题。三变量,高效表示。

Rotation_matrix 串联是直接矩阵乘法。可以直接与变换矩阵[R |吨; 0 | 1].变换矩阵串联是直接矩阵乘法。有云台锁问题需要9个数据来表示

四元数是向量乘法。四变量,没有云台锁问题。不容易直接连动。

熔断是另外一个话题,要么松耦合要么紧耦合。

松耦合模型通常是EKF。紧耦合通常采用图优化方法。

在此之后,您将要求与其他测量值(如加速度计或其他)融合。然后它变得更加复杂。例如完全集成模型和部分集成模型。到目前为止,很多工作都更倾向于研究层面。很难用简单的词来解释。我建议你阅读最近的论文,例如 VINSMONO 和 OKVIS。

[1] Stefan Leutenegger、Simon Lynen、Michael Bosse、Roland Siegwart 和 Paul Timothy Furgale。 Keyframe-based 使用非线性优化的视觉惯性里程计。国际机器人研究杂志,2015.

[2] 斯特凡·洛伊腾格。无人驾驶太阳能飞机:高效稳健自主运行的设计和算法。博士论文, 2014.

[3] Stefan Leutenegger、Paul Timothy Furgale、Vincent Rabaud、Margarita Chli、Kurt Konolige、Roland Siegwart。 Keyframe-Based Visual-Inertial 使用非线性优化的 SLAM。在机器人学报:科学与系统,2013.

[4]Tong Qin、Peiliang Li、Zhenfei Yang、Shaojie Shen,VINS-Mono:稳健且多功能的单眼 Visual-Inertial 状态估计器,IEEE Transactions on Robotics 2017