位姿线性变换与坐标变换

58 阅读1分钟

位姿、线性变换与坐标变换

位姿、线性变换、坐标变换其实是同一个矩阵 BAT^A_BT 在不同视角下的名字。内旋、外旋、左乘、右乘容易混淆,是因为缺少科学的符号。一旦问题复杂,直观和直觉靠不住,只能靠代数符号推理。

为了简化符号,数学上经常会用同一个符号来表示能够相互确定的一组对象,比如:

A 可能指:{参考系、参考系的一组基、基张成的列空间、参考系的矩阵、一个线性变换、线性变换对应的矩阵}。

但在具体场景下,A只可能是其中的一个。

例如:

  • BAT=A1B^A_BT = A^{-1}B 中左边的A是参考系,右边的A是矩阵,两者可以相互确定。
  • P2=AP1P_2 = AP_1 中的A是矩阵,P2=A(P1)P_2 = A(P_1) 中的A是线性变换,大多数情况无需区分。

BAT^A_BT 有三个含义(矩阵形式一样,能相互确定):

  • P1: B系在A系中的位姿(姿态矩阵)
  • P2: A系到B系的过渡矩阵(用于坐标变换)
  • P3: A系到B系的运动算子作用(用于线性变换)

约定

  • P1: A, B, C 是空间中的参考系或其标准正交基,或正交基对应的矩阵。

  • T, R, M 是线性变换或其矩阵。

  • AT^A T 特指A系中的线性变换或其矩阵。

  • P, P1P_1, P2P_2 是与参考系无关的点。

  • AP^A P 是点P在A系中的坐标列向量。

  • 符号左上角和左下角是两个参考系。

  • P2: [a1,a2,...,an][a_1, a_2, ..., a_n] 是A系的基,[b1,b2,...,bn][b_1, b_2, ..., b_n] 是B系的基,aja_jbjb_j 都是n维列向量。 一个坐标系可以用它的基表示,故 A=[a1,...,an]A=[a_1, ..., a_n]B=[b1,...,bn]B=[b_1, ..., b_n]aja_jbjb_j 的表示依赖世界系 [e1,...,en][e_1, ..., e_n]

  • P3: AP^A P 是点P在A系中的齐次坐标 A[Px,Py,Pz,1]T^A [P_x, P_y, P_z, 1]^T 或欧式坐标 A[Px,Py,Pz]T^A [P_x, P_y, P_z]^T,根据上下文区分。

  • P4: AT^A T 是A系中的线性变换,满足 AP2=ATAP1^A P_2 = ^A T \cdot ^A P_1(即把 P1P_1 变换到 P2P_2)。

  • P5: BAT^{\mathbf{A}}_{\mathbf{B}}\mathbf{T} 是B系在A系中的位姿,指系B每个基在A系的坐标表示,即:

    [b1,...,bn]=[a1,...,an]BAT[b_1, ..., b_n] = [a_1, ..., a_n] \cdot {^A_BT}

    BAT=A1B^A_BT = A^{-1}B

    ABT=B1A^B_AT = B^{-1}A

    BATABT=I^A_BT \cdot ^B_AT = I

  • P6: 常用线性变换用“作用”描述,如拉伸、旋转、平移、镜像、透视,抽象线性变换只能用矩阵描述。

  • P7: 作用M是线性变换,M乘点是对点变换,M乘矩阵可看作对多个点变换,也可看作对坐标系变换。

  • P8: 线性变换M在A系的矩阵 AM^A M 与在B系的矩阵 BM^B M 是相似矩阵。

    AP2=AMAP1^A P_2 = ^A M ^A P_1

    BP2=BMBP1^B P_2 = ^B M ^B P_1

    BP2=ABT AM BAT BP1^B P_2 = ^B_AT \ ^A M \ ^A_BT \ ^B P_1

    BM=ABT AM BAT=ABT AM (ABT)1^B M = ^B_AT \ ^A M \ ^A_BT = ^B_AT \ ^A M \ (^B_AT)^{-1}


定理1:坐标变换定理

AP=BAT BP^A P = ^A_BT \ ^B P

坐标变换定理描述了同一个点P在两个系中的关系。

  • B=[b1,...,bn]=[a1,...,an]C=ACB = [b_1, ..., b_n] = [a_1, ..., a_n] C = AC,C是过渡矩阵
  • AP=[p1,...,pn]T^A P = [p_1, ..., p_n]^TBP=[p1,...,pn]T^B P = [p_1', ..., p_n']^TP=AAP=BBP=ACBPP = A ^A P = B ^B P = AC ^B P
  • AP=CBP^A P = C ^B P,C就是 BAT^A_BT
  • 若A取I=[e1,...,en]I=[e_1, ..., e_n],则 B=C=BATB = C = ^A_BT

定理2:线性变换定理

AP2=BAT AP1^A P_2 = ^A_BT \ ^A P_1

AP2=MAP1^A P_2 = M ^A P_1

线性变换定理描述了在同一个系中两个点的关系(线性变换的特点是左上角在一个系中)。

M 产生的作用就是A系到B系的作用,B系是假想出来的,P1P_1跟随B系一起运动到达P2P_2

P2P_2在B系的坐标和P1P_1在A系的坐标一样,假定为 V=[v1,...,vn]TV= [v_1, ..., v_n]^T

