变换矩阵

坐标系描述

ApBo^Ap_{Bo}ApBo表示在参考坐标系{A}\{A\}{A}下坐标系{B}\{B\}{B}的原点坐标,并用旋转矩阵BAR^A_BRBAR描述坐标系{B}\{B\}{B}在参考坐标系{A}\{A\}{A}下的姿态,则坐标系{B}\{B\}{B}的姿态可表示为:
{B}={ApBoBAR} \{B\}=\{\enspace^Ap_{Bo}\quad{}^A_BR\enspace\} {B}={ApBoBAR}
坐标系的描述概括了刚体的位置和姿态的描述,当表示位置时,旋转矩阵BAR=I{}^A_BR=IBAR=I;当表示姿态时,位移矢量ApBo=0^Ap_{Bo}=0ApBo=0

平移映射

当两坐标系具有相同的方位,当坐标原点不重合时,可用位移矢量ApBo^Ap_{Bo}ApBo描述坐标系{B}\{B\}{B}相对于坐标系{A}\{A\}{A}的位置:

在这里插入图片描述

ApBo^Ap_{Bo}ApBo为坐标系{B}\{B\}{B}相对于{A}\{A\}{A}的平移矢量,若点ppp在坐标系{B}\{B\}{B}下的位置为Bp^BpBp,则它相对于坐标系{A}\{A\}{A}的位置Ap^ApAp可表示为:
Ap=Bp+ApBo {}^Ap={}^Bp+{}^Ap_{Bo} Ap=Bp+ApBo

旋转映射

当两坐标系原点重合,但方位不同时,可用旋转矩阵BAR{}^A_BRBAR描述坐标系{B}\{B\}{B}相对于坐标系{A}\{A\}{A}的姿态:

在这里插入图片描述

BAR{}^A_BRBAR为坐标系{B}\{B\}{B}相对于{A}\{A\}{A}的方位,若点ppp在坐标系{B}\{B\}{B}下的位置为Bp^BpBp,则它相对于坐标系{A}\{A\}{A}的位置Ap^ApAp可表示为:
Ap=BAR Bp {}^Ap={}^A_BR\:{}^Bp Ap=BARBp
同样,用ABR{}^B_ARABR表示坐标系{A}\{A\}{A}相对于{B}\{B\}{B}的方位,则可由旋转矩阵的正交约束得:
ABR=BAR−1=BART {}^B_AR={}^A_BR^{-1}={}^A_BR^T ABR=BAR1=BART

一般刚体变换

在三维空间中,最常见的情况如下:坐标系{B}\{B\}{B}{A}\{A\}{A}不但原点不重合,同时姿态也不相同。此时采用位移矢量ApBo^Ap_{Bo}ApBo描述坐标系{B}\{B\}{B}相对于坐标系{A}\{A\}{A}的位置,用旋转矩阵BAR{}^A_BRBAR描述坐标系{B}\{B\}{B}相对于坐标系{A}\{A\}{A}的姿态:

在这里插入图片描述

则若点ppp在坐标系{B}\{B\}{B}下的位置为Bp^BpBp,则它相对于坐标系{A}\{A\}{A}的位置Ap^ApAp可表示为:
Ap=BAR Bp+ApBo {}^Ap={}^A_BR\:{}^Bp+{}^Ap_{Bo} Ap=BARBp+ApBo
也即,为旋转映射与平移映射的复合。先将坐标系{B}\{B\}{B}根据旋转矩阵进行旋转,在沿着位移矢量进行平移。

将上式进行齐次变换,得到变换矩阵BAT{}^A_BTBAT
[Ap1]=[BARApBo01][Bp1]=BAT Bp \begin{bmatrix}{}^Ap\\1\end{bmatrix}=\begin{bmatrix}{}^A_BR&{}^Ap_{Bo}\\0&1\end{bmatrix}\begin{bmatrix}{}^Bp\\1\end{bmatrix}={}^A_BT\:{}^Bp [Ap1]=[BAR0ApBo1][Bp1]=BATBp
其中齐次变换矩阵BAT{}^A_BTBAT4×44\times44×4的矩阵,它表示了由坐标系{B}\{B\}{B}到坐标系{A}\{A\}{A}的变换关系:
BAT=[BARApBo01] {}^A_BT=\begin{bmatrix}{}^A_BR&{}^Ap_{Bo}\\0&1\end{bmatrix} BAT=[BAR0ApBo1]

齐次坐标

若一点的ppp的坐标为[xyz]T\begin{bmatrix}x&y&z\end{bmatrix}^T[xyz]T,则它的齐次坐标表示如下,齐次坐标并不唯一,可将隔行同乘一个常数ω\omegaω表示的仍为同一坐标:
p=[xyz1]=[ωxωyωzω] p=\begin{bmatrix}x\\y\\z\\1\end{bmatrix}=\begin{bmatrix}\omega x\\\omega y\\\omega z\\\omega\end{bmatrix} p=xyz1=ωxωyωzω
同时,规定坐标[0000]T\begin{bmatrix}0&0&0&0\end{bmatrix}^T[0000]T无意义,各个轴的无穷远处如下表示:
X轴:[1000]Y轴:[0100]Z轴:[0010]任意无穷远处:[abc0] X轴:\begin{bmatrix}1\\0\\0\\0\end{bmatrix}\quad Y轴:\begin{bmatrix}0\\1\\0\\0\end{bmatrix}\quad Z轴:\begin{bmatrix}0\\0\\1\\0\end{bmatrix}\quad 任意无穷远处: \begin{bmatrix}a\\b\\c\\0\end{bmatrix} X:1000Y:0100Z:0010:abc0

