再進(jìn)行推導(dǎo)之前先回憶一下
我們知道對(duì)于某個(gè)單個(gè)節(jié)點(diǎn)的條邊而言
每條邊的誤差
那么這個(gè)單個(gè)節(jié)點(diǎn)的條邊的一個(gè)整體誤差總和公式的泰勒一階近似
為
為了后續(xù)的推導(dǎo)述呐,這里要先講清楚一些說(shuō)明
首先這里的 是一個(gè)的維度
且每一個(gè)應(yīng)該是一個(gè)的維度,這是因?yàn)檎`差是個(gè)二維像素特征點(diǎn)
于是它由兩部分組成,具體的推導(dǎo)可以看第五節(jié)
第一部分
可以簡(jiǎn)計(jì)為
第二部分
可簡(jiǎn)計(jì)為
加在一起就是
考慮多個(gè)節(jié)點(diǎn)的時(shí)候,如下圖压语,此時(shí)和的數(shù)量關(guān)系是不存在具體的規(guī)律的如下圖
我們回過(guò)頭再來(lái)看單個(gè)節(jié)點(diǎn)所有邊的這個(gè)誤差求和公式
我能不能把求和項(xiàng)去掉
方法是有的,不如就以上圖為例
假設(shè)相機(jī)的姿態(tài)為
我們知道對(duì)于觀察的情況的誤差邊雅可比矩陣為
此時(shí)我們發(fā)現(xiàn)是可以看見(jiàn)這些點(diǎn)的二汛,于是我們冒出了一個(gè)絕妙的點(diǎn)子蔼紧,不如我們把這些點(diǎn)對(duì)應(yīng)的雅可比矩陣都連起來(lái)
這里需要對(duì)這個(gè)下標(biāo)做個(gè)說(shuō)明,前面的指代對(duì)的偏導(dǎo),后面的苏遥,是對(duì)的各自的偏導(dǎo)饼拍,這非常重要
進(jìn)一步想,我們發(fā)現(xiàn)是看不見(jiàn)的田炭,那能不能也把偏導(dǎo)數(shù)一起寫(xiě)進(jìn)來(lái)师抄,其實(shí)也是可以的,我們知道因?yàn)?img class="math-inline" src="https://math.jianshu.com/math?formula=T_1" alt="T_1" mathimg="1">看不見(jiàn)教硫,那么意味著這兩個(gè)點(diǎn)對(duì)于整體邊的誤差影響是司澎,為了不失一般性,我們向下面這樣擴(kuò)充
再進(jìn)一步栋豫,我們說(shuō)挤安,這里好像還有一個(gè)節(jié)點(diǎn)啊,雖然它不是相關(guān)的邊丧鸯,但是也是全地圖的一個(gè)節(jié)點(diǎn)蛤铜,我們發(fā)現(xiàn),它對(duì)于T_1也是不存在影響的丛肢,于是围肥,對(duì)的偏導(dǎo)也全為0
此時(shí)這里單個(gè)節(jié)點(diǎn)對(duì)于全體地圖所有姿態(tài)和觀察點(diǎn)的雅各比矩陣,就是這么長(zhǎng)了
到這一步蜂怎,我們已經(jīng)把單節(jié)點(diǎn)的
的循環(huán)體拆掉
我們可以直接寫(xiě)
注意這里的函數(shù)已經(jīng)變成了也就是說(shuō)只和單個(gè)姿態(tài)相關(guān)了穆刻,姿態(tài)內(nèi)部和其他所有觀察點(diǎn)以及所有其他姿態(tài)的關(guān)系已經(jīng)統(tǒng)一整理起來(lái)了
這里的形如
值的注意的是,此時(shí)的變量也變了
此時(shí)待優(yōu)化的變量可寫(xiě)為
這應(yīng)該是很自然的事情了吧杠步,都不需要多解釋了
事情還沒(méi)完氢伟,剛才說(shuō)了,這只是其中的單個(gè)節(jié)點(diǎn)
對(duì)于上面的方程幽歼,我們還需要再套一層,以表示所有的節(jié)點(diǎn)
就當(dāng)前例子而言朵锣,因?yàn)閳?chǎng)景中只包含兩個(gè)觀察位置,,所以
在這之前甸私,我們不妨先對(duì)的雅可比矩陣看圖抄寫(xiě)一遍诚些,如果沒(méi)看錯(cuò)的話(huà)應(yīng)該是長(zhǎng)這樣
之所以也寫(xiě)成這樣,是為了維持對(duì)優(yōu)化變量
的統(tǒng)一性
很好皇型,現(xiàn)在我們也可以拆掉對(duì)于所有節(jié)點(diǎn)相關(guān)的求和循環(huán)了
此時(shí)的優(yōu)化變量不變
依然是
而 變成了拼接的一個(gè)矩陣诬烹,這時(shí)候不是左右拼接,而是變成了上下拼接
我們把它寫(xiě)出來(lái)
讀者可能已經(jīng)發(fā)現(xiàn)了一點(diǎn)規(guī)律弃鸦,那么現(xiàn)在的問(wèn)題是绞吁,假如說(shuō)整個(gè)地圖場(chǎng)景中有個(gè),以及個(gè)
難道也是這么排,
然而事實(shí)就是如此寡键,你會(huì)注意到這非常的浪費(fèi)空間掀泳,小編也很無(wú)奈呢瞪浸,不過(guò)在這之前先把事情交代完
對(duì)于任意的個(gè),以及個(gè)的情況
我們定義優(yōu)化變量
我們定義
我們簡(jiǎn)化為下面的情況蕾殴,
而對(duì)于雅可比矩陣也是同理载迄,可以分成兩塊
前面部分是姿態(tài)矩陣的偏導(dǎo)數(shù)捉兴,且全在對(duì)角線(xiàn)上,后邊部分是所有可看見(jiàn)的世界坐標(biāo)點(diǎn)的偏導(dǎo)數(shù)矩陣
我們可以簡(jiǎn)單的計(jì)作
那么我們整理
接下來(lái)我們知道马僻,后續(xù)需要迭代求解全局BA庄拇,總是逃不過(guò)一個(gè)牛頓迭代增量公式的,
可以通過(guò)
或
求全微分令各方向偏導(dǎo)數(shù)為零求極小值
這里就不算了韭邓,前面算了太多遍措近,我直接寫(xiě)出高斯牛頓迭代公式
這個(gè)等式中默認(rèn)是豎著放的,所以才這么寫(xiě)
而在我們這里的例子中默認(rèn)定義就是橫著放的女淑,所以此處需要改成
也就是說(shuō)這里的
為了較好的展示矩陣長(zhǎng)什么樣子瞭郑,這里假設(shè)全局地圖里情況如圖
那么此時(shí)得到的雅可比矩陣和矩陣如下
現(xiàn)實(shí)中一般相機(jī)位姿的數(shù)量,以及路標(biāo)點(diǎn)數(shù)量鸭你,會(huì)存在如下關(guān)系屈张,即,那么此時(shí)的矩陣很大概率長(zhǎng)這個(gè)樣子
可以看見(jiàn)這樣的矩陣是一個(gè)很稀疏的矩陣,而且有明顯特征袱巨,對(duì)這樣的
,就可以做一些更快速的做法
在slam中常用的做法是消元阁谆,也稱(chēng)邊緣化
我們注意到
H矩陣的四個(gè)塊中,左上角愉老,和右下角场绿,都是對(duì)角塊矩陣,于是我們重新命名這幾個(gè)塊如下
于是線(xiàn)性方程組可以寫(xiě)成