You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

scipy包Rotation.as_euler()旋转序列选择及欧拉角输出顺序问题

scipy Rotation.as_euler() 转四元数为RPY角的参数规则

旋转序列参数选择

  • 通用航空、机器人领域定义的横滚(roll)、俯仰(pitch)、偏航(yaw)角,对应内旋ZYX旋转序列,参数传入大写的"ZYX"即可。
  • scipy对序列参数的大小写有明确语义区分:大写字母代表内旋(每次旋转沿上一次旋转后的新机体坐标轴进行,是RPY角的标准旋转逻辑),小写字母代表外旋(每次旋转沿初始固定参考坐标轴进行),不要传入小写"zyx",否则输出结果不符合常规RPY定义。
  • "ZYZ"、"XYZ"等其他序列对应特定领域的欧拉角规则(比如部分机械臂关节角定义会用到ZYZ序列),无特殊约定的RPY转换场景不需要使用。

输出欧拉角顺序

  • 函数返回的角度顺序和传入的旋转序列轴顺序严格一一对应,不存在固定的[roll, pitch, yaw]输出逻辑。
  • 当传入"ZYX"参数时,返回值顺序为(Z轴转角, Y轴转角, X轴转角),对应关系为(yaw, pitch, roll),需要按这个顺序接收返回值才能得到角度的正确对应关系。如果误按roll, pitch, yaw顺序接收,会出现yaw和roll值互换的错误。

验证示例

from scipy.spatial.transform import Rotation as R

# 构造纯偏航90°的测试四元数(pitch=0, roll=0)
test_quat = R.from_euler('ZYX', [90, 0, 0], degrees=True).as_quat()
# 转换为欧拉角
yaw, pitch, roll = R.from_quat(test_quat).as_euler('ZYX', degrees=True)
print(yaw, pitch, roll) # 输出 90.0 0.0 0.0,符合预期

内容的提问来源于stack exchange,提问作者George

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 00:45:48