2016 年被大家称为 VR 元年,当时用户能感受到的仅仅是最初级的 VR 体验,就是一些头盔硬件,把手机插在头盔里。目前,在 VR/AR、自动驾驶、无人机这些新兴领域,传统的交互方式已经不能满足用户的需求。随着深度学习、计算机视觉等领域的突破性进展,一些新的交互方式已经成为可能。
基于过往经验来看,研发 VR/AR 技术主要就是打造沉浸感,沉浸感是 VR/AR 带给用户不同于手机的特殊体验。实现沉浸感,需要有交互、显示和移动性这三方面技术支撑,以下内容,我们将以交互技术为核心展开。
在 AR/VR 领域中,交互不再用鼠标和键盘,大部分交互技术均采用手柄。还有位置跟踪技术,在一些高档的 VR 设备中会提供,但成本较高,且需要连接电脑或主机来实现。未来,可能会采用用手直接抓取的方式,目前也有很多手势交互方案提供商。
uSens 主要侧重 AR/VR Interaction:
左侧的 HCI((Human-ComputerInteraction)就是人机交互界面,uSens 主要提供 Gesture(手势识别)、View Direction(头转向识别)和 Position Tracking(位置追踪)。右侧是显示技术,AR 和 VR 的显示技术虽不同,但交互技术却相通。
手势交互技术
如下图,手势交互分为符号型、间接型和直接型三种:
如下图,是常见的硬件对三个场景的实现能力分析:
手势交互技术的使用场景
手势交互技术的使用场景很广泛,不光在 VR 领域,如下图所示:
如图中所示,像 Game、3D UI、Drive、Public Display、Medical 和 Intelligent Home 等,前三种是为了更好的体验,后三种则是在公共场合下的应用;像手术、做饭等出于干净、卫生等方面考虑。
基于 AI 的手势交互技术
uSens 从 2014 年开始,用深度学习算法来解决手的识别问题。虽然研究手势识别的人不多,但是和图像识别、人脸识别一样,都可以用深度学习来实现。
uSens 用深度学习研发 26 自由度手势识别,可以从图像里边把手的关节点和关节点角度与位置识别出来。
如下图,是 26 自由度手势识别算法的大致思路:
参考 2014 年深度学习的一个案例,主要是借鉴 CNN 方式,不同图像通过不同尺度的 CNN 进行卷积,得到一个大的向量,再用两层全连接的深度网络得到关节点的 heat-maps。
heat-maps 就是关节点在图像上的概率分布,如上黑框中所示,蓝色的点就是小指指尖分布图,在这个点权重比较大,其他位置减弱。得到每个关节点的权重图,再用反向动力学、滤波等方法,就可以跟踪出手 26 自由度的运动。
运动跟踪(空间定位技术)
如下图,是运动追踪的主要应用场景:
如图中所示,运动追踪最早在军事上使用,如导弹、飞机等需要在空中定位自己的位置,空间定位技术优化之后用于智能机器人、无人车、扫地机器人等。
VR/AR 也需要这样的空间定位技术,如下是当前研发和掌握空间定位技术的公司及产品:Google Tango、Microsoft Hololens、Qualcomm VR SDK、Apple ARKit、Snapchat、Facebook和 uSens。
空间定位技术/视觉方法
空间定位技术需要结合视觉和传感器两方面的信息。
如下图,是视觉特征模型:
如图右侧中所示,是一个相机成像,通过相机观测三维空间中的一个点,可以得到一张图像,3D 点和图像满足下放投影方程。
左边是三个比较常用的问题:
视觉 SLAM 方法
视觉 SLAM 方法包含 Tracking 和 Mapping 两个模块,Tracking 模块的功能是已知 3D 点位置,求解每帧图像的相机 pose。Mapping 模块的功能是用来更新 3D 点的位置。
视觉特征
空间定位技术的视觉特征可分为如下两种:
基于图像特征点的方法,如 PTAM,ORB。
直接法,比较像素灰度差,如 LSD-SLAM、DSO-SLAM。
求解方法
根据上图所示方程,求解方式有基于滤波的算法和基于优化的算法两种,这些方法目前没有好坏之分,在实际系统中都可以达到相似效果。
空间定位技术/传感器
上述的视觉方法能够达到实用的程度,要归功于传感器的进步及传感器信号融合到算法中,使得系统性能得到提升。
如下图,是传感器:Mechanic Gyroscope、LaserGyroscope 和 MEMs Gyroscope:
如上图,左一是 Mechanic Gyroscope(机械陀螺仪),利用角动量保持不变的特性。当中间的转子保持高速旋转,但中间转子方向不变,这样可以得到设备的旋转方向。这样老式的机械陀螺仪用于几百年前的轮船中。
当前,Laser Gyroscope(激光陀螺仪)高精度陀螺仪都是用激光的方式,如上图中间小图所示,用于导弹在空中飞行,几个小时误差约在 100 米左右。
激光陀螺仪中间有一个激光源,向两个方向发射激光。如物体静止不动,两条光线的光路长度相同,在接收端的两条光路相差是零;如果物体旋转,两条光路就会发生特别微小的变化,就会产生相差,通过识别相差,得到整个设备的旋转速度。
MEMs Gyroscope(微机械陀螺仪),用于手机或 VR 头盔中。这种陀螺仪做的很小,会用到一些机械结构来识别运动。
在微机械陀螺仪中,有两个可以活动的扇片,当物体旋转,扇片会保持不动,通过识别角度,就可以推断旋转速度。
这种微机械陀螺仪会比激光械陀螺仪差很多,如单独使用是没办法达到预期效果,所以必须要结合陀螺仪和视觉信息一起进行。
IMU(惯性测量单位)
如下图,是 IMU 中的陀螺仪和加速度计:
IMU 中的陀螺仪,输出的是相邻时刻相机旋转的角度。IMU 中的加速度计,输出的是相邻时刻相机的加速度,即速度的变化率。
空间定位技术/传感器存在的问题
如下图,是传感器存在的问题:
传感器数据采样有离散和漂移的,如图一所示,连续线是实际的加速度,但是 IMU 采样是离散的,所以最高点并没有采样到,导致结果出现有误差。
IMU 得到的加速度是包含重力的,实际中,重力产生的加速度是远大于一般移动时产生的加速度,所以要去掉重力就需精确估计朝向。
IMU 和相机的相对位置和方向影响很大,两个位置是不在一起的,它们之间有相对位移且由于工业生产原因,两者之间的相差很小一个角度。
经研究发现,哪怕角度差一度,对最后整个系统的精度影响也会很大,所以必须在线标定两者之间的角度和位移。
IMU 和图像的采集时间不一致,相机采样频率大概是 60、30 帧,但 IMU 采样频率很高,一般都是 500、800、1000,采样频率、采样时间不一。
解决这些问题的方式是:传感器+视觉融合
如下图是预积分与摄像机标定:
当 IMU 的采样率比图像高很多时,采用预积分的方法,可以把图像帧之间的 IMU 信息积分起来,当成一量。这样就不需要优化每帧 IMU 的点。
相机 IMU 和世界坐标系之间的关系,需要精确的标定,如果差一度,整个系统就会完全崩溃。
空间定位技术/ATW
ATW(Asynchronous Timewarp)是一种生成中间帧技术,可有效减小延迟, 通过预测未来的双眼位置来提前渲染。
相机图像采集,SLAM 算法,渲染,这些过程都需要处理时间,统称为“Motion to Photon Latency”。在 VR 应用中,需要小于 20ms,才能保证用户不会眩晕。
如下图,是渲染过程:
从图中看出,整个过程包括了很多运算,有图像获取时间、算法处理时间和渲染时间,渲染结果到最终结果显示时间,这些可以通过 IMU 数据得到,但有些必须经过预测。
如下图是 uSens 的硬件产品进化过程体现在更小、compact、更易于嵌入式、功耗更低。
如下图,是硬件规格(Hardware Spec):
产品硬件经过几次迭代,从尺寸上和功耗上都比之前小很多。红色标注是对效果影响比较大的因素,如全局曝光分辨率、双系统、左右相机同时采样等。
未来,VR/AR 技术面临的问题
如下图是智能视觉系统:
当前应用在 VR/AR 场景中,实际上它可以应用如上图所示的更多场景中,比如广告机、车载手势识别、机器人和无人机。
人机交互技术的发展由两方面的因素决定:一方面是用户希望拥有更自然的交互方式;另一方面是技术的进步使得交互更加自然和方便。未来人机交互方式将会包含自然手势理解和环境感知这两个核心功能。