一、“續(xù)”的由來(lái)
上一篇文章已經(jīng)講了SLAM的后端優(yōu)化徘意,使用的是Bundle Adjustment方法苔悦。而且介紹了如何利用矩陣的稀疏性加速運(yùn)算。不過(guò)現(xiàn)實(shí)往往比我們想象的更殘酷椎咧,即使利用稀疏性加速玖详,隨著地圖越來(lái)越大,計(jì)算量仍然會(huì)增大到無(wú)法承受的地步勤讽。
于是蟋座,聰明的人們又想出各種方法加速優(yōu)化,這就是本文將要介紹的內(nèi)容脚牍。
在上一篇文章提到的BA圖優(yōu)化中蜈七,是把所有相機(jī)位姿和路標(biāo)點(diǎn)都放在一起優(yōu)化。從優(yōu)化目標(biāo)的數(shù)量入手莫矗,我們可以想辦法做一些簡(jiǎn)化。比如砂缩,只優(yōu)化相機(jī)位姿而不優(yōu)化路標(biāo)點(diǎn)作谚,就是所謂的“位姿圖(Pose Graph)優(yōu)化”。只優(yōu)化局部區(qū)域的相機(jī)位姿和路標(biāo)點(diǎn)庵芭,并考慮不同位姿的權(quán)重妹懒,稱為“共視圖(Covisibility Graph)優(yōu)化”。將圖化簡(jiǎn)為最小生成樹(shù)再優(yōu)化双吆,稱為“本質(zhì)圖(Essential Graph)優(yōu)化”眨唬。共視圖優(yōu)化和本質(zhì)圖優(yōu)化是ORB-SLAM中采用的優(yōu)化方式会前,具體內(nèi)容可以參考相關(guān)論文。本文著重介紹一下位姿圖優(yōu)化匾竿。
二瓦宜、位姿圖(Pose Graph)的意義
這里所說(shuō)的圖其實(shí)就是圖優(yōu)化中圖的概念。仍然是用頂點(diǎn)表示優(yōu)化變量岭妖,用邊表示誤差項(xiàng)临庇。回憶上一篇文章中的BA優(yōu)化昵慌,是把相機(jī)位姿和路標(biāo)點(diǎn)當(dāng)成優(yōu)化變量假夺,把路標(biāo)點(diǎn)的重投影誤差當(dāng)成誤差項(xiàng),只在相機(jī)位姿頂點(diǎn)和路標(biāo)點(diǎn)之間建立邊的連接≌剩現(xiàn)在已卷,為了減小運(yùn)算量,我們只把相機(jī)位姿當(dāng)成優(yōu)化變量淳蔼,讓相鄰的相機(jī)位姿之間用邊連接起來(lái)侧蘸。此時(shí),邊表達(dá)的就不是重投影誤差了肖方,而是兩個(gè)相機(jī)位姿之間相對(duì)運(yùn)動(dòng)估計(jì)的誤差闺魏。這個(gè)誤差是用相機(jī)位姿頂點(diǎn)的值計(jì)算出的相對(duì)運(yùn)動(dòng)與用特征點(diǎn)法估計(jì)的相機(jī)運(yùn)動(dòng)之間的偏差,本質(zhì)上與重投影誤差沒(méi)有區(qū)別俯画,都是調(diào)整相機(jī)位姿使路標(biāo)點(diǎn)在相機(jī)平面上的投影最準(zhǔn)確析桥。
定義好優(yōu)化變量和誤差項(xiàng)后,接下來(lái)就是求誤差項(xiàng)關(guān)于優(yōu)化變量的偏導(dǎo)數(shù)艰垂。求導(dǎo)過(guò)程請(qǐng)腦補(bǔ)泡仗,此處省略5000字:-)
三、位姿圖優(yōu)化的效果
下圖是一個(gè)待優(yōu)化的相機(jī)位姿圖猜憎,看起來(lái)有些扭曲娩怎。
優(yōu)化后變成了下面這個(gè)樣子。
多么完美的球體耙雀獭截亦!
事實(shí)上,優(yōu)化前的位姿圖就是在生成的球體上添加了觀測(cè)噪聲后形成的柬讨”廊浚看來(lái)位姿圖優(yōu)化完全去除了噪聲,恢復(fù)了正確的位姿踩官。
這個(gè)例子的完整代碼請(qǐng)到高翔博士的GitHub上下載却桶,地址是:https://github.com/gaoxiang12/slambook/tree/master/ch11
四、參考資料
《視覺(jué)SLAM十四講》第11講 后端2 高翔
有人知道orb-slam中的covisibility graph的定義嗎? 知乎
ORB-SLAM Raúl Mur-Artal, Juan D. Tardós, J. M. M. Montiel