【多视图几何】TUM 课程 第2章 刚体运动
課程的 YouTube 地址為:https://www.youtube.com/playlist?list=PLTBdjV_4f-EJn6udZ34tht9EVIW7lbeo4 。視頻評論區可以找到課程所使用課件與練習題的下載地址。
課程第2章從李群與李代數的角度介紹三維空間的剛體運動。李群即常見的旋轉矩陣、變換矩陣,李代數與李群對應,李代數 \(se(3)\) 是所有三維反對稱陣的集合。
將李代數映射到李群,使得旋轉與變換可微,并且消除了旋轉矩陣的約束條件($ R^TR = I, det(R) = 1 $)對優化的約束,能夠在無約束條件下進行位姿的優化。
1. 三維空間與剛體運動
三維空間是三維歐幾里德空間(Euclidean Space)的簡稱,一般使用笛卡爾坐標系(Cartesian Coordinate System)描述歐式空間中的點,笛卡爾坐標描述是 $ (x, y, z) \in \mathbb{E}^3 $ 的形式,這種形式可以用 \(\mathbb{R}^3\) 定義。
于是使用三維向量 $ \mathbb{R}^3 $ 描述一個三維點坐標 $ \mathbb{E}^3 $。本筆記使用 \(\mathbb{R}^3\) 替代 $ \mathbb{E}^3 $,嚴格意義上將 \(\mathbb{E}^3\) 是笛卡爾坐標,$ \mathbb{R}^3 $ 是三維向量。
1.1 叉乘與反對稱陣
叉乘(Cross Product)是將兩個三維向量映射到一個三維向量:
\[ \times : \mathbb{R}^3 \times \mathbb{R}^3 \rightarrow \mathbb{R}^3 : u \times v = \begin{bmatrix} u_2v_3 - u_3v_2 \\ u_3v_1 - u_1v_3 \\ u_1v_2 - u_2v_1 \end{bmatrix} \in \mathbb{R}^3 \]
叉乘可以可以轉化為一個矩陣與向量點乘的形式,方便計算:
\[ u \times v = \hat{u} \cdot v, \hat{u} = \begin{bmatrix} 0 \quad -u_3 \quad u_2 \\ u_3 \quad 0 \quad -u_1 \\ -u_2 \quad u_1 \quad 0 \end{bmatrix} \]
1.2 剛體運動
剛體運動是三維坐標到三維坐標的映射:
\[ g_t : \mathbb{R}^3 \rightarrow \mathbb{R}^3; X \mapsto g_t(X), t \in [0, T] \]
$ t $ 是時刻。
剛體運動保持范數(norm)與叉乘不變:
\[ | g_t(v) | = | v |, \forall v \in \mathbb{R}^3 \]
\[ g_t(u) \times g_t(v) = g_t(u \times v), \forall u, v \in \mathbb{R}^3 \]
由以上兩個性質與極化恒等式(Polarization Identity)可知剛體運動也保持內積不變。三重積(Triple Product)也是保持變不變,三重積的幾何意義是三個向量表示的平行六面體的體積,所以剛體運動保持體積不變。
\[ <g_t(u), g_t(v) \times g_t(w)> = <u, v \times w> \]
剛體運動可以表示為:
\[ g_t(x) = Rx + T \]
2. 李群與李代數
2.1 旋轉矩陣的導數
在任意時刻的旋轉矩陣都是正交的,$ R(t)R^T(t) = I, \forall t $,對這個式子左右求導:
\[ {d \over dt}(RR^T) = \dot RR^T + R {\dot R}^T = 0 \Rightarrow \dot RR^T = -(\dot RR^T)^T \]
所以 \(\dot RR^T\) 是一個反對稱陣,所以在任意時刻存在一個向量 \(w(t) \in \mathbb{R}^3\) 與 $ \dot RR^T $ 對應:
\[ \dot R(t)R^T(t) = \hat w(t) \Leftrightarrow \dot R(t) = \hat w R(t) \]
上式表明了任意時刻 $ t $ 的旋轉矩陣 \(R(t)\) 的導數 \(\dot R(t)\) 的計算方法——用一個反對稱陣左乘旋轉矩陣 \(R(t)\)。
0時刻的旋轉矩陣 $ R(0) = I $,在0時刻附近展開:
\[ R(dt) = R(0) + dR = I + \hat w(0) dt \]
2.2 李群 \(SO(3)\) 與李代數 \(so(3)\)
李群(Lie Group)指連續可微的群,三維空間的旋轉是連續的,所以特殊正交集 \(SO(3)\) 是三維旋轉李群對應的矩陣表示。連續是關鍵。
Def.: A Lie group (or infinitesimal group) is a smooth manifold that is also a group, such that the group operations multiplication and inversion are smooth maps.
$ SO(3) $ 中的微分可以使用反對稱陣逼近,反對稱陣所在的群叫做李代數(Lie Algebra):
\[ so(3) \equiv \left\{ \hat w \right. \left| w \in \mathbb{R}^3 \right\} \]
李代數是李群在 \(I\) 處的切空間(Tangent Space)。$ I $ 對應的是0時刻,以0時刻為基準,認為0時刻不存在旋轉。
2.2.1 指數映射
前面推導得到了 $ \dot R(t) = \hat w R(t) $ 的結論,解微分方程
\[ \begin{cases} \dot R(t) = \hat w R(t) \\ R(0) = I\end{cases} \]
得到
\[ R(t) = e^{\hat w t} = \Sigma_{n = 0}^{\infty}{ {(\hat w t)}^n \over n !} = I + \hat w t + {{(\hat w t)}^2\over 2!} + \dots \]
當 $ |w| = 1 $ 時 \(R(t)\) 是繞著軸 $ w \in \mathbb{R}^3 $ 的旋轉,如果將時間 \(t\) 寫入到 \(\hat w\) 中($ \hat w = \hat w t $),這樣就得到了從李代數到李群的映射:
\[ exp: so(3) \rightarrow SO(3); \hat w \mapsto e^{\hat w} \]
2.2.2 對數映射
對數映射是將指數映射的逆映射,是從李群 $ SO(3) $ 到李代數 $ so(3) $ 的映射, 可以表示為
\[ log: SO(3) \rightarrow so(3); R \mapsto \hat w \]
當 $ R \ne I $ 時,
\[ \|w\| = {\cos}^{-1}\left. \right({trace(R) - 1\over 2}\left. \right), {w \over \| w \|} = {1 \over \sin(\|w\|)} \begin{bmatrix} r_{32} - r_{23} \\ r_{13} - r_{31} \\ r_{21} - r_{12} \end{bmatrix} \]
當 $ R = I $ 時,\[ w = 0 \]
2.2.3 羅德里格公式
指數映射部分將 \(R(t)\) 用一無窮級數表示,如何求取這個無窮級數呢?這就需要用到羅格里格公式(Rodrigues' Rotation Formula),對于 $ \hat w \in so(3) $:
\[ e^{\hat w} = I + {\hat w \over \| w \|}\sin(\| w \|) + {\hat w^2 \over \| w \|^2}(1- \cos(\| w \|)) \]
2.3 李群 \(SE(3)\) 與李代數 \(se(3)\)
$ SE(3) $ 表示剛體運動,包括旋轉和平移,在齊次坐標下定義為:
\[ SE(3) \equiv \left\{ g = \begin{bmatrix} R \quad T \\ 0 \quad 1 \end{bmatrix}\left. \right| R \in SO(3), T \in \mathbb{R}^3 \right\} \subset \mathbb{R}^{4 \times 4}\]
旋轉矩陣求導能夠直接得出旋轉矩陣的導數 $ \dot R(t) = \hat w R(t) $,但 $ SE(3) $ 不具有這種性質,為了保持表達形式的一致,仿照 \(SO(3)\) 與 \(so(3)\) 定義 \(se(3)\)。
$ g $ 是剛體變換映射:
\[ g: \mathbb{R} \rightarrow SE(3); g(t) = \begin{bmatrix} R(t) & T(t) \\ 0 & 1 \end{bmatrix} \in \mathbb{R}^{4 \times 4} \]
$ g $ 是一個 \(4 \times 4\) 的矩陣,但是并不是一個正交陣,不具備 $ g g^T = I $ 的性質,但是作為一個可逆矩陣 $ gg^{-1} = I \Rightarrow \dot g g^{-1} = (\dot g g)^{-1}$,然后就如下考慮:
\[ \dot g (t) g^{-1}(t) = \begin{bmatrix} \dot R R^T & \dot T - \dot R R^T T \\ 0 & 0\end{bmatrix} \in \mathbb{R}^{4\times4} \]
前面 $ SO(3) $ 部分可知 $ \dot R R^T = \hat w, \hat w\in so(3) $,定義一個新的向量 $ v(t) \equiv \dot T(t) - \hat w(t)T(t) $,于是有:
\[ \dot g (t) g^{-1}(t) = \begin{bmatrix} \hat w(t) & v(t) \\ 0 & 0\end{bmatrix} \equiv \hat \xi(t) \in \mathbb{R}^{4\times4} \]
進一步求 \(\dot g\):
\[ \dot g = \dot g g^{-1}g = \hat \xi g \]
公式中的 \(\hat\xi\) 稱作 twist (twist 有旋轉運動加平移運動的意思,可查 Screw Theory)。
\(se(3)\) 的定義:
\[ se(3) \equiv \left\{ \hat \xi = \begin{bmatrix} \hat w & v \\ 0 & 0 \end{bmatrix} \left. \right| \hat w \in so(3), v \in \mathbb{R}^3 \right\} \subset \mathbb{R}^{4 \times 4} \]
$ \hat \xi $ 是 twist,$ \xi \in \mathbb{R}^6 $ 稱作 twist coordinates,兩者的完整定義如下:
\[ \hat \xi \equiv { \begin{bmatrix} v \\ w \end{bmatrix} }^{\hat{}} \equiv \begin{bmatrix} \hat w & v \\ 0 & 0 \end{bmatrix} \in \mathbb{R}^{4\times4} \]
\[ \xi \equiv { \begin{bmatrix} v \\ w \end{bmatrix} } \equiv {\begin{bmatrix} \hat w & v \\ 0 & 0 \end{bmatrix}}^{\check{}} \in \mathbb{R}^{6} \]
$ v $ 是在 \(R\) 旋轉后的坐標系的線速度,\(w\) 是角速度。
2.3.1 指數映射
求 \(se(3)\),解微分方程
\[ \begin{cases} \dot g(t) = \hat \xi g(t), \hat xi = const \\ g(0) = I \end{cases} \]
得
\[ g(t) = e^{\hat \xi t} = \Sigma_{n = 0}^{\infty} { (\hat \xi t)^n \over n !} \]
當 \(w = 0\) 時,
\[ e^{\hat \xi} = \begin{bmatrix} I & v \\ 0 & 1 \end{bmatrix} \]
當 \(w \ne 0\) 時,
\[ e^{\hat \xi} = \begin{bmatrix} e^{\hat w} & {(1 - e^{\hat w})\hat wv + ww^Tv \over \|w\|^2} \\ 0 & 1 \end{bmatrix} \]
2.3.2 對數映射
先利用 $ e^{\hat \xi} $ 左上角 \(3\times3\) 的矩陣計算出 \(w\) ,隨后用右上角 \(3\times1\) 的式子計算 \(v\)。
3. 相機運動
相機是剛體,相機的運動是剛體運動,可以使用旋轉和平移表示。
一般使用 \(g(t)\) 表示相機在 \(t\) 時刻相對世界坐標系的位置姿態:
\[ g(t) = \begin{bmatrix} R(t) & T(t) \\ 0 & 1 \end{bmatrix} \in SE(3) \]
一般定義相機在0時刻的坐標系為世界坐標系,在世界坐標系中一點的坐標為 \(X_0\),該點在 \(t\) 時刻的相機坐標系下的坐標為 \(X(t)\):
\[ X(t) = R(t) X_0 + T(t) \]
在齊次坐標系下:
\[ X(t) = g(t) X_0 \]
3.1 相機運動的鏈接
兩個不同時刻 \(t_1, t_2\) 世界坐標系下的點 \(X_0\) 的坐標為 \(X(t_2), X(t_1)\),\(X(t_2), X(t_1)\) 之間的關系是:
\[ X(t_2) = g(t2, t1)X(t_1) \]
$ g(t_2, t_1) $ 表示 \(t_2\) 相對 \(t_1\) 的位姿,通過以下方程即可得到 \(g(t_2, t_1)\) 與 $ g(t_1), g(t_2) $ 的關系。
\[ \begin{cases} X(t_2) = g(t_2)X_0 \\ X(t_1) = g(t_1)X_0 \end{cases} \]
如果存在3個時刻 $ t_1, t_2, t_3 $ :
\[ X(t_3) = g(t_3, t_2) X_2 = g(t_3, t_2) g(t_2, t_1) X_1 = g(t_3, t_1)X_1 \]
\[ g(t_3, t_1) = g(t_3, t_2) g(t_2, t_1) \]
$ g(t_2, t_1) $ 的逆是 \(t_1\) 相對 \(t_2\) 的位姿 $ g(t_1, t_2) $:
\[ g(t_1, t_2)g(t_2, t_1)=I \Leftrightarrow g^{-1}(t_2, t_1)=g(t_1, t_2) \]
3.2 速度變換
對 $ X(t) = g(t) X_0 $ 求導:
\[ \dot X(t) = \dot g(t) X_0 = \dot g(t)g^{-1}(t)X(t) \]
定義
\[ \hat V(t) \equiv \dot g(t)g^{-1}(t) = \begin{bmatrix} \hat w(t) & v(t) \\ 0 & 0 \end{bmatrix} \in se(3) \]
于是
\[ \dot X(t) = \hat V(t)X(t) \]
在非齊次坐標系中
\[ \dot X(t) = \hat w(t) X(t) + v(t) \]
轉載于:https://www.cnblogs.com/JingeTU/p/6390859.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的【多视图几何】TUM 课程 第2章 刚体运动的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gulp插件gulp-ruby-sass
- 下一篇: 德赛西威280b升级_车载导航刷机:德赛