机器人位姿变换的坐标系相对性:左乘法则与右乘法则解析

发布于:2025-07-16 ⋅ 阅读:(16) ⋅ 点赞:(0)

设机器人当前位姿(位置和姿态)表示为齐次变换矩阵 T c u r r e n t \boldsymbol{T}_{current} Tcurrent,该矩阵将局部坐标系(机器人自身坐标系)的点坐标映射到世界坐标系:
P w o r l d = T c u r r e n t ⋅ P l o c a l \boldsymbol{P}_{world} = \boldsymbol{T}_{current} \cdot \boldsymbol{P}_{local} Pworld=TcurrentPlocal其中, P l o c a l \boldsymbol{P}_{local} Plocal 是点在局部坐标系中的坐标, P w o r l d \boldsymbol{P}_{world} Pworld 是其在世界坐标系中的坐标。

1. 全局坐标系下机器人位姿更新的左乘法则​

若变换基于全局坐标系(例如,沿世界坐标系X轴平移3米),则增量变换 Δ T \Delta \boldsymbol{T} ΔT 的定义需满足: Δ T \Delta \boldsymbol{T} ΔT 的旋转轴/平移方向由​​世界坐标系的轴向​​决定,与机器人当前姿态无关

因此,先将局部坐标 P local \boldsymbol{P}_{\text{local}} Plocal 通过 T c u r r e n t \boldsymbol{T}_{current} Tcurrent 映射到世界坐标系,得 P w o r l d \boldsymbol{P}_{world} Pworld。再在世界坐标系中应用全局变换 Δ T \Delta \boldsymbol{T} ΔT,得到新坐标 Δ T ⋅ P w o r l d \Delta \boldsymbol{T} \cdot \boldsymbol{P}_{world} ΔTPworld。即有:
Δ T ⋅ ( T c u r r e n t ⋅ P local ) = ( Δ T ⋅ T c u r r e n t ) ⋅ P local ⇒ T n e w = Δ T ⋅ T c u r r e n t \Delta \boldsymbol{T} \cdot (\boldsymbol{T}_{current} \cdot \boldsymbol{P}_{\text{local}}) = (\Delta \boldsymbol{T} \cdot \boldsymbol{T}_{current}) \cdot \boldsymbol{P}_{\text{local}} \Rightarrow \boldsymbol{T}_{new} = \Delta \boldsymbol{T} \cdot \boldsymbol{T}_{current} ΔT(TcurrentPlocal)=(ΔTTcurrent)PlocalTnew=ΔTTcurrent此即左乘公式​​,表明新位姿是全局变换与当前位姿的左乘组合

2. 局部坐标系下机器人位姿增量更新的右乘法则​

如果机器人需执行一个在当前局部坐标系(例如机器人自身坐标系)中描述的运动变换 Δ T \Delta \boldsymbol{T} ΔT。例如:

  • 沿自身 X 轴移动 3 米: Δ T = [ 1 0 0 3 0 1 0 0 0 0 1 0 0 0 0 1 ] \Delta \boldsymbol{T} = \begin{bmatrix} 1 & 0 & 0 & 3 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} ΔT= 1000010000103001
  • 绕自身 Z 轴旋转 90°: Δ T = [ 0 − 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 ] \Delta \boldsymbol{T} = \begin{bmatrix} 0 & -1 & 0 & 0 \\ 1 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} ΔT= 0100100000100001

则执行该运动后的机器人新位姿 T new \boldsymbol{T}_{\text{new}} Tnew 为当前位姿 T current \boldsymbol{T}_{\text{current}} Tcurrent 右乘该增量变换:
T new = T current Δ T \boldsymbol{T}_{\text{new}} = \boldsymbol{T}_{\text{current}} \Delta \boldsymbol{T} Tnew=TcurrentΔT对于在运动前的局部坐标系中定义的任意点 P local \boldsymbol{P}_{\text{local}} Plocal,应用变换 T new \boldsymbol{T}_{\text{new}} Tnew 将其映射到世界坐标系的结果,等同于先在原局部坐标系中应用增量变换 Δ T \Delta \boldsymbol{T} ΔT 得到 Δ T P local \Delta \boldsymbol{T} \boldsymbol{P}_{\text{local}} ΔTPlocal,然后将该结果再通过原当前位姿 T current \boldsymbol{T}_{\text{current}} Tcurrent 映射到世界坐标系。即:
T new P local = T current ( Δ T P local ) \boldsymbol{T}_{\text{new}} \boldsymbol{P}_{\text{local}} = \boldsymbol{T}_{\text{current}} (\Delta \boldsymbol{T} \boldsymbol{P}_{\text{local}}) TnewPlocal=Tcurrent(ΔTPlocal)

3. 相对位姿的计算

相对位姿描述了两个坐标系之间的变换关系,包括旋转和平移,是机器人导航、三维重建、多传感器融合等领域的核心问题。

T 1 \boldsymbol{T}_1 T1 T 2 \boldsymbol{T}_2 T2 分别表示相机在时刻 t 1 t_1 t1 t 2 t_2 t2 位姿变换矩阵。现从两个角度计算 T 1 \boldsymbol{T}_1 T1 T 2 \boldsymbol{T}_2 T2 的相对位姿 Δ T \Delta \boldsymbol{T} ΔT

3.1. 基于世界坐标系(全局变换)