即有:

  • BP2=AP1=V^B P_2 = ^A P_1 = V
  • P1=AAP1=AVP_1 = A ^A P_1 = AV
  • P2=BBP2=BVP_2 = B ^B P_2 = BV
  • AP2=MAP1=BAT BP2=BAT AP1^A P_2 = M ^A P_1 = ^A_BT \ ^B P_2 = ^A_BT \ ^A P_1

M=BATM = ^A_BT


定理3:链式变换定理

CAT=BAT CBT^A_CT = ^A_BT \ ^B_CT

不同解释延伸出有趣的内外旋定理。

  • AP=BATBP=CATCP^A P = ^A_BT ^B P = ^A_CT ^C P
  • BP=CBTCP^B P = ^B_CT ^C P
  • AP=BATCBTCP=CATCP^A P = ^A_BT ^B_CT ^C P = ^A_CT ^C P
  • BATCBT=CAT^A_BT ^B_CT = ^A_CT

定理4:内外旋定理

该定理源于 CAT=BATCBT^A_CT = ^A_BT ^B_CT 的两种解释。

  • 本地系的作用是内旋用右乘。
  • 世界系作用是外旋用左乘。

达到上图状态有两种方式:

方式1:运动系,内旋,右乘

  • ABC重合
  • BC相对A运动 BAT^A_BT
  • C相对B运动 CBT^B_CT
  • CAT=BATCBT^A_CT = ^A_BT ^B_CT,即先 BAT^A_BT 作用,后 CBT^B_CT 作用,都是相对运动系作用。

方式2:世界系,外旋,左乘

  • ABC重合
  • C相对AB运动 CBT^B_CT
  • BC相对A运动 BAT^A_BT
  • CAT=BATCBT^A_CT = ^A_BT ^B_CT,即先 CBT^B_CT 作用,后 BAT^A_BT 作用,都是相对世界系作用。

例1:平面上绕点 (x,y)(x, y) 逆时针旋转 θ\theta 的线性变换 MM

  • A系为世界系
  • B系由A系平移到 (x,y)(x, y) 得到
  • C系由B系逆时针旋转 θ\theta 得到
  • P1P_1 绕B系原点逆时针旋转 θ\theta 到达 P2P_2,求在A系中 P1P_1P2P_2 的线性变换 MM,即 AM^A M

AP1=BATCBTCP1^A P_1 = ^A_BT ^B_CT ^C P_1
AP2=BATCBTCP2^A P_2 = ^A_BT ^B_CT ^C P_2
CP2=CBTCP1^C P_2 = ^B_CT ^C P_1
AP2=MAP1^A P_2 = M ^A P_1

联立上式可解得 M=BATCBTABTM = ^A_BT ^B_CT ^B_AT,可见 MMCBT^B_CT 是相似阵。

这是因为绕 (x,y)(x, y) 旋转 θ\theta 这个线性变换在A系中的矩阵是 MM,在B系中的矩阵是 CBT^B_CT,线性变换在不同基中的矩阵是相似阵。 将

BAT=(10x01y001){^A_B}\mathbf{T} = \begin{pmatrix} 1 & 0 & x \\ 0 & 1 & y \\ 0 & 0 & 1 \end{pmatrix}
CBT=(cosθsinθ0sinθcosθ0001){^B_C}\mathbf{T} = \begin{pmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix}
ABT=(BAT)1=(10x01y001)1{^B_A}\mathbf{T} = \left( {^A_B}\mathbf{T} \right)^{-1} = \begin{pmatrix} 1 & 0 & x \\ 0 & 1 & y \\ 0 & 0 & 1 \end{pmatrix}^{-1}

带入上式得到:

M=(cosθsinθ(1cosθ)x+sinθysinθcosθsinθx+(1cosθ)y001)\mathbf{M} = \begin{pmatrix} \cos\theta & -\sin\theta & (1 - \cos\theta)x + \sin\theta\, y \\ \sin\theta & \cos\theta & -\sin\theta\, x + (1 - \cos\theta)y \\ 0 & 0 & 1 \end{pmatrix}

其中 M\mathbf{M} 表示在世界系下,绕点 (x,y)(x, y) 逆时针旋转 θ\theta 的齐次变换矩阵。

例2:三维空间中绕定轴 kk 旋转 θ\theta 的线性变换 MM

  • kk 为定轴方向矢量,作用 MM 是将点绕 kk 轴旋转 θ\theta
  • A为世界系
  • A'、B' 的z轴与 kk 重合
  • B系由A系绕 kk 轴旋转 θ\theta 得到,B'由A'绕 kk 轴旋转 θ\theta 得到
  • B系在A系中的位姿就是 M=BARM = ^A_BR

θ=0\theta=0 时,A与B重合,A'与B'重合,MM 作用于A和A'得到B和B'。

B=M(A)=MAB = M(A) = MA(M把A系变成B系)

B=M(A)=MAB' = M(A') = MA'

B1B=(MA)1MA=A1AB^{-1}B' = (MA)^{-1}MA' = A^{-1}A'

AAR=BBR=[n,o,k]^A_{A'}R = ^B_{B'}R = [n, o, k](k为定轴,n和o可略去)

A为世界系,A'在A中的位姿为 [n,o,k][n, o, k]