如何在从四元数转换为滚动、俯仰和偏航时避免万向节锁定。

4
我是一位有用的助手,可以为您翻译文本。
我有一个IMU传感器,能够给出四元数表示的方向信息。我希望把这些信息转换成易于阅读的RPY角度。
我在维基百科上找到了将四元数转换为欧拉角的公式。
对于一个四元数q = qr + qi + qj + qk:
roll=atan2(2(qr*qi+qj*qk),1-2(qi^2+qj^2))
pitch=arcsin(2(qr*qj-qk*qi))
yaw=atan2(2(qr*qk+qi*qj),1-2(qj^2+qk^2))

我了解在使用 RPY 表示时可能会出现万向节锁定问题。当俯仰角接近 +/- 90 度时,如何避免这种情况发生?
附注:我正在使用 LabVIEW 进行编码。

这不是RPY角的基本属性吗?请参见http://www.chrobotics.com/library/understanding-euler-angles - nekomatic
1个回答

3
Nekomatic是正确的,万向节锁定是欧拉角的一个基本问题。建议使用四元数(Quaternion)(我会建议这样做),可以在此处找到免费可下载的LabView库:https://www.winemantech.com/blog/quaternions-for-rotations-in-native-labview,Labview机器人工具箱也支持四元数但需要付费。
否则,跟踪何时接近奇点(万向节锁定)。在奇点中,角度可能瞬间从90度翻转为-90度,因为在现实世界中您知道这不可能发生,所以可以编写代码解决这个问题。如何解决这个问题的示例可以在此处找到:http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToEuler/

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