視覺SLAM技術應用


視覺SLAM技術應用

 

  • SLAM技術背景

 

 

SLAM技術全稱Simultaneous localization and mapping,中文為“同時定位與地圖構建”。SLAM可以在未知的環境中實時定位自身的位置,並同時構建環境三維地圖,是計算機視覺領域以及機器人領域中非常關鍵的一項技術,有着非常廣泛的應用,例如VR、AR、機器人、自動駕駛等領域。

 

 

 

 

 

 

SLAM技術在機器人領域應用廣泛,可以采用各種各樣的傳感器,例如激光雷達,深度攝像頭,單目、雙目、多目攝像頭,慣性傳感器等等。

 

 

 

 

 

根據傳感器的信息,SLAM可以實時計算自身位置(在空間中的位置和朝向),並同時恢復場景的三維結構,構建環境三維地圖。根據這個三維結構恢復的稀疏程度,可以分為稀疏SLAM和稠密SLAM,其中稠密SLAM是把場景的三維幾何結構都恢復出來。

 

 

 

 

 

SLAM技術經過多年的發展,整體框架相對穩定,目前主流SLAM系統采用的是2007年牛津大學提出的並行跟蹤與建圖框架。首先,前台線程根據輸入的傳感器信息,實時計算設備位姿。同時后台線程持續構建地圖,並對三維點雲進行優化,以減少實時計算帶來的誤差累積。一旦存在回路,需要把回路檢測出來並進行閉合。

 

 

 

 

 

PTAM是第一個真正接近實際應用的技術,后面的SLAM系統基本延續這個框架,像DTAM主要是做小場景比較稠密的幾何重建,ORB-SLAM對PTAM框架做了進一步改進,包括自動初始化,采用ORB特征,以及有回路閉合功能。有一些直接法(例如DSO)還能夠做到大場景半稠密的重建。

 

  • 視覺SLAM的技術挑戰

 

 

 

 

視覺SLAM,主要使用單目、雙目或多目攝像頭。從廣義上講,也可以以視覺傳感器為主,加上其他傳感器作為輔助。視覺SLAM最主要的優勢是成本比較低廉,目前已經被證明至少在小范圍內可以實現較高的定位精度,可以滿足AR的應用要求。

 

 

 

 

 

視覺SLAM的基本原理是多視圖幾何。空間上的三維點,如果從某個視角看不被遮擋,那就有對應的投影點。另外,它有對應的二維觀測點,理論上三維點的投影點跟二維的觀測點應該是重合的,但實際上由於噪聲等原因不會嚴格重合,這時通過最小化目標函數,可以把這里的投影矩陣P和三維點X都解出來。

 

 

 

 

 

在實際應用中,視覺SLAM面臨精度和穩定性,以及實時性這兩大關鍵挑戰。精度和穩定性方面,因為環境往往是動態變化的,弱紋理和重復紋理問題很容易造成視覺特征匹配不准確,從而導致優化計算不穩定。實時性方面,主要是在大規模場景下,SLAM計算復雜度高,而低功耗設備的計算能力有限,如何做到實時計算。

 

 

 

 

 

關鍵思路在於,對SLAM穩定求解,這可以從約束的正確性和約束的穩定性這兩個方面考慮。SLAM本質上就是一個目標函數構造和優化問題。為此,我們要保證目標函數里的約束項都是正確的,這就需要盡可能把錯誤的匹配剔除掉。在弱紋理情況下,匹配點過少使得約束項不足,優化求解不穩定。解決這個問題一般有兩方面的思路,一個是可以通過添加一些運動先驗的約束,使約束方程變得比較穩定。另一個是添加場景的先驗結構約束,比如一些平面結構約束,把這樣的先驗結構約束加入到這個目標函數里,也會使得它變得穩定。

 

 

 

 

 

基於這兩個思路,我們開展了面向復雜場景的視覺SLAM技術的研究工作。比如在2013年的RDSLAM這個工作,我們會在線地檢測哪些特征點發生了改變,同時排除遮擋造成的情況。通過在線持續的檢測變化,及時更新地圖,使得地圖里的三維點都是有效的,從而能夠處理場景動態變化甚至逐漸改變的情況。2016年,我們提出的RKSLAM工作,能夠在移動設備做到實時。它主要是通過視覺方法估計出連續幀之間的運動角度得到角速度的估計,然后把這些運動約束加入到目標函數里進行優化求解,從而大大提升了位姿估計的穩定性,即使在晃動比較劇烈的情況下依然比較穩定。另外,從速度上來看,我們的RKSLAM速度是ORB-SLAM的將近五倍。

 

 

 

 

 

 

