Scipy Rotvec 到 Extrinsic Euler

Scipy Rotvec to Extrinsic Euler

提问人:maplemilk 提问时间:7/22/2023 更新时间:7/23/2023 访问量:68

问:

我有轴角度格式的刚体旋转,并想在全局坐标系(外在)中恢复主体的偏航。我使用 scipy Rotations 模块如下:

from scipy.spatial.transform import Rotation

axis_angle = #some axis * angle vector
r = Rotation.from_rotvec(axis_angle)

但是,我不确定是否:

yaw, _, _  = r.as_euler('zyx')

# or 

_, _, yaw = r.as_euler('zyx')

作为后续行动,如果我正在寻找内在轮换,索引会改变吗?例如。

_, _, yaw = r.as_euler('ZYX')

谢谢!

python numpy 数学 scipy 旋转

评论


答:

1赞 Rory Yorke 7/23/2023 #1

角度的顺序与指定轴序列的顺序相匹配。

In [31]: from scipy.spatial.transform import Rotation as R

In [32]: R.from_euler('Z', 45, degrees=True).as_euler('zyx', degrees=True)
Out[32]: array([45.,  0.,  0.])

In [33]: R.from_euler('Z', 45, degrees=True).as_euler('ZYX', degrees=True)
Out[33]: array([45.,  0.,  0.])

In [34]: R.from_euler('Y', 45, degrees=True).as_euler('ZYX', degrees=True)
Out[34]: array([ 0., 45.,  0.])

In [35]: R.from_euler('X', 45, degrees=True).as_euler('ZYX', degrees=True)
Out[35]: array([ 0.,  0., 45.])

In [36]: R.from_euler('X', 45, degrees=True).as_euler('zyx', degrees=True)
Out[36]: array([ 0.,  0., 45.])

我在 Scipy 文档中找不到明确指出角度顺序与轴序列顺序匹配的任何地方。我不确定这是一个主要缺陷:它们匹配似乎是合理的。