变换矩阵运算与刚体群

运动算子

变换矩阵BAT{}^A_BTBAT可分解为两个矩阵相乘的形式,其中用Trans(ApBo)Trans({}^Ap_{Bo})Trans(ApBo)表示平移变换矩阵,用Rot(k,θ)Rot(k,\theta)Rot(k,θ)旋转变换矩阵:
BAT=[BARApBo01]=[I3×3ApBo01][BAR(k,θ)001]=Trans(ApBo)Rot(k,θ) \begin{aligned} {}^A_BT =&\begin{bmatrix}{}^A_BR&{}^Ap_{Bo}\\0&1\end{bmatrix}\\ =&\begin{bmatrix}I_{3\times3}&{}^Ap_{Bo}\\0&1\end{bmatrix}\begin{bmatrix}{}^A_BR(k,\theta)&0\\0&1\end{bmatrix}\\ =&Trans({}^Ap_{Bo})Rot(k,\theta) \end{aligned} BAT===[BAR0ApBo1][I3×30ApBo1][BAR(k,θ)001]Trans(ApBo)Rot(k,θ)
Trans(ApBo)Trans({}^Ap_{Bo})Trans(ApBo)表示沿着位移矢量ApBo{}^Ap_{Bo}ApBo进行平移,Rot(k,θ)Rot(k,\theta)Rot(k,θ)则表示绕着过原点的轴kkk旋转θ\thetaθ角。

平移算子

相对坐标系{A}\{A\}{A},位移矢量Ap1{}^Ap_1Ap1沿着Ap{}^ApAp移动至位移矢量Ap2{}^Ap_2Ap2可用矢量相加表示:
Ap2=Ap1+Ap {}^Ap_2={}^Ap_1+{}^Ap Ap2=Ap1+Ap
将其写为算子形式如下:
Ap2=Trans(Ap) Ap1 {}^Ap_2=Trans({}^Ap)\:{}^Ap_1 Ap2=Trans(Ap)Ap1
平移算子为Trans(Ap)Trans({}^Ap)Trans(Ap)表示沿着位移矢量Ap{}^ApAp的大小和方向进行平移。

旋转算子

相对坐标系{A}\{A\}{A},某点由Ap1{}^Ap_1Ap1旋转至Ap2{}^Ap_2Ap2可表示为:
Ap2=R Ap1 {}^Ap_2=R\:{}^Ap_1 Ap2=RAp1
将其写为算子形式如下:
Ap2=Rot(k,θ) Ap1 {}^Ap_2=Rot(k,\theta)\:{}^Ap_1 Ap2=Rot(k,θ)Ap1
旋转算子Rot(k,θ)Rot(k,\theta)Rot(k,θ)表示沿着过原点的轴kkk旋转角度θ\thetaθ

运动算子一般形式

齐次变换矩阵可用作为运动算子,描述某点在坐标系内的运动(包括平移和旋转)。当变换矩阵作为运动算子使用时,不带上、下标。

例如,质点ppp在坐标系{A}\{A\}{A}中的运动轨迹为时间ttt的函数Ap(t){}^Ap(t)Ap(t),其初始位置为Ap(0){}^Ap(0)Ap(0),则用运动算子表示该质点的运动轨迹如下:
Ap(t)=T(t) Ap(0) {}^Ap(t)=T(t)\:{}^Ap(0) Ap(t)=T(t)Ap(0)

变换矩阵的运算

变换矩阵乘法

给定变换矩阵BAT、CBT{}^A_BT、{}^B_CTBATCBT,则可以得到变换矩阵CAT{}^A_CTCAT
CAT=BAT CBT=[BAR CBRBAR BpCo+ApBo01] {}^A_CT={}^A_BT\:{}^B_CT=\begin{bmatrix}{}^A_BR\:{}^B_CR&{}^A_BR\:{}^Bp_{Co}+{}^Ap_{Bo}\\0&1\end{bmatrix} CAT=BATCBT=[BARCBR0BARBpCo+ApBo1]
也即,坐标系{C}\{C\}{C}在坐标系{A}\{A\}{A}中的位姿,可以拆为两步进行:先将坐标系{C}\{C\}{C}转换至坐标系{B}\{B\}{B}中的位姿;再将此位姿根据坐标系{B}\{B\}{B}{A}\{A\}{A}的变换进行变换,从而得到最终变换矩阵。

变换矩阵乘法满足如下条件:

  • 运动相对固定坐标系而言:满足左乘规则,即变换顺序从右至左
  • 运动相对运动坐标系而言:满足右乘规则,即变换顺序从左至右
  • 变换的顺序不能调换进行

