最近百度開(kāi)源了個(gè)slam系統(tǒng)ice-ba萍倡,測(cè)試發(fā)現(xiàn)性能強(qiáng)大,代碼方面工程優(yōu)化做了很多辟汰,總的來(lái)說(shuō)前端使用了光流列敲,后端正是論文提出上的增量式BA了阱佛。
這個(gè)增量式的ice-BA主要分為三個(gè)部分,全局BA戴而,局部BA以及relative-marg凑术,前兩者采用了增量式方法提升了后端速度,后者保證了local-BA和global-BA的一致性對(duì)精度有所貢獻(xiàn)所意。
Global BA
論文最先提及的是他們先前已經(jīng)在Robust Keyframe-based Dense SLAM with an RGB-D Camera發(fā)表過(guò)的Global BA方法淮逊,這個(gè)方法認(rèn)為在BA的時(shí)候,之前已經(jīng)算過(guò)的那些量再次計(jì)算對(duì)精度并不會(huì)有太大的改善扶踊,從而沒(méi)必要重新線性化(因?yàn)榧词咕€性化了泄鹏,算出來(lái)的雅可比矩陣也沒(méi)啥變化),更進(jìn)一步秧耗,沒(méi)必要每次在求解線性方程組的時(shí)候還去把那些沒(méi)有重新線性化的部分做舒爾消元备籽,只需要挑選一部分算一下即可。
之后求解舒爾消元完畢那個(gè)線性方程組的的時(shí)候分井,使用PCG進(jìn)行計(jì)算车猬。更多的算法細(xì)節(jié)不再過(guò)多的說(shuō)明,僅僅對(duì)挑選策略簡(jiǎn)單說(shuō)明一下尺锚,總的來(lái)說(shuō)有兩個(gè):
- 新加入的一些楨和點(diǎn)诈唬,無(wú)腦線性化
- 如果點(diǎn)的更新量大于某個(gè)閾值,更新點(diǎn)缩麸,并對(duì)那個(gè)點(diǎn)連接的一部分重新線性化
Local BA
對(duì)于local-BA铸磅,上訴方法帶來(lái)的提升就有限了,由于幾乎每個(gè)點(diǎn)都被window里面所有的楨看到杭朱,因此即使只重新線性化一部分點(diǎn)阅仔,也會(huì)帶來(lái)很大的改動(dòng),因此在local-ba這個(gè)環(huán)節(jié)弧械,提出了一個(gè)更高效的針對(duì)local-ba的后端設(shè)計(jì)Sub-Track based IBA (ST-IBA)八酒。這個(gè)方法的主要思路是把長(zhǎng)期跟蹤的點(diǎn)分成很多短期跟蹤段。
這樣每次重新算點(diǎn)的時(shí)候刃唐,重新線性化的區(qū)域減小羞迷,而且做了舒爾消元后,引入的稠密矩陣快也有限画饥,因此提高了效率衔瓮。
relative-marginalization
對(duì)于vio系統(tǒng),在local-window中抖甘,往往都有marg這一步热鞍,把有些本應(yīng)該出了window的信息以另一種形式存儲(chǔ)下來(lái)。但是有g(shù)lobal-ba存在時(shí),marg的效果未必有很大的提升薇宠,反而可能會(huì)下降偷办,一方面global-ba本身就會(huì)利用那些沒(méi)在window中的信息,另一方面澄港,由于誤差的累計(jì)椒涯,反而marg帶來(lái)的先驗(yàn)可能反而會(huì)最終的精度,原因如下:
浩敏師兄這篇論文提出了一種marg的方法回梧,保持了 marginalization prior和global BA的一致性废岂,具體操作如圖所示,我就不做過(guò)多的翻譯
基本思想其實(shí)比較簡(jiǎn)單漂辐,之前做marg的時(shí)候,考慮的坐標(biāo)系都是全局坐標(biāo)系棕硫,或者說(shuō)選定的Identity坐標(biāo)系髓涯,這個(gè)會(huì)導(dǎo)致每次的先驗(yàn)信息在“告訴”local-ba:“我在哪里”。長(zhǎng)期不斷積累的誤差哈扮,會(huì)導(dǎo)致這個(gè)先驗(yàn)越來(lái)越差纬纪,于是為了避免這個(gè)誤差因?yàn)樵蚍e累,只需要把每次相對(duì)與Identity變成相對(duì)于最新的global坐標(biāo)就行了滑肉,也就是需要讓這個(gè)先驗(yàn)相對(duì)量轉(zhuǎn)化為相對(duì)于剛剛出窗口的那個(gè)關(guān)鍵幀包各,從而避免了誤差的累積。