1. 淺顯易懂了解李群和李代
2. 補(bǔ)充
轉(zhuǎn)載自https://mp.weixin.qq.com/s/sVjy9kr-8qc9W9VN78JoDQ
首先,假裝(也可能是真的)自己是個(gè)小白锦溪,我們假想對(duì)面坐了一個(gè)大牛師兄蒸健,下面我們開啟問答模式望迎。
▌一、為啥需要李代數(shù)
小白:師兄,我最近在學(xué)習(xí)SLAM戳晌,看到李群泞辐、李代數(shù)這一塊一直看不懂笔横,不知所云啊,師兄能不能用通俗易懂的方式給我講解一下咐吼?
師兄:好啊吹缔,正好這會(huì)有空,講完正好去吃飯
小白:我請(qǐng)師兄吃燒烤锯茄!
師兄:哈哈厢塘,那我必須給你講明白啦茶没!現(xiàn)在開始吧
小白:好,先問下師兄晚碾,我在看高博的書抓半,前面幾章挺順利的,第四章突然跳出來李群和李代數(shù)格嘁,一堆公式推導(dǎo)笛求,看的我頭都大了
師兄:這部分公式是有點(diǎn)多,不過李群李代數(shù)是為了解決SLAM中非常實(shí)際的問題的糕簿。到后面會(huì)用到的
小白:看來逃不過啊探入。。冶伞。
師兄:是的新症,這部分必須要理解的。剛才說到了解決SLAM中實(shí)際問題响禽,我展開說下徒爹。我們知道SLAM的過程就是不斷的估計(jì)相機(jī)的位姿和建立地圖。其中芋类,相機(jī)位姿也就是我們所說的變換矩陣T
師兄:下面舉個(gè)例子說明隆嗅。比如你拿著相機(jī)一邊移動(dòng)一邊拍,假設(shè)某個(gè)時(shí)刻相機(jī)的位姿是T侯繁,它觀察到一個(gè)在世界坐標(biāo)系中的一個(gè)空間點(diǎn)p胖喳,并在相機(jī)上產(chǎn)生了一個(gè)觀測(cè)數(shù)據(jù)z,那么z = Tp + noise贮竟,noise是觀測(cè)噪聲丽焊。那么觀測(cè)誤差就是e = z - Tp
小白:嗯,我知道咕别,我們的目的就是使得誤差最小咯~
師兄:對(duì)的技健,假設(shè)我們總共有N個(gè)這樣的三維點(diǎn)p和觀測(cè)值z(mì),那么我們的目標(biāo)就是尋找一個(gè)最佳的位姿T惰拱,使得整體誤差最小化雌贱,也就是:
求解此問題,就是求目標(biāo)函數(shù)J對(duì)于變換矩陣T的導(dǎo)數(shù)偿短。
小白:嗯欣孤,對(duì)矩陣求導(dǎo)?第一次 聽說啊昔逗。降传。
師兄:聽起來確實(shí)有點(diǎn)怪。我們先來看看變換矩陣T勾怒,我們知道T所在的SE(3)空間婆排,對(duì)加法計(jì)算并不封閉款票,也就是說任意兩個(gè)變換矩陣相加后并不是一個(gè)變換矩陣,這主要是因?yàn)樾D(zhuǎn)矩陣對(duì)加法是不封閉造成的泽论,它是有約束的
小白:旋轉(zhuǎn)矩陣對(duì)加法不封閉啥意思艾少?
師兄:嗯,這個(gè)我一會(huì)會(huì)細(xì)講翼悴,這里你先記住好了缚够。到后面你就知道了
小白:好的,那剛才的問題怎么解決呢鹦赎?
師兄:這個(gè)問題問的好谍椅,李代數(shù)就是解決這個(gè)問題的。我們把大寫SE(3)空間的T映射為一種叫做李代數(shù)的東西古话,映射后的李代數(shù)我們叫做小se(3)好了雏吭。它是由向量組成的,我們知道向量是對(duì)加法封閉的陪踩。這樣我們就可以通過對(duì)李代數(shù)求導(dǎo)來間接的對(duì)變換矩陣求導(dǎo)了杖们。
小白:原來如此啊肩狂!不過剛才說了那么多概念摘完,都是什么意思啊傻谁?
▌二孝治、 李群怎么理解?
師兄:不急审磁,我一個(gè)個(gè)說谈飒。我先說說李群吧,不态蒂,先說說群吧杭措。按照數(shù)學(xué)上定義:群(group)就是一種集合加上一種運(yùn)算的代數(shù)結(jié)構(gòu)。群有幾個(gè)運(yùn)算性質(zhì)吃媒,好像高博說是“鳳姐咬你”
小白:(瞪大了眼睛)嗯瓤介?
師兄:哦吕喘,諧音諧音赘那。。氯质。就是:封閉性募舟,結(jié)合律,幺元闻察,還有逆拱礁。對(duì)了琢锋,比如旋轉(zhuǎn)矩陣和乘法就構(gòu)成了旋轉(zhuǎn)矩陣群,變換矩陣和乘法也構(gòu)成了變換矩陣群呢灶。對(duì)了吴超,你說,旋轉(zhuǎn)矩陣和加法能構(gòu)成群?jiǎn)幔?/p>
小白:額鸯乃。鲸阻。剛才好像說不行吧?
師兄:嗯缨睡,不行的 鸟悴,他們不滿足封閉性。剛才沒有細(xì)講奖年,下面仔細(xì)解釋原因细诸。我們知道旋轉(zhuǎn)矩陣R本身有一定的約束:
兩個(gè)旋轉(zhuǎn)矩陣R1+R2的結(jié)果就不能滿足上述約束了,但是R1*R2滿足陋守。此外震贵,旋轉(zhuǎn)矩陣還滿足結(jié)合律:(R1R2)R3=R1(R2R3),還有幺元是單位矩陣I水评,也有逆矩陣滿足R乘以R的逆等于幺元(單位陣)屏歹。還有,我們?cè)赟LAM里最常說的有兩個(gè)之碗,一個(gè)是特殊正交群SO(3)蝙眶,也就是旋轉(zhuǎn)矩陣群,還有特殊歐氏群SE(3)褪那,也就是變換矩陣群幽纷,3代表是三維的
小白:嗯嗯,書上看了博敬,我差不多理解群是個(gè)什么東東了友浸,那李群呢?
師兄:李群的定義是指連續(xù)光滑的群偏窝,比如我們前面說的旋轉(zhuǎn)矩陣群SO(3)收恢,你想象你拿個(gè)杯子就可以在空間中以某個(gè)支點(diǎn)連續(xù)的旋轉(zhuǎn)它,所以SO(3)它就是李群祭往。如果你一般旋轉(zhuǎn)一邊移動(dòng)它伦意,也是連續(xù)的或者說光滑的運(yùn)動(dòng),所以變換矩陣群SE(3)也是李群
▌三硼补、 李代數(shù)是李群的親戚嗎驮肉?
小白:嗯,師兄已骇,那李代數(shù)呢离钝,它和李群都姓李票编,他們什么關(guān)系?
師兄:(一臉黑線)我個(gè)人的理解是這樣的卵渴,就是我們相機(jī)在三維空間中是連續(xù)的旋轉(zhuǎn)或者變換的嘛慧域,剛才說過,而我們SLAM目的就是優(yōu)化求解相機(jī)的這個(gè)最佳的位姿T(變換矩陣)浪读,優(yōu)化方法一般都采用迭代優(yōu)化的方法吊趾,每次迭代都更新一個(gè)位姿的增量delta,使得目標(biāo)函數(shù)最小瑟啃。這個(gè)delta就是通過誤差函數(shù)對(duì)T微分得到的论泛。也就是說我們需要對(duì)變換矩陣T求微分(導(dǎo)數(shù)),我們先以SO(3)空間中的旋轉(zhuǎn)矩陣 R為例來說說吧蛹屿,你覺得如何對(duì)R求微分呢屁奏?
小白:矩陣怎么求。错负。求微分甘耿,這個(gè)能微分嗎常熙?以前沒有學(xué)過扒团小颓屑!
師兄:可以的,李群和李代數(shù)都姓李(笑)识颊,你還別說诚镰,他們之間的確存在某種微分關(guān)系。我們先把結(jié)論放這里:李代數(shù)對(duì)應(yīng)李群的正切空間祥款,它描述了李群局部的導(dǎo)數(shù)
小白:也就是說清笨,李代數(shù)對(duì)應(yīng)了李群的導(dǎo)數(shù)?
師兄:可以這么理解刃跛,你可以去看一下十四講中65-66頁那部分的推導(dǎo)抠艾,我們只關(guān)注兩個(gè)結(jié)論就行了
第一個(gè)結(jié)論:
看下面的公式,我們發(fā)現(xiàn)旋轉(zhuǎn)矩陣的微分是一個(gè)反對(duì)稱(也叫斜對(duì)稱)矩陣左乘它本身桨昙,也印證了我前面說的检号,矩陣是可以微分的。對(duì)于某個(gè)時(shí)刻的R(t)(李群空間)蛙酪,存在一個(gè)三維向量φ=(φ1齐苛,φ2,φ3)(李代數(shù)空間)滤否,用來描述R在t時(shí)刻的局部的導(dǎo)數(shù)
▌四脸狸、?反對(duì)稱矩陣是啥最仑?
小白:等一下藐俺,師兄炊甲,反對(duì)稱矩陣是啥?第一次聽說啊
師兄:哦哦欲芹,忘記解釋了卿啡。反對(duì)稱矩陣英文是skew symmetric matrix,有的地方也翻譯為斜對(duì)稱矩陣菱父,其實(shí)是一個(gè)東西
小白:這個(gè)反對(duì)稱矩陣是啥意思颈娜?
師兄:反對(duì)稱矩陣其實(shí)是將三維向量和三維矩陣建立對(duì)應(yīng)關(guān)系。它是這樣定義的:如果一個(gè)3 X 3的矩陣A滿足如下式子
那么A就是反對(duì)稱矩陣浙宜。你看左邊有個(gè)轉(zhuǎn)置官辽,右邊有個(gè)負(fù)號(hào),叫反對(duì)稱矩陣粟瞬,還是挺形象的
小白:額同仆,好像有點(diǎn)明白,不過這個(gè)有啥用叭蛊贰俗批?
師兄:先別急,先問你一個(gè)問題市怎,你覺得反對(duì)稱矩陣它的元素有什么特點(diǎn)岁忘?
小白:啊。区匠。特點(diǎn)啊干像,我想想(一分鐘過去了。驰弄。)
師兄:根據(jù)它的性質(zhì)蝠筑,先想想對(duì)角線元素。你看揩懒,上式等式左邊矩陣A轉(zhuǎn)置后什乙,對(duì)角線元素aii是不是還在對(duì)角線上?
小白:對(duì)哦已球,師兄好厲害臣镣!
師兄:額...別打岔,等式右邊智亮,所有元素取負(fù)號(hào)忆某,那么對(duì)于對(duì)角線元素aii來說,是不是滿足aii=-aii阔蛉?
小白:是哦弃舒,所以aii=0,也就是說反對(duì)稱矩陣對(duì)角線元素都為0?
師兄:bingo聋呢!確實(shí)是這樣苗踪。那么非對(duì)角線元素還有6個(gè),它們能不能精簡(jiǎn)呢削锰?
小白:我想想通铲,感覺好像是有重復(fù)的,好像可以用更少的元素來表示
師兄:沒錯(cuò)器贩!我舉個(gè)例子颅夺,等式左邊第2行第1列位置的元素,是矩陣A元素a12轉(zhuǎn)置后到了位置a21蛹稍,等式右邊原來a21變成了 -a21吧黄,所以其實(shí)對(duì)于矩陣A,元素a12 = -a21唆姐,所以用一個(gè)元素及其負(fù)數(shù)就可以表示矩陣中這兩個(gè)元素稚字,同理,其他4個(gè)元素也是這樣厦酬。所以胆描,其實(shí)矩陣A中非對(duì)角線元素只用3個(gè)元素就可以表示。也就是說反對(duì)稱矩陣A只有3個(gè)自由度
小白:嗯呢仗阅,師兄好厲害昌讲!不過。减噪。短绸。知道這些有啥用啊筹裕?
師兄:這個(gè)反對(duì)稱矩陣只有3個(gè)自由度很重要啊醋闭,這樣我們就可以把一個(gè)三維向量和一個(gè)三維矩陣建立對(duì)應(yīng)關(guān)系
小白:師兄,感覺還是很抽象俺洹证逻!
師兄:哦哦,那我舉個(gè)栗子給你看看抗斤。我們假設(shè)有一個(gè)反對(duì)稱矩陣A的定義如下:
小白:等下囚企,我看看是否滿足性質(zhì):該矩陣的轉(zhuǎn)置等于該矩陣元素取負(fù)數(shù)......
師兄:你看是不是我們前面推算的一致啊,對(duì)角線元素為0瑞眼,只有3個(gè)自由度龙宏?
小白:是哦,確實(shí)沒錯(cuò)伤疙!師兄繼續(xù)吧银酗!
師兄:我們定義對(duì)應(yīng)的一個(gè)三維向量:
然后我們用一個(gè)上三角符號(hào)來表示這個(gè)向量α和三維矩陣A的對(duì)應(yīng)關(guān)系:
小白:這個(gè)符號(hào)感覺很神奇啊!
師兄:是的黍特,通過這個(gè)符號(hào)蛙讥,我們把向量和矩陣建立了對(duì)應(yīng)關(guān)系。這個(gè)在后面非常重要衅澈。你再看看前面的第一個(gè)結(jié)論就好理解很多了
小白:嗯嗯键菱。確實(shí)是呢谬墙。師兄繼續(xù)下一個(gè)結(jié)論吧
▌五今布、?指數(shù)映射
師兄:好 ,下面說說第二個(gè)結(jié)論拭抬。通過高博一系列辛苦的 計(jì)算(笑)部默,我們最終得到下面式子,它的前提是R在原點(diǎn)附近的一階泰勒展開造虎,我們看到這個(gè)向量φ=(φ1傅蹂,φ2,φ3)反應(yīng)了R的導(dǎo)數(shù)性質(zhì)算凿,故稱它在SO(3)上的原點(diǎn) φ0 附近的正切空間上份蝴。這個(gè)φ正是李群大SO(3)對(duì)應(yīng)的李代數(shù)小so(3)
小白:好暈啊......
師兄:你這么理解吧,李代數(shù)小so(3)是三維向量φ的集合氓轰,每個(gè)向量φi的反對(duì)稱矩陣都可以表達(dá)李群(大SO(3))上旋轉(zhuǎn)矩陣R的導(dǎo)數(shù)婚夫,而R和φ是一個(gè)指數(shù)映射關(guān)系。也就是說署鸡,李群空間的任意一個(gè)旋轉(zhuǎn)矩陣R都可以用李代數(shù)空間的一個(gè)向量的反對(duì)稱矩陣指數(shù)來近似
小白:好繞的繞口令啊......
師兄:沒事案糙,你只要記得用旋轉(zhuǎn)矩陣表示的話就是李群空間,也是我們熟悉的表示方法靴庆。而用向量的反對(duì)稱矩陣表示的話就是李代數(shù)空間时捌,這兩個(gè)空間建立了聯(lián)系
小白:師兄,那這個(gè)古怪的式子:
如何計(jì)算呢炉抒?
師兄:嗯奢讨,這個(gè)用大一學(xué)的微積分就行
小白:微積分忘的差不多了......
師兄:沒事,其實(shí)就只用到指數(shù)e的泰勒展開
小白:師兄焰薄,書上的推導(dǎo)好麻煩扒菪Α!
師兄:先不管具體推導(dǎo)過程蛤奥,我們先來看看結(jié)論佳镜,你說的那個(gè)指數(shù)形式的古怪的式子通過運(yùn)用泰勒展開,以及反對(duì)稱矩陣的性質(zhì)凡桥,我們可以得到如下結(jié)果:
其中:三維向量 φ = θa蟀伸,a是一個(gè)長(zhǎng)度為1的方向向量。看到這個(gè)式子有沒有覺得很神奇啊掏?
小白:好像在哪里見過按缆纭!
師兄:嗯迟蜜,這個(gè)式子和羅德里格斯公式長(zhǎng)的一模一樣
小白:忘了什么是羅德里格斯公式了......
師兄:你還記得旋轉(zhuǎn)的表示方法嗎刹孔?有旋轉(zhuǎn)矩陣、旋轉(zhuǎn)向量娜睛、歐拉角髓霞、四元數(shù),而羅德里格斯公式是表示從旋轉(zhuǎn)向量到旋轉(zhuǎn)矩陣的轉(zhuǎn)換過程的
小白:師兄這么一說畦戒,我想起來了方库,旋轉(zhuǎn)向量也有一個(gè)旋轉(zhuǎn)角θ,旋轉(zhuǎn)軸也是單位方向向量
師兄:其實(shí)旋轉(zhuǎn)向量就是這里的李代數(shù)
小白:罢险纵潦?這怎么會(huì)扯上關(guān)系?
師兄:你可能有點(diǎn)反應(yīng)不過來垃环,不過的確小so(3)的李代數(shù)空間就是由旋轉(zhuǎn)向量組成的的空間邀层,其物體意義就是旋轉(zhuǎn)向量。而前面結(jié)論二中的指數(shù)映射關(guān)系就是羅德里格斯公式遂庄,他們?cè)跀?shù)學(xué)上本質(zhì)是一樣的
小白:真的好神奇傲仍骸!
師兄:嗯涧团,這樣我們可以說旋轉(zhuǎn)矩陣的導(dǎo)數(shù)可以由其對(duì)應(yīng)的旋轉(zhuǎn)向量指定只磷,指導(dǎo)如何在旋轉(zhuǎn)矩陣中進(jìn)行微積分運(yùn)算
小白:這樣就好理解多了!
▌六泌绣、?李群李代數(shù)之間的指數(shù)對(duì)數(shù)映射關(guān)系
師兄:嗯钮追,反過來,用對(duì)數(shù)映射也能把大SO(3)李群空間中元素映射到小so(3)李代數(shù)空間中去阿迈。前面我們都是講的SO(3)上的映射關(guān)系元媚,放到SE(3)上推導(dǎo)類似,也是泰勒展開苗沧,旋轉(zhuǎn)矩陣R映射結(jié)果和SO(3)一樣刊棕,平移部分指數(shù)映射后會(huì)有稍許的不同,它前面多了一個(gè)系數(shù)矩陣待逞,這些都可以自己證明一下
小白:嗯嗯甥角,師兄,是不是只要記住高博大神書上的對(duì)應(yīng)關(guān)系圖就行啦识樱?
師兄:這個(gè)圖要理解透徹喔嗤无!
小白:對(duì)了震束,師兄,好像還有一個(gè)左擾動(dòng)当犯,右擾動(dòng)什么的垢村,這個(gè)是干什么用的呀?
師兄:這個(gè)是用李代數(shù)解決求導(dǎo)問題時(shí)使用的方法嚎卫。對(duì)了嘉栓,李代數(shù)是對(duì)加法封閉的嗎?
小白:嗯拓诸,李代數(shù)是由向量組成的侵佃,向量對(duì)加法運(yùn)算是封閉的
師兄:嗯,學(xué)的真快恰响!你說的沒錯(cuò)趣钱。李代數(shù)求導(dǎo)分兩種:一種是用李代數(shù)表示位姿涌献,然后根據(jù)李代數(shù)加法來對(duì)李代數(shù)求導(dǎo)胚宦。這種方法書中也推導(dǎo)了,結(jié)果中有復(fù)雜的雅克比公式燕垃,不是很方便枢劝。一般都用第二種,就是對(duì)李群進(jìn)行左乘或者右乘微小的擾動(dòng)卜壕,然后對(duì)該擾動(dòng)求導(dǎo)您旁。書上高博也推導(dǎo)了,你看結(jié)果還是挺簡(jiǎn)潔的
小白:那我們就用擾動(dòng)模型好啦~
師兄:確實(shí)實(shí)際SLAM問題中轴捎,擾動(dòng)模型比較實(shí)用方便鹤盒。擾動(dòng)模型的推導(dǎo)一定要自己推一遍哦!
小白:謝謝師兄耐心解答侦副,走侦锯,請(qǐng)你吃燒烤去。
補(bǔ)充:
李群是指具有連續(xù)(光滑)性質(zhì)的群(流行)秦驯。像整數(shù)群Z那樣離散的群沒有連續(xù)性質(zhì)尺碰,所以不是李群。而SO(n)和SE(n)译隘,它們?cè)趯?shí)數(shù)空間上是連續(xù)的亲桥。我們能夠直觀地想像一個(gè)剛體能夠連續(xù)地在空間上運(yùn)動(dòng)。李群是一個(gè)高維空間裡面的低維群面固耘,或者說是低維流形题篷,在流形的原點(diǎn)附近做一個(gè)切空間(切平面),在這個(gè)切空間上找到的任意點(diǎn)我都可以透過exp映射回去(回去李群中)厅目,同理也能映射回來