HoloLens 2开发入门精要:基于Unity和MRTK
上QQ阅读APP看书,第一时间看更新

1.3.1 传感器数据

携带于运动主体上的各类传感器,如激光传感器、摄像机、轮式编码器、惯性测量单元(Inertial Measurement Unit,IMU)、深度传感器等,它们采集的环境信息为整个SLAM系统提供数据来源,其中轮式编码器会测量轮子转动角度,IMU测量运动角速度和加速度,摄像机、激光传感器、深度传感器则用于读取环境的某种观测数据,它们测量的都是间接的物理量而不是直接的位置数据,我们只能通过这些间接的物理量推算运动主体位姿(Pose,包括位置和方向)。就HoloLens 2设备而言,我们只关注来自摄像机的图像信息、IMU运动信息、深度传感器信息,理论上我们可以通过这些数据解算出运动主体精确的位姿信息和环境地图,但遗憾的是来自各类传感器的数据都不是完全准确的,都带有一定程度的噪声(误差),这使问题变得复杂化,因为噪声数据会导致计算误差,而这种误差会随着时间的推移快速累积(试想一下,一个微小的误差以每秒60次的速度迅速放大),很快就会导致定位和建图完全失效。

以图像数据为例,来自摄像机的图像本质上是某个现实场景在相机成像平面上留下的一个投影,它以二维的形式记录了三维的场景,因此,图像与现实场景相比少了一个深度方向的维度,所以仅凭单幅图像无法恢复(计算)拍摄该图像时相机的位姿,必须通过移动相机获取另一张图像形成视差才能恢复相机运动,这也就是HoloLens 2设备在使用时必须移动才能实现正确运动跟踪的原因。

图像在计算机中以矩阵的形式进行存储和描述,为精确匹配图像中的像素与现实世界中的环境点,图像数据还要进行校准才能进入SLAM系统中,校准分为相机光度校准与几何校准两部分。

光度校准:光度校准涉及相机底层技术,通常要求OEM厂商参与。因为光度校准涉及图像传感器本身的细节特征及内部透镜所用的涂层材料特性等,光度校准一般用于处理色彩和强度的映射。例如,正在拍摄遥远星星的望远镜连接的相机需要知道传感器上一像素光强度的轻微变化是否确实源于星星的光强变化或者仅仅来源于传感器或透镜中的像差。光度校准对于MR跟踪的好处是提高了传感器上的像素和真实世界中点的匹配度,因此可使视觉跟踪具有更强的稳健性及更少的错误。

几何校准:以普通相机为例,几何校准使用针孔相机模型来校正镜头的视野和镜筒畸变。由于镜头的加工精度、安装工艺等缘故所有采集到的图像都会产生变形,软件开发人员可以在没有OEM帮助的情况下使用棋盘格和公开的相机规格进行几何校正,如图1-4所示。

图1-4 对图像信息进行几何校准示意图

对SLAM技术而言,光度校准确定了真实物理点与成像点颜色与强度映射,镜头出厂后不会再发生变化,而由于镜头加工精度、安装工艺等所导致的畸变却会影响真实物理点与成像点的位置对应关系,它们对整个SLAM系统的精度影响非常大,必须进行预先处理,常见的畸变有桶形失真和枕形失真两种,如图1-5所示。

图1-5 图像畸变类型

除了图像数据噪声和畸变外,IMU数据也不准确,IMU产生数据的频率非常快,通常能达到每秒100~1000次,IMU误差主要来自噪声(Bias and Noise)、尺度因子(Scale Errors)和轴偏差(Axis Misalignment),在极短的时间内,我们可以信赖IMU数据,但由于IMU数据频率高,误差也会在短时间内快速累积,因此也需要对IMU数据进行校准。

深度传感器也会带来误差,除了深度传感器本身的系统误差和随机误差,环境中的透明物体、红外干扰、材质反光属性都会增加深度值的不确定性,也需要进行误差校准和外点剔除。