我有两个旋转矩阵,假设初始基 O 是 R^3 中的标识,旋转 RAO 将 O 中的一个点转换为基 A,而旋转 RBO 将 O 中的一个点转换为基 B
我试图计算 RAO 和 RBO 之间的角度差异,例如:
from scipy.spatial.transform import Rotation
def Rdiff(RAO, RBO):
RBA = RAO.T @ RBO
RBA = Rotation.from_matrix(RBA)
return RBA.as_euler('zyx', degrees=True)
RAO = Rotation.from_euler('zyx', [10, 0, 13],
degrees=True).as_matrix()
RBO = Rotation.from_euler('zyx', [0, 63, 40],
degrees=True).as_matrix()
print(Rdiff(RAO, RBO))
但结果:
[-16.65056217 57.31794707 41.4856089 ]
与我预期的不同:[-10, 63, 26]
这里有什么问题吗?我该如何解决?
[编辑] 我在这里使用了数学公式:https : //math.stackexchange.com/questions/87338/change-in-rotation-matrix/87698#comment4515183_87698,我已经检查过 Rdiff 函数中的 RAO、RBO、RBA 是单一的.
[编辑] 我在 Rdiff 中的原始函数是错误的,所以我改变了行:
RBA = RBO @ RAO.T
进入
RBA = RAO.T @ RBO
你的代码看起来不错。问题是,当您使用给定的欧拉角组合两个旋转时,您不会简单地获得由这些角度之和给出的旋转。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句