
高級(jí)視圖:當(dāng)您第 一次使用 Google ARCore、Apple ARKit 或 Microsoft Mixed Reality 啟動(dòng) AR 應(yīng)用程序時(shí),系統(tǒng)對(duì)環(huán)境了解不多。它開始處理來自各種來源的數(shù)據(jù)——主要是相機(jī)。為了提高準(zhǔn)確性,該設(shè)備結(jié)合了來自其他有用傳感器(例如加速度計(jì)和陀螺儀)的數(shù)據(jù)。
基于這些數(shù)據(jù),SLAM算法有兩個(gè)目標(biāo):
1. 構(gòu)建環(huán)境地圖
2. 在該環(huán)境中找到設(shè)備
SLAM – 同時(shí)定位和建圖
為了使增強(qiáng)現(xiàn)實(shí)發(fā)揮作用,SLAM 算法必須解決以下挑戰(zhàn):
1. 未知空間
2. 不受控制的相機(jī)。對(duì)于目前基于手機(jī)的AR來說,這通常只是單目攝像頭。
3. 即時(shí)的。
4. 無漂移。
SLAM 剖析
SLAM算法概述
該系統(tǒng)由4部分組成:
1. 傳感器數(shù)據(jù):在移動(dòng)設(shè)備上,這通常包括相機(jī)、加速度計(jì)和陀螺儀。它可能會(huì)通過 GPS、光傳感器、深度傳感器等其他傳感器進(jìn)行增強(qiáng)。
2. 前端:第 一步是特征提取,如第 1 部分所述。這些特征還需要與地標(biāo)相關(guān)聯(lián)——具有 3D 位置的關(guān)鍵點(diǎn),也稱為地圖點(diǎn)。此外,需要在視頻流中跟蹤地圖點(diǎn)。
長期關(guān)聯(lián)通過識(shí)別以前遇到過的地方(循環(huán)閉合)來減少漂移。
3. 后端:負(fù)責(zé)建立不同幀之間的關(guān)系,定位相機(jī)(姿勢(shì)模型),以及處理整體幾何重建。一些算法創(chuàng)建稀疏重建(基于關(guān)鍵點(diǎn))。其他人則嘗試捕獲環(huán)境的密集 3D 點(diǎn)云。
4. SLAM 估計(jì):結(jié)果包含跟蹤的特征、它們的位置和關(guān)系,以及攝像機(jī)在世界中的位置。
ORB-SLAM 是一種視覺算法,因此不使用加速度計(jì)和陀螺儀的里程計(jì)。
ORB-SLAM算法依賴于ORB特征跟蹤算法
一般來說,ORB-SLAM 會(huì)分析每一幀的關(guān)鍵點(diǎn)。然后將它們與檢測(cè)到這些關(guān)鍵點(diǎn)的關(guān)鍵幀的引用一起存儲(chǔ)在地圖中。這種關(guān)聯(lián)很重要;它用于匹配未來的幀并優(yōu)化先前存儲(chǔ)的數(shù)據(jù)。
將關(guān)鍵點(diǎn)轉(zhuǎn)換為 3D 地標(biāo)
SLAM 最有趣的部分之一是 2D 相機(jī)幀中找到的關(guān)鍵點(diǎn)實(shí)際上如何獲得 3D 坐標(biāo)(然后稱為“地圖點(diǎn)”或“地標(biāo)”)。
每當(dāng)算法從相機(jī)獲取新幀時(shí),它首先執(zhí)行關(guān)鍵點(diǎn)檢測(cè)。然后將這些關(guān)鍵點(diǎn)與前一個(gè)相機(jī)幀進(jìn)行匹配。到目前為止,相機(jī)的運(yùn)動(dòng)提供了一個(gè)很好的想法,可以在新幀中再次找到相同的關(guān)鍵點(diǎn);這有助于滿足實(shí)時(shí)要求。匹配產(chǎn)生初始相機(jī)姿態(tài)估計(jì)。
接下來,ORB-SLAM 嘗試改進(jìn)估計(jì)的相機(jī)姿態(tài)。該算法將其地圖投影到新的相機(jī)框架中,以搜索更多關(guān)鍵點(diǎn)對(duì)應(yīng)關(guān)系。如果足夠確定關(guān)鍵點(diǎn)匹配,它會(huì)使用附加數(shù)據(jù)來優(yōu)化相機(jī)姿勢(shì)。
通過對(duì)連接幀中的匹配關(guān)鍵點(diǎn)進(jìn)行三角測(cè)量來創(chuàng)建新的地圖點(diǎn)。三角測(cè)量基于幀中關(guān)鍵點(diǎn)的 2D 位置以及整個(gè)幀之間的平移和旋轉(zhuǎn)。最初,匹配是在兩個(gè)幀之間計(jì)算的,但后來可以擴(kuò)展到其他幀。
環(huán)路檢測(cè)和環(huán)路關(guān)閉
SLAM 算法中的另一個(gè)關(guān)鍵步驟是循環(huán)檢測(cè)和循環(huán)閉合:ORB-SLAM 檢查幀中的關(guān)鍵點(diǎn)是否與先前檢測(cè)到的不同位置的關(guān)鍵點(diǎn)相匹配。如果相似度超過閾值,算法就知道用戶回到了已知的地方;但途中的不準(zhǔn)確可能會(huì)導(dǎo)致偏移。
通過將坐標(biāo)校正從當(dāng)前位置傳播到之前的位置到整個(gè)圖表,地圖將根據(jù)新知識(shí)進(jìn)行更新。
SLAM & 谷歌+微軟+蘋果?
l 谷歌:谷歌描述了 ARCore 使用一種稱為并發(fā)里程計(jì)和地圖繪制的過程- 這本質(zhì)上只是更廣泛的術(shù)語 SLAM 的另一個(gè)名稱。該名稱還表明他們正在集成用于里程計(jì)的慣性傳感器。專利中描述了一般架構(gòu)。關(guān)于 SLAM 的維基百科文章提到,Google 正在使用與之前描述的類似的捆綁調(diào)整/最 大后驗(yàn) (MAP) 估計(jì)。
l 微軟: HoloLens 和 Windows Mixed Reality 中發(fā)生的大部分事情都是基于之前針對(duì) Kinect 所做的研究。因此,微軟與 SLAM 相關(guān)的專利早在多年前就已公布。此外,HoloLens 的新研究模式允許訪問 SLAM 算法執(zhí)行的結(jié)果。Microsoft在 GitHub 上提供了一些入門示例,包括 OpenCV 集成。
l 蘋果:蘋果收購了開發(fā)SLAM算法的Metaio和FlyBy。蘋果使用視覺慣性里程計(jì)/SLAM——因此他們還將攝像頭與其他手機(jī)傳感器結(jié)合起來以提高精度。
基于智能手機(jī)的增強(qiáng)現(xiàn)實(shí)
SIFT 算法對(duì)于許多研究課題都很有價(jià)值,包括自動(dòng)汽車導(dǎo)航。因此,提高和擴(kuò)展質(zhì)量和性能是一個(gè)非常活躍的研究課題。
Paul 等人在“緊耦合單目、雙目和立體 VINS 的比較分析” (2017) 中。比較將慣性測(cè)量單元 (IMU) 與光學(xué)傳感器的數(shù)據(jù)相結(jié)合的算法,當(dāng)今大型商業(yè) AR 框架也是如此。除此之外,他們還將新算法與最 先進(jìn)的ORB-SLAM2和OKVIS算法進(jìn)行了比較,發(fā)現(xiàn)新算法進(jìn)一步提高了可靠性和速度。
此外,將語義引入 SLAM 算法的嘗試也顯示出前景,Sch?nberger、Johannes L. 等人的“語義視覺定位” (2018 年)就證明了這一點(diǎn)。
當(dāng)然,AR 系統(tǒng)通常會(huì)嘗試越來越多地了解環(huán)境。雖然 ARKit 和 ARCore 是從跟蹤簡(jiǎn)單平面開始的,但 HoloLens 已經(jīng)嘗試通過空間理解推斷更多知識(shí)。Apple 通過ARKit 2引入了 3D 對(duì)象跟蹤。因此,我們看到虛擬對(duì)象和真實(shí)環(huán)境之間的集成得到極大改善。
公眾號(hào) 掃碼咨詢
![]() | 上海市閔行區(qū)中春路4999號(hào)莘莊商務(wù)樓1326室 |
![]() | service@covond.com |
![]() | m.jxetj.com |
![]() | 交換機(jī):18017588179(孫經(jīng)理) 無人機(jī):13311882358(孫總) |