阅读时间大约10分钟以上(4028字)
作者:深蓝学院具身君 出品:深蓝具身智能
经历过传统机器人学时代的读者,应该都知道坐标变换是一个已经被 "解决" 的问题。DH 参数、齐次变换矩阵、正逆运动学构成了完整的理论体系,工业机器人依靠这些技术实现了微米级的重复定位精度。
但在具身智能时代,这个 "已解决" 的问题突然变成了瓶颈之一:
试想一下,当机器人需要拿起桌上的水杯时,系统究竟是如何判断水杯的具体位置(坐标)的?
不同视角下的空间描述,存在矛盾:
相机以自我为中心看世界,机械臂则以自身底座为原点规划运动,而目标物体(水杯)又存在于一个独立的世界坐标之中。
如果无法将这三种语言统一,机器人眼中的杯子就只是一团像素的集合,而非一个可以交互的实体。
解决这一矛盾的核心,正是三维世界的坐标变换。
简单来说,传统工业机器人解决的是一个定义在封闭、参数化空间内的数学计算问题。
而具身智能的坐标系问题,不是“解一个方程组”变难了,而是方程组的输入,从“已知常量”变成了“需从高维感知中推断的、充满不确定性的变量”。
因此,本文我们来讲「三维世界的坐标变换」,从最基础的概念出发,通俗易懂地讲解四大坐标系的定义、相机的成像原理,以及机器人如何将二维图像信息转化为三维空间中的精准动作。
机器人的"方向感":为什么需要坐标系?
在具身智能中,机器人需要将视觉感知与物理操作紧密结合。
以机械臂抓取物体为例:
相机捕捉到桌上的水杯,但相机只能提供水杯在"相机视角"下的位置。而机械臂需要知道水杯相对于自己底座的位置,才能准确地伸出机械手完成抓取。
这就好比你在看一张地图,地图上的位置需要转换成你实际所处的地理坐标,你才能知道该如何行动。
为了解决这个问题,我们需要建立统一的参考标准,这就是坐标系。
在机器视觉和机器人控制中,主要有四大核心坐标系,共同构成了机器人理解三维世界的基础框架。

▲图 | 四大坐标系分类
世界坐标系是整个系统的绝对参考基准,通常设定在机器人工作环境中的某个固定点,比如机器人底座的中心或地面上的某个角落。
相机坐标系以相机镜头的中心(光心)为原点,相机的拍摄方向为 Z 轴,X 轴和 Y 轴平行于成像平面。
图像坐标系和像素坐标系都位于二维的成像平面上,但原点位置不同:
图像坐标系的原点在成像平面的中心(即主点/光轴与成像平面的交点),以物理长度(毫米)为单位;
像素坐标系的原点在图像的左上角,以像素(pixel)为单位。

▲图1 | 四大坐标系的关系示意图。空间中的三维点 P(Xw, Yw, Zw) 经过相机光心 Oc 的投影,最终落在成像平面上的像素点 p(u, v)。这一过程涉及世界坐标系、相机坐标系、图像坐标系和像素坐标系之间的一系列变换。
从3d到2d:相机是如何"看"世界的?(内参矩阵)
相机"看"世界的过程,本质上是将三维空间中的物体"拍扁"成二维的照片。
这个过程可以用针孔相机模型(小孔成像模型)来解释:光线穿过一个极小的针孔(相机光心),在后方的感光平面上形成一个倒立的像。
为了方便数学计算,我们通常将成像平面"翻转"到针孔的前方,这样形成的像就是正立的,与我们看到的照片一致。

▲图 | 相机几何模型示意图。图中展示了相机坐标系、图像(物理)坐标系、世界坐标系和像素坐标系的空间关系。真实世界中的物体(如埃菲尔铁塔)经过相机的投影,在像素坐标系中形成对应的图像。
相机内参矩阵(Intrinsic Matrix)描述了从相机坐标系到像素坐标系的变换,它完全由相机自身的物理属性决定,与相机的位置和姿态无关。
内参矩阵包含以下关键参数:
焦距(Focal Length):
焦距 f 是镜头光心到成像平面的距离,决定了画面的放大倍数。
在像素单位下,水平方向的像素焦距 fx = f / dx,垂直方向的像素焦距 fy = f / dy,其中 dx 和 dy 分别是单个像素在水平和垂直方向上的物理尺寸。
光心坐标(Principal Point):
光轴与成像平面的交点,即图像的主点,在像素坐标系下的坐标为 (cx, cy),通常接近图像的中心。
根据相似三角形关系,空间中某点在相机坐标系下的三维坐标 (Xc, Yc, Zc) 对应的像素坐标 (u, v) 满足:

