介绍一下 机器人坐标转换的 RT 矩阵

好的,我们来详细介绍一下机器人学和计算机视觉中至关重要的 RT矩阵 ,也常被称为刚体变换矩阵位姿矩阵


1. 什么是 RT 矩阵?

RT矩阵 的核心作用是描述一个刚体 (比如机器人的手臂、末端执行器、自动驾驶车辆上的传感器)在三维空间中的位置和姿态 ,即 位姿

  • R 代表 旋转:一个 3x3 的矩阵,描述了物体是如何相对于参考坐标系旋转的。

  • T 代表 平移:一个 3x1 的向量,描述了物体相对于参考坐标系的位移。

为了将旋转和平移统一在一个矩阵运算中(便于连续变换和计算),我们使用一个 4x4 的齐次坐标变换矩阵 ,这就是我们通常所说的 RT 矩阵

它的标准形式如下:
text
复制
下载

复制代码
    [ r11  r12  r13  tx ]
T = [ r21  r22  r23  ty ]
    [ r31  r32  r33  tz ]
    [  0    0    0    1 ]

其中:

  • 左上角的 3x3 子矩阵 [r11, r12, r13; r21, r22, r23; r31, r32, r33] 就是旋转矩阵 R

  • 最右边的 3x1 列向量 [tx, ty, tz]^T 就是平移向量 T

  • 最后一行 [0, 0, 0, 1] 是为了满足齐次坐标计算而固定的。


2. RT 矩阵的数学原理:为什么要用 4x4 矩阵?

在三维空间中,一个点的坐标通常用 [x, y, z]^T 表示。如果我们只想进行旋转,用 3x3 矩阵乘法就够了:

P_rotated = R * P

如果我们只想进行平移,用向量加法就够了:

P_translated = P + T

但是,当我们既需要旋转又需要平移时,运算就变成了:

P_new = R * P + T

这虽然正确,但不是线性的,不便于将多个变换合并成一个。为了解决这个问题,我们引入了齐次坐标

齐次坐标 将三维点 [x, y, z] 扩展为四维 [x, y, z, 1]。这样,旋转和平移就可以通过一个单一的矩阵乘法来完成:
text
复制
下载

复制代码
[ P_new ]   [ R       T ]   [ P ]
[       ] = [            ] * [   ]
[   1   ]   [ 0, 0, 0  1 ]   [ 1 ]

展开后就是:
P_new = R * P + T

看到了吗?我们用一次矩阵乘法,优雅地实现了 R * P + T 这个操作。这使得连续变换变得非常简单。


3. RT 矩阵的几何意义与作用

RT 矩阵描述了一个坐标系(目标坐标系 B )到另一个坐标系(参考坐标系 A)的变换关系。

通常我们写作 ᴀTʙ,它的含义是:

"我知道一个点在坐标系 B 下的坐标,那么通过 ᴀTʙ,我就可以计算出该点在坐标系 A 下的坐标。"

数学表达
Point_A = ᴀTʙ * Point_B

几何解释

  • 旋转部分 R :描述了如何将坐标系 B 的三个轴 (X_b, Y_b, Z_b) 旋转,才能与坐标系 A 的三个轴 (X_a, Y_a, Z_a) 对齐。

  • 平移部分 T:描述了坐标系 B 的原点在坐标系 A 中的坐标位置。

举个例子

想象机器人的基座是坐标系 Base,机器人的手爪是坐标系 Gripper

  • ᴮTɢ 这个矩阵就描述了手爪相对于机器人基座的位置和朝向。

  • 如果你知道一个物体(比如一个螺丝)在手爪坐标系下的坐标 P_gripper,那么通过 P_base = ᴮTɢ * P_gripper,你就能算出这个螺丝在基座坐标系下的坐标,从而让机器人知道如何移动整个身体去接近它。


4. RT 矩阵的运算

a. 变换的复合(连锁变换)

这是 RT 矩阵最大的优势之一。如果你有多个坐标系,比如从 A 到 B,再从 B 到 C,那么从 A 到 C 的变换矩阵就是:

