VR、AR、MR的区别如下:
1. VR(Virtual Reality)是虚拟现实,是一种完全沉浸式的体验,使用户感觉自己置身于虚拟世界中。
2. AR(Augmented Reality)是增强现实,是通过将虚拟元素叠加到现实世界中来增强用户的感知体验。
3. MR(Mixed Reality)是混合现实,是VR和AR的结合体,可以让用户在现实世界中自由移动并与虚拟元素进行交互。
VR的定位技术标准包括追踪和延迟两个方面。追踪需要能够追踪旋转,也能追踪移动,360度追踪(不管朝向哪个方向都能追踪到6DOF),毫米级或更高精确度,无颤抖噪音(被追踪物体静止时不会出现抖动),舒适的追踪范围(头盔所处的空间定位面积)。延迟方面,一般要求在100毫秒以内。目前应用到消费级VR上的定位技术主要有激光定位、红外光学定位和可见光定位3种,优劣、成本、效果各有不同 。
从动作发生到屏幕显示最后一帧画面的时间低于20毫秒;
整合光学追踪和IMU数据;
循环最小化: tracker → CPU → GPU → display → photons。
在与定位相关的这两点里,我们可以总结以下几条标准:
1、6DOF(可以定位旋转和移动),360°;
2、毫米级或更高的精度,没有抖动噪音(完全静止时定位不会抖动);
3、舒服的定位范围(这里Oculus没有提出舒服的范围是多大,不免有为自己技术辩护之嫌);
4、从运动发生到显示在屏幕上的时间差<20ms,即,延迟<20ms,刷新率>50Hz。
我们在这里加上重要的一个条件:
必须满足多人同时使用。
目前主要有哪些空间定位的技术?
空间定位是一个巨大的话题,我想把问题缩小一下有哪些潜在能为VR/MR服务的室内定位技术,这里就不用讨论GPS这类大范围定位了。
定位数据的描述是我们讨论的基础。在此我尽量避免太复杂的数学,但是因为各种传感器技术获得的数据即使都是关于位置的信息,有的是加速度有的是速度,为了帮助理解,我简单重复一下中学物理和数学里的概念。
定位是要知道一个物体瞬间(时刻k)的位置和角度。以位置为例,可以用来描述。第一阶是位置,第二阶是速度,第三阶是加速度。最理想的是直接知道位置,但是知道速度也有帮助,用 x1=x0+v*dt 可以通过上一时刻的位置和速度、时间求得此刻的位置,可以对位置数据进行矫正;同理三阶的加速度v1=v0+a*dt可以用来矫正速度。角度同样有三阶,角度,角速度,角加速度,我接触的传感器和算法之内没有用到角加速度的,所以旋转可以仅用两阶。
基本逻辑是,获得越低阶的数据越好,用上一阶的数据可以给低一阶提供矫正。也可以跨两阶来矫正,当然必须建立更复杂的数学模型对中间阶进行描述。但是可不可以用高阶观察值直接计算低阶数据? 答案是明确的不可以,IMU不能定位位置的原因也正在这里,后面会解释。
Breandan提到将光学定位和IMU定位结合,我们从IMU讲起:
1、 IMU
IMU尤其是因为InvenSense和Bosch两家的努力,MEMS级别的IMU成本很低而且非常成熟,每个手机里都有一组(iPhone 有两组),它使得Gear VR和同类VR能3DOF定位。下面以Oculus的IMU设计为例:
MU(惯性测量单元)是一种集成了加速度计和陀螺仪的传感器,可以用于计算设备的角速度、加速度等信息。在手机行业中,IMU被广泛应用于虚拟现实(VR)设备,如HTC Vive和iPhone。本文将详细介绍IMU的结构、工作原理以及在VR中的应用。
第一部分:Bosch Bmi055
Bosch Bmi055是由一个加速度计和一个陀螺仪组成的IMU。加速度计可以提供三阶位置信息(x、y、z方向的加速度),而陀螺仪则可以提供一阶旋转信息(x、y轴)。虽然陀螺仪可以协助矫正加速度计提供的一阶旋转信息,但由于地球磁场的存在,我们无法获得完整的一阶z轴旋转信息。因此,我们只能获得三阶位置信息和二阶旋转信息。
第二部分:Honeywell HMC5983(疑似)
Honeywell HMC5983是另一颗IMU芯片,类似于指南针。它可以提供磁力的方向和大小,正好弥补了加速度计缺失的一阶z轴旋转信息。这样,我们就可以获得完整的一阶和二阶旋转数据以及三阶位置信息。然而,关于位置信息,我们仍然只有三阶的加速度数据,无法提供有效的位置信息。
值得一提的是,iPhone同时配有InvenSene MP67B和Bosch BMA280两颗加速度计。这两颗加速度计被认为是用来矫正噪音的。因此,用两颗IMU来矫正数据并不完全是异想天开,尽管其他手机没有采用这种方案,但iPhone确实采用了这种方法。
HTC Vive的内置IMU也是基于类似的配置。虽然IMU可以提供完整的一阶和二阶角度数据,因此可以用来计算空间角度,但是磁场并不可靠,靠近很多电器或者金属磁场都会改变,从而导致drift现象(即在z轴平面内错误旋转)。
IMU不能计算位置的原因在于,用加速度数据来计算位置是一个非常复杂的过程。必须满足两个条件才能进行计算:1. 必须能不断精确矫正初速度;2. 两次矫正时间间隔越久,精度越低。我们走路的脚的移动数据是极少数符合这个应用的例子。落地时速度为0 m/s可以用来矫正,下一次落地间隔不太久。将IMU放在两只鞋子里,就能用三阶模型计算出接近的跑步距离。但是无论如何,IMU只能提供精确的角度数据,不能提供满足VR使用标准的位置数据。
总结:
6DOF:不能,只能提供3DOF信息。可提供三阶位置信息。
单个成本:极低(约10元左右)
计算代价:极低(单片机都可以)
大面积覆盖成本为零,这里插入一个异类STEM。基本逻辑是用人工建立强大的磁场。因为使用环境内只能有一个磁场,而磁场衰减非常快,因此我没有深入研究,推测是用多个磁力计的方向三角计算获得6DOF。感兴趣的同学可以研究了探讨一下。
光学定位(PSVR、Oculus、Optitrack、TheVoid、ZeroLatency)方面,Daniel DeMenthon和Larry S. Davis在1995年在International Journal of Computer Vision发了一篇论文, 'Model-Based Object Pose in 25 Lines of Code'。原文下载。这篇论文建立了一套我们称为POSIT的方法,这套方法建立了整套光学定位的基础。POSIT是通过透视结果(近大远小)计算出物体相对于光线采集设备(比如CMOS)的旋转和位移。没错, POSIT能直接计算出完整的一阶位置和旋转数据。但是,光学定位都需要外部相机。Oculus配备了Constellation,PSVR 比较坏没有包含,但是必须有PS Eye才可以使用PSVR,也是个相机。
比如Oculus,用的是红外LED发光,用没有红外滤镜的摄像头看就是这个样子。取得这张图片,然后用blob detect找到所有点的位置,然后用POSIT方法用点在图片中的x,y位置和原始的三维的位置x,y,z(设计时已知了)就可以计算出Oculus的6DOF。前面提到Oculus同时有IMU提供的3阶位置和2阶及1阶角度数据和光学定位计算出来的1阶位置和角度数据,每个数据有自己的噪音,需要一个方法来计算出一组唯一的数据。我们比较确定的是,Oculus用了一种R.E.Kalman在1960年的论文“A New Approach to Linear Filtering and Prediction Problems”提出的算法来融合和计算出唯一的6DOF数据。
值得一提的是,因为获得数据(图像和IMU采集)的时间T0,计算完成时间T1,和最后画面投在显示屏上的时间T2之间有差(前面提到T2-T0<25ms)。所以这一套Kalman模型并不是直接给出T0信息的计算结果,而是通过2阶数据的计算预测出T2时的数据。这才是真正给出的6DOF,这就是世界最高标准定位算法的追求。
Oliver的测试照片:
通过测试,我们发现Oculus使用LED发光频率来区分每个点,这对于POSIT算法和系统区分多个Oculus都有很大的帮助。而PSVR则延续了PS Eye的方法,同样基于POSIT的光学定位。与Oculus的区别在于,Sony通常采用可见光进行操作。例如在手柄上,Sony使用可见光的颜色来区分玩家和设备。另一个不同之处在于,以前在破解PSEye和PS Move时,我们发现PS的光学只采集1阶的位置信息,无法采集1阶的角度信息,而角度信息完全由IMU提供,这与Oculus有所不同。
摄像头阵列可以覆盖更大的空间范围,这种方案最著名的例子是由专业动作捕捉公司Optitrack提供的TheVoid。TheVoid使用了Optitrack来建立一个可大范围行走的VR空间。Optitrack本质上是通过多个Oculus Constellation阵列捕捉Marker,然后使用POSIT方法计算6DOF(6自由度)。而澳洲的Zero Latency采用了多个PS Eye阵列,其算法和优缺点都非常接近。
下图展示了国内一家VR公司的设备图,设备上的白色小球就是Optitrack的Marker。上图是Optitrack的相机,通过一圈红外发光使白色Marker反光,然后就像Oculus那样计算。Optitrack原本是用于拍电影或采集动作的,因此设计时就考虑了大范围使用的需求。
在使用时,相机阵列如上图挂在上方。这种方法的好处是多个相机不容易遮挡,而且同一个Marker有多个相机捕捉到,因此可以通过融合算法去除噪音(jitter)。
光学定位是对计算机成像(pin hole model)的逆运算。如果你熟悉线性代数,那么理解计算过程会变得非常容易。在这里,我们不涉及复杂的原理,直接给出几个结论。如果需要进一步论证,欢迎讨论。
由于光学采集是FOV固定且CMOS分辨率固定的,因此捕捉分辨率和距离成反比。假设水平FOV为51度,我们在1m、5m和10m的距离上使用两种CMOS分辨率(640x480和2048x2048),每个像素代表的距离如下表所示:
需要注意的是,这里的单位是毫米。在10m的距离上,如果使用640x480分辨率进行采集,即使发生14mm的位移,仍然可以在一个像素内恢复,这意味着我们无法捕捉到这个位移。根据Brendan所说的mm级(sub-mm)精度标准,我们需要大量的高分辨率相机才能实现这样的精度。
光学定位的POSIT算法计算成本较高,且随着相机数量的增加,计算和通信成本呈指数级上升。因此,虽然光学定位理论上可以大范围复制,但实际应用中可能会遇到成本和性能瓶颈。
总结:
1. 6DOF(六自由度):一般辅以IMU(惯性测量单元)3DOF信息计算。
2. 单个成本:不低(高分辨率,高刷新率)。
3. 计算代价:高(CPU配合GPU计算)。
4. 大面积覆盖成本:与覆盖面积成指数级,成本迅速上升。起步价:5000元/m2。
Lighthouse(HTC Vive)是一种由Valve公司创新的定位技术。它采用了一种非常聪明的技术,当然也不是Valve发明的。最早在几个美国大学的实验和论文中有试验过类似的方法。Lighthouse有两个,一般对角放置。两个之间有一个是Master,两者通过光学同步,同步之后Slave才会开始工作。每个Lighthouse里面有两个3600rpm Nidec电机,分别发出线性红外激光扫过整个空间。
Vive拆开后可以看到32个红外二极管,当收到闪光或激光扫描时,二极管电压上升。如果我们取三个二极管E、F、G在X平面里看:
- Lighthouse A 闪光
- E、F、G都高电压,此时记为时刻T0
- Lighthouse A – X激光开,扫描房间。Y激光关 (8.333ms)
DOF定位技术是一种可以确定物体在三个坐标轴上的相对位置和方向的技术。这种技术通常涉及两个主要步骤:特征提取和位姿估计。
在6DOF定位中,通常使用以下几种方法来提取特征:尺度不变特征变换(SIFT)、加速鲁棒特征(SURF)、方向梯度直方图(HOG)等。
位姿估计是使用提取的特征来确定物体的6DOF位姿的过程。
6DOF定位技术可以辅以IMU 3DOF信息计算,以提高精度。
单个成本方面,6DOF定位技术的成本较高,但是计算代价较低。大面积覆盖成本方面,目前无法实现。
深度传感器在近年来得到了广泛的关注,尤其是结构化光(Structured Light)和ToF技术的发展。以下是一些知名深度传感器及其背后的公司:
1. Primesense被苹果收购,其产品成为许多设备的标配,如iPhone、iPad等。
2. Pebbles Interfaces被小米投资,该公司的产品主要应用于智能家居领域。
3. Intel收购了Softkinetic,并推出了Realsense深度相机,广泛应用于计算机视觉、自动驾驶等领域。
4. 微软收购了Canesta,并推出了Kinect for Windows,将深度感知技术应用于游戏和虚拟现实领域。
5. Google投资了Movidius,并将其技术应用于Tango项目中,用于增强现实和虚拟现实应用。
这些深度传感器主要采用结构化光技术,而使用ToF技术的相对较少。ToF(Time of Flight)是一种通过测量光信号传播时间来获取物体距离的技术。
深度信息的VIO(Visual-Inertial Odometry)方法涉及到SLAM(Simultaneous Localization and Mapping)技术,这是一种常用于机器人和三维扫描领域的建模环境技术。我们曾在早期尝试过使用SLAM算法进行定位,后来在开发VR(虚拟现实)应用时,从VIO中提取出了定位部分,使得系统可以仅依靠摄像头实现高精度的定位。
VIO方法的基本原理是通过深度传感器获取RGBD信息(包括彩色图像和深度信息),然后利用SIFT(Scale-invariant feature transform)和RANSAC(Random Sample Consensus)算法在RGB图像中找到特征点。接下来,通过比较两帧之间的特征点空间位置变化,获得6自由度(DOF)的变化值。因此,实际上VIO方法得到的是6自由度的变化值,而非绝对的位移信息。
SIFT是一种用于寻找图像特征的方法,由Evernote的Clockwork Software公司在2004年发布。两年后,SURF(Speeded Up Robust Features)也问世。SIFT和SURF是目前最常用的特征算法,它们基于数学方法来描述图像的关键特征点。
在VIO过程中,需要计算不同特征点对之间的单应性矩阵(homography)。RANSAC算法的基本原理是随机选择三对点,计算它们的单应性矩阵。然后收集所有点的计算结果,计算出一个多数一致的单应性矩阵作为最终结果。在这个过程中,错误的平行线特征点会被剔除。
IO(Visual-Inertial Odometry)是一种基于视觉和惯性传感器的数据融合方法,用于估计机器人的位姿。VIO的优点是不需要外部设备帮助,因此面积成本为0。但是,Johnny Lee自己也承认,VIO有两个主要技术缺陷:
1、 每次开机它不知道设备的位置。
2、 长距离和长时间的使用,误差会累计变成drift。
Microsoft没有提Hololens怎么解决这两个缺陷。但是Johnny Lee不断强调Tango的另一张王牌是Area Learning,通过用数学描述记住环境信息,然后通过辨认环境来确定自己的开机位置和矫正长时间误差。这个方法能优化到什么程度不好判断,但是毕竟是世界第一大牛在做,也许能出奇迹。
ORB(Oriented FAST and Rotated BRIEF)是一种流行的SIFT/SURF替代品。Ethan Rublee、Vincent Rabaud、Kurt Konolige、Gary R. Bradski等人提出了ORB:An efficient alternative to SIFT or SURF. ICCV 2011: 2564-2571 。西班牙的Uni Zaragoza优化了ORB做了一整套SLAM算法,与传统的SLAM相比特别之处在于用AreaLearning数据矫正偏移。这套算法是开源的,对Area Learning感兴趣可以看一下这里。
从理论推导和实验结果我们都判断即有了J Lee的Area learning ,VIO的方法在两个情况下无法工作:
1、 面对环境不可辨认,比如纯色的墙,纯色的桌子。桌子越乱定位效果越好,处女座比较惨。
2、 面对室外环境。因为深度传感器有距离限制,空间大小超出限制就没有深度信息了。
我们看到Hololens的demo把地板贴到墙上来做VIO,如果是白墙这个demo就无法工作了。因此我们停止了VIO用于定位的开发,但是,深度依然非常好玩,在VR应用中也许会起到意料之外的作用。
一、技术原理和适用范围
1. IMU(惯性测量单元)
单个成本:最高(深度,视觉传感器)
计算代价:次高(CPU配合GPU计算)
大面积覆盖成本:0,但是某些场景无法工作
2. ToF (UWB,光,声)
ToF是按照时间来计算的。基站发出信息t0,你收到信号的时间t1,用信号的飞行速度v*dt就知道了离这个基站的距离,而多个预先知道位置的基站就可以提供三角定位。这和GPS的原理接近。
ToF用时间来计算,因此精度特别取决于处理器主频。我们知道光和UWB的飞行速度是3E11 mm/s。如果我们用4.8Ghz的的主频,两个周期之间的时间,光可以飞行62.5mm,如果用20Mhz的ATmega,每个周期光可以飞行15000mm。这个数字就是计算精度。如果我们需要mm级的精度,只有提高主频,或者降低信号的飞行速度。同样是20Mhz主频,用音速的话,每个周期声音飞行0.017mm,这就是可以定位了。但是声音的矫正和信号编制是个挑战,所以基本上ToF的方案就不考虑了。
二、哪种定位技术最好?
根据前面提到的方法分类,AR不需要定位;VR和MR本质上是一种技术,VR是100%的MR,VR对定位精度的要求略低于MR;MR能用的VR一定能用。将几种定位方法总结成一张表:
除了IMU不可行外,后三种技术都可以独立为VR设备定位,而一般都会用IMU数据做辅助矫正。其中,光学定位和VIO技术目前可以在大范围内使用。光学覆盖成本很高,VIO设备成本也很高,而且某些场景下会失效。因此,目前没有一种能满足所有需求的技术。
需要注意的是,这些观点仅代表一家之言。我们长期关注相关研究论文,认为这几年VR的高速发展已经基本穷举了所有基础研究的成果,被忽视或错过的基础方法的可能性不高。虽然前面保留了磁力方案和声音ToF方案,但它们成为主流的可能性较低,甚至可能是死胡同。
从另一个角度看,技术本质是一种交易:用成本换取速度,用能耗换取时间。随着深度学习、无人车等平行市场的需求推动计算构架的高速发展,Intel、ARM、Nvidia的CUDA以及Movidious的Myriad 2(DJi4和Tango使用了它)都有可能给我们提供更多筹码去做性能上的交易。因此,可以先放弃低功耗和低性能要求这两个条件,去探索在功耗性能都不做限制的情况下是否存在可行方案。
Hoevo是一家VR/AR公司,他们的方案是提供高刷新率的6DOF绝对定位。他们相信VR/MR会像GPS、移动网络一样铺满这个世界,无处不在。为了实现这个未来,就需要在大范围定位技术上有突破,而Hoevo的方案500元每平米,普通建筑工人都可以建设,理论上可以铺设无线范围的空间。
IFT是一种寻找特征的方法,它是由David G. Lowe在2004年的论文中提出的。这篇论文的标题是“Distinctive Image Features from Scale-Invariant Keypoints”。这篇文章介绍了一种新的算法,可以在不同尺度下保持图像特征不变。SURF是另一种用于寻找特征的方法,它是由Bay、Tuytelaars和Van Gool在2006年提出的。这篇文章的标题是“SURF: Speeded Up Robust Features”。这篇文章介绍了一种快速而鲁棒的特征提取算法,可以在不同的尺度和光照条件下提取出高质量的特征点。RANSAC是一种求解最优模型参数的方法,它由Martin A. Fischler和Robert C. Bolles在1981年提出。这篇文章的标题是“Random Sample Consensus: A Paradigm for Model Fitting with Applications to Image Analysis and Automated Cartography”。这篇文章介绍了一种基于随机样本一致性算法的模型拟合方法,可以用于图像分析和自动化制图等领域。SLAM是一种同时定位与地图构建技术,它比较简单易用,并且有很多优秀的论文支持。其中一篇比较著名的论文是由F. Endres、J. Hess、N. Engelhard、J. Sturm、D. Cremers和W. Burgard共同撰写的:“An Evaluation of the RGB-D SLAM System”,这篇论文发表于2012年的IEEE机器人自动化国际会议上。