视觉SLAM技术应用
視覺SLAM技術(shù)應(yīng)用
·
SLAM技術(shù)背景
SLAM技術(shù)全稱Simultaneous localization and mapping,中文為“同時(shí)定位與地圖構(gòu)建”。SLAM可以在未知的環(huán)境中實(shí)時(shí)定位自身的位置,并同時(shí)構(gòu)建環(huán)境三維地圖,是計(jì)算機(jī)視覺領(lǐng)域以及機(jī)器人領(lǐng)域中非常關(guān)鍵的一項(xiàng)技術(shù),有著非常廣泛的應(yīng)用,例如VR、AR、機(jī)器人、自動(dòng)駕駛等領(lǐng)域。
SLAM技術(shù)在機(jī)器人領(lǐng)域應(yīng)用廣泛,可以采用各種各樣的傳感器,例如激光雷達(dá),深度攝像頭,單目、雙目、多目攝像頭,慣性傳感器等等。
根據(jù)傳感器的信息,SLAM可以實(shí)時(shí)計(jì)算自身位置(在空間中的位置和朝向),并同時(shí)恢復(fù)場(chǎng)景的三維結(jié)構(gòu),構(gòu)建環(huán)境三維地圖。根據(jù)這個(gè)三維結(jié)構(gòu)恢復(fù)的稀疏程度,可以分為稀疏SLAM和稠密SLAM,其中稠密SLAM是把場(chǎng)景的三維幾何結(jié)構(gòu)都恢復(fù)出來(lái)。
SLAM技術(shù)經(jīng)過多年的發(fā)展,整體框架相對(duì)穩(wěn)定,目前主流SLAM系統(tǒng)采用的是2007年牛津大學(xué)提出的并行跟蹤與建圖框架。首先,前臺(tái)線程根據(jù)輸入的傳感器信息,實(shí)時(shí)計(jì)算設(shè)備位姿。同時(shí)后臺(tái)線程持續(xù)構(gòu)建地圖,并對(duì)三維點(diǎn)云進(jìn)行優(yōu)化,以減少實(shí)時(shí)計(jì)算帶來(lái)的誤差累積。一旦存在回路,需要把回路檢測(cè)出來(lái)并進(jìn)行閉合。
PTAM是第一個(gè)真正接近實(shí)際應(yīng)用的技術(shù),后面的SLAM系統(tǒng)基本延續(xù)這個(gè)框架,像DTAM主要是做小場(chǎng)景比較稠密的幾何重建,ORB-SLAM對(duì)PTAM框架做了進(jìn)一步改進(jìn),包括自動(dòng)初始化,采用ORB特征,以及有回路閉合功能。有一些直接法(例如DSO)還能夠做到大場(chǎng)景半稠密的重建。
·
視覺SLAM的技術(shù)挑戰(zhàn)
視覺SLAM,主要使用單目、雙目或多目攝像頭。從廣義上講,也可以以視覺傳感器為主,加上其他傳感器作為輔助。視覺SLAM最主要的優(yōu)勢(shì)是成本比較低廉,目前已經(jīng)被證明至少在小范圍內(nèi)可以實(shí)現(xiàn)較高的定位精度,可以滿足AR的應(yīng)用要求。
視覺SLAM的基本原理是多視圖幾何。空間上的三維點(diǎn),如果從某個(gè)視角看不被遮擋,那就有對(duì)應(yīng)的投影點(diǎn)。另外,它有對(duì)應(yīng)的二維觀測(cè)點(diǎn),理論上三維點(diǎn)的投影點(diǎn)跟二維的觀測(cè)點(diǎn)應(yīng)該是重合的,但實(shí)際上由于噪聲等原因不會(huì)嚴(yán)格重合,這時(shí)通過最小化目標(biāo)函數(shù),可以把這里的投影矩陣P和三維點(diǎn)X都解出來(lái)。
在實(shí)際應(yīng)用中,視覺SLAM面臨精度和穩(wěn)定性,以及實(shí)時(shí)性這兩大關(guān)鍵挑戰(zhàn)。精度和穩(wěn)定性方面,因?yàn)榄h(huán)境往往是動(dòng)態(tài)變化的,弱紋理和重復(fù)紋理問題很容易造成視覺特征匹配不準(zhǔn)確,從而導(dǎo)致優(yōu)化計(jì)算不穩(wěn)定。實(shí)時(shí)性方面,主要是在大規(guī)模場(chǎng)景下,SLAM計(jì)算復(fù)雜度高,而低功耗設(shè)備的計(jì)算能力有限,如何做到實(shí)時(shí)計(jì)算。
關(guān)鍵思路在于,對(duì)SLAM穩(wěn)定求解,這可以從約束的正確性和約束的穩(wěn)定性這兩個(gè)方面考慮。SLAM本質(zhì)上就是一個(gè)目標(biāo)函數(shù)構(gòu)造和優(yōu)化問題。為此,我們要保證目標(biāo)函數(shù)里的約束項(xiàng)都是正確的,這就需要盡可能把錯(cuò)誤的匹配剔除掉。在弱紋理情況下,匹配點(diǎn)過少使得約束項(xiàng)不足,優(yōu)化求解不穩(wěn)定。解決這個(gè)問題一般有兩方面的思路,一個(gè)是可以通過添加一些運(yùn)動(dòng)先驗(yàn)的約束,使約束方程變得比較穩(wěn)定。另一個(gè)是添加場(chǎng)景的先驗(yàn)結(jié)構(gòu)約束,比如一些平面結(jié)構(gòu)約束,把這樣的先驗(yàn)結(jié)構(gòu)約束加入到這個(gè)目標(biāo)函數(shù)里,也會(huì)使得它變得穩(wěn)定。
基于這兩個(gè)思路,我們開展了面向復(fù)雜場(chǎng)景的視覺SLAM技術(shù)的研究工作。比如在2013年的RDSLAM這個(gè)工作,我們會(huì)在線地檢測(cè)哪些特征點(diǎn)發(fā)生了改變,同時(shí)排除遮擋造成的情況。通過在線持續(xù)的檢測(cè)變化,及時(shí)更新地圖,使得地圖里的三維點(diǎn)都是有效的,從而能夠處理場(chǎng)景動(dòng)態(tài)變化甚至逐漸改變的情況。2016年,我們提出的RKSLAM工作,能夠在移動(dòng)設(shè)備做到實(shí)時(shí)。它主要是通過視覺方法估計(jì)出連續(xù)幀之間的運(yùn)動(dòng)角度得到角速度的估計(jì),然后把這些運(yùn)動(dòng)約束加入到目標(biāo)函數(shù)里進(jìn)行優(yōu)化求解,從而大大提升了位姿估計(jì)的穩(wěn)定性,即使在晃動(dòng)比較劇烈的情況下依然比較穩(wěn)定。另外,從速度上來(lái)看,我們的RKSLAM速度是ORB-SLAM的將近五倍。
第二個(gè)關(guān)鍵思路是如何解決計(jì)算效率的問題。這里非常關(guān)鍵的技術(shù)就是集束調(diào)整,通過最小化一個(gè)目標(biāo)函數(shù)來(lái)對(duì)所有相機(jī)的參數(shù)和三維點(diǎn)進(jìn)行同時(shí)優(yōu)化。相機(jī)參數(shù)和三維點(diǎn)數(shù)目可能非常多,復(fù)雜度非常高,非線性優(yōu)化的每次迭代都是在求解一個(gè)線性方程組。我們發(fā)現(xiàn)這個(gè)Hessian矩陣是高度稀疏的,如果充分利用這個(gè)稀疏性來(lái)求解,效率會(huì)高很多。
但即使充分利用了稀疏性,求解效率依然是集束調(diào)整的一大挑戰(zhàn)。對(duì)于大尺度三維場(chǎng)景重建,無(wú)論是內(nèi)存、效率都會(huì)遇到這樣的瓶頸,而采用局部?jī)?yōu)化策略很容易陷入局部最優(yōu)解。對(duì)于實(shí)時(shí)SLAM來(lái)說(shuō),還面臨功耗問題以及如何在精度和效率之間取舍的問題。
可以從分治求解和增量式計(jì)算這兩個(gè)思路對(duì)集束調(diào)整進(jìn)行加速。
分治求解主要有兩類方式,一類是基于分段的BA,比如將一個(gè)長(zhǎng)序切分為若干段短序列,每段序列整體做一個(gè)7DoF的相似變換。如果優(yōu)化后誤差大于閾值,則繼續(xù)分裂再優(yōu)化。通過這樣的由粗到細(xì)的優(yōu)化策略,來(lái)實(shí)現(xiàn)累積誤差的快速分散和優(yōu)化。另一類思路是分布式BA,將整體切分成若干個(gè)子地圖,各地圖獨(dú)立優(yōu)化,然后通過共享變量的方式來(lái)實(shí)現(xiàn)整體的優(yōu)化。
很多時(shí)候SLAM往往是新來(lái)一個(gè)關(guān)鍵幀就要BA優(yōu)化一下。增量式BA的代表性方法有iSAM、iSAM2,以后我們提出的EIBA、ICE-BA。增量式BA方法的主要思想是充分利用前面構(gòu)造好的信息,僅對(duì)新加入的變量或需要更新的變量所對(duì)應(yīng)的矩陣元素進(jìn)行更新計(jì)算,這可以大幅降低計(jì)算復(fù)雜度。可以說(shuō),增量式BA在很多時(shí)候其計(jì)算復(fù)雜度跟局部BA差不多,但精度是跟全局BA幾乎是一樣的。
這是ICE-BA跟傳統(tǒng)的BA方法的效率對(duì)比。分為局部BA(固定幀數(shù))和全局BA(幀數(shù)隨時(shí)間增長(zhǎng))兩類。可以看到,無(wú)論是局部BA還是全局BA,ICE-BA都比傳統(tǒng)的方法快一個(gè)數(shù)量級(jí),甚至更多。這部分工作的代碼已經(jīng)開源。
·
視覺SLAM應(yīng)用落地
我們和商湯科技合作開發(fā)的SenseAR平臺(tái),能夠方便實(shí)現(xiàn)各種AR應(yīng)用。今年新推出的SenseAR 2.0主要是在1.0的基礎(chǔ)上增加了云-端結(jié)合的功能,并融合了AI能力,而且一些模塊的性能也有明顯的提升。通過結(jié)合云端的高精度地圖,可以實(shí)現(xiàn)比如室內(nèi)外定位與AR導(dǎo)航,以及AR多人共享。比如,幾個(gè)玩家拿著各自的手機(jī),可以在真實(shí)的場(chǎng)景下玩設(shè)定的游戲,這對(duì)SLAM的跟蹤精度以及重定位能力要求很高。
AR的應(yīng)用場(chǎng)景復(fù)雜多變,由于用戶拿著手機(jī),其運(yùn)動(dòng)類型非常復(fù)雜,而且場(chǎng)景有動(dòng)態(tài)物體,并存在遮擋、弱紋理以及重復(fù)紋理等問題。因此,要保證良好的AR用戶體驗(yàn),就需要保證精確且一致的跟蹤注冊(cè),而且盡量保證跟蹤成功率高,若跟蹤失敗,需要能夠快速恢復(fù)正常狀態(tài)。
為了解決這個(gè)問題,我們構(gòu)建了一個(gè)面向AR的單目視覺慣性數(shù)據(jù)集。我們用兩款手機(jī)拍攝數(shù)據(jù),一個(gè)是iPhone X,還有一個(gè)是小米8,這是它們的圖像和分辨率的參數(shù)。我們采用VICON運(yùn)動(dòng)捕捉系統(tǒng)來(lái)獲得手機(jī)的運(yùn)動(dòng)軌跡真值。
為了模擬AR運(yùn)動(dòng)的情況我們選了五種運(yùn)動(dòng)類型。我們分別用小米8手機(jī)錄了A系列序列,iPhone X錄了B系列序列。
我們來(lái)看一下這些序列的情況。A系列序列還是屬于比較正常的運(yùn)動(dòng)類型,就是我剛才說(shuō)的幾種常規(guī)的運(yùn)動(dòng),主要是用來(lái)測(cè)試跟蹤精度的;而B系列序列是測(cè)試魯棒性的,相對(duì)來(lái)說(shuō)比較極端,比如說(shuō)突然手去擋住相機(jī),或者突然把圖像變成黑色,強(qiáng)迫SLAM系統(tǒng)跟蹤丟失進(jìn)入重定位狀態(tài)。
總結(jié)
以上是生活随笔為你收集整理的视觉SLAM技术应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Waymo的自主进化
- 下一篇: CVPR2020论文解析:视频语义检索