相对位姿 Δ T global \Delta \boldsymbol{T}_{\text{global}} ΔTglobal 在世界坐标系中定义,其数学表达为:
Δ T global = T 2 − 1 T 1 \Delta \boldsymbol{T}_{\text{global}} = \boldsymbol{T}_2^{-1} \boldsymbol{T}_1 ΔTglobal=T21T1其中, Δ T global \Delta \boldsymbol{T}_{\text{global}} ΔTglobal 的平移和旋转方向由世界坐标系的轴向决定。
推导如下:
世界坐标系中的点 P w \boldsymbol{P}_w Pw t 1 t_1 t1 t 2 t_2 t2 时刻相机坐标系中的位置分别为 p 1 \boldsymbol{p}_1 p1 p 2 \boldsymbol{p}_2 p2,根据位姿定义:
P w = T 1 p 1 = T 2 p 2 \boldsymbol{P}_w = \boldsymbol{T}_1 \boldsymbol{p}_1 = \boldsymbol{T}_2 \boldsymbol{p}_2 Pw=T1p1=T2p2则有:
p 2 = T 2 − 1 P w = T 2 − 1 T 1 p 1 ⇒ Δ T global = T 2 − 1 T 1 \boldsymbol{p}_2 = \boldsymbol{T}_2^{-1} \boldsymbol{P}_w = \boldsymbol{T}_2^{-1} \boldsymbol{T}_1 \boldsymbol{p}_1 \Rightarrow \Delta \boldsymbol{T}_{\text{global}} = \boldsymbol{T}_2^{-1} \boldsymbol{T}_1 p2=T21Pw=T21T1p1ΔTglobal=T21T1 T 1 = [ R 1 t 1 0 T 1 ] \boldsymbol{T}_1 = \begin{bmatrix} \boldsymbol{R}_1 & \boldsymbol{t}_1 \\ \boldsymbol{0}^T & 1 \end{bmatrix} T1=[R10Tt11] T 2 = [ R 2 t 2 0 T 1 ] \boldsymbol{T}_2 = \begin{bmatrix} \boldsymbol{R}_2 & \boldsymbol{t}_2 \\ \boldsymbol{0}^T & 1 \end{bmatrix} T2=[R20Tt21],则有:
Δ T global = T 2 − 1 T 1 = [ R 2 T − R 2 T t 2 0 T 1 ] [ R 1 t 1 0 T 1 ] = [ R 2 T R 1 R 2 T t 1 − R 2 T t 2 0 T 1 ] \Delta \boldsymbol{T}_{\text{global}} = \boldsymbol{T}_2^{-1} \boldsymbol{T}_1 = \begin{bmatrix} \boldsymbol{R}_2^T & -\boldsymbol{R}_2^T \boldsymbol{t}_2 \\ \boldsymbol{0}^T & 1 \end{bmatrix} \begin{bmatrix} \boldsymbol{R}_1 & \boldsymbol{t}_1 \\ \boldsymbol{0}^T & 1 \end{bmatrix} = \begin{bmatrix} \boldsymbol{R}_2^T \boldsymbol{R}_1 & \boldsymbol{R}_2^T \boldsymbol{t}_1 -\boldsymbol{R}_2^T \boldsymbol{t}_2 \\ \boldsymbol{0}^T & 1 \end{bmatrix} ΔTglobal=T21T1=[R2T0TR2Tt21][R10Tt11]=[R2TR10TR2Tt1R2Tt21]

3.2. 基于 t 1 t_1 t1 时刻相机的局部坐标系(局部变换)

相对位姿 Δ T local \Delta \boldsymbol{T}_{\text{local}} ΔTlocal t 1 t_1 t1 时刻相机自身的坐标系中定义,其数学表达为:
Δ T local = T 1 − 1 ⋅ T 2 \Delta \boldsymbol{T}_{\text{local}} = \boldsymbol{T}_1^{-1} \cdot \boldsymbol{T}_2 ΔTlocal=T11T2其中, Δ T local \Delta \boldsymbol{T}_{\text{local}} ΔTlocal 的平移和旋转方向由 t 1 t_1 t1 时刻相机的朝向决定。
上述公式根据局部坐标系下机器人位姿增量更新的右乘法则​易得,且有:
Δ T local = T 1 − 1 ⋅ T 2 = [ R 1 T − R 1 T t 1 0 T 1 ] [ R 2 t 2 0 T 1 ] = [ R 1 T R 2 R 1 T t 2 − R 1 T t 1 0 T 1 ] \Delta \boldsymbol{T}_{\text{local}} = \boldsymbol{T}_1^{-1} \cdot \boldsymbol{T}_2 = \begin{bmatrix} \boldsymbol{R}_1^T & -\boldsymbol{R}_1^T \boldsymbol{t}_1 \\ \boldsymbol{0}^T & 1 \end{bmatrix} \begin{bmatrix} \boldsymbol{R}_2 & \boldsymbol{t}_2 \\ \boldsymbol{0}^T & 1 \end{bmatrix} = \begin{bmatrix} \boldsymbol{R}_1^T \boldsymbol{R}_2 & \boldsymbol{R}_1^T \boldsymbol{t}_2 - \boldsymbol{R}_1^T \boldsymbol{t}_1 \\ \boldsymbol{0}^T & 1 \end{bmatrix} ΔTlocal=T11T2=[R1T0TR1Tt11][R20Tt21]=[R1TR20TR1Tt2R1Tt11]

3.3. 两者区别

角度 数学公式 坐标系依赖 乘法顺序
世界坐标系(全局) Δ T global = T 2 − 1 T 1 \Delta \boldsymbol{T}_{\text{global}} = \boldsymbol{T}_2^{-1} \boldsymbol{T}_1 ΔTglobal=T21T1 世界坐标系轴向固定 左乘
t 1 t_1 t1 相机坐标系(局部) Δ T local = T 1 − 1 T 2 \Delta \boldsymbol{T}_{\text{local}} = \boldsymbol{T}_1^{-1} \boldsymbol{T}_2 ΔTlocal=T11T2 依赖 t 1 t_1 t1 时刻相机自身朝向 右乘

网站公告

今日签到

点亮在社区的每一天
去签到