SLAM在VR/AR領域重要嗎?
為什麼大家談VR/AR技術時都不聊slam技術呢?是因為現有VR技術中slam已經夠用了,還是slam在VR技術中並不那麼重要?
我在iWorld2017的MIC上做了一次項目分享,分享內容正好可以體現出SLAM在AR領域的重要性。
AR如何完成虛擬信息和真實世界間的無縫連接,通過以下三個層次來體現:
Step1. 坐標疊加
我們需要把虛擬坐標和現實世界的坐標進行疊加。我們現在接觸虛擬信息的方式,無論是電腦、平板還是手機,都是通過屏幕,這樣我們感受到的信息其實是2D的。而真實環境的坐標系是3D的,所以,如果我們要讓虛擬信息與真實環境無縫融合,首先要做的就是疊加虛擬坐標系與真實坐標系。
Step2.幾何物理信息交互
真實環境中有高低起伏、有障礙物、有遮擋關係,AR可以讓虛擬信息跟這些真實環境中的物理信息進行交互。
Step3. 語義理解
隨著機器學習和深度學習的發展,虛擬信息可以「理解」真實世界,讓二者的融合更趨於自然。上面兩步是我們目前已經實現了的技術。未來我們要做的,是語義理解。語義理解加上之前的坐標疊加和交互,我們就可以實現科幻電影般的效果。
什麼是語義理解呢?大家可以看看下方這兩幅圖。
圖中藍底句子,是一個三歲小孩對這幅圖的解讀,灰底句子的是計算機對這幅圖的解讀。
下面兩個也是計算機對圖片的解讀。我們可以看出,目前的技術已經可以讓計算機認出圖片上的內容,但是還達不到「認知」圖片的程度。計算機可以認出草原,認出斑馬,但是還無法「認知」這幅圖的美。計算機可以認出騎馬的人,但是還無法「認知」這是藝術。
隨著科技的發展,虛擬信息會越來越多,逐漸成為我們現實生活的一部分,而我們人類本身是無法處理這些海量的虛擬信息的。但是我們發展出了AI,未來,藉助人工智慧,我們可以處理大量數據與虛擬信息,並讓這些信息為我們所用。
虛擬信息將成為我們現實生活的一部分,這個時候,我們再通過AR技術,將這些數據與信息以人類自然的方式與真實世界連接起來。人類不再需要去分辨什麼是虛擬的,什麼是真實的,所有的信息將與真實環境一起呈現在人類面前,這會是一次全新的認知革命。
所以,SLAM作為連接虛實世界的一項技術,對於AR領域來說不是重要,而是非常重要啊。
圖3圖4來源:李飛飛TED演講——How we teach computers to understand pictures
圖5圖片素材來源於網路
首先申明,不很懂VR。slam 是一個機器人領域的名詞 解決 的是機器人的定位和建立地圖的問題。 在VR/AR 可能和slam沾邊的是tracking的問題,而且這裡的tracking精度不用很高。最近有機會體驗了幾款VR/AR的遊戲,感覺他們的tracking 可能就只是用IMU做的,響應速度快也不容易跟丟。但是慢慢你就會發現,會有漂移的存在。但並不太影響體驗。對於機器人領域最重要的性能之一——精度,可能在遊戲里並不是第一要素。
一己之見。
很多答主都提到了,SLAM在VR/AR中最主要的應用就是Tracking,大群主有幸曾請到Hoevo的繆慶老師講過一場關於Tracking技術的課程。所以機智如我便摘取部分對SLAM技術的評價:-----------------------------------我是機智的分割線-------------------------------------VIO/SLAM(Hololens 和 Tango)
為什麼很多人稱之為SLAM,那是機器人和三維掃描里用的技術,用來建模環境。我們很久以前寫過用SLAM的演算法,後來做VR就從中間抽出VIO的部分就可以用來做定位了,也給自家投資人展示過。VIO就是下圖中框內部分,獲得6DOF就可以停止了,不需要再Register 點雲了。
我簡單講一下深度信息的VIO方法,深度感測器獲得一般是 RGBD信息,比普通相機的信息的RGB多一個深度信息。一般光學演算法直接二值化(threshold)了,RGBD則一般不可以。如果按256色,深度也是256級算,數據量是光學演算法的8000多倍。為了減少計算量,會用SIFT+ RANSAC在RGB信息里找到這一幀和上一幀之間的特徵點。然後再用深度信息比較特徵點的空間位置,獲得兩幀之間的6DOF變化。因此準確的說,VIO獲得的是d6DOF,是變化值。
圖來自eric-yuan.me
SIFT(Scale-invariant feature transform)是尋找特徵(feature)的方法。發佈於2004年,2年後,SURF(Speeded Up Robust Features) 發布。SIFT和SURF是目前最常用的特徵演算法,用數學方法來理解圖像的重要基礎。
上圖中有很多正確的特徵點匹配,也有很多錯誤的,基本上交叉的線都是錯誤的。RANSAC基本原理就是隨機選擇其中3對點,計算homography(這個詞實在不知道中文,意思是對於同一畫面不同相機/不同相機位置之間矩陣,一般是R|T)。如果然後收集所有對點的計算結果,計算出consensus(最多接近的homography)。肉眼看,那些平行線應該就是。
前面提到,SIFT/SURF和RANSAC都運用於RGB信息,剛上手可以從OpenCV開始,這幾個演算法都包括,完全夠用了。然後把特徵點通過深度信息計算為點雲,計算homography就有6DOF的變化了。如果繼續想要SLAM,如前面提到的需要registered,然後寫成polygon,這部分可以學習一下PCL庫,跟深度、點雲有關的最基礎演算法PCL都提供了。
VIO的最大好處是不需要外部設備幫助,因此面積成本為0。但是,Johnny Lee自己也承認,VIO有兩個主要技術缺陷:
1、 每次開機它不知道設備的位置。
2、 長距離和長時間的使用,誤差會累計變成drift。
Microsoft沒有提Hololens怎麼解決這兩個缺陷。但是Johnny Lee不斷強調Tango的另一張王牌是Area Learning,通過用數學描述記住環境信息,然後通過辨認環境來確定自己的開機位置和矯正長時間誤差。這個方法能優化到什麼程度不好判斷,但是畢竟是世界第一大牛在做,也許能出奇蹟。
用數學描述三維環境一般就不用SIFT,SURF了,比較流行ORB。Ethan Rublee, Vincent Rabaud, Kurt Konolige, Gary R. Bradski: ORB: An efficient alternative to SIFT or SURF. ICCV 2011: 2564-2571. 在中國ORB特別火,這篇文章很容易找到。
西班牙的Uni Zaragoza優化了ORB 做了一整套SLAM演算法,與傳統的SLAM相比特別之處在於用AreaLearning數據矯正偏移。這套演算法是開源的,對Area Learning 感興趣可以看一下 這裡
從理論推導和實驗結果我們都判斷即有了J Lee的Area learning ,VIO的方法在兩個情況下無法工作:
1、 面對環境不可辨認,比如純色的牆,純色的桌子。桌子越亂定位效果越好,處女座比較慘。
2、 面對室外環境。因為深度感測器有距離限制,空間大小超出限制就沒有深度信息了。
我們看到Hololens的demo把地板貼到牆上來做VIO,如果是白牆這個demo就無法工作了。因此我們停止了VIO用於定位的開發,但是,深度依然非常好玩,在VR應用中也許會起到意料之外的作用。
總結:
6DOF:可以
單個成本:最高(深度,視覺感測器)
計算代價:最高(CPU配合GPU計算)
大面積覆蓋成本:0,但是某些場景無法工作
-----------------------------------我又是機智的分割線-------------------------------------相信題主應該發現僅僅作為Tracking技術,SLAM並不一定能取得最佳的效果,相對其他方法SLAM也有自己的缺陷。如果想有更多技術交流也歡迎參與我們的技術交流活動。
搜索公眾號ycopen就能找到大群主我啦,掃描二維碼(二維碼在這裡)查看喔~
簡單來說,個人感覺對於VR來說,SLAM並不是很重要。這些年學術界的Head Tracking基本是靠各種感測器或者是紅外攝像機+marker解決的。
用感測器的原因是便宜,實現迅速。用marker+IR的組大多也同時需要軀幹的跟蹤,所以就順便做了。(補充一下,由於動補設備相對發展的比較成熟,大家都是直接用商業產品的人。例如Advanced Realtime Tracking(ART)、VICON和Phasespace。索引的話索引官網就行。。。很久之前有人私信問…剛剛才看到…只怕他也不需要了…我還是貼上來吧。)因為VR里所有圖像都是計算機生成的,人又是視覺主導的動物,即使頭部跟蹤有精度上的誤差,也很難察覺。這種特性可以被利用來做redirected walking [1]。
對於AR來說,Visual SLAM一直是熱門吧。
以後想到再補充:)Reference[1] Razzaque, Sharif, Zachariah Kohn, and Mary C. Whitton. "Redirected walking." In Proceedings of EUROGRAPHICS, vol. 9, pp. 105-106. 2001.個人觀點,現在不重要,以後非常重要。
對於vr來說,目前通過在空間布局兩個攝像頭 加上手柄里的紅外感測器 基本上可以完成空間定位的問題。可以參考最近很火的htc線下體驗。因此,SLAM演算法基本用不到,360度觀看虛擬場景也只是用的9軸陀螺儀感測器罷了。
對於ar來說,它的完成需要在移動端,否則沒意義。 那麼問題來了,手機端的配置使得slam的精度無法達到體驗的要求(1米距離的精度大約為2mm)。因此,目前都是用到基於marker的方案,即模板圖片識別的攝像機跟蹤方案,做的較好的當屬高通的了。
但是,SLAM的重大意義就在於,重構地圖信息(包括三維),因此它使得虛擬的物體真的能如現實物體一樣存在與我們的周圍。而vr想實現設備輕量級不依賴於感測器,ar想不基於marker真正的讓虛擬物體增強我們的現實,都必須用slam演算法。
目前SLAM不成熟,是機遇也是挑戰slam相關技術在增強現實中會用到,主要在無預處理的場景下進行相機跟蹤,基於slam引申出來的技術有ptam等,其實感覺在理論研究中也是挺重要的一方面。只是現在比較火的虛擬現實,其實大部分是遊戲。如果使用頭戴式設備,具有完全的沉浸感,就根本不需要相機跟蹤,自然也用不到slam。而一些基於手持式設備的小遊戲,又多是基於標記的,技術簡單,slam相對太高大上。其實個人覺得slam是很有用的,只是目前還沒有可以推廣到大眾的應用場景。
對VR而言,有沒有SLAM影響不大。對AR而言,SLAM是重要的技術支撐。增強現實,首先得感知現實,要感知周圍的三維環境,靠的就是SLAM。
在OCULUS CV1 和 HTC VIVE 中,嚴格意義上都並沒有使用SLAM技術。
但是對Hololens和Magic Leap 而言, SLAM都是最重要的技術基礎。目前在做AR方向的產品。實際上在AR增強現實的現實中,最困難的是,如何將顯示的東西放到正確的地方上。那麼SLAM至少可以幫助我們將3D的東西放到合適的位置上。尤其是例如前面拐角處有一個怪物,那麼這個怪物是否你能直接看到,還是會被牆角卡住視角等等。當然我們也可以利用其他的手段想方設法解決這個問題,但SLAM無疑是相對解決的很完美的一種技術。
SLAM是AR的重中之重。為什麼大家談VR/AR技術時都不聊slam技術呢?個人以為主要是目前國內做AR的幾乎沒有,大家經常談及的也是VR。VR的話門檻較低,目前也不怎麼用SLAM。
AR的話全世界做的也不多,主要都集中在美國,英國這邊。主要是因為SLAM也是近10年發展起來的,近5年發展的比較迅速(主要託了GPU計算的福,realtime系統不再是夢)。即使是在美國英國,做SLAM上了規模的實驗室也不過10來個。至於SLAM在AR這邊的應用,也不過是剛剛開始而已。
SLAM的應用其實早就進入千家萬戶了。市面上的掃地機器人大多使用了SLAM的原理(機器人首先構建房間的平面圖,有了房間的平面圖後,機器人只要在房間到處跑,覆蓋整個房間所有地方,即完成了掃地這一任務)。另外,SLAM也是無人機,無人車的重要組成部分。
綜合來說,SLAM是讓機器人可以精確定位的解決方案。機器人知道了自己的位置,就能夠根據現有的位置進行規劃。AR的話就是把虛擬的場景與現實的場景融合。無人機的話就是導航,壁障。無人車的話就是導航,規劃路徑。其實我也想問這個問題。
SLAM 能讓計算機在完全陌生的情況下,通過掃描構建出三維模型
但是 AR 中,需要的是找到跟蹤和找到要疊加的物體,然後計算出姿態,疊加上相應的信息。在我看來 SLAM 在這裡有點『大材小用』的感覺首先,SLAM是對自身在實際環境中的定位,實際環境的構建。
而VR的定義是「虛擬現實」,從這兩個定義看,SLAM對於VR並沒有太大的意義,這也是為啥有VR跑步機的原因。
而AR或者MR是「增強現實」,所以必須知道自己在現實中的位置,才能合理進行「增強」,所以SLAM對AR/MR有很大的意義。
另外,SLAM技術在高精度三維地圖採集、無人駕駛裡面也有很大的應用。
就個人觀點,SLAM目前存在的主要問題有兩個:一是性價比,或者說需求與價格的匹配;二是更高層次的導航或者路徑規劃方法。就基本方法而言,沒有太多新的突破,只是把一些方法綜合起來使用,當然,這其中會產生一些問題。
在室內有限環境,目前技術方案主要有:結構光、激光測距、雙目交匯測量等,比如intel的深度相機,思嵐科技的激光掃描等等。
在室外環境,GPS、激光測距也基本能夠實現SLAM。
因為自己主要是做測量,所以可能說得有些偏頗。VR領域之前都是採用空間的兩點和手中的控制器實現定位,HTC vive和Oculus都是這樣。但是最新的HTC Vive pre的發布意味著HTC已經開始嘗試了在VR領域使用SLAM,從目前的試用來看,可以有效解決安全性問題以及實現快速的和現實環境之間的切換。個人覺著這個嘗試很是肯有用的,之前在試用Vive的時候發生過撞牆的事情。在AR領域SLAM技術毋庸置疑是核心,做的最好的是Hololens,在3D感測器領域巨硬一直都是吊打友商的節奏!
推薦閱讀:
※如何看待「極戰」無限制機器人格鬥大賽?
※智能的本質是演算法嗎?
※雙足機器人有哪些常見的平衡演算法?
※恐龍戰隊的發展歷史和劇情是怎樣的?