【中國智能制造網(wǎng) 市場分析】空間定位是VR 市場中一個非常關鍵的技術,當今排名前列的VR硬件設備廠商(htc vive和Oculus)分別采用了不同的空間定位方案。
·Oculus 的 Constellation 系統(tǒng)紅外攝像頭定位
·HTC/Vive、大朋VR的 燈塔激光定位系統(tǒng)
盡管這兩種定位方式都采用了PnP解算,但都有各自的局限性和適應的場景,下文將逐一詳細分析。
Oculus Constellation定位系統(tǒng)
Oculus采用的是基于Camera的定位方案,被稱為Constellation。在Oculus頭盔和手柄上都布滿了紅外sensor,以某個固定的模式在閃爍。
通過特制的camera以一個固定的頻率(Oculus CV1是60fps)拍攝,得到一組圖片。系統(tǒng)通過這些點在圖片上的二維位置,以及已知的頭盔或者手柄的三維模型,反推出點在三維空間中的位置。這個過程可以進一步的細分成以下的步驟,
首先,為了確保準確的定位到頭盔和手柄上的LED,PC端的Oculus Camera軟件/驅動程序通過HID接口發(fā)送某個命令點亮LED,該亮度足以被Camera捕捉到,同時這些LED以某個特殊的模式閃爍。這樣能確保即使有遮擋的情況下,在不同的角度下,只要有足夠多的LED被拍攝到,整個的tracking系統(tǒng)就能正常工作,不會被環(huán)境中的其他噪聲信號所影響。
然后是記錄下每一個被捕捉到的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本身的內(nèi)部的參數(shù),可以推算出這些點的位置坐標(X,Y,Z) 以及姿態(tài)(Yaw,Pitch,Roll)。
這個點的集合到底有多大?這是一個尋求優(yōu)解的問題,常見的做法是n>=3,也就是圖片上只要拍到三個以上的LED,就能夠解算出相關的姿態(tài)和位置??紤]到遮擋或者拍攝的照片不夠清楚等因素,實踐中看,至少要拍攝到4-5個點,整個頭盔的姿態(tài)和位置才能被正確的算出,這也是為什么在Oculus的頭盔上布滿了很多LED點的一個重要原因。
算出來的數(shù)據(jù)有誤差怎么解決?一個常見的辦法是得到6DOF的數(shù)據(jù)之后,用該數(shù)據(jù)再做一次投影,產(chǎn)生新的2D圖像,把該圖像和我們開始用來計算的圖像進行比較,得到一個誤差函數(shù),應用該函數(shù)來進行校準。不過這帶來另外一個問題:點進行比較的時候,你怎么知道3d模型上的點,和拍攝到的二維圖像上的點之間的匹配關系?如果做一一對應的全匹配計算的話,計算量太大。所以Oculus采用的辦法是采用不同的閃爍模式,來快速匹配3d模型上的點和拍攝到的圖像上的點。
進一步,在姿態(tài)估計的問題上面,通過光學(camera圖片)得到的姿態(tài)會有誤差,而這種誤差主要來自于物體快速移動時捕獲到的照片上的點識別的困難。為了減少這種誤差,需要通過IMU信息來進行一步校準通過PnP解算得到的姿態(tài),這就是所謂的Sensor數(shù)據(jù)融合。
從上面的描述可以看出來,基于camera的光學定位技術,安裝配置比較簡單,成本也比較低,但是圖像處理技術較為復雜,物體移動較快時識別物體的位置有比較大的困難,同時容易受到自然光的干擾。
另外,基于Camera的定位度受到Camera本身分辨率的限制,比如Oculus Rift的Camera為720p,比較難以提供亞毫米級的定位。
后,Camera自身能夠捕捉到的照片的距離比較近,不能應用到很大的房間位置,一般都只能提供桌面級別的VR定位。當然近Oculus提供了三個Camera的方案,試圖在room scale級別和燈塔定位技術一較高下。