XR最關鍵的難題之一就是定位,為了定位XR頭顯在現實世界中的位置和角度,廠商們采用了多種方案,比如機械傳感器、慣性傳感器、磁傳感器、聲學傳感器等等。這些定位方式有一個共同的問題,那就是傳感器不夠完善,且會產生噪音。
拿IMU為例,它通過訪問陀螺儀來測量角速度,訪問加速計來測量線性加速度,也可能會用上磁力計。理論上講,如果IMU的測量結果是完美的,那么它應該能提供定位AR/VR頭顯空間姿態的完整數據。然而,IMU的測量誤差通常可達數百米,并不理想。為了抵消它的不準確性,AR/VR頭顯會結合多個傳感器,利用智能融合算法來推算出準確性更高的姿態。
開源VI-SLAM方案
(資料圖)
近年來,基于攝像頭和IMU單元的視覺慣性定位(VI)在XR中得到廣泛應用,比如WMR頭顯就采用兩個或更多定位攝像頭,而Quest等VR一體機通常采用四顆或更多攝像頭,Index等PC VR也配備多顆攝像頭。VI定位方案通過光學來捕捉周圍的場景,以實現設備定位,其優勢是將傳感器集成在頭顯中,不需要外部基站,設置起來更加方便。
然而,光學6DoF定位通常是XR頭顯專有的,不同的廠商需要獨立開發光學定位算法,沒有現成的光學6DoF定位方案可直接使用。一些初創的XR廠商如果沒有獲得特殊許可,很難獲得光學6DoF算法和開發經驗。
于是,Collabora顧問軟件工程師Mateo de Mayo便開發了一種開源的Vi-SLAM光學定位方案:Monado,該方案特點是基于OpenXR的開源XR運行時,可在移動端、PC端運行AR/VR應用,或是通過AR/VR頭顯的攝像頭實現Inside-Out 6DoF定位。
據悉,Vi-SLAM是視覺慣性方案與SLAM的結合,使用了快速的IMU樣本(200Hz)和慢速的相機圖像捕捉(20Hz),其中IMU主要用于測量頭顯的內部運動,而相機則用于捕捉環境變化,以校正IMU測量數據。而SLAM則負責從初始姿態掃描場景,并實時創建地圖,進行定位。通常,VI-SLAM地圖由場景中的地標組成,通過三角測量法來定位。
視覺慣性定位好處是比純SLAM方案速度更快,雖然準確性有所犧牲,但隨著過去幾十年技術發展,其性能、穩定性、準確性、應用場景、易用性都在提升,幾乎每年都會出現新迭代的版本。
Monado驅動程序此前僅兼容RealSense和WMR定位方案,在結合上述SLAM/VIO方案后,可兼容更多頭顯定位系統,包括North Star、Valve Index、WMR、PS VR、HTC Vive Pro等等,還兼容Intel實感相機定位。
除了Inside-Out定位外,Monado還可以為AR/VR頭顯帶來VST透視功能,以及手勢識別功能。
原理方面,Monado結合AR/VR頭顯的攝像頭和IMU數據來實現6DoF定位,此外它還結合了三種開源的SLAM/VIO解決方案:Kimera-VIO、ORB-SLAM3和Basalt。利用這三種SLAM/VIO方案,攝像頭驅動的支持。
Monado和OpenXR
Monado項目獲得了Collabora支持,基于OpenXR標準,可為常見AR/VR硬件提供多種用于追蹤定位的工具和驅動,后來在去年5月,在Collabora實習的Mateo de Mayo將Monado與SLAM/VIO方案集成,實現了視覺慣性定位功能。
de Mayo曾測試三種SLAM/VIO系統,其中Kimera-VIO兼容配備單攝或雙攝定位、IMU的頭顯,而ORB-SLAM3幾乎兼容任何傳感器方案,不管是無IMU的純單目SLAM,還是全立體IMU-LSMA,不過該方案依賴于預先記錄的數據。相比之下,第三個系統Basalt是其中速度最快的,可以更好的滿足AR/VR對于實時定位的需求。此外,Basalt的源代碼整體比較適合軟件開發流程,有大量文檔支持。
多虧了Basalt模塊,現在Monado可以在Linux上的一個完全開源的軟件堆棧上跟蹤OpenXR應用程序。
設備集成
為了將SLAM/VIO與Monado集成,開發者需要創建足夠靈活的SLAM定位接口,目的是允許每個SDK將輸入和輸出管道開放給Monado進行定位。
Monado中的中央SLAM定位器可讀取AR/VR頭顯的攝像頭、IMU數據,同時也兼容RealSense D455深度感知相機模組。RealSense D455特點是支持3D傳感,可測量場景深度,可以很好的定位。Sense D455不僅打在了RGB攝像頭,也搭載了IMU來改善移動時深度感知效果。
此外,de Mayo還與WMR驅動程序開發者合作,為其擴展對SLAM定位的支持。現階段,WMR定位效果不如RealSense驅動好,而且Monado還是一個開源方案,未來經過更多迭代后,可能會更好的商品化。參考:Collabora
責任編輯:Rex_26