写成矩阵形式,即深度值 Zc 乘以像素坐标向量,等于内参矩阵 K 乘以相机坐标向量:

其中,矩阵 K 就是相机的内参矩阵。它完全由相机的硬件参数决定,一旦相机出厂,内参通常就已固定(或通过相机标定获得)。

▲图3 | 针孔相机成像模型的侧视图。
图中清晰展示了三维空间点、相机光心、焦距与成像平面之间的几何关系。根据相似三角形原理,可以推导出三维坐标到二维坐标的投影公式。
从这里到那里:不同视角如何统一?(外参矩阵)
现在我们知道了相机如何将三维世界变成二维照片(内参矩阵)。
但相机看到的世界,即相机坐标系;和真实的世界,即世界坐标系往往是不重合的:
相机可能挂在天花板上,也可能安装在机械臂的末端,它的位置和朝向随时都在变化。
如何将世界坐标系下的三维点位置,转换到相机坐标系下呢?
这就需要用到外参矩阵(Extrinsic Matrix)。
外参矩阵描述了相机在世界坐标系中的位姿(Pose),即位置和姿态。它由两部分组成:
平移向量(Translation Vector)t:
一个三维向量,描述了相机坐标系原点相对于世界坐标系原点的直线移动距离。
旋转矩阵(Rotation Matrix)R:
一个 3×3 的矩阵,描述了相机坐标系相对于世界坐标系的旋转关系。旋转矩阵是一个正交矩阵,其行列式为 1,它的逆矩阵等于它的转置矩阵。
世界坐标系下某点的坐标 Pw = (Xw, Yw, Zw)ᵀ 变换到相机坐标系下的坐标 Pc 为:

利用齐次坐标,可以将旋转和平移合并为一个统一的矩阵乘法,得到 4×4 的齐次变换矩阵(Homogeneous Transformation Matrix):

这就是典型的刚体变换(Rigid Body Transformation)。
物体在变换过程中形状和大小不发生改变,只有位置和方向发生变化。

▲图4 | 相机成像的完整坐标变换链路。
世界坐标系通过外参矩阵(旋转矩阵 R 和平移向量 T)变换到相机坐标系,再经过焦距 f 的投影变换,最终得到图像平面坐标系和像素坐标系下的坐标。
串联全过程:2D像素如何变回3D位置?
将前面两步串联起来,就得到了“从世界坐标到像素坐标”的完整投影链路:
世界坐标 → 外参矩阵 [R|t] → 相机坐标 → 内参矩阵 K → 像素坐标
用矩阵形式表达为:
深度值 Zc 乘以像素坐标,等于内参矩阵 K 乘以外参矩阵 [R|t] 再乘以世界坐标:

