澳五机器人 Robotics——从笛卡尔坐标到齐次变换,一次理清位置、姿态与位姿

admin1个月前澳五机器人30

---

Robotics——从笛卡尔坐标到齐次变换,一次理清位置、姿态与位姿

2026 年 9 月 22 日


机器人学里最容易被低估的一章,就是位置与姿态描述。很多人觉得这不过是坐标变换,结果真到了标定相机、调试六轴臂的时候,才发现坑全埋在这里。[citation:63.41]


位置好办,三个数一说清楚;姿态两个字,背后是旋转矩阵、欧拉角、四元数、齐次变换一整套体系。


---

一、为什么这是绕不开的第一道坎


一个抓取任务背后至少叠了三层描述:[citation:63.41]

杯子的位置:相对机器人基座的坐标,比如 (0.35, 0.12, 0.08)

杯子的姿态:正着放还是躺倒,手柄朝哪边

机械爪的位姿:爪子要到杯子正上方,开口方向要匹配


这三层必须统一在同一个描述体系里,才能算出关节该怎么动。


---

二、位置、姿态、位姿

位置(Position)


位置永远相对于某个坐标系。 说"一个物体在 (1, 2, 3)"——不补上"在哪个坐标系下",这句话不完整。[citation:63.41]


在机器人中通常有这些固定角色:


世界坐标系 (World) → 机器人基座 (Base) → 末端工具 (Tool) → 工件 (Work Object)


位置用 3×1 向量表示:


$$^A\mathbf{p} = \begin{bmatrix} px \ py \ p_z \end{bmatrix}$$


左上标 A 表示这是在坐标系 {A} 中的描述。

姿态(Orientation)


姿态描述的是"一个坐标系相对另一个坐标系怎么转"。没有唯一表示法,有三套主流工具:[citation:63.41][citation:63.12]


| 工具 | 层 | 优点 | 缺点 |

|:----|:--:|:----|:----|

| 旋转矩阵 | 计算层 | 矩阵乘法天然支持级联复合 | 冗余(9个数表示3自由度),需正交约束 |

| 欧拉角 | 人机交互层 | 人最容易理解(先绕Z再绕Y) | 万向锁,插值可能扭曲 |

| 四元数 | 数值层 | 无万向锁,插值平滑,数值稳定 | 可读性差 |


旋转矩阵 $R$ 是一个 3×3 矩阵,由被描述坐标系 {B} 的三个单位向量在参考系 {A} 中的投影组成:


$$^ABR = \begin{bmatrix} ^A\mathbf{x}B & ^A\mathbf{y}B & ^A\mathbf{z}B \end{bmatrix}$$

位姿(Pose)


位姿 = 位置 + 姿态。一般写作 ${B} = { ^ABR, ^A\mathbf{p}B }$。[citation:63.16][citation:63.14]


---

三、齐次变换:把旋转和平移装进一个矩阵


旋转矩阵 $R$ 和位置向量 $\mathbf{p}$ 分开使用时,一次完整的坐标变换需要两步操作:


^A\mathbf{p} = ^ABR \cdot ^B\mathbf{p} + ^A\mathbf{p}B


在机器人学中,这种复合变换会频繁嵌套,"乘加乘加"的写法既不优雅也容易出错。齐次变换矩阵 把旋转和平并统一到一个 4×4 矩阵中:[citation:63.12][citation:63.14]


$$^ABT = \begin{bmatrix} ^ABR & ^A\mathbf{p}_B \ 0 & 1 \end{bmatrix} = \begin{bmatrix}

r{11} & r{12} & r{13} & px \

r{21} & r{22} & r{23} & py \

r{31} & r{32} & r{33} & pz \

0 & 0 & 0 & 1

\end{bmatrix}$$


这样坐标变换就统一成了矩阵乘法:


$$^A\mathbf{p} = ^A_BT \cdot ^B\mathbf{p}$$

齐次变换的级联——正运动学的核心


机械臂的正运动学,本质就是一连串齐次变换矩阵的连乘:[citation:63.10][citation:63.12]


