独家 | 揭秘大朋双目激光定位,HTC的又一劲敌?

作为VR头盔空间定位的代表,HTC Vive一直以其Lighthouse激光定位傲视群雄。也许Oculus、PSVR分别在用户体验和内容上有自己的优势,但要说到房间尺寸(Room-Scale)定位,则已经推出一年的HTC Vive,至今在全世界还没有对手,这也可以看出它激光定位方案的强大。

先给不玩VR的科普下(不玩VR你看这个文章干啥?),所谓Room-Scale,指的就是用户能否自由地在VR里行走。其实,所谓的VR三大硬件(HTC Vive、Oculus Rift、PSVR)都能实现一定程度的Room-Scale体验,但Oculus、PSVR采用摄像头为主的方案,效果并不怎么好,大多数情况下还是坐着不动玩更舒服。

而HTC Vive的激光方案,才让玩家真正能比较自由地在VR里行走,稳定性和行走范围均远远优于另外两者。可以说,HTC Vive啥都能黑,就是这个定位黑不得。

1

在2017年的CES上,国内硬件厂商大朋带来了双目激光定位方案Polaris,似乎是要以自研技术和硬件,对HTC Vive发出挑战。三月末又召开了发布会邀行业人现场体验。经过现场测试,大朋的双目激光定位方案反馈还不错。

但是我们仍然要问,大朋的双目激光定位原理为何?如何实现?相比HTC Vive又有哪些好处?本着刨根问底的精神,青亭网专门采访了大朋CEO陈朝阳,首次详细独家揭示大朋的技术奥秘。

首先来看看,HTC Vive的方案是怎么玩的?

2

首先,要想明白大朋比HTC Vive好在哪里,我们就必须得再详细阐述一下HTC Vive的定位方案(熟悉的小伙伴可以跳过这部分,直接看大朋的)。这一方案使用的是两个名为光塔(Lighthouse)的基站,对角摆放,拉出一块空间,不断发射激光来扫描空间里的HTC Vive和手柄。

那么,基站具体是怎么运作的?现在我们来拆解一下。

3

打开基站,会发现由三个部分组成,分别是LED灯阵列和两个电机。电机分别用于打出一横一竖两个激光面。

如下图,其中红色面为竖直的激光面,扫动方向是水平的,蓝色为水平激光面,扫动方向为上下垂直扫动,红色阴影部分位于蓝色面下方。

4

每当一个激光面遇到传感器,就会停止扫描并记录角度。假如两个面停止位置如图所示,则可以确定传感器位于两面相交线,即图中细红线上。

这样得到的位置信息是不全面的,因为只知道点在哪条线上,不知道具体在线上什么位置,就像去某个地方,只知道在某条街上却不知道门牌号码。因此需要安装多个传感器。

所以聪明的你可能已经猜到了,HTC Vive的传感器都放在头盔和手柄上,坑坑洼洼、如同月球表面的头盔上,每一个小坑都是一个传感器。并且传感器是固定的,不能移动。

5

实际上,系统并不需要确定每个传感器的位置。而只需要确定传感器所在的直线就好了。这就好像吃烤鸡腿,用手拿着可以直接确定鸡腿的位置,也可以拿几根签子穿着固定住,鸡腿的位置同样是确定的。

也就是说,确定位置并不一定需要传感器的点,还可以仅用足够多的线来确定头盔位置。只要知道头盔尺寸,依据下图就能确定位置了。

13

两个激光面扫描完一次,确定的是头盔上一个传感器距离基站的直线方程。只知道扫描到的传感器在这条直线上,但并不知道详细距离。

这个时候就需要知道头盔的尺寸了。然后通过专门的算法,明白在确定几条直线、并已知头盔大小的情况下,头盔唯一有可能的方位在哪里。

在两个激光面扫描完一个传感器后,该传感器就会关闭,以免下次再被扫到。等到扫到五个传感器后(Valve官方给出的数字),头盔定位完成。所有传感器重新打开,开始新一轮的扫描,如此反复。

6

从上所述,理论上传感器只需要五个就够了。然而,实际上定位时由于光线接受可能被遮挡,传感器之间又为了防止串扰信号必须保持距离,因此最后采用的传感器有几十个。所以不要再苛责你头盔为什么长那么丑了,满满的都是爱啊……

