快捷导航
查看: 1270|回复: 0

李文权 《VR中各种位置定位的方法》

[复制链接]
我今天跟大家主要讲的就是VR应用中各种位置定位的方法,然后重点可能在后边介绍一下HTC Lighthouse 相关技术原理和实现的方法。

为什么VR一定要位置追踪?

位置跟踪是VR实现沉浸感和临在感的重要手段。如果只是一个简单的头戴设备,比如说Gear VR,如果没有实现位置跟踪就很难实现像HTC Vive的这种效果,我们就只能简单看一个360度视频或玩稍微有一点沉浸感的游戏,但是人是进不去的感觉。可能有小伙伴体验过HTC Vive就知道,如果是位置跟踪做的比较好的话,我们会有身临其境的感觉,可以在一定范围内嘛,实现自由行走,我们就可以根据用户的动作改变用户的视角和体验。

位置跟踪的分类

市面中有很多种分类,但整体上来说是分为两点:inside out outsidein
inside out的实现一般都是通过摄像头对外见场景进行扫描,然后再实现实时性的简析。我是这么理解的简析,比如说我们一种最常见的SLAM,可能大家听说过SLAM,后面我会详细介绍一下,它比如说我们在一个新的环境中,怎么实时的再现当前的图像或者场景。然后能够实时的实现我们在这个场景里的定位。
outside in 就比如HTC Lighthouse等等一系列的,还有Oculus的带摄像头的方式。用外置的追踪设备,如摄像头或激光,并给头显加以标记并和头盔或手柄或者是身体的某个部位实现位置跟踪。
然后我们再说一下inside-out ,现在主要的代表就是SLAMSLAM就是及时定位与图像构建。其实这个东西用的比较多的是在Hololens和一些AR上,在VR上其实用的比较少,它是下一代位置跟踪定位的很重要的一个点。我们举个例子,假设机器人或者我们带头戴设备到了一个新的环境中,怎么能够实时的体现出我在空间当中的位置。它首先应该是这个头戴设备对空间实现一个360度的全方位的扫描,然后计算系统对当前环境实时构建,然后相对应的数据会存储在本地,然后我在当前所处的位置通过摄像头就可以实现实时定位。最代表的就是微软的HololensGoogle Project Tange手机和RealSense都属于RGBD SLAM的范畴。我们通过分析它们的专利,Magic Leap的实现方式应该也是用SLAM的方式来实现实时定位的。
各类型位置追踪的实现方式
outsidein 的实现方式一般都是,体感摄像头、光学定位与图像识别和lighthouse这种方式。体感摄像头,大家有见过微软的xbox之前那个捕捉体感的。然后光学定位,比如说国内做的比较出名的诺亦腾做的Project Alice,他也是用了类似的方式。至于lighthouse之后我会重点教一下它是怎么来实现的。
然后就说体感摄像头这种。首先他判断我们的具体位置,然后在获取深度的信息,实现我们肢体的重要节点的信息获取,然后再通过计算机的计算分析得出大体的一个位置,这种实现方式涉及到摄像头的帧率的问题,它的延时本身做的是比较大的。这种形成的深度图像可用来判断物体对体感设备的相对位置,从而实现数据判断我们骨骼的相关位置。这种方式是比较早期一点的,其实现在用的,国内研究的我看了下也有,但是好像做的也不是很特别好。
光学定位与图像识别这块,我们在2015年底的时候也做了一些研究,采用了帧率大于100赫兹的专业摄像头,并且采用了全局快门系统,因而有效的避免了高速运动的物体的模糊感,这种系统实现的方式就是价格比较贵。一个快速摄像头就是几万人民币或者是十多万人民币。要实现一定的范围,就要配多个这种快速摄像头,同时需要计算机对它处理的要求也比较高,运行的loading也比较大,这样的话延时也比较高,同时价格也比较贵,不利于普通消费者去推广。
重点介绍一下HTC的Lighthouse,它是一种很巧妙的方式,也就是说它难呢也并不难。首先它是有一个同步设备,我们其实在用htc的时候,大家都知道有两个手柄和一个头戴,头戴里面有很多很多凹的这种孔,里面都是一些光敏元器件。手柄上面有一个比较大的像甜甜圈这种前置,它做这么大其实是有原因的,就是激光定位判断两个点的时候,知道两个光敏元器件之间的相对位置。我简单说一下大概的原理,首先它的第一步是两个基站是对角线放的。它首先会发出光的同步信号,同步信号之后就有两个马达,X轴上一个,Y轴上一个,两个马达就实现了在一定范围内的扫描。我们元器件处在空间当中,元器件本身就是手柄和头戴设备,带有光敏元器件,接收到光的扫描,然后就判定了手柄或头戴设备在空间当中的位置。具体是怎么判定和识别的,后面我会详细的介绍一下。
它的技术原理就是激光扫描,激光扫描之后它就有一个同步信号。同步信号就是,它上面有很多点阵的led灯,这样的话它首先发出一个同步信号,接收端,比如是手柄上边的光敏元器件首先接收到这个信号之后,然后X轴上面有个马达对空间进行扫描,扫描的时间是8.33毫秒,然后是Y轴的一个马达再对空间进行扫描,扫描完成之后,在这个点就能计算出当前的位置。
基站的原理就是,它首先有两个基站,一般是对角线放。两个之间一个是主机,一个是从机,假设说是A B。首先A上面有一个矩阵式led灯,它发出同步信号,A上面X轴上有一个马达,马达会发出激光对X轴方面进行一次扫描,扫描的时间长度是8.33毫秒。为什么是8.33毫秒,因为它做的是60帧,这个后面再具体详细介绍。在X轴扫描时,Y轴的激光是关闭的,先是横轴的扫描再是竖轴的,Y轴的激光扫描也是8.33毫秒。A扫描完之后B重复刚才A的动作,首先是同步信号,X轴扫描再是Y轴扫描。这样的话在一个空间,因为速度很快,就会实现一个空间的覆盖了。
接收的方式是这样的,首先光敏元器件接收激光的时候会degree出一个电频高的信号,第一次同步信号发出来时我们会接收到一个信号,之后会degree出一个高电频就判断当前这个位置,同时X轴上扫描时,它就会得到一个信息,因为上面有多个光敏元器件,它就会判断出X轴上每个点的不同位置。同理,当我在Y轴扫描的时候,它也会接收到信息,它这样就会判断出水平上的位置。B 也是同样的原理,这样通过相对的计算,就能算出在这个空间的绝对位置。
我再说一下Lighthouse的优缺点,也是大家公认的。首先它的优点是需要计算能力比较小,高速摄像机的话因为拍的数据比较多,需要的计算量比较大。Lighthouse一般通过时间参数来设定的,这样就不需要大量的图像处理,只需在设备之间找到两个设备之间的绝对位置就能实现。同时它延时很小,没有大量的图像处理,就只是两个点之间的一定算法处理。同时理论上它可以实现多个节点或多个重设备的使用,但是对于现在来说难度太大了。它本身要求的时间精度很高,比如说现在3个重设备的时候,它就需要8.33毫秒,如果你需要更多设备话只有时间减少4毫秒左右才能实现double,同理。
它的一些缺点,精度依赖于系统的时间分辨率。就像刚才说的,一个重设备的就需要8.33毫秒的扫描、判定。时分复用,一个频分复用的概念,按照时间段来做事情,首先,A是做某个事情,B是做某个事情。A做完之后才能做B,这样的话就像时间表。如果是后期的话,它可能做的是频分复用,比如说我激光上戴一个ID信息,接收端就能够判定那一个主设备发射的激光,从而实现多个位置目标的定位。
再来就是主要的一些对比吧,我们的vr头戴设备,如果延时大于20毫秒的话,人就明显能感觉的到,跟身体不太匹配,眩晕感比较明显。它的空间有限一般都是3-4米的精确到角色骨骼,它是一种拍摄的方式最多6人,人多拍摄可能跟丢,过多的杂物或者是多余的红外光源、强反射材质,这样也会影响它的效果。
然后第二种就是一种光学定位系统,就像刚才说的是用一种高速摄像机来拍,这样的成本整个系统下来一般都是几十万,延时也可以做的很小,也可以实现无限的扩展,但是成本是很高,不利于普通者的大面积推广。更多的是可能是做一些商用或者是特殊的一些场地才会用到。这种对人数要求一般不超多4个人。对它的干扰啊其实跟上边也是差不多的,过多的杂物或者是复杂的环境和背景色,遮挡标记点等等这些,尤其是错误的摄像头标定,因为它每一个摄像头会标定对应的空间,如果是摄像头的标定错误,那后边没有办法再判断对应人的或者是对应物体的位置了。
然后就是lighthouse这一套系统,成本整机现在才卖6688,其实本身成本可能就4000元钱以内,它实现的延时能够做到20个毫秒,若是60帧的话只有16.77毫秒,更多的做的是头部和双手手柄的一种跟踪。现在当前人数是1人,其实可能是实现2人或者3人,应该是ok的。然后代表下一代的技术或者是未来的方向的话就是SLAM,实时空间的这种构建,这种现在还是搭建的比较少,它这种对算法要求比较高,要求深度摄像头要么是非度的要么就是全局的,首先是当前环境进行扫描,扫描之后实时构建,构建之后我这个设备就能判断我的设备在这个环境当中的一个什么位置,这样要求的计算量比较大,同时要求主机的能力比较强,这样的话因为现在都没有具体的一个成品出来,所以就很难判断它成本这一块。我可能要分享的大部分就是这样了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