1. 程式人生 > >SLAM基礎之李群和李代數

SLAM基礎之李群和李代數

在做SLAM研究的時候,會涉及到對旋轉矩陣求導的問題。然而矩陣求導中多個變換矩陣相加問題很難解決,這時候需要使用矩陣李群的知識,將旋轉或者變換等矩陣李群形式,對映到李代數上求解。

李群和李代數

群的概念:群(Group)是一種集合加上一種運算的代數結構。

記集合為A,運算為 · ,那麼當運算滿足以下性質時,稱 (A, · )成群:


我們可以根據群的概念驗證得到:

(1)旋轉矩陣集合與矩陣乘法構成群

(2)變換矩陣集合與矩陣乘法構成群

在SLAM當中,我們常用到的群一般有特殊正交群和特殊歐氏群兩種


李群

李群主要是指:

具有連續(光滑)性質的群。既是群也是流形。

直觀上看,一個剛體能夠連續地在空間中運動,故SO(3)和SE(3)都是李群。

但是,SO(3)和SE(3)只有定義良好的乘法,沒有加法,所以難以進行取極限、求導等操作。所以我們引出了李代數的概念。

李代數

李代數:與李群對應的一種結構,位於向量空間。事實上是李群單位元處的正切空間。

我們通過旋轉矩陣來引出李代數,考慮任意旋轉矩陣R,滿足

令R隨時間變化(連續運動),有:


兩側對時間求導,可得:


整理可得:


可以看出,這是一個反對稱矩陣,記為:


兩側右乘R(t):


可以認為,對R求導後,左側多出一個∅(t)

單位元附近展開,


可見反映了一階導數性質,它位於正切空間(tangent space)上,在t0附近,假設不變,有微分方程:


已知初始情況:R(0)=I ,解之,得:


上式說明,對任意t,都可以找到一個R和一個的

對應關係,該關係稱為指數對映。

在這裡這個∅稱為SO(3)對應的李代數:so(3)

現在,我們來定義一下李代數:


其中二元運算[,]被稱為李括號,直觀上說,李括號表達了兩個元素的差異。

對於每個李群,都有與之對應的李代數,李代數描述了李群單位元附件的正切空間性質。

那麼對於李代數so(3),我們可以定義


其中

李括號內的運算為:


同理可得,SE(3)亦有李代數se(3)



指數對映和對數對映

指數對映反映了從李代數到李群的對應關係


但是ϕ^是一個矩陣,對於矩陣,如何定義求指數運算?

由於ϕ^是向量,定義其角度和模長可得:


然後對exp(ϕ^)泰勒展開可得:


整理:


而在旋轉矩陣中羅德里格斯公式即這個公式,所以,我們可以認為so(3) 的物理意義就是旋轉向量。

反之,給定旋轉矩陣時,亦能求李代數:


稱為對數對映

但實際當中沒必要這樣求,矩陣到向量的轉換關係可以由矩陣的跡得到


在此我們已經得出了李群和李代數的對應關係,下面總結一下在SO(3)和SE(3)中的對應關係。


李代數求導與擾動模型

我們瞭解到李群跟李代數的對應關係之後,我們回到最初的問題中來,當初就是考慮到旋轉矩陣沒有加法,所以我們無法定義導數,那麼,現在我們該怎麼定義導數模型呢?

我們假想,當在李代數中做加法時,是否等價於在李群上做乘法呢? 即:


在使用標量的時候,該式明顯成立,然而這兒ϕ^是個矩陣,我們可以使用BCH公式近似:


其中方括號為李括號。

可以得到,當其中一個量為小量時,忽略其高階項,BCH具有線性近似形式


這裡有左雅克比為



右雅克比為:


所以,以左乘為例,即在李群上左乘小量時,李代數上的加法相差左雅可比的逆


同樣,李代數上進行小量加法時,相當於李群上左(右)乘一個帶左(右)雅可比的量


SE(3)比SO(3)更復雜:


因為在使用過程中用到的不多,所以暫時不展開討論。

綜上:通過BCH線性近似,可以定義李代數上的導數,旋轉後的點關於旋轉的導數可以不嚴謹地記為:


由於R沒有加法,導數無從定義,所以存在兩種解決辦法:

1.對 R 對應的李代數加上小量,求相對於小量的變化率(導數模型);

2.對 R 左乘或右乘一個小量,求相對於小量的李代數的變化率(擾動模型)。

對於導數模型,有:


由於雅克比矩陣比較不好運算,考慮擾動模型,


本文主要參考高翔博士的視覺SLAM十四講以及他在深藍學院的講課講義