第二個關鍵思路是如何解決計算效率的問題。這里非常關鍵的技術就是集束調整,通過最小化一個目標函數來對所有相機的參數和三維點進行同時優化。相機參數和三維點數目可能非常多,復雜度非常高,非線性優化的每次迭代都是在求解一個線性方程組。我們發現這個Hessian矩陣是高度稀疏的,如果充分利用這個稀疏性來求解,效率會高很多。

 

 

 

 

 

但即使充分利用了稀疏性,求解效率依然是集束調整的一大挑戰。對於大尺度三維場景重建,無論是內存、效率都會遇到這樣的瓶頸,而采用局部優化策略很容易陷入局部最優解。對於實時SLAM來說,還面臨功耗問題以及如何在精度和效率之間取舍的問題。

 

 

 

 

 

可以從分治求解和增量式計算這兩個思路對集束調整進行加速。

 

 

 

 

 

分治求解主要有兩類方式,一類是基於分段的BA,比如將一個長序切分為若干段短序列,每段序列整體做一個7DoF的相似變換。如果優化后誤差大於閾值,則繼續分裂再優化。通過這樣的由粗到細的優化策略,來實現累積誤差的快速分散和優化。另一類思路是分布式BA,將整體切分成若干個子地圖,各地圖獨立優化,然后通過共享變量的方式來實現整體的優化。

 

 

 

 

 

很多時候SLAM往往是新來一個關鍵幀就要BA優化一下。增量式BA的代表性方法有iSAM、iSAM2,以后我們提出的EIBA、ICE-BA。增量式BA方法的主要思想是充分利用前面構造好的信息,僅對新加入的變量或需要更新的變量所對應的矩陣元素進行更新計算,這可以大幅降低計算復雜度。可以說,增量式BA在很多時候其計算復雜度跟局部BA差不多,但精度是跟全局BA幾乎是一樣的。

 

 

 

 

 

這是ICE-BA跟傳統的BA方法的效率對比。分為局部BA(固定幀數)和全局BA(幀數隨時間增長)兩類。可以看到,無論是局部BA還是全局BA,ICE-BA都比傳統的方法快一個數量級,甚至更多。這部分工作的代碼已經開源。

 

  • 視覺SLAM應用落地

 

 

 

 

 

 

 

我們和商湯科技合作開發的SenseAR平台,能夠方便實現各種AR應用。今年新推出的SenseAR 2.0主要是在1.0的基礎上增加了雲-端結合的功能,並融合了AI能力,而且一些模塊的性能也有明顯的提升。通過結合雲端的高精度地圖,可以實現比如室內外定位與AR導航,以及AR多人共享。比如,幾個玩家拿着各自的手機,可以在真實的場景下玩設定的游戲,這對SLAM的跟蹤精度以及重定位能力要求很高。

 

 

 

 

 

AR的應用場景復雜多變,由於用戶拿着手機,其運動類型非常復雜,而且場景有動態物體,並存在遮擋、弱紋理以及重復紋理等問題。因此,要保證良好的AR用戶體驗,就需要保證精確且一致的跟蹤注冊,而且盡量保證跟蹤成功率高,若跟蹤失敗,需要能夠快速恢復正常狀態。

 

  

 

 

 

為了解決這個問題,我們構建了一個面向AR的單目視覺慣性數據集。我們用兩款手機拍攝數據,一個是iPhone X,還有一個是小米8,這是它們的圖像和分辨率的參數。我們采用VICON運動捕捉系統來獲得手機的運動軌跡真值。

 

 

 

 

 

為了模擬AR運動的情況我們選了五種運動類型。我們分別用小米8手機錄了A系列序列,iPhone X錄了B系列序列。

 

 

 

 

 

我們來看一下這些序列的情況。A系列序列還是屬於比較正常的運動類型,就是我剛才說的幾種常規的運動,主要是用來測試跟蹤精度的;而B系列序列是測試魯棒性的,相對來說比較極端,比如說突然手去擋住相機,或者突然把圖像變成黑色,強迫SLAM系統跟蹤丟失進入重定位狀態。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM