关于从旋转矩阵/欧拉角/四元数中提取不含偏航的横滚与俯仰旋转值的技术咨询
从旋转矩阵/欧拉角/四元数中提取不含偏航的横滚与俯仰旋转值的技术咨询
我现在碰到个棘手的问题:需要从旋转矩阵、欧拉角或者四元数(这些输入格式可以互相转换)里,只提取**横滚(Roll)和俯仰(Pitch)**的旋转值,完全排除偏航(Yaw)的影响。
先明确下我的坐标系规则:
- X轴指向左侧
- Y轴指向上方
- Z轴指向前方
- 绕本地X轴的旋转为Pitch(俯仰)
- 绕本地Y轴的旋转为Yaw(偏航)
- 绕本地Z轴的旋转为Roll(横滚)
之前直接用欧拉角处理的时候,偶尔会得到错误的数值。我推测这是因为同一个旋转状态可以对应多种欧拉角组合,当绕X轴(Pitch)和Z轴(Roll)的旋转被错误地通过Y轴(Yaw)来表达时,就会导致结果出错。
这里有个演示动图能说明问题:
动图内容:当前实际运行效果 | 预期效果(核心需求是完全去除偏航轴的旋转)
另外,我的算法是实时运行的,所以如果是基于增量旋转计算的解决方案,我也是可以接受的。
备注:内容来源于stack exchange,提问作者Kaneko Qt