ᴀTᴄ = ᴀTʙ * ʙTᴄ

注意顺序:矩阵乘法是右乘的,即最先发生的变换在最右边。这个顺序非常重要,不能颠倒。

例子 :在机器人学中,从基座到末端执行器的变换,是由一系列连杆变换复合而成的:
ᴮTᴱ = ᴮT₁ * ¹T₂ * ²T₃ * ... * ᴺ⁻¹Tᴺ * ᴺTᴱ

b. 逆变换

如果你有 ᴀTʙ,想知道 ʙTᴀ(即从坐标系 A 变换到 B 的逆过程),不需要直接求逆矩阵,有一个快速计算方法:
text
复制
下载

复制代码
    [ R^T   -R^T * T ]
T = [                 ]
    [  0       1     ]

其中 R^T 是旋转矩阵 R 的转置。因为旋转矩阵是正交矩阵,所以它的逆就等于它的转置。


5. 实际应用场景

RT 矩阵在机器人和计算机视觉领域无处不在:

  1. 机器人运动学:描述机器人各个连杆之间的位姿关系,是机器人控制和轨迹规划的基础。

  2. 手眼标定 :确定相机安装在机器人手上(Eye-in-Hand)或机器人外部(Eye-to-Hand)时,相机坐标系与机器人基座坐标系之间的变换关系。核心就是求解一个 AX = XB 的矩阵方程。

  3. 自动驾驶:将激光雷达、摄像头、GPS/IMU 等不同传感器坐标系的数据统一到车体坐标系下,进行融合感知。这里的 RT 矩阵通常由传感器外参标定得到。

  4. 计算机图形学:用于移动、旋转和放置三维模型中的物体。

  5. 增强现实:将虚拟物体准确地叠加到真实世界的视频画面上,需要计算相机相对于真实世界标记物的 RT 矩阵。


6. 与其他姿态表示法的关系

旋转矩阵 R 只是描述旋转的一种方式,其他常见的还有:

  • 欧拉角:直观,但有万向节死锁问题。

  • 四元数:紧凑,计算高效,常用于插值和避免死锁。

  • 轴角/旋转向量:用一根旋转轴和一个旋转角度来表示。

这些表示法都可以与旋转矩阵 R 相互转换。RT 矩阵因其统一和规范的形式,成为了在系统内部存储和传递位姿信息的标准方式。

总结

RT矩阵 是一个强大而优雅的数学工具,它将三维空间中的旋转平移 统一在一个 4x4 的矩阵中。它不仅是描述物体位姿的标准语言,更是连接不同坐标系、实现复杂空间计算的桥梁,是机器人学和计算机视觉领域的基石概念之一。

相关推荐
神仙别闹2 分钟前
基于C++实现(控制台)应用递推法完成经典型算法的应用
开发语言·c++·算法
Ayanami_Reii4 分钟前
进阶数据结构应用-一个简单的整数问题2(线段树解法)
数据结构·算法·线段树·延迟标记
listhi5201 小时前
基于改进SET的时频分析MATLAB实现
开发语言·算法·matlab
Keep_Trying_Go2 小时前
基于Zero-Shot的目标计数算法详解(Open-world Text-specified Object Counting)
人工智能·pytorch·python·算法·多模态·目标统计
xl.liu2 小时前
零售行业仓库商品数据标记
算法·零售
confiself2 小时前
通义灵码分析ms-swift框架中CHORD算法实现
开发语言·算法·swift
做怪小疯子2 小时前
LeetCode 热题 100——二叉树——二叉树的层序遍历&将有序数组转换为二叉搜索树
算法·leetcode·职场和发展
CoderYanger2 小时前
递归、搜索与回溯-记忆化搜索:38.最长递增子序列
java·算法·leetcode·1024程序员节
xlq223223 小时前
22.多态(下)
开发语言·c++·算法
CoderYanger3 小时前
C.滑动窗口-越短越合法/求最长/最大——2958. 最多 K 个重复元素的最长子数组
java·数据结构·算法·leetcode·哈希算法·1024程序员节