1.李群
李群是具有連續(光滑)性質的群;它既是群也是流行;直觀上看,乙個剛體能夠連續的在空間中運動,故so(3)和se(3)都是李群。(注:so(3)是特殊正交群 se(3)是特殊歐式群,由於旋轉矩陣r是3乘3的維度,但自由度的約束只有3個自由度,所以旋轉矩陣r在9維空間中是乙個連續的3維曲面或流形)
三維旋轉矩陣構成了 特殊正交群 so
(3),而變換矩陣構成了
特殊歐氏群
但是,so(3)和se(3)只有定義良好的乘法,沒有加法,所以難以進行取極限和求導等操作。 但能不能做一些近似或分析上的事情呢?下面來看李代數的概念。
2.李代數
李代數是與李群對應的一種結構,位於向量空間。通常通常記作小寫的so(3)和se(3),事實上李代數是李群單位元處的正切空間。
切空間本身是乙個向量空間,所以切空間就可以定義很好的加法運算了。由此可以借由李代數這個切空間去研究對應的李群的一些性質。
例如:大寫的so(3)是乙個李群(流形、曲面),他上面的點無法定義加法運算,因為曲面上的兩個點相加後可能就不在這個曲面上了。在so(3)這個曲面上某個點處可以做它的乙個切平面似的東西或者叫做切空間,這個切空間(是乙個平面)就是對應的李代數,記作小寫的so(3).
3. 李群和李代數的對應關係
4.sophus 庫
sophus 庫支援 so
(3)
和 se
(3),此外還含有二維運動
so(2)
, se
(2)
以及相似變換
sim(3)
的內容。它是直接在
eigen 基礎上開發的,我們不需要要安裝額外的依賴庫。
sophus
早期版本只提供了雙精度的李群
/李代數類。 後續版本改寫成了模板類。模板類的 sophus
中可以使用不同精度的李群
/李代數,輸入以下命令獲得非模板類的
sophus:
git clonesophuscdsophus
git checkout a621ff
mkdir build
cd build
cmake ..
make
庫只須編譯即可, 無須安裝。
#include #include using namespace std;
#include #include #include "sophus/so3.h"
#include "sophus/se3.h"
int main( int argc, char** ar** )
so(3) from matrix: 0 0 1.5708
so(3) from vector: 0 0 1.5708
so(3) from quaternion : 0 0 1.5708
so3 = 0 0 1.5708
so3 hat=
0 -1.5708 0
1.5708 0 -0
-0 0 0
so3 hat vee= 0 0 1.5708
so3 updated = 7.85398e-05 -7.85398e-05 1.5708
************我是分割線*************
se3 from r,t=
0 0 1.5708
1 0 0
se3 from q,t=
0 0 1.5708
1 0 0
se3 = 0.785398 -0.785398 0 0 0 1.5708
se3 hat =
0 -1.5708 0 0.785398
1.5708 0 -0 -0.785398
-0 0 0 0
0 0 0 0
se3 hat vee = 0.785398 -0.785398 0 0 0 1.5708
se3 updated =
2.22045e-16 -1 0 1.0001
1 2.22045e-16 0 0
0 0 1 0
0 0 0 1
SLAM中的李群與李代數
群是一些資料,並有特定的運算方式,通俗點,元素集合加上代數運算,使得集合中任意兩個元素經過運算後形成的第三個元素仍然在這個集合裡面。群必須滿足四種公理 封閉性 closure 結合性 associtivity 單位元 identity,也叫么元 逆元 invertibility 鳳姐咬你 李群除了滿...
slam十四講(二)李群李代數
李群 群 group 是一種集合加上一種運算的代數結構。我們把集合記作 a,運算記作 g a,性質 特殊正交群 so n 也就是所謂的旋轉矩陣群,其中 so 2 和 so 3 最為常見。特殊歐氏群 se n 也就是前面提到的 n 維歐氏變換,如 se 2 和 se 3 李代數 李代數由乙個集合 v,...
視覺SLAM中的李群 李代數基礎
前言 在做slam研究的時候,會涉及到對旋轉矩陣求導的問題。這時候需要使用矩陣李群的知識,將旋轉或者變換等矩陣李群形式,對映到李代數上求解。本文主要涉及兩個特殊矩陣李群 特殊正交群 special orthogonal group so 3 表示旋轉 特殊歐幾里得群 special euclidea...