爲什麼引入李羣與李代數?
SLAM中對矩陣求導數的應用場景?什麼情況下用到李代數左乘擾動模型求導數?
爲什麼不能用李羣求導?
李羣與李代數的關係?
李代數左乘擾動的理解?
0 爲什麼引入李羣與李代數?
slam中後端優化需要用到求解最小二乘問題,優化變量爲旋轉矩陣與平移矩陣。但是旋轉矩陣自身是帶有約束的,正交且行列式爲1,他們作爲優化變量時,會引入額外的約束,使優化變的困難,不加約束會使每一步迭代得到的結果不是旋轉矩陣。通過李羣李代數的轉換關係,把位姿估計變成無約束的優化問題。
1 李羣與李代數在SLAM中的用途
視覺SLAM中用李羣表示相機位姿T,用李代數求導數。
對於同一個特徵點,如果上一時刻得到該點相機座標系下的三維座標爲P,當前時刻觀測到相機座標系下的座標爲Z,則兩時刻相機位姿變化矩陣爲T,有如下公式:
爲誤差。目的是求解矩陣T,得到相機的位姿變換,以此迭代下去得到相機的運動軌跡。
由於誤差不可避免,並且兩時刻之間可以觀測到很多匹配好的特徵點,因此一般用很多觀測到的特徵點構建優化問題,以減小求解誤差:
(1-2)
變化矩陣的形式如下:
變化矩陣T包含了旋轉R與平移t信息,其重要性質:兩個矩陣T相乘得到的同樣是一個變化矩陣。比如矩陣T1和T2表示兩個變化矩陣,則:
因此變化矩陣T恰好是一個李羣,即對乘法封閉的李羣。我們的目的是求解問題(1-2),即優化變量爲T,優化問題爲最小二乘問題,可以利用李羣的性質求解優化問題(1-2)。
2 不用李羣求導數的原因
對於最小二乘問題(1-2)求解辦法一般是梯度法,需要求解函數J對矩陣T的導數,並且每次迭代:。但是李羣T對加法沒有封閉性。比如T1與T2都是變化矩陣,但是T1+T2一定不是變化矩陣,即無法求導得到。因此需要進行轉化,將該問題轉化爲對加法封閉,並且能夠表示變化矩陣信息。
李代數對應李羣,李代數滿足加法,因此可以利用李羣與李代數之間的關係求解導數。
3 李羣與李代數的關係
李羣 = 矩陣集合+運算,比如變化矩陣T對乘法封閉,即構成"實數+乘法"的羣。
李代數描述了李羣的導數,是向量。
旋轉矩陣R構成的李羣對應的李代數是旋轉向量,變化矩陣T構成的李羣對應的李代數是旋轉向量與平移向量組成的六維向量,slam中只用到這兩個羣的概念,其餘的不會。並且這兩個李羣與對應的李代數是一一對應的。(角度固定在之間。)
李羣轉化爲李代數通過對數映射,李代數轉化爲通過指數映射完成。具體如下:
a表示單位方向,爲模長,即旋轉向量。
4 左乘擾動模型理解
旋轉矩陣的左乘擾動模型求導:
假設對空間點P進行了旋轉R操作,需要求RP關於R的導數,求導方法是對R進行一次擾動。設R的李代數爲,的李代數爲。對求導:
理解:我們的目的是迭代求解出旋轉矩陣,只要能夠求解出優化方程中的旋轉矩陣,使目標函數逐漸減小即可。因此給旋轉矩陣乘以一個旋轉矩陣微小擾動,然後對該擾動求解導數,此時變量變成了微小擾動。如果能夠求解出該微小擾動,並且該微小擾動可以使目標函數減小,說明該微小擾動作爲更新量是可行的,迭代公式變爲。
同理變化矩陣的左乘擾動模型求導如下: