筆者在閑暇之余學(xué)習(xí)了SLAM相關(guān)的內(nèi)容,深感機(jī)器人狀態(tài)估計(jì)領(lǐng)域的博大精深。今天,筆者就拋磚引玉,談?wù)凷LAM領(lǐng)域中的VIO(視覺慣性里程計(jì))。
初始SLAM
SLAM(Simultaneous Localization and Mapping),是指搭載特定傳感器的主體,在沒有環(huán)境先驗(yàn)信息的情況下,于運(yùn)動過程中建立環(huán)境的模型,同時估計(jì)自己的運(yùn)動。SLAM可以解決自主運(yùn)動的兩大基本問題:
我在什么地方?——定位
周圍環(huán)境是什么樣子?——建圖
定位與建圖=內(nèi)外兼修,定位側(cè)重對自身的了解,建圖側(cè)重對外在的了解。
為什么用VIO?
單目視覺SLAM無法解決尺度問題,而將IMU估計(jì)的位姿序列與相機(jī)估計(jì)的位姿序列進(jìn)行對齊可以恢復(fù)出相機(jī)軌跡的真實(shí)尺度;
視覺SLAM一般取第一幀作為世界坐標(biāo)系,而IMU中的加速度計(jì)測量值包括重力向量,可以根據(jù)其將估計(jì)的位姿轉(zhuǎn)換到垂直于地面的世界坐標(biāo)系中;
IMU幀間積分得到的位姿可以預(yù)測出圖像幀在下一時刻的位姿以及特征點(diǎn)在下一幀圖像上的位置,并將其作為初值帶入非線性優(yōu)化中,減少優(yōu)化迭代次數(shù);
IMU測量可以提高視覺SLAM在某些復(fù)雜場景的魯棒性,在于相機(jī)快速運(yùn)動、動態(tài)障礙物、光線明暗變化明顯、環(huán)境中紋理缺失等導(dǎo)致圖像信息質(zhì)量較差的情況下,利用IMU信息仍能得到有效的定位結(jié)果。
緊耦合的VIO
根據(jù)狀態(tài)向量中是否加入圖像特征信息來判斷是否為松緊耦合,如圖所示,在VIO中將圖像特征以及IMU的位置、方向、速度作為狀態(tài),構(gòu)建非線性優(yōu)化問題進(jìn)行求解,采用梯度下降的方法同時對圖像特征以及位置、方向、速度進(jìn)行優(yōu)化,從而得到對機(jī)器人狀態(tài)的最優(yōu)估計(jì)。
VIO的框架
VIO過程可以用上圖進(jìn)行表示,其中,為路標(biāo)點(diǎn),,,為三個時刻相機(jī)的位置點(diǎn),,,為三個時刻IMU的位置點(diǎn)。由于IMU存在著高斯白噪聲以及導(dǎo)數(shù)服從高斯分布的偏置,相機(jī)也存在著光學(xué)畸變誤差、機(jī)械誤差等,因此無論是相機(jī)觀測到的數(shù)據(jù)還是IMU測量的數(shù)據(jù)都不可靠。因?yàn)橄鄼C(jī)觀測的數(shù)據(jù)以及IMU測量的數(shù)據(jù)具有一定的關(guān)聯(lián)性,基于此構(gòu)建優(yōu)化問題,便可以得到對真實(shí)路標(biāo)點(diǎn)的最優(yōu)估計(jì),同時也可以得到對IMU或者相機(jī)(機(jī)器人本體)的最優(yōu)估計(jì)。
基于以上原理,VIO的優(yōu)化問題可以表示為:
以上三項(xiàng)分別為邊緣化的先驗(yàn)信息、IMU的測量殘差、視覺的重投影誤差。其中,視覺的重投影誤差是指像素坐標(biāo)(觀測到的投影位置)與3D點(diǎn)按照當(dāng)前估計(jì)的位姿進(jìn)行第二次投影得到的位置相比較得到的誤差。邊緣化的先驗(yàn)信息是指邊緣化后的剩余變量更新后的殘差,具體的會在邊緣化一節(jié)進(jìn)行分析。
邊緣化
要講邊緣化,首先大家要知道實(shí)際使用中SLAM的優(yōu)化方法,它并不是對所有的觀測進(jìn)行優(yōu)化,而是會構(gòu)建一個窗口,只對窗口內(nèi)觀測到的狀態(tài)值進(jìn)行優(yōu)化,這樣可以大大的減少計(jì)算量以及優(yōu)化的時間。但是由于在移動過程中,會不斷的觀測到新的狀態(tài),因此需要讓構(gòu)建的窗口滑動起來,從而能夠包換最新觀測到的狀態(tài),并且扔掉最早觀測到的狀態(tài),這種優(yōu)化方法叫做基于滑動窗口的優(yōu)化方法。
但是,由于在連續(xù)的一些時刻中,相機(jī)可能會觀測到用一個路標(biāo)點(diǎn),所以不能簡單的扔掉之前觀測到的狀態(tài)值,需要其信息全部傳遞到之后的狀態(tài)中。簡單的說,這是一個求邊際概率的問題,形如:
b可以指代為需要扔掉的最早觀測到的狀態(tài)。通過求解邊際概率,最早觀測到狀態(tài)量信息便傳遞到了該滑動窗口剩余的狀態(tài)量中。此后,我們通過講最新觀測到的狀態(tài)量加入到滑動窗口中,便可以進(jìn)行新一輪的非線性優(yōu)化。
講到了這里,我想大家已經(jīng)能夠理解邊緣化的先驗(yàn)誤差是什么了吧,沒錯,他就是通過上述求解邊際概率方式更新后的誤差,該誤差加上最新觀測到的狀態(tài)量的誤差,也就是IMU的測量誤差以及相機(jī)的觀測誤差即可構(gòu)建出上一節(jié)等式的優(yōu)化問題。
寫到最后
VIO不僅包含上述的非線性優(yōu)化問題,還有其他的一些問題:
首先是VIO的初始化,初始化的目的是為了恢復(fù)單目相機(jī)的尺度信息,求解IMU的偏置,IMU與相機(jī)之間的轉(zhuǎn)換關(guān)系,并將優(yōu)化的坐標(biāo)系轉(zhuǎn)換到世界坐標(biāo)系下(可根據(jù)重力加速度為g得到z軸)。
除了初始化,還有回環(huán)檢測問題,基于優(yōu)化的方法依舊會有誤差,尤其是長時間運(yùn)轉(zhuǎn)后,因此可以通過檢測觀測到路標(biāo)點(diǎn)是否之前已經(jīng)觀測到,構(gòu)建回環(huán),從而增強(qiáng)優(yōu)化問題的約束,避免陷入局部極小值點(diǎn),保證結(jié)果的最優(yōu)性。
最后,就是建圖模塊了,根據(jù)優(yōu)化后的狀態(tài)量(機(jī)器人本體的位姿以及路標(biāo)點(diǎn)的位置)可以構(gòu)建出地圖,從而用于機(jī)器人的導(dǎo)航。
-
SLAM
+關(guān)注
關(guān)注
24文章
436瀏覽量
32359 -
VIO
+關(guān)注
關(guān)注
0文章
11瀏覽量
10333 -
IMU
+關(guān)注
關(guān)注
6文章
340瀏覽量
46531
原文標(biāo)題:VIO從入門到精通(放棄)
文章出處:【微信號:vision263com,微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
如何理解SLAM用到的傳感器輪式里程計(jì)IMU、雷達(dá)、相機(jī)的工作原理與使用場景?精選資料分享
請問如何理解SLAM用到的傳感器輪式里程計(jì)IMU、雷達(dá)、相機(jī)的工作原理?
視覺里程計(jì)的詳細(xì)介紹和算法過程

視覺語義里程計(jì)的詳細(xì)資料說明

一種R3LIVE++的LiDAR慣性視覺融合框架
基于單個全景相機(jī)的視覺里程計(jì)
OV2SLAM(高速視覺slam)簡析
輪式移動機(jī)器人里程計(jì)分析
在城市地區(qū)使用低等級IMU的單目視覺慣性車輪里程計(jì)

用于任意排列多相機(jī)的通用視覺里程計(jì)系統(tǒng)

一種新型激光雷達(dá)慣性視覺里程計(jì)系統(tǒng)介紹

評論