这个公式是整个相机成像模型的核心。
其中,K 是 3×3 的内参矩阵,[R|t] 是 3×4 的外参矩阵,两者的乘积构成了 3×4 的投影矩阵(Projection Matrix),完整描述了三维世界到二维图像的映射关系。
深度丢失问题:从2D恢复3D的挑战
然而,在具身智能领域,我们往往需要解决的是逆向问题:
机器人通过相机拍到了一张二维照片,如何推算出物体在三维世界中的实际位置?
这是一个极具挑战性的问题。因为在从三维投影到二维的过程中,丢失了一个非常重要的信息:深度(Depth)。
在同一条射线上的所有三维点,都会投影到二维照片上的同一个像素点。换句话说,仅凭一张普通的 RGB 照片,无法唯一确定物体的三维位置。
为了恢复深度信息,机器人通常需要借助特殊的硬件或算法:
双目相机(Stereo Camera):
模仿人类的双眼,通过计算两个相机视角的视差(Disparity)来估算深度。
两个相机相距一定距离(基线 B),同一物体在两张图像中的水平位移就是视差,深度 z 与视差成反比:
其中 f 为焦距,(x - x') 为视差值。

▲图 | 双目相机深度估计原理。
两个相机相距基线 B,同一空间点 X 在左右相机成像平面上的投影位置分别为 x 和 x',两者之差即为视差。
通过视差可以反算出物体的深度 z。
深度相机(RGB-D Camera):
直接测量相机到物体的距离。常见技术包括:
结构光(Structured Light):向场景投射已知图案,通过图案变形计算深度
飞行时间(ToF, Time-of-Flight):发射激光脉冲,通过测量光的往返时间计算距离。

▲图6 |深度相机的两种结构光技术原理。
左图为线结构光方案,通过线性扫描激光器将激光线投射到物体表面,相机拍摄激光线的形变,从而计算物体的深度;
右图为面结构光方案,将编码光源图案投射到物体表面,通过图案在曲面上的形变来重建三维形状。
让机器人"手眼协调":手眼标定
掌握了内参和外参的概念之后,我们来看具身智能中一个非常关键的实际问题:
手眼标定(Hand-Eye Calibration)。
手眼标定的目标,是求出相机坐标系和机器人坐标系(通常是基座坐标系或末端执行器坐标系)之间的相对位置关系
——即相机的外参。
只有完成了手眼标定,机器人才能将视觉系统识别到的物体位置,准确地转换成机械臂能够执行的运动指令。
根据相机安装位置的不同,手眼标定分为两种主要模式:
眼在手上(Eye-in-Hand):
相机安装在机械臂的末端执行器上,随机械臂一起运动。
这种方式的优点是相机可以从不同角度观察目标,但相机与基座之间的变换关系会随机械臂的运动而变化。
眼在手外(Eye-to-Hand):
相机固定安装在机械臂之外(如天花板或支架上),不随机械臂运动。
这种方式的优点是相机与基座之间的变换关系固定不变,标定一次即可长期使用。
手眼标定的核心数学问题可以归结为求解矩阵方程:
其中 A 是机械臂末端在两个位置之间的变换矩阵,B 是相机观测到的标定板在两个位置之间的变换矩阵,X 是待求的相机与末端执行器之间的变换矩阵。

▲图 | 手眼标定的数学原理。
机械臂在两个不同位置(ε1 和 ε2)拍摄固定的标定板(H1 和 H2)。
通过机械臂末端的运动变换矩阵 A、相机观测到的标定板变换矩阵 B,以及待求的手眼变换矩阵 X,可以建立方程
从而求解出相机与末端执行器之间的精确变换关系。

▲图 | 机器人抓取任务中的完整坐标系框架。
图中包含了机器人基座坐标系 {a}、末端夹爪坐标系 {b}、相机坐标系 {c} 和目标物体坐标系 {d}。
完成手眼标定后,系统可以将相机识别到的目标位置,通过一系列坐标变换,最终转换为机械臂基座坐标系下的精确位置,从而实现精准抓取。
从像素点回归物理世界的闭环
回到文章开头那个场景:机器人要拿起桌上的水杯。现在我们可以重新梳理并回答这个问题了。
系统判断水杯位置的过程是一条可以被精确描述、分步验证的坐标变换链:
首先,世界坐标系里的水杯,经过外参矩阵的旋转与平移,进入相机的视野,这是一个视角转换的过程;
接着,相机坐标系下的三维点,经过内参矩阵的透视投影,被“压扁”成像素坐标系里的二维坐标
——这是正向的感知链路。(至此,机器人完成了“看见”)
但看见不等于理解。要从二维图像恢复三维信息,必须借助深度相机或双目相机提供的深度值,结合内参矩阵进行反投影,将像素重新升维成相机坐标系下的三维点云
——这是逆向的理解链路。
最后,通过手眼标定,将相机坐标系与机器人坐标系统一,点云中的每一个三维点,被翻译成机械臂基座能够执行的坐标
——这是应用的操作链路。
三条链路首尾相接,构成一个完整的闭环。
所以说,当机械臂稳稳抓起水杯的那一刻,本质上是一个坐标,经历了三次精确变换,终于被另一个坐标系下的执行器接住。
所谓“具身”,从来不是简单地给AI装上一副躯体,而是让智能学会在物理空间的坐标系之间自由穿行。所有智能交互的本质,都是一次次坐标的“三向”奔赴。
再比如,上线的VLA模型在仿真里丝般顺滑,部署到真机上却一次次在杯子旁边抓空。你把点云可视化出来看,物体位置明明对;把机械臂末端姿态打印出来,IK也解得漂亮。
那问题出在哪里?
常见的情况之一,问题就出在坐标变换上。相机看到的“前方10厘米”,和机械臂需要运动的“前方10厘米”,可能不是同一个前方。
三维坐标变换,就是解决这个“你以为对上了,其实差着一个坐标系”的问题。它是具身智能算法栈的最底层,也是最先被复杂模型掩盖的那条基础暗线。
