日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【多视图几何】TUM 课程 第2章 刚体运动

發布時間:2023/12/10 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【多视图几何】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章 刚体运动的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。