$$^0nT = ^01T \cdot ^12T \cdot ^23T \cdots ^{n-1}_nT$$


每一段变换 $^{i-1}_iT$ 描述一个关节或连杆的位移,连乘的结果就是末端执行器相对基座的完整位姿。


---

四、实用建议

三层表示要自由切换


| 场景 | 用哪一层 | 原因 |

|:----|:--------:|------|

| 示教器/UI 配置 | 欧拉角 | 人最易理解 |

| 姿态复合运算 | 旋转矩阵/齐次变换 | 乘法天然支持级联 |

| 插值/优化/SLAM | 四元数 | 平滑、稳定、无万向锁 |


千万别锁死在某一层里——想对欧拉角做平滑插值,正确做法是先转四元数插完,再转回欧拉角发给执行器。[citation:63.41]

踩坑清单


| 坑 | 后果 | 解法 |

|:--|:----|:-----|

| 欧拉角插值 | 机械臂中途扭成麻花 | 转四元数再插值 |

| 旋转矩阵手性搞反 | 机械臂往反方向动 | 检查坐标系是左手还是右手系 |

| 四元数没归一化 | 累计误差越来越大 | 每次运算后归一化 |

| 忘了左上标 | 不知道位置相对于谁 | 写代码时明确标注参考系 |

| 欧拉角万向锁 | 丢失一个旋转自由度 | 改用四元数或旋转矩阵 |


---

五、一句话总结

位置靠三个数,姿态背后是一整套体系。 旋转矩阵负责级联计算,欧拉角负责与人交互,四元数负责平滑插值——三者用齐次变换矩阵统一成 4×4 的形式,使得多级坐标变换能通过矩阵连乘一步到位。理解这套描述体系,是进入机器人运动学的语言关。[citation:63.12][citation:63.41]


澳五机器人 澳八机器人 河内机器人 加拿大机器人 花开月下机器人 朱雀机器人 速飞机器人 名爵机器人 飞天机器人 BV机器人 涂六飞单机器人 美猴王机器人 大富豪机器人 速讯机器人 五球助手 十球助手

相关文章

澳五机器人 Kafka 作为Agent「共享内存」的核心设计

这套架构是当前工业级多Agent协同系统的主流落地方案:把Kafka作为Agent集群的全局共享状态总线,替代传统分布式共享内存,Flink作为事件驱动的实时决策大脑,实现大规模Agent的低延迟、高...

澳五机器人 从零开始落地自动化测试全流程落地方案

结合你之前深度探索的AI辅助测试体系建设、UI自动化全流程Agent Skill串联、Playwright自动化失败自愈提效的相关实践背景,从零推进自动化测试绝对不能一上来就盲目铺工具、写脚本,必须遵...

澳五机器人 Java 多线程开发系列之七:玩转多线程(线程的协作)

结合你之前关注的Java多线程并发编程中store/load与RMW操作、工业级高并发场景落地的相关背景,这篇内容从最基础的原生等待通知机制讲起,逐步延伸到JUC高阶同步工具的实战用法,把线程之间从“...

Micrometer监控指标上报Starrocks(四):原理、实践与优化

引言在分布式系统监控领域,指标采集与存储是构建可观测性体系的核心环节。Micrometer作为Java生态中广泛应用的指标库,支持将监控数据通过多种协议(如Prometheus、Graphite)或自...

澳五机器人 analysis_engine.py 是连接原始项目素材(图片、文档)与大语言模型(LLM)的核心业务编排层

在 RenoPit 项目中,analysis_engine.py 是连接原始项目素材(图片、文档)与大语言模型(LLM)的核心业务编排层。它负责将非结构化的磁盘文件转化为模型可理解的输入,处理异步调用...

解决 iOS 上 Swiper 滑动图片闪烁问题:原因分析与最有效的修复方式(二)

引言在移动端开发中,Swiper 组件作为图片轮播和内容滑动的核心工具,其性能表现直接影响用户体验。尽管前文已探讨了基础优化策略,但在实际项目中,尤其是面对复杂场景或高性能需求时,开发者仍可能遇到滑动...