日前国外一名开发者对HTC Vive的Lighthouse跟踪技术进行了评测,并发表了博客文章,雷锋网编译如下:
让人又惊又喜的是,Valve最近发布了大部分SteamVR/OpenVR的Linux版SDK协议。这是一个好消息:它意味着用户可以一下子将Vrui(虚拟现实用户界面 )应用接入到HTC Vive头盔及其跟踪控制器。
但是在为Vrui输入设备开发一个Lighthouse跟踪驱动程序插件之前,我决定先弄出一个小测试工具来了解OpenVR的内部驱动程序接口,以及Lighthouse的总体跟踪质量。
不足为奇的是,业内充满关于Lighthouse更新速率漂浮不定的误报。众所周知的是,激光基站的工作原理是Lighthouse自由漂移的位置跟踪的基础。回顾一下:Lighthouse由两个基站构成,每个基站里有一个红外LED阵列,两个转轴互相垂直的旋转的红外激光发射器。基站的工作状态是这样的:20ms为一个循环,在循环开始的时候红外LED闪光,10ms内X轴的旋转激光扫过整个空间,Y轴不发光;下10ms内Y轴的旋转激光扫过整个空间,X轴不发光。
具体来说,两个激光都能围绕各自转轴每分钟旋转3600转,即每秒60转。(目前)只有一个激光能在任何时间全面扫射跟踪卷,所以每一个基站有两个激光器,两个基站(A和B)就有四个激光,相互交错:第一个基站的垂直激光从左到右扫描,另一个基站水平激光从底部到顶部上下扫描,均耗时8.333毫秒。8.333毫秒后,A站激光关闭,B站垂直激光从左到右扫描;另一个8.333毫秒后,B站垂直激光从下至上扫描;然后B站关闭,A站重复方才B站的操作。为了让两个(或更多)基站同步,并让跟踪设备来测量每个基站的相对角度,每一个基站里有一个红外LED阵列。
这意味着,任何跟踪对象每隔8.333毫秒(或120赫兹的频率)就会被激光扫描一次。所以也许可以假设,Lighthouse的跟踪更新速率为120赫兹,同时最糟糕的跟踪延迟便是8.333毫秒。
但这种假设并不成立。在一个紧密的循环里面,SteamVR的vrserver跟踪服务器需要以250赫兹的频率处理每个控制器及头显的新姿势。更深入的说,通过上面的传感器融合代码,其更新速率还能够更高:头盔处理姿势的频率达到1006赫兹,控制器则为366赫兹。
需要解释的是,这些速率数据是基于原始传感器而言的,也就是,内置惯性测量单元来自跟踪对象的线性加速度和角速度,然后可以直接将位置数据传输到电脑上,省略了从摄像头到电脑的高数据传输的步骤。driver_lighthouse.内部的传感器融合代码将这些原始样品整合成当前姿势及设备定位的最佳猜测。
这意味着,假设无线传输和姿势计算增加微不足道的延迟,OpenVR的内部接口,头部跟踪数据最大的延迟大约是1毫秒,而控制器的数据跟踪最大延迟为2.7毫秒。
位置跟踪系统的另一个重要细节就是残留噪音,以及抖动的量。我对这两个细节都进行了测试,我将头盔和一个控制器放在一把椅子上,这个测试空间内有两个 Lighthouse基站,2.4米高,4米宽。
两个基站的残留噪音具有等向性,大约0.3毫米的范围。当只有一个基站工作时,噪声分布具有高度各向异性,与工作基站有0.3毫米的距离,稍远的基站则有2.1毫米的距离。控制器的噪音大小和分布非常相似。这种各向异性是可以预料的,因为Lighthouse的姿势预测可以归结为多点透视成像问题。
其实已经可以从上述的更新速率的描述中推断出来,当受到激光扫描时,Lighthouse每次并不仅仅更新一个跟踪对象的位置和姿势。想反,目前跟踪预测的先进性主要是集成来自每个设备内置的惯性测量单元(IMU)使用航位推测法 得出的线性加速度和角速度的测量,并以样本传输到IMU同样的速率更新。
由于其本身的设计是每个基站使用两个激光器,用以上下左右全方面扫描,而Lighthouse添加了一个额外的利好因素用于偏航修正。 与Oculus的Constellation等基于摄像头成像的跟踪系统不同,Lighthouse在从左到右的扫描中测量跟踪对象的光敏传感器X位置,而Y轴位置只会在上下扫描时进行,互相抵消8.333毫秒。
这有两个主要的影响:第一,它增加了传感器融合算法的复杂性。传感器融合代码必须以独立的步骤限制跟踪方案,而非以单一的摄像头图像约束跟踪对象的姿势预测。更重要的是,事实证明甚至没有一个姿势是局部的,因为当激光扫描整个空间时,设备光敏传感器是会在不同时间被击中的。
第二个是,从Lighthouse系统到传感器融合代码产生的信息的总量只是摄像头成像系统在同样速率下产生的一半。也就是说,基于Lighthouse偏航修正技术的惯性航位跟踪系统并非想当然优于60赫兹摄像头成像跟踪的一倍。
最后的两个调查的参数便是精度和准确度。所谓精度是指——对于同一个空间点的多个后续测量值有多接近,而准确度——对某个点的测量结果有多接近实际的位置。对于6自由度跟踪系统来说这是非常重要的两位参数。
为了测量这两个值,我将一把36英寸长的尺子放在房子正中央,用来测量每一英寸的3维坐标位置。我将一个探针针尖绑在控制器上,局部坐标系里的探针位置可以重复测量,然后我将系统的坐标值与标准的坐标值作比较。两个点坐落的RMS距离为1.9毫米。这就是Lighthouse跟踪准确度的预测误差。
测量点集中存在非线性失真,但总体精度很好,RMS距离更小,为1.5毫米。