文/楊承忠
隨著虛擬現(xiàn)實和無人駕駛等技術的發(fā)展,同時定位與地圖創(chuàng)建(SLAM)受到越來越多的關注,而且在機器人領域一直被認為是實現(xiàn)移動機器人完全自主導航的關鍵。本文主要對目前主流的采用特征點法的ORB-SLAM在選取關鍵幀環(huán)節(jié)做了改進,使系統(tǒng)具有更好的魯棒性。
2007年由Davison等首次完成了在單目攝像頭上的SLAM問題求解,完成了第一個基于純單目視覺的MonoSLAM系統(tǒng)。隨之Klein等也完成了第一個基于關鍵幀的PTAM系統(tǒng)。直到現(xiàn)在的ORB-SLAM系統(tǒng)仍然采用了PTAM的算法框架。
單目視覺slam根據(jù)多視圖幾何原理,恢復出每幀圖像對應的相機位姿P1...Pn和場景的三維結構X1...Xn。通過觀測方程得到空間點在相機圖像上的投影量hij:
其中nij表示觀測噪聲,然后通過優(yōu)化目標函數(shù):
來得到不同圖像中對應于同一場景點的匹配。不過在圖像的求解過程中,必須假設圖像觀測點符合高斯分布。
視覺slam的整體框架可以分為四個部分,首先是前端的圖像采集與特征點的檢測,然后根據(jù)關鍵幀構建視覺里程計,后端通過非線性優(yōu)化和回環(huán)檢測,最后構建全局地圖。目前的視覺slam主要有基于特征點法和直接法。ORB-SLAM使用ORB特征子來進行圖像匹配,具有較高的魯棒性,更容易進行重定位。但是計算量比較大,而且對光照和圖像質(zhì)量比較敏感,在弱紋理環(huán)境下容易失效。圖像檢測的特征子只使用了環(huán)境的極少數(shù)信息,只能構建出稀疏的環(huán)境地圖,忽略了在圖像中占據(jù)大量部分的線段與平面信息。李海豐[7]等融合了環(huán)境中點、線、面特征構建包含更多信息量的環(huán)境地圖。
由于特征點檢測與匹配過程總會存在一定誤差,導致相機位姿估計不精確,而且在相機運動過程中,幀間運動估計誤差會造成更大的累計漂移,減小這種誤差即成為了研究重點。通過優(yōu)化關鍵幀部分,選擇位置估計準確性較高關鍵幀能保證系統(tǒng)定位精度,并提高了構建全局地圖效率。
為了減小系統(tǒng)運算和存儲量,關鍵幀部分優(yōu)化的整個流程如圖1所示。初始時選擇準確率更高的n個關鍵幀來計算相機的位姿,從而提高定位精度,并丟棄哪些關聯(lián)性不強的關鍵幀,以減小后期構建全局地圖時運算量。
(1)在初始化時,選擇前n個包含特征點數(shù)多與一個閾值量的幀來估計相機位姿,從而最優(yōu)一個初始相機姿態(tài);
(2)在創(chuàng)建關鍵幀后必須至少經(jīng)過n個幀再創(chuàng)建一個關鍵幀,并加入約束條件:
1.當前幀至少能看到k個地圖點;
2.位置估計準確性較高;
3.計算一個幀間運動距離,其距離必須大于D。
(3)如果檢測到的特征點過少,當參考幀與當前幀觀測到的共同路標點數(shù)少于一定數(shù)量時,創(chuàng)建一個新的關鍵幀。
(4)在創(chuàng)建地圖時,采用RANSAC算法,去除冗余關鍵幀,使系統(tǒng)負載變小。
本文在視覺SLAM關鍵幀選擇中做了改進,減小了運算量和系統(tǒng)負載。僅采用一個攝像頭作為外部傳感器進行定位與建圖仍然是一個具有挑戰(zhàn)性的領域。隨著無人駕駛和虛擬現(xiàn)實等技術的發(fā)展,視覺slam也得到快速發(fā)展,但是實時性和挑戰(zhàn)更復雜的環(huán)境還需要深入研究。
圖1