测量旋转矩阵之间的差异

John Lai

我有两个旋转矩阵,假设初始基 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
bb1

你的代码看起来不错。问题是,当您使用给定的欧拉角组合两个旋转时,您不会简单地获得由这些角度之和给出的旋转。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章