解析VR中的空間定位方案:孰優孰劣?智能
空間定位是VR 市場中一個非常關鍵的技術,當今排名前列的VR硬件設備廠商(HTC Vive和Oculus)分別采用了不同的空間定位方案。
編者按:作者系大朋VR工程師,本稿件不代表本站觀點。稿件中圖片采用青亭網圖片,系作者自行引用過去本站對大朋雙目激光定位之中立分析文章揭秘大朋雙目激光定位,HTC的又一勁敵?
空間定位是VR 市場中一個非常關鍵的技術,當今排名前列的VR硬件設備廠商(HTC Vive和Oculus)分別采用了不同的空間定位方案。
·Oculus 的 Constellation 系統紅外攝像頭定位
·HTC/Vive、大朋VR的 燈塔激光定位系統
盡管這兩種定位方式都采用了PnP解算,但都有各自的局限性和適應的場景,下文將逐一詳細分析。
Oculus Constellation定位系統
Oculus采用的是基于Camera的定位方案,被稱為Constellation。在Oculus頭盔和手柄上都布滿了紅外sensor,以某個固定的模式在閃爍。
通過特制的camera以一個固定的頻率(Oculus CV1是60fps)拍攝,得到一組圖片。系統通過這些點在圖片上的二維位置,以及已知的頭盔或者手柄的三維模型,反推出點在三維空間中的位置。這個過程可以進一步的細分成以下的步驟,
首先,為了確保準確的定位到頭盔和手柄上的LED,PC端的Oculus Camera軟件/驅動程序通過HID接口發送某個命令點亮LED,該亮度足以被Camera捕捉到,同時這些LED以某個特殊的模式閃爍。這樣能確保即使有遮擋的情況下,在不同的角度下,只要有足夠多的LED被拍攝到,整個的tracking系統就能正常工作,不會被環境中的其他噪聲信號所影響。
然后是記錄下每一個被捕捉到的LED的位置和方向。
當然,為了做好定位,Oculus camera本身并不需要LED的顏色,只需記錄每個點的明暗,所以 Oculus Camera固件中記錄下的的圖像為 752×480像素, 像素格式為 Y8灰階,每一幅圖看起來如下:
拿到頭盔上的LED在二維圖片上的位置,又有頭盔上Sensor的三維模型,有什么辦法可以估算出這些點的三維位置?這本質上是一個Pnp解算的問題 (https://en.wikipedia.org/wiki/Perspective-n-Point):有了n個3D點的模型(就像上面提到的LED點在頭盔上的3D分布), camera拍攝下來的n個2D點的集合,再加上camera本身的內部的參數,可以推算出這些點的位置坐標(X,Y,Z) 以及姿態(Yaw,Pitch,Roll)。
這個點的集合到底有多大?這是一個尋求最優解的問題,常見的做法是n>=3,也就是圖片上只要拍到三個以上的LED,就能夠解算出相關的姿態和位置。考慮到遮擋或者拍攝的照片不夠清楚等因素,實踐中看,至少要拍攝到4-5個點,整個頭盔的姿態和位置才能被正確的算出,這也是為什么在Oculus的頭盔上布滿了很多LED點的一個重要原因。
算出來的數據有誤差怎么解決?一個常見的辦法是得到6DOF的數據之后,用該數據再做一次投影,產生新的2D圖像,把該圖像和我們開始用來計算的圖像進行比較,得到一個誤差函數,應用該函數來進行校準。不過這帶來另外一個問題:點進行比較的時候,你怎么知道3d模型上的點,和拍攝到的二維圖像上的點之間的匹配關系?如果做一一對應的全匹配計算的話,計算量太大。所以Oculus采用的辦法是采用不同的閃爍模式,來快速匹配3d模型上的點和拍攝到的圖像上的點。
進一步,在姿態估計的問題上面,通過光學(camera圖片)得到的姿態會有誤差,而這種誤差主要來自于物體快速移動時捕獲到的照片上的點識別的困難。為了減少這種誤差,需要通過IMU信息來進行一步校準通過PnP解算得到的姿態,這就是所謂的Sensor數據融合。
從上面的描述可以看出來,基于camera的光學定位技術,安裝配置比較簡單,成本也比較低,但是圖像處理技術較為復雜,物體移動較快時識別物體的位置有比較大的困難,同時容易受到自然光的干擾。
另外,基于Camera的定位精準度受到Camera本身分辨率的限制,比如Oculus Rift的Camera為720p,比較難以提供亞毫米級的精準定位。
最后,Camera自身能夠捕捉到的照片的距離比較近,不能應用到很大的房間位置,一般都只能提供桌面級別的VR定位。當然最近Oculus提供了三個Camera的方案,試圖在room scale級別和燈塔定位技術一較高下。
燈塔激光定位技術
反之,htc,大朋等企業提供的燈塔激光定位技術,避免了Camera定位技術的高復雜度,具有定位精度高,反應速度快,可分布式處理等優勢,能夠允許用戶在一定的空間內進行活動,對使用者來說限制小,能夠適配需要走動起來的游戲,真正實現Room Scale級別的vr定位。
下面從燈塔定位的原理解釋為什么在大空間的應用中燈塔激光定位是一個更好的選擇。
HTC的燈塔定位系統中有兩個基站,每個基站上面有兩個馬達,其中一個馬達往水平方向掃射,另外一個朝垂直方向掃射。
基站刷新的頻率是60赫茲,基站a上面的馬達1首先朝水平方向掃射,8.33毫秒之后,第二個馬達朝垂直方向上掃射(第二個8.33毫秒),然后基站a關閉,接著基站b重復和基站a一樣的工作......
這樣只要在16ms中,有足夠多的sensor點同時被垂直和水平方向上的光束掃到,這些sensor點相對于基站基準面的角度能夠被計算出來,而被照射到的sensor點在投影平面上的坐標也能夠獲得。
同時,靜止時這些點在空間中的坐標是已有的,可以作為參考,這樣就能夠計算出,當前被照的點相對于基準點的旋轉和平移,進一步的得出這些點的坐標,這其實也是一個PnP問題。
進一步的,再融合IMU上獲得的姿態,就能夠較準確的給出頭盔或者手柄的姿態和位置。
在上一步中計算出來的頭盔/手柄的位置和姿態信息,通過RF傳遞到和PC相連的一個接收裝置,該裝置再通過USB接口,把數據上傳到PC端的driver或者OpenVR runtime,最后上傳到游戲引擎以及游戲應用中。
大朋VR定位方案
相比HTC的定位技術,大朋在激光定位方面做了進一步的創新,在每個基站上面加入了三個馬達,從上到下編號,一號馬達從垂直方向上掃描,2號馬達從水平方向掃描,3號馬達從垂直方向掃描。
每一個馬達掃描的時間間歇是4ms,該馬達在工作的時候,其他馬達都處于關閉狀態,基本時序如下:
基站上面的馬達1首先發送同步光信號給頭盔/手柄上的sensor點,sensor點清零計數器,馬達1接著朝垂直方向掃射;4毫秒之后,第2個馬達朝水平方向上掃射(第二個4毫秒),然后是第3個馬達朝垂直方向上掃射(第3個4毫秒)。
被照射到的sensor點可以比較容易的得到被照射時的時間,以及每一個號馬達開始掃描的時間。馬達的轉速是固定的,這樣就可以得到sensor點相對于掃射平面的角度,而該角度編碼后通過RF傳送到PC端,再做進一步的姿態融合之后,PC端就能容易的拿到6DOF的數據。
在指定時間里增加掃描的次數,大大減少所需要的sensor數量。從實際測試中看,在大朋的最新款的E3P中,最后需要的傳感器數量大概是Lighthouse的四分之一左右(Lighthouse用了幾十個傳感器),頭盔和手柄所需要的傳感器都是個位數,頭盔手柄都變得更輕便。這不僅大大增加了整個定位系統的穩定性,也讓sensor在頭盔或手柄上的布局也更加的簡單。
進一步的,由于每次掃描的時間間隔更短,所以手柄的姿態等信息能夠以更快的頻率(每4ms一次)傳送到PC端,更及時的更新到VR游戲中。
在玩vr游戲或者應用的時候,難免會出現各種各樣的遮擋,為了讓用戶能夠在房間級別的空間中暢玩,必須要讓燈塔在360度各角度方位都能夠照射到頭盔和手柄,大朋vr的解決方案和htc一樣,也是雙基站。雙基站的工作時序和單基站一樣,唯一的區別是,主基站工作的時候,從基站是關閉的,反之亦然。
大朋VR激光定位固有的定位穩定,需要的sensor點少這些特點,使得該定位方案能夠非常好的應用到教育行業和多人聯機對戰中。
聯機多人對戰也是大朋VR定位版擅長的領域。
比如以下的場景中,只需要一到兩個基站可以覆蓋多臺網吧電腦,降低成本。
綜上來看,相較于紅外方案,激光定位在大空間多人聯機的應用上具有較明顯的優勢。
來源:青亭網
1.TMT觀察網遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
2.TMT觀察網的原創文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創的行為TMT觀察網或將追究責任;
3.作者投稿可能會經TMT觀察網編輯修改或補充。