AR中的SLAM(一)
寫在前面
本系列打算講講個人對AR行業和AR中的SLAM算法的一點淺顯的看法。才疏學淺,文中必然有很多疏漏和不足,還望能和大家多多討論。今天先講講我對AR的一些認識。
AR的一點理解
AR是什么
AR是人類的第三只眼,讓人類在現實世界中看到虛擬物體并與之交互。
VR是人類做夢的一種載體。
AR能做什么
AR有能力將二維交互變成三維交互,能讓虛擬物體看起來像真的一樣。舉幾個簡單的場景。
你可以擁有一只虛擬寵物。你可以從各個方向觀察一個虛擬小貓,繞著它轉動。你會發現,走近看會顯得大一些,離遠了看著會變小。愿意的話,還可以撓撓它,和它玩耍。
你將擁有一個虛擬電視。它可以固定在任何地方(即使你到處走動),也可以隨意移動。
你在和家人遠程通話時能在自己房間看到家人的全息投影。
你將房間變成虛擬密室。
當然,你可以在任何地方喚醒任何APP。
我覺得,如果未來AR能夠發展出更多的外延,那么在消費領域會有機會取代手機 ,然后并在若干年后淪為賣廣告賺錢的工具 。而在工業領域,AR也有機會蹦跶幾下 ,然后被機器人取代。
AR怎么實現
目前AR需要通過外部設備來實現。比如在手機上,通過獲取攝像頭圖像并在上面疊加虛擬物體。而專業的AR設備可以將虛擬物體成像在眼睛前面或投射入眼球。
AR需要什么
要實現前面提到的三維交互,AR設備需要具備下面三個功能
自我定位。指定位出自身在空間中的位置。這樣才能根據預設的虛擬物體的位置在設備上渲染虛擬物體。
環境感知。主要指感知到周圍環境的三維幾何信息,這樣才能讓虛擬物體和真實世界發生自然交互。
交互。要理解來自周邊環境中的輸入,比如人類的語音、手勢,并給出反饋。要將虛擬物體合適的影像通過設備反饋給人類。
定位和環境感知用的就是傳說的SLAM技術。
AR的現在
硬件方面,微軟憋大招研發出了HoloLens,甩了所有競爭對手兩條街。Google有Project Tango,但其定位不甚明確。還有很多號稱在某一方面或者全面超越HoloLens的東東。
軟件方面,微軟在圍繞Windows 10構建生態。國內外都有一些還不錯的SDK,但在嵌入式平臺上還沒有完全實現SLAM,離實用還有一點距離。而且,目前幾乎沒有好用的內容生產工具。
AR的技術路線
好吧,終于進入正題了。仔細觀察的話,發現AR的發展和VR有點類似。目前分成兩個比較明顯的派系:手機派和眼鏡派。手機派代表現在,眼鏡派卻未必能代表未來。
手機AR
手機AR側重于將虛擬物體疊加在手機攝像頭圖像上呈現給用戶,主要依賴自我定位功能,暫時不涉及到環境感知和過多的交互。鑒于目前智能手機的普及程度,手機AR會是未來一兩年的主體。這是一個有需求也有技術的市場。基于AR的營銷對普通消費者還是有一定吸引力的。大廠們都在布局和試水。其中又分為
基于攝像頭的AR
第一種是marker AR,基于特定圖片的圖像識別和追蹤,一種是指定的圖片,一種是現場拍攝的圖片。代表作Vuforia。網易陰陽師也很有趣。
第二種AR不需要特定圖片,主要基于物體識別和追蹤,比如人臉,手,身體等,并讓虛擬物體和人臉保持一定的相對位置即可。這類AR可以不用估計手機設備的定位。個人比較喜歡Snapchat,雖然很簡單,但創意十足。
基于陀螺儀的AR
借助陀螺儀和電子羅盤得到手機在三維空間的旋轉角度,但不能得到手機的位置。簡單的測試方法是,將手機前后移動時,虛擬物體的大小將保持不變(于是看上去虛擬物體在平移,不甚和諧)。很多VR盒子也是這個原理追蹤頭部的轉動。
基于SLAM的AR
目前都在加班加點。感謝Raul,感謝Leutenegger。
Tango
聯想和Google聯合出品了搭載Tango模組的Phab 2 Pro手機,包含一個全局快門魚眼攝像頭,一個消費級IMU和一個深度攝像頭,在硬件配置基本滿足SLAM的需求,因此很受開發者們歡迎。總之,一個窮人版的HoloLens,富農版的手機。希望主流手機們能早日升級成上述設備,再配個有一定距離的雙攝就完美了。
然而,手機運算能力的不足會限制SLAM算法的復雜度。攝像頭、CPU和GPU同時高強度工作,電池會消耗很快。畢竟,手機不是為此類應用設計的。手機硬件不足會降低算法的精度和魯棒性。比如單目的尺度不確定性、卷簾快門、攝像頭和IMU的數據同步等等。現階段,可以從應用倒推算法,以算法促進應用。畢竟并不是所有應用都需要高精度的算法。
AR眼鏡
AR眼鏡相比于手機,在體驗上可以有質的飛越。用戶可以透過眼鏡看到帶景深效果的虛擬物體(通過左右眼合像),而不是一個偏平的屏幕。AR眼鏡通過更高規格的傳感器和更強大的計算能力,同時支持實時精確定位、場景重建、語音交互、手勢識別等復雜功能。
業界這一兩年,有些產品看起來越來越像HoloLens,有些產品怎么看起來還是更像Google glass。說好的對標HoloLens呢!
HoloLens
個人意見,作為一款初代AR設備,Hololens已經可以打80分了,領先其它產品兩年以上。
算法:實時定位、場景重建都有非常好的工程化實現,局部定位精度很高。手勢可用。
軟件:Windows 10原生支持,應用開發相對成熟
硬件:定制HPU,強大的計算能力,硬件加速算法
功耗:電池使用兩小時,沒有明顯發熱的感覺,軟硬件肯定做了大量優化
顯示:視場角確實太小,很影響體驗,市面上也沒有太好的解決方案。渲染的問題我沒太感覺到。
外設:無線對體驗很重要。玩RoboRaid(打蟲子)時明顯感覺到,頭盔上還帶個尾巴是沒法用的。
想要做到便攜(無線),至少要把一套完整的SLAM算法跑在設備上,有實時的雙目(+imu)的slam,有低頻但后臺運行的稠密場景重建(Kinect fusion),還有復雜的三維網格生成和后處理,沒有強大的計算能力支撐是不可能。強大的計算能力意味著過高的功耗,這又要求復雜的電源管理,強大的電池容量和過大的體積。想要運行那么多傳感器同時降低功耗,就要有頂尖的軟硬件架構設計。哪些功能是必備,需要多少資源,哪些模塊應該在什么時候運行,不同模塊之間如何交互,如何降低延遲(特別是場景重建)等等。 最后,所有這些都要集成進一個頭戴設備里。 所以我覺得微軟的壁壘在整體架構設計而不是單一模塊。
據HoloLens開發人員介紹,HoloLens的HPU上搭載了24個Tensilica的DSP,其運算能力超過每秒一千億次[鏈接]。單塊DSP集中處理某類任務處理(應該是基于硬件加速)。Atom SoC主要用來運行Windows 10 和顯示。算法的運行速度大約為純軟件的200倍。HoloLens目前預留了一半左右的計算能力,并沒有用足HPU,后續還有很大的想象空間。未來嵌入深度學習模組不是夢啊。 傍上了黑科技深度學習,SLAM也許就能落到實處了。
其它廠商
大部分廠商目前還是以高通Snapdragon 820 為主開發。對于手機來講,820勉強能應付,實現定位功能(vSLAM或者VIO)。對于AR眼鏡來說,不僅傳感器數目和功耗會高,算法的種類和復雜度更是明顯提升,特別是場景重建對于算力的要求非常高。820 SoC 上有一顆Hexagon 680 DSP ,可用來做算法加速,特別是特征點提取等前端功能。ARM架構還可用NEON技術來加速一些簡單重復計算。Movidius、NU3000等芯片估計也快進入計劃了。但總體而言,還處在開發定位功能的過程中,軟硬件的架構都沒有完善。
算法方面,隨著這兩年SLAM蓬勃發展,各家也積累了很多工程經驗。相信不久的將來,定位功能應該能達到HoloLens目前的水平甚至更好,也可以支持多場景下的使用。然而,在場景重建方面,由于之前的工作大多基于高性能GPU在PC上實現,想要移植到移動平臺上,還有好長的路要走。硬件軟件上都有太多的坑要趟了。 然而微軟已經做好了!就他家積累最多,還不開源! (插個小廣告,之后可能會寫一點這方面的東西)
當然,HoloLens并不是完美的。硬件層面上,視場太小、重量偏重、體積太大、成本過高都不是容易解決的問題。軟件方面,交互方式創新,手勢、語音識別,數據共享,全息成像等等,還有很多值得做的事情。
個人覺得HoloLens最大的遺憾,是它沒有解決AR類設備的核心問題:市場定位。很cool,然后呢?3000美元不是玩具,如果不能給用戶生產價值,那就無法真正進入消費級市場。
最后
最后,讓我們雙手合十,一起感謝TUM、ETHZ、UZH、Universidad de Zaragoza和UCL等,以及開源大佬們,給了我們一條活路。
總結
以上是生活随笔為你收集整理的AR中的SLAM(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国银行房贷利率表2022最新利率,分以
- 下一篇: 2023-04-25 | 苹果 iOS