作者:Frank Dellaert
February 7, 2016
1. Motivation: Rigid Motions in the Plane
我們從平面移動機器人的一個小例子開始,平面中的移動機器人蔘數化爲( x , y , θ ) (x, y, \theta) ( x , y , θ ) 。當我們給定一個微小的前進速度v x v_x v x ,我們知道位置的變化
x ˙ = v x
\dot x = v_x
x ˙ = v x
是下面微分方程的解,機器人的初始化位置爲x 0 x_0 x 0
x t = x 0 + v x t
x_t = x_0 + v_x t
x t = x 0 + v x t
與此類似,我們可以得到y方向上的平移,事實上,對於平移(x和y方向),一般情況下我們有
( x t , y t , θ t ) = ( x 0 + v x t , y 0 + v y t , θ 0 )
(x_t, y_t, \theta_t) = (x_0 + v_xt, y_0+v_yt, \theta_0)
( x t , y t , θ t ) = ( x 0 + v x t , y 0 + v y t , θ 0 )
類似的,對於旋轉我們有
( x t , y t , θ t ) = ( x 0 , y 0 , θ 0 + ω t )
(x_t, y_t, \theta_t) = (x_0, y_0, \theta_0 + \omega t)
( x t , y t , θ t ) = ( x 0 , y 0 , θ 0 + ω t )
其中ω \omega ω 是角速度,測量逆時針方向,單位爲rad/s.
然而,如果我們將平移和旋轉結合起來,則不成立了!我們不能寫作
( x t , y t , θ t ) = ( x 0 + v x t , y 0 + v y t , θ 0 + ω t )
(x_t, y_t, \theta_t) = (x_0 +v_x t , y_0 + v_yt, \theta_0 + \omega t)
( x t , y t , θ t ) = ( x 0 + v x t , y 0 + v y t , θ 0 + ω t )
原因是,如果我們根據速度向量( v x , v y , ω ) (v_x, v_y,\omega) ( v x , v y , ω ) 移動機器人一個微小量,我們有(一階近似)
( x δ , y δ , θ δ ) = ( x 0 + v x δ , y 0 + v y δ , θ 0 + ω δ )
(x_\delta, y_\delta, \theta_\delta) = (x_0 + v_x \delta, y_0 + v_y \delta, \theta_0 + \omega \delta)
( x δ , y δ , θ δ ) = ( x 0 + v x δ , y 0 + v y δ , θ 0 + ω δ )
但是現在機器人有旋轉,對於接下來的增量,速度向量在應用之前被旋轉。事實上,機器人在圓形軌跡上運動。
原因是平移和旋轉不能夠交換:先平移後旋轉跟先旋轉後平移到達不同的位置,正像說的:如果旋轉和平移可以交換,那麼我們可以在離開家之前做完所有的旋轉。
爲了更近一步,我們必須更加精確的描述機器人如何表現。具體的說,讓我們定義T 1 , T 2 T_1, T_2 T 1 , T 2 的組合爲
T 1 T 2 = ( x 1 , y 1 , θ 1 ) ( x 2 , y 2 , θ 2 ) = ( x 1 + cos θ 1 x 2 − sin θ 1 y 2 , y 1 + sin θ 1 x 2 + cos θ 1 y 2 , θ 1 + θ 2 )
T_1 T_2 = (x_1, y_1, \theta_1)(x_2, y_2, \theta_2) = (x_1+\cos \theta_1 x_2-\sin \theta_1 y_2, y_1+\sin \theta_1 x_2 + \cos \theta_1 y_2, \theta_1 + \theta_2)
T 1 T 2 = ( x 1 , y 1 , θ 1 ) ( x 2 , y 2 , θ 2 ) = ( x 1 + cos θ 1 x 2 − sin θ 1 y 2 , y 1 + sin θ 1 x 2 + cos θ 1 y 2 , θ 1 + θ 2 )
這有點笨拙,所以我們求助於一個技巧:將2D位姿嵌入3×3矩陣的空間中,因此我們可以定義爲矩陣乘法組合:
T 1 T 2 = [ R 1 t 1 0 1 ] [ R 2 t 2 0 1 ] = [ R 1 R 2 R 1 t 2 + t 1 0 1 ]
T_1 T_2 =
\begin{bmatrix}
R_1 & t_1 \\
0 & 1
\end{bmatrix}
\begin{bmatrix}
R_2 & t_2 \\
0 & 1
\end{bmatrix} =
\begin{bmatrix}
R_1 R_2 & R_1 t_2 + t_1 \\
0 & 1
\end{bmatrix}
T 1 T 2 = [ R 1 0 t 1 1 ] [ R 2 0 t 2 1 ] = [ R 1 R 2 0 R 1 t 2 + t 1 1 ]
其中矩陣R R R 是2D旋轉矩陣,定義爲
R = [ cos θ − sin θ sin θ cos θ ]
R = \begin{bmatrix}
\cos \theta & - \sin \theta \\
\sin \theta & \cos \theta
\end{bmatrix}
R = [ cos θ sin θ − sin θ cos θ ]
現在,機器人做極小的運動可以寫爲
T ( δ ) = [ cos ω δ − sin ω δ v x δ sin ω δ cos ω δ v y δ 0 0 1 ] ≈ [ 1 − ω δ v x δ ω δ 1 v y δ 0 0 1 ] = I + δ [ 0 − ω v x ω 0 v y 0 0 0 ]
T(\delta)=\begin{bmatrix}
\cos \omega \delta & -\sin \omega \delta & v_x \delta \\
\sin \omega \delta & \cos \omega \delta & v_y \delta \\
0 & 0 & 1
\end{bmatrix}
\approx
\begin{bmatrix}
1 & -\omega \delta & v_x \delta \\
\omega \delta & 1 & v_y \delta \\
0 & 0 & 1
\end{bmatrix}=
\mathbf{I} + \delta \begin{bmatrix}
0 & -\omega & v_x \\
\omega & 0 & v_y \\
0 & 0 & 0
\end{bmatrix}
T ( δ ) = ⎣ ⎡ cos ω δ sin ω δ 0 − sin ω δ cos ω δ 0 v x δ v y δ 1 ⎦ ⎤ ≈ ⎣ ⎡ 1 ω δ 0 − ω δ 1 0 v x δ v y δ 1 ⎦ ⎤ = I + δ ⎣ ⎡ 0 ω 0 − ω 0 0 v x v y 0 ⎦ ⎤
讓我們定義2D twist 向量 ξ = ( v , ω ) \xi=(v,\omega) ξ = ( v , ω ) ,上述矩陣可寫爲
ξ ^ ≜ [ 0 − ω v x ω 0 v y 0 0 0 ]
\hat \xi \triangleq \begin{bmatrix}
0 & - \omega & v_x \\
\omega & 0 & v_y \\
0 & 0 & 0
\end{bmatrix}
ξ ^ ≜ ⎣ ⎡ 0 ω 0 − ω 0 0 v x v y 0 ⎦ ⎤
如果我們想要讓t更大,我們可以把t劃分成更小的時間戳,例如劃分成n個,有
T ( t ) = ( I + t n ξ ^ ) . . . n t i m e s . . . ( I + t n ξ ^ ) = ( I + t n ξ ^ ) n
T(t) = (I + \frac{t}{n} \hat \xi)... n \, times ... (I + \frac{t}{n} \hat \xi) = (I + \frac{t}{n} \hat \xi)^n
T ( t ) = ( I + n t ξ ^ ) . . . n t i m e s . . . ( I + n t ξ ^ ) = ( I + n t ξ ^ ) n
結果如圖2所示, 當然,如果取n到無窮大,則有
T ( t ) = lim n → ∞ ( I + t n ξ ^ ) n
T(t) = \lim_{n \rightarrow \infty} (I + \frac{t}{n} \hat \xi)^n
T ( t ) = n → ∞ lim ( I + n t ξ ^ ) n
對於實數,該式是指數函數的多項式形式
e x = lim n → ∞ ( 1 + x n ) n = ∑ k = 0 ∞ x k k !
e^x = \lim_{n \rightarrow \infty}(1+\frac{x}{n})^n = \sum^{\infty}_{k=0} \frac{x^k}{k!}
e x = n → ∞ lim ( 1 + n x ) n = k = 0 ∑ ∞ k ! x k
該形式可以用來定義方陣,最終的結果表示機器人沿着圓形軌跡運動,得到ξ ^ \hat \xi ξ ^ 的矩陣指數
T ( t ) = e t ξ ^ ≜ lim n → ∞ ( I + t n ξ ^ ) n = ∑ k = 0 ∞ t k k ! ξ ^ k
T(t) = e^{t \hat \xi} \triangleq \lim_{n \rightarrow \infty}(I + \frac{t}{n} \hat \xi)^n = \sum^{\infty}_{k=0}\frac{t^k}{k!} \hat \xi^k
T ( t ) = e t ξ ^ ≜ n → ∞ lim ( I + n t ξ ^ ) n = k = 0 ∑ ∞ k ! t k ξ ^ k
我們稱該映射爲從2D twist ξ ^ \hat \xi ξ ^ 到2D剛體變化的指數映射。
以上具備李羣理論的所有要素。我們稱2d剛體變換空間以及空間中的操作爲特殊歐幾里得羣(S E ( 2 ) SE(2) S E ( 2 ) )。之所以稱爲李羣,是因爲它同時是一個拓撲羣和一個流形,這意味着乘法和求逆運算是平滑的。2D twists的空間以及下面將要定義的特殊二元操作稱爲與S E ( 2 ) SE(2) S E ( 2 ) 關聯的李代數s e ( 2 ) \mathfrak{se}(2) s e ( 2 ) 。
2. Basic Lie Group Concepts
現在,我們定義上面說明的概念,引入一些符號,然後大致瞭解一下。 在此之後,我們將介紹最常用的李羣及其李代數。
2.1 A Manifold and a Group
李羣G G G 既是羣又是具有光滑羣操作的流形。與之相關聯的是李代數g \mathfrak{g} g ,從廣義上講,它可以在單位的正切空間處確定,並完全定義了羣在單位附近的表現。從g \mathfrak{g} g 到G G G 有一個映射,稱爲指數映射。
e x p : g → G
\mathrm{exp}: \mathfrak{g} \rightarrow G
e x p : g → G
它是多對一的映射。可以在原點周圍局部定義相應的逆,因此是一個“對數”
l o g : G → g
\mathrm{log}:G \rightarrow \mathfrak{g}
l o g : G → g
它將G G G 中單位周圍的元素映射到g \mathfrak{g} g 中的元素。
李羣的一個重要族是矩陣李羣,其元素爲n×n可逆矩陣,所有這些矩陣的集合以及矩陣乘法被稱爲維數爲n的一般線性羣G L ( n ) GL(n) G L ( n ) ,以及 它的封閉子組是矩陣李羣。 我們感興趣的大多數(如果不是全部)李羣將是矩陣李羣。
2.2 Lie Algebra
李代數g \mathfrak{g} g 被稱爲代數,因爲它具有二元操作李括號[ X , Y ] [X,Y] [ X , Y ] ,其性質與G G G 羣操作密切相關。例如,與代數相關的矩陣李羣,李括號爲[ A , B ] ≜ A B − B A [A, B] \triangleq AB-BA [ A , B ] ≜ A B − B A .
李括號對李羣操作的關係如下:對於可交換李羣,g \mathfrak{g} g 中加性向量X + Y X+Y X + Y 模仿了李羣操作。例如,在g \mathfrak{g} g 中,如果有Z = X + Y Z= X + Y Z = X + Y ,當通過指數映射到G G G 中我們有
e Z = e X + Y = e X e Y
e^Z = e^{X+Y} = e^X e^Y
e Z = e X + Y = e X e Y
然而,對於非交換李羣不適用:
Z = log ( e X e Y ) ≠ X + Y
Z = \log(e^Xe^Y) \neq X + Y
Z = log ( e X e Y ) = X + Y
然而,Z Z Z 可利用BCH(Baker-Campbell-Hausdorff)公式計算:
Z = X + Y + [ X , Y ] / 2 + [ X − Y , [ X , Y ] ] / 12 − [ Y , [ X , [ X , Y ] ] ] / 24 + . . .
Z = X +Y + [X,Y ]/2 + [X −Y, [X,Y ]]/12 − [Y, [X, [X,Y ]]]/24 + . . .
Z = X + Y + [ X , Y ] / 2 + [ X − Y , [ X , Y ] ] / 1 2 − [ Y , [ X , [ X , Y ] ] ] / 2 4 + . . .
對於交換羣李括號是零,我們可以通過Z = X + Y Z = X + Y Z = X + Y 。對於非交換羣我們可以使用BCH公式去近似。
2.3 Exponential Coordinates
對於n維矩陣李羣,與在李代數g \mathfrak{g} g 中的向量空間R n \R^n R n 是同構的,我們可以定義hat 運算:
^ : x ∈ R n → x ^ ∈ g
\hat{}: x \in \R^n \rightarrow \hat x \in \mathfrak{g}
^ : x ∈ R n → x ^ ∈ g
表示將n維向量x ∈ R n x \in \R^n x ∈ R n 映射到g \mathfrak{g} g 空間元素,在矩陣李羣中,g \mathfrak{g} g 的元素x ^ \hat x x ^ 也是n × n n \times n n × n 矩陣,該映射爲
x ^ = ∑ i = 1 n x i G i (1)
\hat x = \sum_{i=1}^n x_i G^i \tag{1}
x ^ = i = 1 ∑ n x i G i ( 1 )
其中G i G^i G i 是李羣生成器(generators)的n × n n \times n n × n 矩陣。映射x → x ^ x→x̂ x → x ^ 的含義將取決於羣G G G ,並且通常具有直觀的解釋。
2.4 Actions
羣元素作用到流形M M M 上是一個重要的概念,例如,2D旋轉作用到2D點上,3D旋轉作用到3D點上等。尤其是在M M M 上G G G 的左作用定義爲一個平滑的映射Φ \Phi Φ :G × M → M G \times M \rightarrow M G × M → M 有:
單位元素e e e 沒有影響,也就是Φ ( e , p ) = p \Phi(e,p) = p Φ ( e , p ) = p
兩個作用組合成一個作用:Φ ( g , Φ ( h , p ) ) = Φ ( g h , p ) \Phi(g, \Phi(h, p))=\Phi(gh, p) Φ ( g , Φ ( h , p ) ) = Φ ( g h , p )
n維矩陣羣G G G 的作用(action)是乘R n \R^n R n 上的矩陣向量,
q = A p
q = A p
q = A p
其中p , q ∈ R n p, q \in \R^n p , q ∈ R n ,A ∈ G ⊆ G L ( n ) A \in G \sube GL(n) A ∈ G ⊆ G L ( n )
2.5 The Adjoint Map and Adjoint Representation
假設一個點p p p 在座標系T T T 中表示爲p ′ p' p ′ ,也就是p ′ = T p p' = Tp p ′ = T p ,其中T T T 表示全局座標p p p 到局部座標p ′ p' p ′ 的變換。爲了作用A A A ,我們首先需要消去作用的T T T ,然後應用A A A , 然後在結果上在作用T T T :
q ′ = T A T − 1 p ′
q' = TAT^{-1}p'
q ′ = T A T − 1 p ′
矩陣T A T − 1 TAT^{-1} T A T − 1 被認爲是A A A 的共軛,這是羣論的核心要素。
一般,伴隨映射(adjoint map) A d g \mathbf{Ad}_g A d g 通過g g g 映射羣元素a ∈ G a \in G a ∈ G 到它的共軛g a g − 1 gag^{-1} g a g − 1 。該映射在羣G G G 中獲取,但它在李代數g \mathfrak{g} g 有等價的表示:
A d g e x ^ = g e x p ( x ^ ) g − 1 = e x p ( A d g x ^ )
\mathbf{Ad}_ge^{\hat{x}} = g \, \mathrm{exp}(\hat{x}) \, g^{-1} = \mathrm{exp}(Ad_g \, \hat{x})
A d g e x ^ = g e x p ( x ^ ) g − 1 = e x p ( A d g x ^ )
其中A d g : g ↦ g Ad_g: \mathfrak{g} \mapsto \mathfrak{g} A d g : g ↦ g 表示通過羣元素g g g 參數化的映射,也稱作伴隨表示。 直觀的解釋是定義在原點(origin),但應用在羣元素g g g 上的變化e x p ( x ^ ) \mathrm{exp}(\hat {x}) e x p ( x ^ ) 可以寫作x ^ \hat{x} x ^ 的伴隨A d g x ^ Ad_g \, \hat{x} A d g x ^ 。
在矩陣李羣的特殊情況下,伴隨可以寫成
A d T x ^ ≜ T x ^ T − 1
Ad_T \, \hat{x} \triangleq T \hat{x}T^{-1}
A d T x ^ ≜ T x ^ T − 1
因此我們有
T e x ^ T − 1 = e T x ^ T − 1 (2)
T e^{\hat{x}} T^{-1} = e^{T\hat{x}T^{-1}} \tag{2}
T e x ^ T − 1 = e T x ^ T − 1 ( 2 )
其中T ∈ G T \in G T ∈ G , x ^ ∈ g \hat {x} \in \mathfrak{g} x ^ ∈ g 是n維李代數的n × n n \times n n × n 矩陣。
3. 2D Rotation
我們首先看一個簡單的2D旋轉羣。
3.1 Basics
李羣S O ( 2 ) SO(2) S O ( 2 ) 是2 × 2 2 \times 2 2 × 2 可逆矩陣的一般線性羣G L ( 2 ) GL(2) G L ( 2 ) 的子羣,它的李代數是2 × 2 2 \times 2 2 × 2 斜對稱(skew-symmetric)矩陣的向量空間。因爲S O ( 2 ) SO(2) S O ( 2 ) 是一維流形,所以s o ( 2 ) \mathfrak{so(2)} s o ( 2 ) 與R \reals R 同構,我們定義
^ : R ↦ s o ( 2 ) ^ : ω ↦ ω ^ = [ ω ] +
\hat{}: \reals \mapsto \mathfrak{so(2)} \\
\hat{} : \omega \mapsto \hat{\omega}= [\omega]_+
^ : R ↦ s o ( 2 ) ^ : ω ↦ ω ^ = [ ω ] +
映射角度ω \omega ω 到2 × 2 2 \times 2 2 × 2 斜對稱矩陣[ ω ] + [\omega]_+ [ ω ] + :
[ w ] + = [ 0 − ω ω 0 ]
[w]_+ =
\begin{bmatrix}
0 & - \omega \\
\omega & 0
\end{bmatrix}
[ w ] + = [ 0 ω − ω 0 ]
指數映射的閉合形式爲:
e [ ω ] + = [ cos ω − sin ω sin ω cos ω ]
e^{[\omega]_+} =
\begin{bmatrix}
\cos \omega & - \sin \omega \\
\sin \omega & \cos \omega
\end{bmatrix}
e [ ω ] + = [ cos ω sin ω − sin ω cos ω ]
3.2 Diagonalized Form
矩陣[ 1 ] + [1]_+ [ 1 ] + 可以通過奇異值− i , i -i, i − i , i 和奇異向量[ 1 i ] {1 \brack i} [ i 1 ] 和[ i 1 ] {i \brack 1} [ 1 i ] 對角化。對投影幾何熟悉的讀者認爲是(齊次座標表示的)圓環點,具體有:
[ w ] + = [ 0 − ω ω 0 ] = [ 1 i i 1 ] [ − i ω 0 0 i ω ] [ 1 i i 1 ] − 1
[w]_+ =
\begin{bmatrix}
0 & - \omega \\
\omega & 0
\end{bmatrix}=
\begin{bmatrix}
1 & i \\
i & 1
\end{bmatrix}
\begin{bmatrix}
-i \omega & 0 \\
0 & i \omega
\end{bmatrix}
\begin{bmatrix}
1 & i \\
i & 1
\end{bmatrix}^{-1}
[ w ] + = [ 0 ω − ω 0 ] = [ 1 i i 1 ] [ − i ω 0 0 i ω ] [ 1 i i 1 ] − 1
因此有
e [ w ] + = 1 2 [ 1 i i 1 ] [ e − i ω 0 0 e i ω ] [ 1 − i − i 1 ] = [ cos ω − sin ω sin ω cos ω ]
e^{[w]_+} = \frac{1}{2}
\begin{bmatrix}
1 & i \\
i & 1
\end{bmatrix}
\begin{bmatrix}
e^{-i \omega} & 0 \\
0 & e^{i \omega}
\end{bmatrix}
\begin{bmatrix}
1 & -i \\
-i & 1
\end{bmatrix} =
\begin{bmatrix}
\cos \omega & - \sin \omega \\
\sin \omega & \cos \omega
\end{bmatrix}
e [ w ] + = 2 1 [ 1 i i 1 ] [ e − i ω 0 0 e i ω ] [ 1 − i − i 1 ] = [ cos ω sin ω − sin ω cos ω ]
其中e i ω = cos ω + i sin ω e^{i \omega} = \cos \omega + i \sin \omega e i ω = cos ω + i sin ω 。
3.3 Adjoint
s o ( 2 ) \mathfrak{so(2)} s o ( 2 ) 的伴隨是恆等式,對於所有的交換羣也一樣:
A d R ω ^ = [ cos θ − sin θ sin θ cos θ ] [ 0 − ω ω 0 ] [ cos θ − sin θ sin θ cos θ ] T = w [ − sin θ − cos θ cos θ − sin θ ] [ cos θ sin θ − sin θ cos θ ] = [ 0 − ω ω 0 ]
Ad_R \hat \omega =
\begin{bmatrix}
\cos \theta & - \sin \theta \\
\sin \theta & \cos \theta
\end{bmatrix}
\begin{bmatrix}
0 & -\omega \\
\omega & 0
\end{bmatrix}
\begin{bmatrix}
\cos \theta & - \sin \theta \\
\sin \theta & \cos \theta
\end{bmatrix}^T \\
= w
\begin{bmatrix}
-\sin \theta & - \cos \theta \\
\cos \theta & -\sin \theta
\end{bmatrix}
\begin{bmatrix}
\cos \theta & \sin \theta \\
-\sin \theta & \cos \theta
\end{bmatrix}=
\begin{bmatrix}
0 & - \omega \\
\omega & 0
\end{bmatrix}
A d R ω ^ = [ cos θ sin θ − sin θ cos θ ] [ 0 ω − ω 0 ] [ cos θ sin θ − sin θ cos θ ] T = w [ − sin θ cos θ − cos θ − sin θ ] [ cos θ − sin θ sin θ cos θ ] = [ 0 ω − ω 0 ]
即
A d R ω ^ = ω ^
Ad_R \hat \omega = \hat \omega
A d R ω ^ = ω ^
3.4 Actions
對於S O ( 2 ) SO(2) S O ( 2 ) 的向量空間是R 2 \reals^2 R 2 ,羣操作對應於一個旋轉點
q = R p
q = R p
q = R p
現在我們想知道通過ω \omega ω 參數化一個增量發生了什麼:
q ( ω ) = R e [ ω ] + p
q(\omega) = R e^{[\omega]_+} p
q ( ω ) = R e [ ω ] + p
對於一個小角度ω \omega ω ,我們有
e [ ω ] + ≈ I + [ ω ] + = I + ω [ 1 ] +
e^{[\omega]_+} \approx I + [\omega]_+ = I + \omega[1]_+
e [ ω ] + ≈ I + [ ω ] + = I + ω [ 1 ] +
其中[ 1 ] + [1]_+ [ 1 ] + 操作像是平面上作用在點的叉積:
[ 1 ] + [ x y ] = R π / 2 [ x y ] = [ − y x ] (3)
[1]_+ \begin{bmatrix}
x \\
y
\end{bmatrix}
=R_{\pi/2} \begin{bmatrix}
x \\
y
\end{bmatrix}
=\begin{bmatrix}
-y \\
x
\end{bmatrix} \tag{3}
[ 1 ] + [ x y ] = R π / 2 [ x y ] = [ − y x ] ( 3 )
因此該操作的導數爲:
∂ q ( ω ) ∂ ω = R ∂ ω ( e [ ω ] + p ) = R ∂ ω ( ω [ 1 ] + p ) = R H p
\frac{\partial q(\omega)}{\partial \omega} = R \frac{\partial}{\omega}(e^{[\omega]_+}p) = R \frac{\partial}{\omega}(\omega [1]_+p) = R H_p
∂ ω ∂ q ( ω ) = R ω ∂ ( e [ ω ] + p ) = R ω ∂ ( ω [ 1 ] + p ) = R H p
其中H p H_p H p 是依賴p p p 的2 × 1 2 \times 1 2 × 1 矩陣:
H p ≜ [ 1 ] + p = [ − p y p x ]
H_p \triangleq [1]_+p ={-p_y \brack p_x}
H p ≜ [ 1 ] + p = [ p x − p y ]
4. 2D Rigid Transformations
4.1 Basics
李羣S E ( 2 ) SE(2) S E ( 2 ) 是3 × 3 3 \times 3 3 × 3 可逆矩陣的一般線性羣G L ( 3 ) GL(3) G L ( 3 ) 的子羣,它的形式爲:
T ≜ [ R t 0 1 ]
T \triangleq
\begin{bmatrix}
R & t \\
0 & 1
\end{bmatrix}
T ≜ [ R 0 t 1 ]
其中R ∈ S O ( 2 ) R \in SO(2) R ∈ S O ( 2 ) 是一個旋轉矩陣, t ∈ R 2 t \in \reals^2 t ∈ R 2 是一個平移向量。S E ( 2 ) SE(2) S E ( 2 ) 是R 2 \reals^2 R 2 與S O ( 2 ) SO(2) S O ( 2 ) 的半直積(semi-direct product),寫作S E ( 2 ) = R 2 ⋊ S O ( 2 ) SE(2) = \reals^2 \rtimes SO(2) S E ( 2 ) = R 2 ⋊ S O ( 2 ) ,具體的,對於S E ( 2 ) SE(2) S E ( 2 ) 中的任何元素T T T 可以寫爲:
T = [ 1 t 0 1 ] [ R 0 0 1 ]
T=
\begin{bmatrix}
1 & t \\
0 & 1
\end{bmatrix}
\begin{bmatrix}
R & 0 \\
0 & 1
\end{bmatrix}
T = [ 1 0 t 1 ] [ R 0 0 1 ]
它們的組合爲
[ R 1 t 1 0 1 ] [ R 2 t 2 0 1 ] = [ R 1 R 2 R 1 t 2 + t 1 0 1 ]
\begin{bmatrix}
R_1 & t_1 \\
0 & 1
\end{bmatrix}
\begin{bmatrix}
R_2 & t_2 \\
0 & 1
\end{bmatrix}=
\begin{bmatrix}
R_1 R_2 & R_1t_2 + t_1 \\
0 & 1
\end{bmatrix}
[ R 1 0 t 1 1 ] [ R 2 0 t 2 1 ] = [ R 1 R 2 0 R 1 t 2 + t 1 1 ]
也可以寫成下面按序匹配的方式:
( R 1 , t 1 ) ( R 2 , t 2 ) = ( R 1 R 2 , R 1 t 2 + t 1 )
(R_1, t_1)(R_2, t_2) = (R_1R_2, R_1t_2 + t1)
( R 1 , t 1 ) ( R 2 , t 2 ) = ( R 1 R 2 , R 1 t 2 + t 1 )
對應的李代數s e ( 2 ) \mathfrak{se(2)} s e ( 2 ) 是由twist 座標 ξ ∈ R 3 \xi \in \reals^3 ξ ∈ R 3 參數化的3 × 3 3 \times 3 3 × 3 twists ξ ^ \hat \xi ξ ^ 向量空間, 該映射爲:
ξ ≜ [ v ω ] ↦ ξ ^ ≜ [ [ w ] + v 0 0 ]
\xi \triangleq {v \brack \omega} \mapsto \hat \xi \triangleq
\begin{bmatrix}
[w]_+ & v \\
0 & 0
\end{bmatrix}
ξ ≜ [ ω v ] ↦ ξ ^ ≜ [ [ w ] + 0 v 0 ]
注意,我們認爲機器人有位姿( x , y , θ ) (x, y, \theta) ( x , y , θ ) ,其中一二兩項是平移部分,最後一項是旋轉部分,它們對應的李羣生成器是
G x = [ 0 0 1 0 0 0 0 0 0 ] , G y = [ 0 0 0 0 0 1 0 0 0 ] , G θ = [ 0 − 1 0 1 0 0 0 0 0 ]
G^x =
\begin{bmatrix}
0 & 0 & 1 \\
0 & 0 & 0 \\
0 & 0 & 0
\end{bmatrix},
G^y =
\begin{bmatrix}
0 & 0 & 0 \\
0 & 0 & 1 \\
0 & 0 & 0
\end{bmatrix},
G^{\theta} =
\begin{bmatrix}
0 & -1 & 0 \\
1 & 0 & 0 \\
0 & 0 & 0
\end{bmatrix}
G x = ⎣ ⎡ 0 0 0 0 0 0 1 0 0 ⎦ ⎤ , G y = ⎣ ⎡ 0 0 0 0 0 0 0 1 0 ⎦ ⎤ , G θ = ⎣ ⎡ 0 1 0 − 1 0 0 0 0 0 ⎦ ⎤
應用指數映射到twist ξ \xi ξ 得到screw motion:
T = e ξ ^ = ( e [ ω ] + , ( I − e [ ω ] + ) v ⊥ ω )
T = e^{\hat \xi} = \Big( e^{[\omega]_+}, (I - e^{[\omega]_+})\frac{v^{\perp}}{\omega}\Big)
T = e ξ ^ = ( e [ ω ] + , ( I − e [ ω ] + ) ω v ⊥ )
4.2 The Adjoint Map
伴隨
A d T ξ ^ = T ξ ^ T − 1 = [ R t 0 1 ] [ [ ω ] + v 0 0 ] [ R T − R T t 0 1 ] = [ [ ω ] + − [ ω ] + t + R v 0 0 ] = [ [ ω ] + R v − t ⊥ ω 0 0 ] (4)
\begin{aligned}
Ad_T \hat \xi &= T \hat \xi T^{-1} \\
&=\begin{bmatrix}
R & t \\
0 & 1
\end{bmatrix}
\begin{bmatrix}
[\omega]_+ & v \\
0 & 0
\end{bmatrix}
\begin{bmatrix}
R^T & -R^Tt \\
0 & 1
\end{bmatrix} \\
&=\begin{bmatrix}
[\omega]_+ & -[\omega]_+t + Rv \\
0 & 0
\end{bmatrix} \\
&=\begin{bmatrix}
[\omega]_+ & Rv - t^{\perp} \omega \\
0 & 0
\end{bmatrix} \tag{4}
\end{aligned}
A d T ξ ^ = T ξ ^ T − 1 = [ R 0 t 1 ] [ [ ω ] + 0 v 0 ] [ R T 0 − R T t 1 ] = [ [ ω ] + 0 − [ ω ] + t + R v 0 ] = [ [ ω ] + 0 R v − t ⊥ ω 0 ] ( 4 )
由此我們可以通過平面twist座標表示伴隨映射
[ v ′ ω ′ ] = [ R − t ⊥ 0 1 ] [ v ω ]
{v^{'} \brack \omega^{'}} =
\begin{bmatrix}
R & - t^{\perp} \\
0 & 1
\end{bmatrix}
{v \brack \omega}
[ ω ′ v ′ ] = [ R 0 − t ⊥ 1 ] [ ω v ]
4.3 actions
S E ( 2 ) SE(2) S E ( 2 ) 在2D點上的作用是通過使用齊次座標將點嵌入R 3 \reals^3 R 3 中來完成
q ^ = [ q 1 ] = [ R t 0 1 ] [ p 1 ] = T p ^
\hat q = {q \brack 1} =
\begin{bmatrix}
R & t \\
0 & 1
\end{bmatrix}{p \brack 1}=T \hat p
q ^ = [ 1 q ] = [ R 0 t 1 ] [ 1 p ] = T p ^
S E ( 3 ) SE(3) S E ( 3 ) 類似(下面),我們可以在局部T座標系中計算速度ξ ^ p ^ \hat \xi \hat p ξ ^ p ^ :
ξ ^ p ^ = [ [ ω ] + v 0 0 ] [ p 1 ] = [ [ ω ] + p + v 0 ]
\hat \xi \hat p =
\begin{bmatrix}
[\omega]_+ & v \\
0 & 0
\end{bmatrix} {p \brack 1}=
\begin{bmatrix}
[\omega]_+p +v \\
0
\end{bmatrix}
ξ ^ p ^ = [ [ ω ] + 0 v 0 ] [ 1 p ] = [ [ ω ] + p + v 0 ]
僅取最上面的兩行,我們可以把它作爲R 2 \reals^2 R 2 上的速度,因爲H p H_p H p 是直接作用在指數座標ξ \xi ξ 上的2 × 3 2 \times 3 2 × 3 矩陣:
[ ω ] + p + v = v + R π / 2 p ω = [ I 2 R π / 2 p ] [ v ω ] = H p ξ
[\omega]_+p + v = v + R_{\pi/2}p \omega =
\begin{bmatrix}
I_2 & R_{\pi/2}p
\end{bmatrix}
\begin{bmatrix}
v \\
\omega
\end{bmatrix}
=H_p \xi
[ ω ] + p + v = v + R π / 2 p ω = [ I 2 R π / 2 p ] [ v ω ] = H p ξ
5. 3D Rotations
5.1 Basics
李羣S O ( 3 ) SO(3) S O ( 3 ) 是3 × 3 3 \times 3 3 × 3 可逆矩陣的一般線性羣G L ( 3 ) GL(3) G L ( 3 ) 的子羣,它的李代數s e ( 3 ) \mathfrak{se(3)} s e ( 3 ) 是3 × 3 3 \times 3 3 × 3 斜對稱(skew-symmetric)矩陣ω ^ \hat \omega ω ^ 的線性空間。因爲S O ( 3 ) SO(3) S O ( 3 ) 是一個三維流形,s o ( 3 ) \mathfrak{so(3)} s o ( 3 ) 與R 3 \reals^3 R 3 同構,我們定義映射
^ : R 3 → s o ( 3 ) ^ : ω → ω ^ = [ ω ] ×
\hat{}:\reals^3 \to \mathfrak{so(3)} \\
\hat{}: \omega \to \hat \omega = [\omega]_\times
^ : R 3 → s o ( 3 ) ^ : ω → ω ^ = [ ω ] ×
它映射三維向量ω \omega ω 到斜對稱矩陣[ ω ] × [\omega]_\times [ ω ] × :
[ ω ] × = [ 0 − ω z ω y ω z 0 − ω x − ω y ω x 0 ] = ω x G x + ω y G y + ω z G z
[\omega]_\times = \begin{bmatrix}
0 & - \omega_z & \omega_y \\
\omega_z & 0 & -\omega_x \\
-\omega_y & \omega_x & 0
\end{bmatrix}=\omega_x G^x+\omega_yG^y + \omega_zG^z
[ ω ] × = ⎣ ⎡ 0 ω z − ω y − ω z 0 ω x ω y − ω x 0 ⎦ ⎤ = ω x G x + ω y G y + ω z G z
這裏矩陣G i G^i G i 是S O ( 3 ) SO(3) S O ( 3 ) 的生成器,
G x = ( 0 0 0 0 0 − 1 0 1 0 ) , G y = ( 0 0 1 0 0 0 − 1 0 0 ) , G z = ( 0 − 1 0 1 0 0 0 0 0 )
G^{x} =\begin{pmatrix}
0 & 0 & 0 \\
0 & 0 & -1 \\
0 & 1 & 0
\end{pmatrix},
G^y = \begin{pmatrix}
0 & 0 & 1 \\
0 & 0 & 0 \\
-1 & 0 & 0
\end{pmatrix},
G^z=\begin{pmatrix}
0 & -1 & 0 \\
1 & 0 & 0 \\
0 & 0 & 0
\end{pmatrix}
G x = ⎝ ⎛ 0 0 0 0 0 1 0 − 1 0 ⎠ ⎞ , G y = ⎝ ⎛ 0 0 − 1 0 0 0 1 0 0 ⎠ ⎞ , G z = ⎝ ⎛ 0 1 0 − 1 0 0 0 0 0 ⎠ ⎞
分別對應到繞着X, Y, Z的旋轉,s o ( 3 ) \mathfrak{so(3)} s o ( 3 ) 中的李括號[ x , y ] [x, y] [ x , y ] 對應到R 3 \reals^3 R 3 中的叉積x × y x \times y x × y 。
因此,對於三維向量ω \omega ω 有一個對應的旋轉
R = e [ ω ] ×
R = e^{[\omega]_\times}
R = e [ ω ] ×
它定義了已知ω \omega ω 作爲canonical 或者指數座標,S O ( 3 ) SO(3) S O ( 3 ) 的canonical 參數化。它等價於旋轉的軸角表示,其中單位向量ω / θ \omega/\theta ω / θ 定義旋轉軸,旋轉角θ \theta θ 定義旋轉量的大小。
指數映射的閉合形式可以通過Rodrigues 公式計算
e ω ^ = I + sin θ θ ω ^ + 1 − cos θ θ 2 ω ^ 2 (5)
e^{\hat \omega} = I + \frac{\sin \theta}{\theta} \hat \omega + \frac{1-\cos \theta}{\theta^2} \hat \omega^2 \tag{5}
e ω ^ = I + θ sin θ ω ^ + θ 2 1 − cos θ ω ^ 2 ( 5 )
其中ω ^ 2 = ω ω T − I \hat \omega^2 = \omega \omega^T - I ω ^ 2 = ω ω T − I ,ω ω t \omega \omega^t ω ω t 是ω \omega ω 的外積,因此,一個效率上更好的變體是
e ω ^ = ( cos θ ) I + sin θ θ ω ^ + 1 − cos θ θ 2 ω ω T (6)
e^{\hat \omega} = (\cos \theta)I + \frac{\sin \theta}{\theta} \hat \omega + \frac{1-\cos \theta}{\theta^2} \omega \omega^T \tag{6}
e ω ^ = ( cos θ ) I + θ sin θ ω ^ + θ 2 1 − cos θ ω ω T ( 6 )
5.2 Diagonalized Form
因爲3D旋轉R R R 保持軸ω \omega ω 不變,因此R R R 可以被對角化爲
R = C ( e − i θ 0 0 0 e i θ 0 0 0 1 ) C − 1
R = C \begin{pmatrix}
e^{-i\theta} & 0 & 0 \\
0 & e^{i\theta} & 0 \\
0 & 0 & 1
\end{pmatrix}C^{-1}
R = C ⎝ ⎛ e − i θ 0 0 0 e i θ 0 0 0 1 ⎠ ⎞ C − 1
其中C = ( c 1 c 2 ω / θ ) C=(c_1 \enspace c_2 \enspace \omega/\theta) C = ( c 1 c 2 ω / θ ) ,c 1 , c 2 c_1 , c_2 c 1 , c 2 是complex 特徵向量,對應繞着ω \omega ω 的2D旋轉。這也意味着,通過(2)有
ω ^ = C ( − i θ 0 0 0 i θ 0 0 0 0 ) C − 1
\hat \omega = C \begin{pmatrix}
-i \theta & 0 & 0 \\
0 & i \theta & 0 \\
0 & 0 & 0
\end{pmatrix} C^{-1}
ω ^ = C ⎝ ⎛ − i θ 0 0 0 i θ 0 0 0 0 ⎠ ⎞ C − 1
在該情況下,C C C 有 complex 列, 而且我們還有
ω ^ = B ( 0 − θ 0 θ 0 0 0 0 0 ) B T (7)
\hat \omega = B \begin{pmatrix}
0 & - \theta & 0 \\
\theta & 0 & 0 \\
0 & 0 & 0
\end{pmatrix} B^T \tag{7}
ω ^ = B ⎝ ⎛ 0 θ 0 − θ 0 0 0 0 0 ⎠ ⎞ B T ( 7 )
其中B = ( b 1 b 2 ω / θ ) B=(b_1 \enspace b_2 \enspace \omega/\theta) B = ( b 1 b 2 ω / θ ) , b 1 , b 2 b_1, b_2 b 1 , b 2 是通過源點且與ω \omega ω 正交的一組二維平面的基。很明顯從3.2節,我們有
c 1 = B ( 1 i 0 ) , c 2 = B ( i 1 0 )
c_1 = B \begin{pmatrix}
1 \\
i \\
0
\end{pmatrix},c_2=B
\begin{pmatrix}
i \\
1 \\
0
\end{pmatrix}
c 1 = B ⎝ ⎛ 1 i 0 ⎠ ⎞ , c 2 = B ⎝ ⎛ i 1 0 ⎠ ⎞
當我們求冪(7)時,我們得到繞着ω / θ \omega / \theta ω / θ 軸,大小爲θ \theta θ 的2D旋轉:
R = B ( cos θ − sin θ 0 sin θ c o s θ 0 0 0 1 ) B T
R = B
\begin{pmatrix}
\cos \theta & -\sin \theta & 0 \\
\sin \theta & cos \theta & 0 \\
0 & 0 & 1
\end{pmatrix} B^T
R = B ⎝ ⎛ cos θ sin θ 0 − sin θ c o s θ 0 0 0 1 ⎠ ⎞ B T
接下來的R R R 使用前面的Rodrigues公式並擴展以上,我們有
R = ( cos θ ) ( b 1 b 1 T + b 2 b 2 T ) + ( sin θ ) ( b 2 b 1 T − b 1 b 2 T ) + ω ω T / θ 2
R = (\cos \theta) (b_1b_1^T + b_2b_2^T) + (\sin \theta)(b_2b_1^T -b_1b_2^T ) + \omega \omega^T / \theta^2
R = ( cos θ ) ( b 1 b 1 T + b 2 b 2 T ) + ( sin θ ) ( b 2 b 1 T − b 1 b 2 T ) + ω ω T / θ 2
因爲B B B 是旋轉矩陣,我們有B B T = b 1 b 1 T + b 2 b 2 T + ω ω T / θ 2 = I BB^T = b_1b_1^T + b_2b_2^T + \omega \omega^T/\theta^2 = I B B T = b 1 b 1 T + b 2 b 2 T + ω ω T / θ 2 = I ,使用(7)很容易得到b 2 b 1 T − b 1 b 2 T = ω ^ / θ b_2b_1^T-b_1b_2^T = \hat \omega / \theta b 2 b 1 T − b 1 b 2 T = ω ^ / θ ,因此
R = ( cos θ ) ( I − ω ω T / θ 2 ) + ( sin θ ) ( ω ^ / θ ) + ω ω T / θ 2
R = (\cos \theta)(I - \omega \omega^T/ \theta^2) + (\sin \theta)(\hat \omega/\theta) + \omega\omega^T/\theta^2
R = ( cos θ ) ( I − ω ω T / θ 2 ) + ( sin θ ) ( ω ^ / θ ) + ω ω T / θ 2
它與(6)等價。
5.3 The Adjoint Map
對於旋轉矩陣R R R ,我們可以證明(見附錄 性質9)下面的恆等式:
R [ ω ] × R T = [ R ω ] × (8)
R[\omega]_\times R^T = [R \omega]_\times \tag{8}
R [ ω ] × R T = [ R ω ] × ( 8 )
因此,給定性質(8)s o ( 3 ) \mathfrak{so(3)} s o ( 3 ) 的伴隨映射可簡化爲:
A d R [ ω ] × = R [ ω ] × R T = [ R ω ] ×
Ad_R [\omega]_\times = R[\omega]_\times R^T = [R \omega]_\times
A d R [ ω ] × = R [ ω ] × R T = [ R ω ] ×
而且將軸ω \omega ω 旋轉到R ω R \omega R ω ,就可以用指數座標表示。
舉個例子,在R R R 系中的一個點p p p 應用軸角旋轉ω \omega ω ,我們可以:
首先將p p p 變換到世界座標系(可參見2.5節),應用ω \omega ω (即在世界座標系中應用),然後旋轉回來:
q = R e [ ω ] × R T
q = R e^{[\omega]_\times}R^T
q = R e [ ω ] × R T
即應用變換後的軸角變換A d R [ ω ] × = [ R ω ] × Ad_R[\omega]_\times = [R \omega]_\times A d R [ ω ] × = [ R ω ] × :
q = e [ R ω ] × p
q = e^{[R \omega]_\times}p
q = e [ R ω ] × p
5.4 Actions
對於S O ( 3 ) SO(3) S O ( 3 ) ,向量空間是R 3 \reals^3 R 3 ,羣操作應用到一個旋轉點
q = R p
q = R p
q = R p
我們現在想知道通過參數化增量ω \omega ω 會發生什麼:
q ( ω ) = R e [ ω ] × p
q(\omega) = Re^{[\omega]_\times}p
q ( ω ) = R e [ ω ] × p
因此導數爲:
∂ q ( ω ) ∂ ω = R ∂ ∂ ω ( e [ ω ] × p ) = R ∂ ∂ ω ( [ ω ] × p ) = R [ − p ] ×
\frac{\partial q(\omega)}{\partial \omega} = R \frac{\partial}{\partial \omega}(e^{[\omega]_\times}p) = R \frac{\partial}{\partial \omega}([\omega]_\times p) = R[-p]_\times
∂ ω ∂ q ( ω ) = R ∂ ω ∂ ( e [ ω ] × p ) = R ∂ ω ∂ ( [ ω ] × p ) = R [ − p ] ×
爲得到最後一個等式,有:
[ ω ] × p = ω × p = − p × ω = [ − p ] × ω
[\omega]_\times p = \omega \times p = -p \times \omega= [-p]_\times \omega
[ ω ] × p = ω × p = − p × ω = [ − p ] × ω
6 3D Rigid Transformations
李羣S E ( 3 ) SE(3) S E ( 3 ) 是4 × 4 4 \times 4 4 × 4 可逆矩陣的一般線性羣的子羣,其形式爲:
T ≜ [ R t 0 1 ]
T \triangleq \begin{bmatrix}
R & t \\
0 & 1
\end{bmatrix}
T ≜ [ R 0 t 1 ]
其中R ∈ S O ( 3 ) R \in SO(3) R ∈ S O ( 3 ) 是旋轉矩陣, t ∈ R 3 t \in \reals^3 t ∈ R 3 是平移向量。
也可以寫成下面按序匹配的方式:
( R 1 , t 1 ) ( R 2 , t 2 ) = ( R 1 R 2 , R 1 t 2 + t 1 )
(R_1, t_1)(R_2, t_2) = (R_1R_2, R_1t_2 + t_1)
( R 1 , t 1 ) ( R 2 , t 2 ) = ( R 1 R 2 , R 1 t 2 + t 1 )
它的李代數s e ( 3 ) \mathfrak{se(3)} s e ( 3 ) 是 參數化4 × 4 4 \times 4 4 × 4 twist ξ ^ \hat \xi ξ ^ 向量空間,ξ ^ \hat \xi ξ ^ 的twist 座標是ξ ∈ R 6 \xi \in \reals^6 ξ ∈ R 6 , 有映射
ξ ≜ [ ω v ] → ξ ^ ≜ [ [ ω ] × v 0 0 ]
\xi \triangleq {\omega \brack v} \to \hat \xi \triangleq
\begin{bmatrix}
[\omega]_\times & v \\
0 & 0
\end{bmatrix}
ξ ≜ [ v ω ] → ξ ^ ≜ [ [ ω ] × 0 v 0 ]
注意我們遵循 Frank Park 慣例,前三項表示旋轉,後三項表平移。因此,對於該參數化,S E ( 3 ) SE(3) S E ( 3 ) 的生成器是
G 1 = [ 0 0 0 0 0 0 − 1 0 0 1 0 0 0 0 0 0 ] , G 2 = [ 0 0 1 0 0 0 0 0 − 1 0 0 0 0 0 0 0 ] G 3 = [ 0 − 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 ] G 4 = [ 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 ] , G 5 = [ 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 ] , G 6 = [ 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 ]
G^1 =
\begin{bmatrix}
0 & 0 & 0 & 0 \\
0 & 0 & -1 & 0 \\
0 & 1 & 0 & 0 \\
0 & 0 & 0 & 0
\end{bmatrix},
G^2 =
\begin{bmatrix}
0 & 0 & 1 & 0 \\
0 & 0 & 0 & 0 \\
-1 & 0 & 0 & 0 \\
0 & 0 & 0 & 0
\end{bmatrix}
G^3=
\begin{bmatrix}
0 & -1 & 0 & 0 \\
1 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0
\end{bmatrix} \\
G^4=
\begin{bmatrix}
0 & 0 & 0 & 1 \\
0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0
\end{bmatrix},
G^5 =
\begin{bmatrix}
0 & 0 & 0 & 0 \\
0 & 0 & 0& 1\\
0 & 0 & 0 & 0\\
0 & 0 & 0 & 0
\end{bmatrix},
G^6=
\begin{bmatrix}
0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 \\
0 & 0 & 0 & 1 \\
0 & 0 & 0 & 0
\end{bmatrix}
G 1 = ⎣ ⎢ ⎢ ⎡ 0 0 0 0 0 0 1 0 0 − 1 0 0 0 0 0 0 ⎦ ⎥ ⎥ ⎤ , G 2 = ⎣ ⎢ ⎢ ⎡ 0 0 − 1 0 0 0 0 0 1 0 0 0 0 0 0 0 ⎦ ⎥ ⎥ ⎤ G 3 = ⎣ ⎢ ⎢ ⎡ 0 1 0 0 − 1 0 0 0 0 0 0 0 0 0 0 0 ⎦ ⎥ ⎥ ⎤ G 4 = ⎣ ⎢ ⎢ ⎡ 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 ⎦ ⎥ ⎥ ⎤ , G 5 = ⎣ ⎢ ⎢ ⎡ 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 ⎦ ⎥ ⎥ ⎤ , G 6 = ⎣ ⎢ ⎢ ⎡ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 ⎦ ⎥ ⎥ ⎤
應用指數映射到 twist ξ \xi ξ 得到一個在S E ( 3 ) 中 的 SE(3)中的 S E ( 3 ) 中 的 screw motion:
T = e x p ξ ^
T = \mathrm{exp} \, \hat \xi
T = e x p ξ ^
指數映射的閉合解爲:
e x p ( [ ω v ] ^ t ) = [ e [ ω ] × t ( I − e [ ω ] × t ) ( ω × v ) + ω ω T v t 0 1 ]
\mathrm{exp} \Big(\widehat {\omega \brack v} t\Big) =
\begin{bmatrix}
e^{[\omega]_\times t} & (I - e^{[\omega]_\times t})(\omega \times v) + \omega \omega^T vt \\
0 & 1
\end{bmatrix}
e x p ( [ v ω ] t ) = [ e [ ω ] × t 0 ( I − e [ ω ] × t ) ( ω × v ) + ω ω T v t 1 ]
6.1 The Adjoint Map
伴隨
A d T ξ ^ = T ξ T − 1 = [ R t 0 1 ] [ [ ω ] × v 0 0 ] [ R T − R T t 0 1 ] = [ [ R ω ] × − [ R ω ] × t + R v 0 0 ] = [ [ R ω ] × t × R ω + R v 0 0 ]
\begin{aligned}
Ad_T \hat \xi &= T \xi T^{-1} \\
&=\begin{bmatrix}
R & t \\
0 & 1
\end{bmatrix}
\begin{bmatrix}
[\omega]_\times & v \\
0 & 0
\end{bmatrix}
\begin{bmatrix}
R^T & - R^Tt \\
0 & 1
\end{bmatrix} \\
&=\begin{bmatrix}
[R\omega]_\times & -[R \omega]_\times t + Rv \\
0 & 0
\end{bmatrix} \\
&= \begin{bmatrix}
[R\omega]_\times & t \times R \omega + Rv \\
0 & 0
\end{bmatrix}
\end{aligned}
A d T ξ ^ = T ξ T − 1 = [ R 0 t 1 ] [ [ ω ] × 0 v 0 ] [ R T 0 − R T t 1 ] = [ [ R ω ] × 0 − [ R ω ] × t + R v 0 ] = [ [ R ω ] × 0 t × R ω + R v 0 ]
從上面我們可以用twist 座標表示伴隨映射:
[ ω ′ v ′ ] = [ R 0 [ t ] × R R ] [ ω v ]
{\omega^{\prime} \brack v^{\prime}}=
\begin{bmatrix}
R & 0 \\
[t]_\times R & R
\end{bmatrix}{\omega \brack v}
[ v ′ ω ′ ] = [ R [ t ] × R 0 R ] [ v ω ]
6.2 Actions
S E ( 3 ) SE(3) S E ( 3 ) 在3D點上的作用是通過使用齊次座標將點嵌入R 4 \reals^4 R 4 中來完成
q ^ = [ q 1 ] = [ R p + t 1 ] = [ R t 0 1 ] [ p 1 ] = T p ^
\hat q = {q \brack 1} = { Rp + t \brack 1} =
\begin{bmatrix}
R & t \\
0 & 1
\end{bmatrix}{p \brack 1} = T \hat p
q ^ = [ 1 q ] = [ 1 R p + t ] = [ R 0 t 1 ] [ 1 p ] = T p ^
現在我們想知道通過ξ \xi ξ 參數化增量pose會發生什麼:
q ^ ( ξ ) = T e ξ ^ p ^
\hat q(\xi) = T e^{\hat \xi} \hat p
q ^ ( ξ ) = T e ξ ^ p ^
因此導數是
q ^ ( ξ ) ∂ ξ = T ∂ ∂ ξ ( ξ ^ p ^ )
\frac{\hat q(\xi)}{\partial \xi} = T \frac{\partial }{\partial \xi}(\hat \xi \hat p)
∂ ξ q ^ ( ξ ) = T ∂ ξ ∂ ( ξ ^ p ^ )
其中 ξ ^ p ^ \hat \xi \hat p ξ ^ p ^ 對應R 4 \reals^4 R 4 中的速度(在局部座標系T):
ξ ^ p ^ = [ [ ω ] × v 0 0 ] [ p 1 ] = [ ω × p + v 0 ]
\hat \xi \hat p = \begin{bmatrix}
[\omega]_\times & v \\
0 & 0
\end{bmatrix}{p \brack 1} = {\omega \times p + v\brack 0}
ξ ^ p ^ = [ [ ω ] × 0 v 0 ] [ 1 p ] = [ 0 ω × p + v ]
請注意,速度與投影幾何中無窮大的點如何相似:它們對應於指示變化方向和大小的自由矢量。通過取最上面的三行,我們可以把它寫成R 3 \reals^3 R 3 中的速度,因爲H p H_p H p 是直接作用在指數座標ξ \xi ξ 上的3 × 6 3 \times 6 3 × 6 矩陣:
ω × p + v = − p × ω + v = [ − [ p ] × I 3 ] [ ω v ]
\omega \times p + v = -p \times \omega + v = \Big[ -[p]_\times \enspace I_3\Big] {\omega \brack v}
ω × p + v = − p × ω + v = [ − [ p ] × I 3 ] [ v ω ]
得到導數:
∂ q ^ ( ξ ) ∂ ξ = T ∂ ∂ ξ ( ξ ^ p ^ ) = T [ − [ p ] × I 3 0 0 ]
\frac{\partial \hat q(\xi)}{\partial \xi} = T \frac{\partial}{\partial \xi}(\hat \xi \hat p)=T
\begin{bmatrix}
-[p]_\times & I_3 \\
0 & 0
\end{bmatrix}
∂ ξ ∂ q ^ ( ξ ) = T ∂ ξ ∂ ( ξ ^ p ^ ) = T [ − [ p ] × 0 I 3 0 ]
逆操作T − 1 p T^{-1}p T − 1 p 是
q ^ = [ q 1 ] = [ R T ( p − t ) 1 ] = [ R T − R T t 0 1 ] [ p 1 ] = T − 1 p ^
\hat q = {q \brack 1} = {R^T(p-t) \brack 1} =
\begin{bmatrix}
R^T & -R^Tt \\
0 & 1
\end{bmatrix} {p \brack 1} = T^{-1} \hat p
q ^ = [ 1 q ] = [ 1 R T ( p − t ) ] = [ R T 0 − R T t 1 ] [ 1 p ] = T − 1 p ^
7. 3D Similarity Transformations
3D相似變換羣S i m ( 3 ) Sim(3) S i m ( 3 ) 是如下形式的4 × 4 4 \times 4 4 × 4 可逆矩陣集合
T ≜ [ R t 0 s − 1 ]
T \triangleq \begin{bmatrix}
R & t \\
0 & s^{-1}
\end{bmatrix}
T ≜ [ R 0 t s − 1 ]
其中s s s 是標量,有各種不同的李代數生成器表示,但我們使用
G 1 = ( 0 0 0 0 0 0 − 1 0 0 1 0 0 0 0 0 0 ) , G 2 = ( 0 0 1 0 0 0 0 0 − 1 0 0 0 0 0 0 0 ) , G 3 = ( 0 − 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 ) , G 4 = ( 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 ) , G 5 = ( 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 ) , G 6 = ( 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 ) , G 7 = ( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 − 1 )
G^1 =
\begin{pmatrix}
0 & 0 & 0& 0 \\
0 & 0 & -1 & 0 \\
0 & 1 & 0 & 0 \\
0 & 0 & 0 & 0
\end{pmatrix},
G^2 =
\begin{pmatrix}
0 & 0 & 1& 0 \\
0 & 0 & 0 & 0 \\
-1 & 0 & 0 & 0 \\
0 & 0 & 0 & 0
\end{pmatrix},
G^3 =
\begin{pmatrix}
0 & -1 & 0& 0 \\
1 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0
\end{pmatrix} ,\\
G^4 =
\begin{pmatrix}
0 & 0 & 0& 1 \\
0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0
\end{pmatrix},
G^5 =
\begin{pmatrix}
0 & 0 & 0& 0 \\
0 & 0 & 0 & 1 \\
0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0
\end{pmatrix},
G^6 =
\begin{pmatrix}
0 & 0 & 0& 0 \\
0 & 0 & 0 & 0 \\
0 & 0 & 0 & 1 \\
0 & 0 & 0 & 0
\end{pmatrix}, \\
G^7 =
\begin{pmatrix}
0 & 0 & 0& 0 \\
0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 \\
0 & 0 & 0 & -1
\end{pmatrix}
G 1 = ⎝ ⎜ ⎜ ⎛ 0 0 0 0 0 0 1 0 0 − 1 0 0 0 0 0 0 ⎠ ⎟ ⎟ ⎞ , G 2 = ⎝ ⎜ ⎜ ⎛ 0 0 − 1 0 0 0 0 0 1 0 0 0 0 0 0 0 ⎠ ⎟ ⎟ ⎞ , G 3 = ⎝ ⎜ ⎜ ⎛ 0 1 0 0 − 1 0 0 0 0 0 0 0 0 0 0 0 ⎠ ⎟ ⎟ ⎞ , G 4 = ⎝ ⎜ ⎜ ⎛ 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 ⎠ ⎟ ⎟ ⎞ , G 5 = ⎝ ⎜ ⎜ ⎛ 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 ⎠ ⎟ ⎟ ⎞ , G 6 = ⎝ ⎜ ⎜ ⎛ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 ⎠ ⎟ ⎟ ⎞ , G 7 = ⎝ ⎜ ⎜ ⎛ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 − 1 ⎠ ⎟ ⎟ ⎞
7.1 Actions
S E ( 3 ) SE(3) S E ( 3 ) 在3D點上的作用是通過使用齊次座標將點嵌入R 4 \reals^4 R 4 中來完成
q ^ = [ q s − 1 ] = [ R p + t s − 1 ] = [ R t 0 s − 1 ] [ p 1 ] = T p ^
\hat q = {q \brack s^{-1}} = {Rp+t \brack s^{-1}} =
\begin{bmatrix}
R & t \\
0 & s^{-1}
\end{bmatrix} {p \brack 1} = T \hat p
q ^ = [ s − 1 q ] = [ s − 1 R p + t ] = [ R 0 t s − 1 ] [ 1 p ] = T p ^
相對於T T T 的ξ \xi ξ 的導數D 1 f ( ξ ) D_1f(\xi) D 1 f ( ξ ) 是T H ( p ) TH(p) T H ( p ) , 其中
H ( p ) = G j k i p j = [ 0 z − y 1 0 0 0 − z 0 x 0 1 0 0 y − x 0 0 0 0 0 0 0 0 0 0 0 − 1 ]
H(p) = G^i_{jk}p^j =
\begin{bmatrix}
0 & z & -y & 1 & 0 & 0 & 0 \\
-z & 0 & x & 0 & 1 & 0 & 0 \\
y & -x & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & -1
\end{bmatrix}
H ( p ) = G j k i p j = ⎣ ⎢ ⎢ ⎡ 0 − z y 0 z 0 − x 0 − y x 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 − 1 ⎦ ⎥ ⎥ ⎤
換言之
D 1 f ( ξ ) = [ R t 0 s − 1 ] [ − [ p ] × I 0 0 0 − 1 ] = [ − R [ p ] × R − t 0 0 − s − 1 ]
D_1f(\xi) =
\begin{bmatrix}
R & t \\
0 & s^{-1}
\end{bmatrix}
\begin{bmatrix}
-[p]_\times & I & 0 \\
0 & 0& -1
\end{bmatrix} =
\begin{bmatrix}
-R[p]_\times & R & -t \\
0 & 0& -s^{-1}
\end{bmatrix}
D 1 f ( ξ ) = [ R 0 t s − 1 ] [ − [ p ] × 0 I 0 0 − 1 ] = [ − R [ p ] × 0 R 0 − t − s − 1 ]
這是對齊次座標的作用的導數。轉變成非齊次座標是
[ q a ] → q / a
{q \brack a} \to q/a
[ a q ] → q / a
它的導數爲
[ a − 1 I 3 − q a − 2 ]
\Big[ a^{-1}I_3 \enspace -qa^{-2}\Big]
[ a − 1 I 3 − q a − 2 ]
對於a = s − 1 a = s^{-1} a = s − 1 ,我們有
D 1 f ( ξ ) = [ s I 3 − q s 2 ] [ − R [ p ] × R − t 0 0 − s − 1 ] = [ − s R [ p ] × s R − s t + q s ] = [ − s R [ p ] × s R s R p ]
D_1f(\xi) = \Big[ sI_3 \enspace -qs^2 \Big]
\begin{bmatrix}
-R[p]_\times & R & -t \\
0 & 0& -s^{-1}
\end{bmatrix}=
\Big[ -sR[p]_\times \enspace sR \enspace -st + qs \Big] = \Big[ -sR[p]_\times \enspace sR \enspace sRp\Big]
D 1 f ( ξ ) = [ s I 3 − q s 2 ] [ − R [ p ] × 0 R 0 − t − s − 1 ] = [ − s R [ p ] × s R − s t + q s ] = [ − s R [ p ] × s R s R p ]
8. 2D Affine Transformations
李羣A f f ( 2 ) Aff(2) A f f ( 2 ) 是3 × 3 3 \times 3 3 × 3 可逆矩陣的一般線性羣的子羣,它映射無窮遠線到本身(無窮遠線),即保持並行性。仿射變換A A A 可以寫作:
[ m 11 m 12 t 1 m 21 m 22 t 2 0 0 k ]
\begin{bmatrix}
m_{11} & m_{12} & t_1 \\
m_{21} & m_{22} & t_2 \\
0 & 0 & k
\end{bmatrix}
⎣ ⎡ m 1 1 m 2 1 0 m 1 2 m 2 2 0 t 1 t 2 k ⎦ ⎤
其中M ∈ G L ( 2 ) , t ∈ R 2 M \in GL(2), t \in \reals^2 M ∈ G L ( 2 ) , t ∈ R 2 ,k是使得d e t ( A ) = 1 det(A)=1 d e t ( A ) = 1 的標量。正如S E ( 2 ) SE(2) S E ( 2 ) 是半直積一樣,A f f ( 2 ) = R 2 ⋊ G L ( 2 ) Aff(2) = \reals^2 \rtimes GL(2) A f f ( 2 ) = R 2 ⋊ G L ( 2 ) 也是半直積。特別的,任何仿射變換 A A A 可以寫爲
A = [ 0 t 0 1 ] [ M 0 0 k ]
A = \begin{bmatrix}
0 & t \\
0 & 1
\end{bmatrix} \begin{bmatrix}
M & 0 \\
0 & k
\end{bmatrix}
A = [ 0 0 t 1 ] [ M 0 0 k ]
它們的組合爲
A 1 A 2 = [ M 1 t 1 0 k 1 ] [ M 2 t 2 0 k 2 ] = [ M 1 M 2 M 2 t 2 + k 2 t 1 0 k 1 k 2 ]
A_1A_2 =
\begin{bmatrix}
M_1 & t_1 \\
0 & k_1
\end{bmatrix}
\begin{bmatrix}
M_2 & t_2 \\
0 & k_2
\end{bmatrix}=
\begin{bmatrix}
M_1M_2 & M_2t_2 + k_2 t_1 \\
0 & k_1k_2
\end{bmatrix}
A 1 A 2 = [ M 1 0 t 1 k 1 ] [ M 2 0 t 2 k 2 ] = [ M 1 M 2 0 M 2 t 2 + k 2 t 1 k 1 k 2 ]
由此可以得出,S O ( 2 ) SO(2) S O ( 2 ) 和S E ( 2 ) SE(2) S E ( 2 ) 羣都是子羣,其中S O ( 2 ) ⊂ S E ( 2 ) ⊂ A f f ( 2 ) SO(2) \subset SE(2) \subset Aff(2) S O ( 2 ) ⊂ S E ( 2 ) ⊂ A f f ( 2 ) 。通過仔細選擇生成器,我們在關聯的李代數之間保持了這種層次,特別的,s e ( 2 ) \mathfrak{se(2)} s e ( 2 )
G 1 = [ 0 0 1 0 0 0 0 0 0 ] , G 2 = [ 0 0 0 0 0 1 0 0 0 ] , G 3 = [ 0 − 1 0 1 0 0 0 0 0 ]
G^1 =
\begin{bmatrix}
0 & 0 & 1 \\
0 & 0 & 0 \\
0 & 0 & 0
\end{bmatrix},
G^2 =
\begin{bmatrix}
0 & 0 & 0 \\
0 & 0 & 1 \\
0 & 0 & 0
\end{bmatrix},
G^3 =
\begin{bmatrix}
0 & -1 & 0 \\
1 & 0 & 0 \\
0 & 0 & 0
\end{bmatrix}
G 1 = ⎣ ⎡ 0 0 0 0 0 0 1 0 0 ⎦ ⎤ , G 2 = ⎣ ⎡ 0 0 0 0 0 0 0 1 0 ⎦ ⎤ , G 3 = ⎣ ⎡ 0 1 0 − 1 0 0 0 0 0 ⎦ ⎤
使用下面的三個生成器可以被拓展到李代數a f f ( 2 ) \mathfrak{aff(2)} a f f ( 2 )
G 4 = [ 0 1 0 1 0 0 0 0 0 ] , G 5 = [ 1 0 0 0 − 1 0 0 0 0 ] , G 6 = [ 0 0 0 0 − 1 0 0 0 1 ]
G^4 =
\begin{bmatrix}
0 & 1 & 0 \\
1 & 0 & 0 \\
0 & 0& 0
\end{bmatrix},
G^5=
\begin{bmatrix}
1 & 0 & 0 \\
0 & -1 & 0 \\
0 & 0 & 0
\end{bmatrix},
G^6=
\begin{bmatrix}
0 & 0 & 0 \\
0 & -1 & 0 \\
0 & 0 & 1
\end{bmatrix}
G 4 = ⎣ ⎡ 0 1 0 1 0 0 0 0 0 ⎦ ⎤ , G 5 = ⎣ ⎡ 1 0 0 0 − 1 0 0 0 0 ⎦ ⎤ , G 6 = ⎣ ⎡ 0 0 0 0 − 1 0 0 0 1 ⎦ ⎤
因此,李代數a f f ( 2 ) \mathfrak{aff(2)} a f f ( 2 ) 是通過6個參數a ∈ R 6 a \in \reals^6 a ∈ R 6 參數化的3 × 3 3 \times 3 3 × 3 增量仿射變換的向量空間,該映射
a → a ^ ≜ [ a 5 a 4 − a 3 a 1 a 4 + a 3 − a 5 − a 6 a 2 0 0 a 6 ]
a \to \hat a \triangleq \begin{bmatrix}
a_5 & a_4 - a_3 & a_1 \\
a_4 + a_3 & -a_5-a_6 & a_2 \\
0 & 0 & a_6
\end{bmatrix}
a → a ^ ≜ ⎣ ⎡ a 5 a 4 + a 3 0 a 4 − a 3 − a 5 − a 6 0 a 1 a 2 a 6 ⎦ ⎤
注意G 5 , G 6 G^5, G^6 G 5 , G 6 改變了x , y x, y x , y 的尺度(縮放),但行列式(determinant)沒有變化:
e x G 5 = e x p [ x 0 0 0 − x 0 0 0 0 ] = [ e x 0 0 0 e − x 0 0 0 1 ] , e x G 6 = e x p [ 0 0 0 0 − x 0 0 0 x ] = [ 1 0 0 0 e − x 0 0 0 e x ]
e^{xG_5} = \mathrm{exp}
\begin{bmatrix}
x & 0 & 0 \\
0 & -x & 0 \\
0 & 0 & 0
\end{bmatrix}=
\begin{bmatrix}
e^x & 0 & 0 \\
0 & e^{-x} & 0 \\
0 & 0 & 1
\end{bmatrix}, \\
e^{xG_6} = \mathrm{exp}
\begin{bmatrix}
0 & 0 & 0 \\
0 & -x & 0 \\
0 & 0 & x
\end{bmatrix}=
\begin{bmatrix}
1& 0 & 0 \\
0 & e^{-x} & 0 \\
0 & 0 & e^x
\end{bmatrix}
e x G 5 = e x p ⎣ ⎡ x 0 0 0 − x 0 0 0 0 ⎦ ⎤ = ⎣ ⎡ e x 0 0 0 e − x 0 0 0 1 ⎦ ⎤ , e x G 6 = e x p ⎣ ⎡ 0 0 0 0 − x 0 0 0 x ⎦ ⎤ = ⎣ ⎡ 1 0 0 0 e − x 0 0 0 e x ⎦ ⎤
通過選擇使x x x 和y y y 的縮放比例更直接對應可能更好
G 5 = [ 1 0 0 0 0 0 0 0 − 1 ] , G 6 = [ 0 0 0 0 1 0 0 0 − 1 ]
G^5=
\begin{bmatrix}
1 & 0 & 0 \\
0 & 0 & 0 \\
0 & 0 & -1
\end{bmatrix},
G^6=
\begin{bmatrix}
0 & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & -1
\end{bmatrix}
G 5 = ⎣ ⎡ 1 0 0 0 0 0 0 0 − 1 ⎦ ⎤ , G 6 = ⎣ ⎡ 0 0 0 0 1 0 0 0 − 1 ⎦ ⎤
因此
e x G 5 = e x p [ x 0 0 0 0 0 0 0 − x ] = [ e x 0 0 0 1 0 0 0 1 / e x ] , e x G 6 = e x p [ 0 0 0 0 x 0 0 0 − x ] = [ 1 0 0 0 e x 0 0 0 1 / e x ]
e^{xG_5} = \mathrm{exp}
\begin{bmatrix}
x & 0 & 0 \\
0 & 0 & 0 \\
0 & 0 & -x
\end{bmatrix}=
\begin{bmatrix}
e^x & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & 1/e^x
\end{bmatrix}, \\
e^{xG_6} = \mathrm{exp}
\begin{bmatrix}
0 & 0 & 0 \\
0 & x & 0 \\
0 & 0 & -x
\end{bmatrix}=
\begin{bmatrix}
1& 0 & 0 \\
0 & e^{x} & 0 \\
0 & 0 & 1/e^x
\end{bmatrix}
e x G 5 = e x p ⎣ ⎡ x 0 0 0 0 0 0 0 − x ⎦ ⎤ = ⎣ ⎡ e x 0 0 0 1 0 0 0 1 / e x ⎦ ⎤ , e x G 6 = e x p ⎣ ⎡ 0 0 0 0 x 0 0 0 − x ⎦ ⎤ = ⎣ ⎡ 1 0 0 0 e x 0 0 0 1 / e x ⎦ ⎤
9. 2D Homographies
當以2D投影空間p 3 \mathscr{p}^3 p 3 表示對圖像的操作時,3D旋轉是2D單應性的一種特殊情況。 現在,根據 中的論述粗略地處理這些內容。
9.1 Basics
李羣 S L ( 3 ) SL(3) S L ( 3 ) 是一般線性羣G L ( 3 ) GL(3) G L ( 3 ) 的子羣,它是行列式爲1的3 × 3 3 \times 3 3 × 3 的可逆矩陣。單應性生成了2D投影空間的變換, 且A f f ( 2 ) ⊂ S L ( 3 ) Aff(2) \subset SL(3) A f f ( 2 ) ⊂ S L ( 3 ) 。
通過增加兩個生成器可以擴展a f f ( 2 ) \mathfrak{aff(2)} a f f ( 2 ) 到李代數s l ( 3 ) \mathfrak{sl(3)} s l ( 3 )
G 7 = [ 0 0 0 0 0 0 1 0 0 ] , G 8 = [ 0 0 0 0 0 0 0 1 0 ]
G^7 =
\begin{bmatrix}
0 & 0& 0 \\
0 & 0 & 0 \\
1 & 0 & 0
\end{bmatrix},
G^8 =
\begin{bmatrix}
0 & 0& 0 \\
0 & 0 & 0 \\
0 & 1 & 0
\end{bmatrix}
G 7 = ⎣ ⎡ 0 0 1 0 0 0 0 0 0 ⎦ ⎤ , G 8 = ⎣ ⎡ 0 0 0 0 0 1 0 0 0 ⎦ ⎤
,8個參數參數化的增量單應矩陣h ^ \hat h h ^ 是3 × 3 3 \times 3 3 × 3 的向量空間,該映射爲
h → h ^ ≜ [ h 5 h 4 − h 3 h 1 h 4 + h 3 − h 5 − h 6 h 2 h 7 h 8 h 6 ]
h \to \hat h \triangleq
\begin{bmatrix}
h_5 & h_4 - h_3 & h_1 \\
h_4 + h_3 & -h_5-h_6 & h_2 \\
h_7 & h_8 & h_6
\end{bmatrix}
h → h ^ ≜ ⎣ ⎡ h 5 h 4 + h 3 h 7 h 4 − h 3 − h 5 − h 6 h 8 h 1 h 2 h 6 ⎦ ⎤
9.2 Tensor Notation
二維投影空間A和B之間的單應性可以用張量記號H A B H^B_A H A B 表示
然後應用單應性是張量連接x B = H A B x A x^B = H^B_A x^A x B = H A B x A ,將A中的點映射到B中的點。
Appendix: Proof of Proerty 9
R [ ω ] × R T = R [ ω ] × [ a 1 a 2 a 3 ] = R [ ω × a 1 ω × a 2 ω × a 3 ] = [ a 1 ( ω × a 1 ) a 1 ( ω × a 2 ) a 1 ( ω × a 3 ) a 2 ( ω × a 1 ) a 2 ( ω × a 2 ) a 2 ( ω × a 3 ) a 3 ( ω × a 1 ) a 3 ( ω × a 2 ) a 3 ( ω × a 3 ) ] = [ ω ( a 1 × a 1 ) ω ( a 2 × a 1 ) ω ( a 3 × a 1 ) ω ( a 1 × a 2 ) ω ( a 2 × a 2 ) ω ( a 3 × a 2 ) ω ( a 1 × a 3 ) ω ( a 2 × a 3 ) ω ( a 3 × a 3 ) ] = [ 0 − ω a 3 ω a 2 ω a 3 0 − ω a 1 − ω a 2 ω a 1 0 ] = [ R ω ] ×
\begin{aligned}
R[\omega]_\times R^T & = R[\omega]_\times [a_1 \enspace a_2 \enspace a_3] \\
&= R[\omega \times a_1 \enspace \omega \times a_2 \enspace \omega \times a_3] \\
&= \begin{bmatrix}
a_1(\omega \times a_1 ) & a_1(\omega \times a_2) & a_1(\omega \times a_3) \\
a_2(\omega \times a_1 ) & a_2(\omega \times a_2) & a_2(\omega \times a_3) \\
a_3(\omega \times a_1 ) & a_3(\omega \times a_2) & a_3(\omega \times a_3)
\end{bmatrix} \\
&= \begin{bmatrix}
\omega(a_1 \times a_1 ) & \omega(a_2 \times a_1) & \omega (a_3 \times a_1) \\
\omega(a_1 \times a_2 ) & \omega(a_2 \times a_2) & \omega (a_3 \times a_2) \\
\omega(a_1 \times a_3 ) & \omega(a_2 \times a_3) & \omega (a_3 \times a_3)
\end{bmatrix} \\
&= \begin{bmatrix}
0 & - \omega a_3 & \omega a_2 \\
\omega a_3 & 0 & -\omega a_1 \\
-\omega a_2 & \omega a_1 & 0
\end{bmatrix} \\
&=[R \omega]_{\times}
\end{aligned}
R [ ω ] × R T = R [ ω ] × [ a 1 a 2 a 3 ] = R [ ω × a 1 ω × a 2 ω × a 3 ] = ⎣ ⎡ a 1 ( ω × a 1 ) a 2 ( ω × a 1 ) a 3 ( ω × a 1 ) a 1 ( ω × a 2 ) a 2 ( ω × a 2 ) a 3 ( ω × a 2 ) a 1 ( ω × a 3 ) a 2 ( ω × a 3 ) a 3 ( ω × a 3 ) ⎦ ⎤ = ⎣ ⎡ ω ( a 1 × a 1 ) ω ( a 1 × a 2 ) ω ( a 1 × a 3 ) ω ( a 2 × a 1 ) ω ( a 2 × a 2 ) ω ( a 2 × a 3 ) ω ( a 3 × a 1 ) ω ( a 3 × a 2 ) ω ( a 3 × a 3 ) ⎦ ⎤ = ⎣ ⎡ 0 ω a 3 − ω a 2 − ω a 3 0 ω a 1 ω a 2 − ω a 1 0 ⎦ ⎤ = [ R ω ] ×
其中 a 1 , a 2 , a 3 a_1, a_2, a_3 a 1 , a 2 , a 3 是R R R 的行向量,上面我們使用了旋轉矩陣的正交性和triple 積規則:
a ( b × c ) = b ( c × a ) = c ( a × b )
a(b \times c) = b(c \times a) = c(a \times b)
a ( b × c ) = b ( c × a ) = c ( a × b )
類似,在不需要證明:
R ( a × b ) = R a × R b
R(a \times b) = Ra \times Rb
R ( a × b ) = R a × R b
Appendix:Alternative Generators for s l ( 3 ) \mathfrak{sl(3)} s l ( 3 )
s l ( 3 ) \mathfrak{sl(3)} s l ( 3 ) 的生成器:
G 1 = [ 0 0 1 0 0 0 0 0 0 ] , G 2 = [ 0 0 0 0 0 1 0 0 0 ] , G 3 = [ 0 1 0 0 0 0 0 0 0 ] , G 4 = [ 0 0 0 1 0 0 0 0 0 ] , G 5 = [ 1 0 0 0 − 1 0 0 0 0 ] , G 6 = [ 0 0 0 0 − 1 0 0 0 1 ] , G 7 = [ 0 0 0 0 0 0 1 0 0 ] , G 8 = [ 0 0 0 0 0 0 0 1 0 ]
G^1 =
\begin{bmatrix}
0 & 0 & 1 \\
0 & 0 & 0 \\
0 & 0& 0
\end{bmatrix},
G^2 =
\begin{bmatrix}
0 & 0 & 0 \\
0 & 0 & 1 \\
0 & 0& 0
\end{bmatrix}
,G^3 =
\begin{bmatrix}
0 & 1 & 0 \\
0 & 0 & 0 \\
0 & 0& 0
\end{bmatrix}, \\
G^4 =
\begin{bmatrix}
0 & 0 & 0 \\
1 & 0 & 0 \\
0 & 0& 0
\end{bmatrix},
G^5 =
\begin{bmatrix}
1 & 0 & 0 \\
0 & -1 & 0 \\
0 & 0& 0
\end{bmatrix},
G^6 =
\begin{bmatrix}
0 & 0 & 0 \\
0 & -1 & 0 \\
0 & 0& 1
\end{bmatrix}, \\
G^7 =
\begin{bmatrix}
0 & 0 & 0 \\
0 & 0 & 0 \\
1 & 0& 0
\end{bmatrix},
G^8 =
\begin{bmatrix}
0 & 0 & 0 \\
0 & 0 & 0 \\
0 & 1 & 0
\end{bmatrix}
G 1 = ⎣ ⎡ 0 0 0 0 0 0 1 0 0 ⎦ ⎤ , G 2 = ⎣ ⎡ 0 0 0 0 0 0 0 1 0 ⎦ ⎤ , G 3 = ⎣ ⎡ 0 0 0 1 0 0 0 0 0 ⎦ ⎤ , G 4 = ⎣ ⎡ 0 1 0 0 0 0 0 0 0 ⎦ ⎤ , G 5 = ⎣ ⎡ 1 0 0 0 − 1 0 0 0 0 ⎦ ⎤ , G 6 = ⎣ ⎡ 0 0 0 0 − 1 0 0 0 1 ⎦ ⎤ , G 7 = ⎣ ⎡ 0 0 1 0 0 0 0 0 0 ⎦ ⎤ , G 8 = ⎣ ⎡ 0 0 0 0 0 1 0 0 0 ⎦ ⎤
我們選擇不同線性組合作爲基。