重点来了,如何实现完整的数据流程,完成从用户的移动到他们的头盔图像的变化呢?

我们要先确定关键的数据和采集方法。两个激光面能确定一条线(也就是上文所说的,传感器点所在的直线)。那么横竖激光两个面的位置怎么算?只需要角度就能知道了——角度是电机的角速度(转速)和用时的乘积,角速度是恒定的,相当于已知,因此记录下时间就能求出来。

14

下面是具体实现步骤了,对于不学理科的同学来说,可能还是有点复杂,打起精神!

首先基站会和传感器进行一次沟通,同步闪光(sync light),这样传感器会告诉传感器的控制芯片,让它把计时器(类似于秒表的功能)归零,接下来的10毫米内,会有一个激光面扫过,这个激光面接触到传感器的时候,传感器就会发出信号,计时器就停了,记录下时间,然后归零。紧接着另一个激光面扫过,再次记录时间,归零。

这个过程看似复杂,实际上两个电机只要以20毫秒转一圈的速度(也就是每秒50转)稳定运行,而电机上的激光发射器“此起彼伏”地出现就行了。时间值随后会来到传感器的集线器,再到数据收集芯片,通过WiFi信号以某种数据包形式和协议(如UDP)发送到基站的计算部分。

这样得到了两个时间值能转化为角度值,再转为两个面的方程,求出交线,就能获得一个之前说到的传感器所在的直线方程。然后诸多方程合并起来,通过算法算出一个头盔上传感器方位对应的位置,就是对头盔完成了定位。这个定位数据随后会由基站更新到计算机或主机,在3D引擎内修改摄影机位置,重新计算画面,发送到头盔显示器,完成一帧的显示。

那么,大朋是怎么做的呢?

说完了HTC Vive,终于轮到我们今天的正主儿——大朋了!根据青亭网对大朋CEO陈朝阳的采访,再加上观察和HTC Vive的Lighthouse原理推断,大朋Polaris结构应该类似这样:

8

画工丑了点,将就点吧……是的,你没看错,大朋的基站里是三组电机,比Vive多一组。分别为两个打出横激光面的电机和一个打出竖激光面的电机。

如下图,三个激光面会形成三条交线,实际上只任意用两条(比如红和蓝)就能确定交点,该点即为要确定的传感器位置。也就是说,三个扫描面的时候,不是确定传感器所在直线,而是直接把传感器所在位置确定了

9

显然,这样定位方式比起Lighthouse的定位只能确定传感器所在直线位置要更加有效率。只要钉死三个点就能确定位置,也就相当于头盔上最少三个传感器就够了。(当然为了保证精确,实际上不止三个)

不过,实际中设计的时候为了防止横向两个面靠太近,影响精度(就像人要靠两眼间存在距离才好定位一样)。最好的办法就是,把两个横向电机放在纵向电机的上下两个位置

这样传感器的数量比起Lighthouse大约能减少一半。但是存在问题是,如果激光面照不到传感器就没有效果了,为了实现无死角,最简单的方式就是在基站的另一面再放一个基站,就能覆盖到了,这样双基站的设计能让传感器数量再减一半。大概像这样:

10

最后需要的传感器数量大概是Lighthouse的四分之一左右(Lighthouse用了几十个传感器)。事实上,大朋官方也是这样宣传的,即头盔所需传感器相对Vive较少,仅需六个。头盔得以更轻便,而相对的,大朋的基站就要比Lighthouse体积更大

实际工作顺序如下:

首先LED阵列发出闪光,与传感器控制芯片同步一次,然后开始计时。如果能做到16毫秒左右延迟的话,总周期应该是15毫秒以内。

这里假设是15毫秒。则闪光后第一个5毫秒内,第一个横向激光面扫过,传感器发信号之后记录时间;第二个5毫秒内,纵向激光面扫过,传感器发信号后记录时间;第三个5毫秒内,第二个横向激光面扫过,传感器发信号,记录时间,然后WiFi信号传输时间数据包给基站进行位置计算,上传到计算机或主机完成位置数据更新。

11

