作為VR頭盔空間定位的代表,HTC Vive一直以其Lighthouse激光定位傲視群雄。也許Oculus、PSVR分別在用戶體驗和內容上有自己的優(yōu)勢,但要說到房間尺寸(Room-Scale)定位,則已經(jīng)推出一年的HTC Vive,至今在全世界還沒有對手,這也可以看出它激光定位方案的強大。
先給不玩VR的科普下(不玩VR你看這個文章干啥?),所謂Room-Scale,指的就是用戶能否自由地在VR里行走。其實,所謂的VR三大硬件(HTC Vive、Oculus Rift、PSVR)都能實現(xiàn)一定程度的Room-Scale體驗,但Oculus、PSVR采用攝像頭為主的方案,效果并不怎么好,大多數(shù)情況下還是坐著不動玩更舒服。
而HTC Vive的激光方案,才讓玩家真正能比較自由地在VR里行走,穩(wěn)定性和行走范圍均遠遠優(yōu)于另外兩者??梢哉f,HTC Vive啥都能黑,就是這個定位黑不得。
在2017年的CES上,國內硬件廠商大朋帶來了雙目激光定位方案Polaris,似乎是要以自研技術和硬件,對HTC Vive發(fā)出挑戰(zhàn)。三月末又召開了發(fā)布會邀行業(yè)人現(xiàn)場體驗。經(jīng)過現(xiàn)場測試,大朋的雙目激光定位方案反饋還不錯。
但是我們仍然要問,大朋的雙目激光定位原理為何?如何實現(xiàn)?相比HTC Vive又有哪些好處?本著刨根問底的精神,青亭網(wǎng)專門采訪了大朋CEO陳朝陽,首次詳細獨家揭示大朋的技術奧秘。
首先來看看,HTC Vive的方案是怎么玩的?
首先,要想明白大朋比HTC Vive好在哪里,我們就必須得再詳細闡述一下HTC Vive的定位方案(熟悉的小伙伴可以跳過這部分,直接看大朋的)。這一方案使用的是兩個名為光塔(Lighthouse)的基站,對角擺放,拉出一塊空間,不斷發(fā)射激光來掃描空間里的HTC Vive和手柄。
那么,基站具體是怎么運作的?現(xiàn)在我們來拆解一下。
打開基站,會發(fā)現(xiàn)由三個部分組成,分別是LED燈陣列和兩個電機。電機分別用于打出一橫一豎兩個激光面。
如下圖,其中紅色面為豎直的激光面,掃動方向是水平的,藍色為水平激光面,掃動方向為上下垂直掃動,紅色陰影部分位于藍色面下方。
每當一個激光面遇到傳感器,就會停止掃描并記錄角度。假如兩個面停止位置如圖所示,則可以確定傳感器位于兩面相交線,即圖中細紅線上。
這樣得到的位置信息是不全面的,因為只知道點在哪條線上,不知道具體在線上什么位置,就像去某個地方,只知道在某條街上卻不知道門牌號碼。因此需要安裝多個傳感器。
所以聰明的你可能已經(jīng)猜到了,HTC Vive的傳感器都放在頭盔和手柄上,坑坑洼洼、如同月球表面的頭盔上,每一個小坑都是一個傳感器。并且傳感器是固定的,不能移動。
實際上,系統(tǒng)并不需要確定每個傳感器的位置。而只需要確定傳感器所在的直線就好了。這就好像吃烤雞腿,用手拿著可以直接確定雞腿的位置,也可以拿幾根簽子穿著固定住,雞腿的位置同樣是確定的。
也就是說,確定位置并不一定需要傳感器的點,還可以僅用足夠多的線來確定頭盔位置。只要知道頭盔尺寸,依據(jù)下圖就能確定位置了。
兩個激光面掃描完一次,確定的是頭盔上一個傳感器距離基站的直線方程。只知道掃描到的傳感器在這條直線上,但并不知道詳細距離。
這個時候就需要知道頭盔的尺寸了。然后通過專門的算法,明白在確定幾條直線、并已知頭盔大小的情況下,頭盔唯一有可能的方位在哪里。
在兩個激光面掃描完一個傳感器后,該傳感器就會關閉,以免下次再被掃到。等到掃到五個傳感器后(Valve官方給出的數(shù)字),頭盔定位完成。所有傳感器重新打開,開始新一輪的掃描,如此反復。
新版Lighthouse基站的LED陣列排列有變化
從上所述,理論上傳感器只需要五個就夠了。然而,實際上定位時由于光線接受可能被遮擋,傳感器之間又為了防止串擾信號必須保持距離,因此最后采用的傳感器有幾十個。所以不要再苛責你頭盔為什么長那么丑了,滿滿的都是愛啊……
重點來了,如何實現(xiàn)完整的數(shù)據(jù)流程,完成從用戶的移動到他們的頭盔圖像的變化呢?
我們要先確定關鍵的數(shù)據(jù)和采集方法。兩個激光面能確定一條線(也就是上文所說的,傳感器點所在的直線)。那么橫豎激光兩個面的位置怎么算?只需要角度就能知道了——角度是電機的角速度(轉速)和用時的乘積,角速度是恒定的,相當于已知,因此記錄下時間就能求出來。
下面是具體實現(xiàn)步驟了,對于不學理科的同學來說,可能還是有點復雜,打起精神!
首先基站會和傳感器進行一次溝通,同步閃光(sync light),這樣傳感器會告訴傳感器的控制芯片,讓它把計時器(類似于秒表的功能)歸零,接下來的10毫米內,會有一個激光面掃過,這個激光面接觸到傳感器的時候,傳感器就會發(fā)出信號,計時器就停了,記錄下時間,然后歸零。緊接著另一個激光面掃過,再次記錄時間,歸零。
這個過程看似復雜,實際上兩個電機只要以20毫秒轉一圈的速度(也就是每秒50轉)穩(wěn)定運行,而電機上的激光發(fā)射器“此起彼伏”地出現(xiàn)就行了。時間值隨后會來到傳感器的集線器,再到數(shù)據(jù)收集芯片,通過WiFi信號以某種數(shù)據(jù)包形式和協(xié)議(如UDP)發(fā)送到基站的計算部分。
這樣得到了兩個時間值能轉化為角度值,再轉為兩個面的方程,求出交線,就能獲得一個之前說到的傳感器所在的直線方程。然后諸多方程合并起來,通過算法算出一個頭盔上傳感器方位對應的位置,就是對頭盔完成了定位。這個定位數(shù)據(jù)隨后會由基站更新到計算機或主機,在3D引擎內修改攝影機位置,重新計算畫面,發(fā)送到頭盔顯示器,完成一幀的顯示。
那么,大朋是怎么做的呢?
說完了HTC Vive,終于輪到我們今天的正主兒——大朋了!根據(jù)青亭網(wǎng)對大朋CEO陳朝陽的采訪,再加上觀察和HTC Vive的Lighthouse原理推斷,大朋Polaris結構應該類似這樣:
畫工丑了點,將就點吧……是的,你沒看錯,大朋的基站里是三組電機,比Vive多一組。分別為兩個打出橫激光面的電機和一個打出豎激光面的電機。
如下圖,三個激光面會形成三條交線,實際上只任意用兩條(比如紅和藍)就能確定交點,該點即為要確定的傳感器位置。也就是說,三個掃描面的時候,不是確定傳感器所在直線,而是直接把傳感器所在位置確定了。
顯然,這樣定位方式比起Lighthouse的定位只能確定傳感器所在直線位置要更加有效率。只要釘死三個點就能確定位置,也就相當于頭盔上最少三個傳感器就夠了。(當然為了保證精確,實際上不止三個)
不過,實際中設計的時候為了防止橫向兩個面靠太近,影響精度(就像人要靠兩眼間存在距離才好定位一樣)。最好的辦法就是,把兩個橫向電機放在縱向電機的上下兩個位置。
這樣傳感器的數(shù)量比起Lighthouse大約能減少一半。但是存在問題是,如果激光面照不到傳感器就沒有效果了,為了實現(xiàn)無死角,最簡單的方式就是在基站的另一面再放一個基站,就能覆蓋到了,這樣雙基站的設計能讓傳感器數(shù)量再減一半。大概像這樣:
最后需要的傳感器數(shù)量大概是Lighthouse的四分之一左右(Lighthouse用了幾十個傳感器)。事實上,大朋官方也是這樣宣傳的,即頭盔所需傳感器相對Vive較少,僅需六個。頭盔得以更輕便,而相對的,大朋的基站就要比Lighthouse體積更大。
實際工作順序如下:
首先LED陣列發(fā)出閃光,與傳感器控制芯片同步一次,然后開始計時。如果能做到16毫秒左右延遲的話,總周期應該是15毫秒以內。
這里假設是15毫秒。則閃光后第一個5毫秒內,第一個橫向激光面掃過,傳感器發(fā)信號之后記錄時間;第二個5毫秒內,縱向激光面掃過,傳感器發(fā)信號后記錄時間;第三個5毫秒內,第二個橫向激光面掃過,傳感器發(fā)信號,記錄時間,然后WiFi信號傳輸時間數(shù)據(jù)包給基站進行位置計算,上傳到計算機或主機完成位置數(shù)據(jù)更新。
其實和HTC Vive很類似,只是多出一步橫激光面的掃描,定位的不是點所在的直線,而是點的坐標。
陳朝陽的在讀完青亭網(wǎng)的原理解析后,表示認可:“原理上已經(jīng)寫的很好了。沒什么好補充的了?!?但他也強調:“95%的難度在工程實現(xiàn)上,太多細節(jié)要考慮了?!?/p>
國內專注于大空間多人定位的公司ZVR CEO郭偉也對青亭網(wǎng)指出,激光方案主要是工程方面的問題,在具體的電機調校、產品量產、供應鏈方面會有很多坑。
定位方案相關疑問
綜上,我們對大朋的定位方案進行了解讀。但是聰明如你,一定還有一些疑惑。是的,關于大朋的定位方案,從原理上來說,我們萌生了這幾個問題(見文末附錄)。
青亭網(wǎng)就這些問題對陳朝陽進行求證,對方給出了可以理解的答復:“目前還沒到開源我們的所有原理的時候”。
筆者期待,作為國產硬件中少數(shù)采用自研技術方案的廠商,大朋的定位方案能夠走出一條自己的路,用體驗說話,在未來能夠對這些問題作出完美的解答。
文章來自: 咸寧新聞網(wǎng) http://www.xnnews.com.cn
原文參考:http://news.xnnews.com.cn/qyxc/201704/t20170421_2642108.shtml