例如,对于一个变换矩阵BAT=Trans(1−34) Rot(y,90°) Rot(z,90°){}^A_BT=Trans(\begin{matrix}1&-3&4\end{matrix})\:Rot(y,90\degree)\:Rot(z,90\degree)BAT=Trans(134)Rot(y,90°)Rot(z,90°)

若相对固定坐标系(坐标系{A}\{A\}{A})而言,采用左乘规则进行:首先绕zAz_AzA轴旋转90°90\degree90°,再绕yAy_AyA轴旋转90°90\degree90°,最后相对{A}\{A\}{A}平移[1−34]T\begin{bmatrix}1&-3&4\end{bmatrix}^T[134]T即可。

在这里插入图片描述

若相对于运动坐标系(坐标系{B}\{B\}{B})而言,采用右乘规则进行:首先相对坐标系{A}\{A\}{A}平移[1−34]T\begin{bmatrix}1&-3&4\end{bmatrix}^T[134]T,再绕yBy_ByB轴旋转90°90\degree90°,最后绕zBz_BzB轴旋转90°90\degree90°即可。

在这里插入图片描述

变换矩阵求逆

若已知变换矩阵BAT{}^A_BTBAT,此时需要求解坐标系{A}\{A\}{A}相对于坐标系{B}\{B\}{B}的变换ABT{}^B_ATABT,则需要对变换矩阵进行求逆。

此处利用齐次变换矩阵特点,简化计算:已知BAT{}^A_BTBAT求解ABT{}^B_ATABT,只需要由BAR{}^A_BRBARApBo{}^Ap_{Bo}ApBo求解ABR{}^B_ARABRBpAo{}^Bp_{Ao}BpAo即可。

首先,通过旋转矩阵正交约束知:
ABR=BAR−1=BART {}^B_AR={}^A_BR^{-1}={}^A_BR^T ABR=BAR1=BART
随后,根据平移映射关系,可知在坐标系{A}\{A\}{A}下坐标系{B}\{B\}{B}的原点ApBo{}^Ap_{Bo}ApBo,在坐标系{B}\{B\}{B}的坐标B(ApBo){}^B({}^Ap_{Bo})B(ApBo)
B(ApBo)=ABR ApBo+BpAo {}^B({}^Ap_{Bo})={}^B_AR\:{}^Ap_{Bo}+{}^Bp_{Ao} B(ApBo)=ABRApBo+BpAo
已知,在坐标系{B}\{B\}{B}中,点BoBoBo为原点,即上式右侧为零:
BpAo=−ABR ApBo=−BART ApBo {}^Bp_{Ao}=-{}^B_AR\:{}^Ap_{Bo}=-{}^A_BR^T\:{}^Ap_{Bo} BpAo=ABRApBo=BARTApBo
由此得到变换矩阵的逆矩阵:
ABT=[BART−BART ApBo01] {}^B_AT=\begin{bmatrix}{}^A_BR^T&-{}^A_BR^T\:{}^Ap_{Bo}\\0&1\end{bmatrix} ABT=[BART0BARTApBo1]
易得:ABT=BAT−1{}^B_AT={}^A_BT^{-1}ABT=BAT1

刚体变换群

变换矩阵TTT由旋转矩阵RRR和位移矢量ttt决定,也即任意刚体的位姿由(t,R):t∈ℜ3,R∈SO(3)(t,R):t\in\Re^{3},R\in SO(3)(t,R):t3,RSO(3)决定。

定义刚体变换群SE(3)SE(3)SE(3)为乘积空间ℜ3×SO(3)\Re^{3}\times SO(3)3×SO(3)
SE(3)={T=[Rt0T1]∈ℜ4×4∣R∈SO(3),t∈ℜ3}=ℜ3×SO(3) SE(3)=\bigl\{T=\begin{bmatrix}R&t\\0^T&1\end{bmatrix}\in \Re^{4\times4}\big\vert R\in SO(3),t\in\Re^{3}\bigr\}=\Re^{3}\times SO(3) SE(3)={T=[R0Tt1]4×4RSO(3),t3}=3×SO(3)
SE(3)SE(3)SE(3)又称为三维空间的特殊欧式群(Special Euclidean Group ),推广到n维空间中可得:
SE(n)={T=[Rt0T1]∈ℜn+1×n+1∣R∈SO(n),t∈ℜn}=ℜn×SO(n) SE(n)=\bigl\{T=\begin{bmatrix}R&t\\0^T&1\end{bmatrix}\in \Re^{n+1\times n+1}\big\vert R\in SO(n),t\in\Re^{n}\bigr\}=\Re^{n}\times SO(n) SE(n)={T=[R0Tt1]n+1×n+1RSO(n),tn}=n×SO(n)
SE(n)SE(n)SE(n)为李群,当n=2时,SE(2)SE(2)SE(2)表示刚体的平面运动,其单位元为I3I_3I3;当n=3时,SE(3)SE(3)SE(3)表示刚体

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