其实和HTC Vive很类似,只是多出一步横激光面的扫描,定位的不是点所在的直线,而是点的坐标。

陈朝阳的在读完青亭网的原理解析后,表示认可:“原理上已经写的很好了。没什么好补充的了。” 但他也强调:“95%的难度在工程实现上,太多细节要考虑了。”

国内专注于大空间多人定位的公司ZVR CEO郭伟也对青亭网指出,激光方案主要是工程方面的问题,在具体的电机调校、产品量产、供应链方面会有很多坑。

郭伟进一步分析:

“三电机方案可以直接测量出单个传感器位置,因此仅做定位无需单个传感器,姿态由IMU给出即可。但实际实施时IMU的姿态会飘,所以激光还是要给出低频的全局修正姿态,为计算出该姿态需要一个具有三个三维位置的刚体,即三个传感器,因为三点即可对pnp问题求解,虽然是得到4个解,但通过判断很容易剔除基站反方向等3个错误解。”

从这点讲HTC的方案是最优的,通过4个点跳过剔除错误解过程直接得出最优解,第五个点用来做优化,因此想同时得出位置和姿态无论三电机还是二电机需要的点是基本一样的,即二电机比三电机多一个,而不是成倍减少的关系,加上更多点可以避免遮挡,电机的机械寿命问题,我认为vive更优,激光方案的设计趋势应该是减少机械部件即电机。”

但直接得出位置也有很多好处,因为全局校准姿态只需要以相对低频进行即可,比如1hz,短期姿态9轴IMU可以很好处理,我们已经可以做到长时间IMU不飘(取决于IMU融合算法),因此如果我去使用三电机方案我会更极端的只部署正反面共6个点,当其中三个点被扫过的时候全局姿态校准一次,拼概率。”

“另外HTC用的是分时方式,两个光塔4个电机顺序扫描,如果6个电机分时扫描在电机转速一样的情况下采样频率会降低50%,或者保证现有采样率提高50%转速,但带来的就是精度和机械部件不可靠的问题。从这个角度讲HTC还是最优的,做激光方案的最大弱点就是那个机械部件的电机,时间长会不可靠,因此激光方案在任何时候首要考虑的事情都应是减少或消除电机。”

定位方案相关疑问

12

综上,我们对大朋的定位方案进行了解读。但是聪明如你,一定还有一些疑惑。是的,关于大朋的定位方案,从原理上来说,我们萌生了这几个问题(见文末附录)。

青亭网就这些问题对陈朝阳进行求证,对方给出了可以理解的答复:“目前还没到开源我们的所有原理的时候”。

笔者期待,作为国产硬件中少数采用自研技术方案的厂商,大朋的定位方案能够走出一条自己的路,用体验说话,在未来能够对这些问题作出完美的解答

(附录:青亭网对于大朋定位方案提出的相关疑问,感兴趣的小伙伴可以自己思考一下,欢迎与我们交流!

1. 如果采用双基站设计,如何协调两个基站的定位?比如一个传感器接受到红外线,发出信号,这个信号算是基站A的还是基站B的数据?我猜测解决方式可能是不同基站采用不同频段,这样传感器就能识别不同基站发出的激光面了。但是理论上只要知道传感器能够被哪个激光面先扫到就可以知道信息了,或许有算法来避免繁琐的硬件改动?

2. 假设三个激光面扫描时间相等(比如都是5毫秒),电机一般都是匀速转动的,第一个激光面扫完用了5毫秒之后,再次进行扫描是10毫秒之后(也就是另两个激光面扫描的时间),那么这个扫描面应该只有360度的三分之一,也就是120度角,如何实现全方位的扫描呢?

3. 既然是双基站的设计,具体怎么实现单基站和无基站的定位方式呢?比如怎么解决单基站覆盖面不够的问题。

4. 有进行双基站数据校正的必要吗?比如一个传感器在两个基站定位数据存在微小偏差怎么办?

更多精彩内容,关注青亭网微信号(ID:qingtinwang),或者来微博@青亭网与我们互动!转载请注明版权和原文链接!
责任编辑:freeAll
分享到QQ 分享到微信

0 条评论

头像发表我的观点

取消

  • 昵称 *
  • 邮箱 *
  • 网址

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册