研究位置與姿態,位置很好說,反正就是xyz,都是線性空間,中學就學過了。但是姿態就很難研究了,姿態的運算不滿足加法律,導數也沒法求,很多東西難以研究,所以就需要李群與李代數的理論指導了。說白一點,《李群與李代數》學的就是「位姿微積分」。
我們為什麼要學「位姿微積分」,是因為我們在slam過程中要解決以下問題:
什麼樣的相機位姿最符合當前觀測資料,即解最優的r、t。
群是一種代數結構。通俗點說,群就是元素集合加上代數運算,使得集合中任意兩個元素經過運算後形成的第三個元素仍然在這個集合裡面。
設\(g\)是乙個非空集合,\(\cdot\)是它的乙個二元運算,如果滿足以下條件:
(1) 封閉性:若\(a,b\in g\) ,則存在唯一確定的\(c\in g\) 使得\(a\cdot b=c\) ;
(2) 結合律成立,即對\(g\)中任意元素\(a,b,c\)都有\((a\cdot b)\cdot c=a\cdot (b\cdot c)\) ;
(3) 單位元存在:存在\(e\in g\) ,對任意\(a\in g\),滿足\(a\cdot e=e\cdot a=a\)。\(e\)稱為單位元,也稱么元;
(4) 逆元存在:任意\(a\in g\),存在\(b\in g\),\(a\cdot b=b\cdot a=e\)(\(e\)為單位元),則稱\(a\)與\(b\)互為逆元素,簡稱逆元。\(b\)記作\(a^\);
則稱\(g\)對\(\cdot\)構成乙個群。
通常稱\(g\)上的二元運算\(\cdot\)為「乘法」,稱\(a\cdot b\)為\(a\)與\(b\)的積,並簡寫為\(ab\)。
若群\(g\)中元素個數是有限的,則\(g\)稱為有限群。否則稱為無限群。有限群的元素個數稱為有限群的階。
李群是一種不可交換的連續群,在這裡主要講的是兩種常用的群:特殊正交群\(so(3)\)和特殊歐氏群\(se(3)\),在上篇文章中提到過。
\[so(n)= \\in\mathbb^|\mathbf\mathbf^t=\mathbf,det(\mathbf)=1 \}
\]\[ se(3)=\=\begin\mathbf&\mathbf\\0^t&1 \end\in\mathbb}| \mathbf\in so(3),\mathbf\in \mathbb \}
\]對應的就是旋轉矩陣與變換矩陣
需要提一下特殊歐氏群的乘法運算:
\[\mathbf_1\mathbf_2=\begin\mathbf_1&\mathbf_1\\0^t&1\end
\begin\mathbf_2&\mathbf_2\\0^t&1\end=
\begin
\mathbf_1\mathbf_2& \mathbf_1\mathbf_2+\mathbf_1\\
0^t&1
\end\in se(3)
\]不論\(so(3)\)還是\(se(3)\),都伴隨著乙個相應的李代數。李代數是定義在某個數域
\(\mathbb\)上的集合
\(\mathbb\),同時定義了乙個稱為李括號\([⋅,⋅]\)的雙目運算子。我們把藍色字型部分稱為李代數的三個要素。同李群類似,對所有的\(\mathbf, \mathbf, \mathbf \in \mathbb\)和\(a, b \in \mathbb\),李代數也必須滿足四個性質:
封閉性:\([\mathbf, \mathbf] \in \mathbb\)
雙線性:\([a\mathbf + b\mathbf, \mathbf] = a[\mathbf, \mathbf] + b[\mathbf, \mathbf] \qquad and \qquad [ \mathbf, a\mathbf + b\mathbf] = a[\mathbf, \mathbf] + b[\mathbf, \mathbf]\)
自反性:\([\mathbf, \mathbf] = \mathbf\)
雅可比恒等:\([\mathbf, [\mathbf, \mathbf]] + [\mathbf, [\mathbf, \mathbf]] + [\mathbf, [\mathbf, \mathbf]] = \mathbf\)
舉例:三維向量\(\mathbb^3\)上定義的叉積\(\times\)是一種李括號,因此\(g=(\mathbb^3,\mathbb,\times)\)構成了一種李代數。
在slam14 4.1.2的內容中,我們也根據微分方程定義了乙個反對稱矩陣:
\[\phi(t)^\land=\mathbf}(t)\mathbf(t)^t
\]我們可以解出這個微分方程:在\(t_0\)附近時,設\(\phi\)保持常數\(\phi(t_0)=\phi_0\),有:
\[\mathbf(t)=exp(\phi_0^\land t)
\]我們可以看到這個\(\phi^\land\)的特殊地位,可以由r直接通過指數關係得出,且與導數也有聯絡。所以我們覺得試試這個\(\phi^\land\)作為\(so(3)\)的李代數
\[\mathbf = \boldsymbol^ =
\begin 0 & -\boldsymbol_3 & \boldsymbol_2 \\
\boldsymbol_3 & 0 & -\boldsymbol_1 \\
-\boldsymbol_2 & \boldsymbol_1 & 0
\end \in \mathbb^, \quad \boldsymbol \in \mathbb^3
\]書上證明了這個定義是符合李代數標準的
李代數\(\mathfrak(3)\)與\(so(3)\)的關係由指數對映給定:
\[\mathbf = \exp(\boldsymbol^) = \sum_^ (\boldsymbol^)^n}
\]精髓來了!稍微推導一下上式,我們記\(\boldsymbol = \phi \mathbf\),其中,\(\phi = \| \boldsymbol \|\)表示\(\boldsymbol\)的模長,而\(\mathbf = \frac}\)表示與\(\boldsymbol\)方向一致的單位向量。這樣,指數對映就可表達為:
\[\mathbf = \cos \phi \mathbf + (1 - \cos \phi) \mathbf \mathbf^t + \sin \phi \mathbf^
\]這個就是羅德里格斯公式,因此從數學意義上來說:李代數\(\phi\)表徵的就是乙個旋轉向量,\(\phi\)的模長表達了旋轉的角度,\(\phi\)的方向表達了旋轉軸的方向。這給後面的求導提供了指導思想與方便。
\[\mathbf = \boldsymbol^ = \begin \boldsymbol \\ \boldsymbol \end ^ =
\begin \boldsymbol^ & \boldsymbol \\ \mathbf^t & 0 \end \in \mathbb^, \quad \boldsymbol, \boldsymbol \in \mathbb^3
\]其實饒了一大圈就是發現了,旋轉向量與旋轉矩陣之間的指數關係。
slam十四講(二)李群李代數
李群 群 group 是一種集合加上一種運算的代數結構。我們把集合記作 a,運算記作 g a,性質 特殊正交群 so n 也就是所謂的旋轉矩陣群,其中 so 2 和 so 3 最為常見。特殊歐氏群 se n 也就是前面提到的 n 維歐氏變換,如 se 2 和 se 3 李代數 李代數由乙個集合 v,...
視覺SLAM十四講Debug
find package opencv required 失敗,找不到opencv3.1.0版本 find package opencv 3 required 成功eigen make unaligned array assert 31 解決辦法 vectorposes 修改為下面的語句 vecto...
視覺SLAM十四講第四講
主要目標 理解李群與李代數的概念,掌握 so 3 se 3 與對應李代數的表示方式。理解 bch 近似的意義。學會在李代數上的擾動模型。使用 sophus 對李代數進行運算。旋轉矩陣自身是帶有約束的 正交且行列式為 1 它們作為優化變數時,會引入額外的約束,使優化變得困難。通過李群 李代數間的轉換關...