当前位置: 首页 > news >正文

欧拉角、quat四元组和旋转矩阵的关系

在具身智能和机器人领域中,经常会涉及这三个的转化

1. 介绍

这里介绍这三种姿态的表示方法

  • 欧拉角(Euler Angles):
    用3个角度描述旋转:(roll, pitch, yaw) 或 (x, y, z),表示按顺序绕 x → y → z 轴旋转
    致命问题:

    • 万向锁(Gimbal Lock): pitch = ±90° 时自由度丢失
    • 不唯一: 同一个旋转 → 多组欧拉角
    • 依赖顺序: xyz ≠ zyx
  • 四元数(Quaternion)
    用 4 个数表示旋转:q = [x, y, z, w],可以理解为:“绕某个轴旋转 θ”
    特点:

    • 无万向锁
    • 数值稳定,机器人 / 图形学标准表示
    • 特性:q 和 -q 表示同一个旋转
  • 旋转矩阵(Rotation Matrix)
    一个 3×3 正交矩阵
    特点:唯一表示,无奇异性,适合计算(FK/IK)
    缺点:9 个数(冗余),需要保持正交(数值漂移)

2. 相互转化

2.1 Quat ↔ 旋转矩阵

这二者之间转换最稳定,完全可逆(推荐中间表示)
quat → matrix

from scipy.spatial.transform import Rotation as R R.from_quat(q).as_matrix()

matrix → quat

R.from_matrix(Rm).as_quat()

2.2 Quat ↔ 欧拉角

quat → euler

R.from_quat(q).as_euler('xyz')

euler → quat
缺点:不保证可逆
原因:欧拉角不唯一、存在奇异点

R.from_euler('xyz', euler).as_quat()

2.3 Euler ↔ 旋转矩阵

euler → matrix

R.from_euler('xyz', euler).as_matrix()

matrix → euler
缺点:多解问题,奇异性问题

R.from_matrix(R).as_euler('xyz')

下面给出了三种表示的相互转化关系图,绿色箭头表示可以转化且不存在多解或者歧义问题。

http://www.cnnetsun.cn/news/1954765.html

相关文章:

  • 单元测试 Mock不Mock?
  • 【限时解密】2026奇点大会未公开闭门报告:AI编程助手在金融级代码审计、合规注释生成、跨语言重构三大高危场景的真实失效案例(仅剩97份内部摘要)
  • 【生成式编程安全生死线】:从GitHub Copilot到CodeWhisperer,必须启用的4层静态+动态校验机制
  • 别再手动轮询了!用DMA+ADC1多通道采集传感器数据,解放你的STM32/APM32主循环
  • 如何编写Controller的测试代码?
  • 《RocketMQ实战与进阶》 04 消息发送常见错误与解决方案
  • 苏州2026年,探秘苏州灌装机工厂的智造新篇章
  • 富集分析结果太杂乱?3个ggplot2技巧让你的气泡图秒变高颜值SCI配图
  • 构建智能能源管理系统的7个关键技术突破:OpenEMS实战指南
  • 1Panel+Docker私有仓库实战:解决镜像拉取慢/失败问题(含WordPress案例)
  • 用周立功CAN分析仪抓包解析电动汽车充电握手报文(BMS/充电机通信实战)
  • YzmCMS 5.3.0 ‘采集节点’功能竟是SSRF后门?一次对功能滥用的深度安全审计
  • BetterNCM-Installer:一键解锁网易云音乐PC版的终极插件管理器
  • Python自动化操作Creo的5个实用技巧(附代码示例)
  • GSV9001E@ACP# 参数规格 + 产品特色总结分享
  • 从.mat到.txt:手把手教你用Matlab load函数搞定各种格式的数据导入
  • 企业如何用SaaS平台实现数字化转型?3步搭建高效管理体系的实战指南
  • 别再只把Logstash当日志收集器了!手把手教你用它搞定MySQL到Elasticsearch的数据同步
  • STM32学习——.map文件知识的学习
  • 宝塔面板SSH提示连接被拒绝_检查服务器端口开关
  • 别再只盯着评分了!用BPR算法处理隐式反馈数据,让你的推荐系统更懂用户
  • 幻境·流金入门必看:DiffSynth-Studio+玄金美学环境搭建详解
  • Python函数实战:从基础分段到高级参数处理
  • 揭秘煤炉Mercari防封号终极指南
  • 从扫地机器人到无人机:用Python模拟Bug1/Bug2算法,看经典避障如何影响现代机器人
  • 【FPGA】Vivado综合进程异常终止(PID Not Specified)排查与修复指南
  • 亮数据 Bright Data 第二季度直播倒计时!
  • 别再只改单元格了!PyQt5 QTableWidget表头(horizontalHeader/verticalHeader)的5个实用技巧与避坑指南
  • 别再让虚拟机卡顿了!保姆级详解VMware ESXi内存回收三剑客:TPS、Ballooning与Swapping
  • 新概念英语(第三册)精读与场景应用——Lesson 6 至 Lesson 10 核心主题解析