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十四講以及他在深藍學院的講課講義