ARFoundation(ARCore)系列-1.2 AR技术原理

      AR我们知道他是在现实世界上叠加虚拟物体,让我们觉得这个虚拟物体确确实实是在现实中的。让我们觉得这个虚拟物体是在现实中的我们最基本需要实现两个功能

  1. 位置是和现实世界稳定贴合的
  2. 现实世界的物体是能够遮盖住虚拟物体的

那么实现这两个功能在AR中实现的原理是什么呢

1)SLAM

      AR技术的核心技术基础是SLAM(Stimultaneous Localization And Mapping,同时定位与建图)技术。SLAM技术主要功能就是在没有环境先验信息的情况下,于运动过程中建立环境模型,同时估计自己的运动,SLAM主要解决两个问题:

  1. 估计传感器自身位置
  2. 建立周围环境模型

      近几年来SLAM技术理论、算法框架已经基本定型,现代典型视觉SLAM技术框架如图:
在这里插入图片描述

      在2023年科技技术突破非常多的一年,SLAM不仅仅是AR/MR的技术原理,也是自动驾驶、激光点云扫描、自主导航无人机、机器人等众多需要自主定位技术的基础。

1.1)传感器设备

AR中需要的传感器设备普遍有:

  1. 激光传感器
  2. 相机
  3. 轮式编码器:测量轮子的转动角度
  4. 惯性测量单元(IMU,Inertial Measurement Unit):运动角速度和加速度
  5. 深度传感器

是的你没看错,一个视觉SLAM定位需要这么多传感器的数据,然后才能计算出来设备在空间中的位置。

      他们获取的都是间接的物理量,不是直接的位置数据,SLAM是通过这些间接的物理量来推算出位置和位姿。其实按照这种计算是可以计算出精确的位姿和位置信息,但是这些传感器设备都是会受到噪声的干扰产生误差的,然后因为他们的执行速度非常快,例如:1秒60帧,这种误差一下就会变得很明显。

1.1.1)相机

      视觉算法无法通过一张照片来估算出真实世界的当前的位姿,而是通过很多张不同位置相同场景照片的视差来估算出真实世界的位姿,所以我们使用AR应用时需要移动才能进行正确的运动跟踪。

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

  1. 相机光度校准
          光度校准涉及相机底层技术,通常要求OEM厂商参与。光度校准涉及图像传感器本身的细节特征及内部透镜所用的涂层材料特性等光度校准通常用于处理色彩和强度的映射
          例如:正在拍摄遥远星星的望远镜连接的相机需要知道传感器上一像素光强度的轻微变化是否确实是源于星星的光强变化或者仅仅来源于传感器或透镜中的像差
          光度校准对于AR运动跟踪的好处是提高了传感器上的像素和真实世界中点的匹配度,因此可使视觉跟踪具有更强的稳健性及更少的错误
  2. 几何校准
          以普通相机为例,几何校准使用针孔相机模型来矫正镜头的视野和镜筒的畸变。由于镜头的加工精度,安装工艺等缘故所有采集到的图像都会产生变形,软件开发人员可以在没有OEM厂商帮助的情况下使用棋盘格和公开的相机规格进行几何校正
    在这里插入图片描述
    镜头出场以后不会再发生变化,由于镜头加工精度、安装工艺等所导致的畸变会影响真实物理点与成像点的位置对应关系,它们对整个SLAM系统的精度影响非常大,必须进行预先处理常见的畸变有桶形失真和枕形失真两种
    在这里插入图片描述

1.1.2)IMU

IMU的误差常常来源于:

  1. 噪声
  2. 尺度因子
  3. 轴偏差

IMU的运行速度非常快,所以IMU的数据也会对产生的微小偏差快速放大,所以IMU的数据也需要进行校准。

1.1.3)深度传感器

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

1.2)前端里程计

基于视觉的SLAM前端里程计通常成为视觉里程计(VO)。

主要任务:

  1. 估算相邻图像间的运动
  2. 建立局部地图

移动设备中运行的前端里程计通常融合了视觉、IMU各传感器数据,可以提供更高精度和稳健性

      里程计通过定量地分析图像与空间点地几何对应关系、相对运动数据,能够估计相机运动,并恢复场景空间结构,前端里程计只计算相邻时刻的相机运动,不关联之前的数据,因此不可避免地会出现累计漂移,以这种方式工作,先前时刻的误差会传递到下一时刻,导致经过一段时间后,估计的运动轨迹误差越来越大,原本直的变成斜的,圆的变成椭圆的,为解决累计漂移问题,需要引入额外的抑制技术:后端优化和回环检测

1.3)后端优化

      概括地讲,后端优化主要指处理SLAM过程中地噪声问题

      便宜的传感器测量误差较大,昂贵的则较小,有的传感器还会收到磁场、温度、红外线的影响。所以除了解决“从相邻时刻估计出相机运动”之外,还需要关心这个估计带有多大的噪声及如何消除这些误差。

      在SLAM框架中,前端给后端提供待优化的数据,以及这些数据的初始值,后端负责整体的优化过程,面对的只有数据,而不必关心这些数据到底来自什么传感器。

      在ARCore中,前端与CV领域更为相关,例如图像的体征提取与匹配,也包括图像数据与IMU或者ToF数据的融合。

      后端则主要是滤波与非线性优化算法,通过后端优化,能够有效的抑制误差累积将整个SLAM系统维持在一个可接受的精度范围之内。

1.4)回环检测

      回环检测,又称闭环检测,主要解决我们前面提到的前端计算中位姿估计随着时间漂移的问题。

      假设实际情况下,运动主体经过一段时间运动后回到了原点,但是由于漂移,他的位置估计值却没有回到原点。 如果有一种手段感知到“回到了原点”这件事,或者把“原点”识别出来,再把位置估计值“拉”回去,就可以消除漂移了。

      这就是所谓的回环检测。

      回环检测与“定位”和“建图”二者都有密切的关系。事实上,我们认为,地图存在的意义主要是为了让运动主体知晓自己到达过的地方。

为了实现回环检测。需要让运动主体具有识别曾经到达过场景的能力。实现回环检测的手段有很多:

  1. 例如可以在环境中某个位置设置一个标志物(如一张二维码图片),只要他识别到了这个标志,就知道自己回到了原点。但是该标志物实际上是对环境位置的一种人为标识,对应用环境提出了限制,而我们更希望通过运动主体自身携带的传感器----图像数据,来完成这一任务。
  2. 例如可以通过判断图像间的相似性来完成回环检测,这一点和人类是相似的,当我们看到两张相似图片是,容易辨认他们来自同一个地方,但是其实在计算机中实现这个事情比想象的要难很多,例如如何理解环境中有什么?典型的人类简单计算机难得问题。

      如果回环检测成功,可以显著得减小累积误差,所以回环检测,实际上是一种计算图像数据相似性的算法。由于图像的信息非常丰富,使正确检测回环的难度也降低了不少。在检测到回环之后,我们会把“A与B是同一个点”这一的信息通知后端优化算法,后端根据这些新的信息,把轨迹和地图调整到符合回环检测结果的样子。这样,如果有充分且正确的回环检测,就可以消除累积误差,得到全局一致的轨迹和地图。

1.5)建图

      建图是指构建地图的过程。地图是对环境的描述,但这个描述并不是固定的,需要视觉SLAM的应用而定。

      相比于前端里程计、后端优化和回环检测,建图并没有一个固定的形式和算法。

      一组空间点的集合可以称为地图,一个三维模型也是地图,一个标记着城市、村庄、铁路、河道的图片亦是地图。

      地图随SLAM的应用场合而定,按照地图用途,地图可以分为:

  1. 度量地图
          度量地图强调精确的表示地图中物体的位置关系,通常用稀疏与稠密对他们进行分类,稀疏地图进行了一定程度的抽象,并不需要表达所有的物体。例如:选择一部分具有代表意义的东西,称为路标,那么一张稀疏地图就是路标组成的地图,而不是路标的部分就可以忽略掉。
          相对的,稠密地图着重于建模所有看到的东西。对于定位来讲稀疏地图就足够了,而对于导航则需要稠密地图。
  2. 拓扑地图
          拓扑地图是一种点与线相对位置关系正确而不一定保持图形形状与面积、距离、方向正确的抽象地图,拓扑地图通常用于路径规划。

      主要使用稀疏度量地图实现对物理环境的映射,但在搭载有ToF传感器的设备上可以通过物理方法得到场景深度值,利用这些深度信息,通常算法就可以建立环境的映射(对场景几何表面进行重建),因此可以允许虚拟对象与真实物体发生碰撞及遮挡。

      环境映射是实现真实物体与虚拟物体碰撞与遮挡关系的基础,在对真实环境进行三位重建后虚拟对象就可以与现实世界互动,实现碰撞与遮挡。

通过SLAM技术,不仅能解算出运动主体位姿,还可以建立周围环境的地图,对齐虚拟世界与真实物理世界,因此,就能以正确的视角渲染虚拟元素,实现与真实物体一样的透视、旋转、物理模拟现象,营造虚实融合的AR体验。

以上内容为笔者在阅读汪祥春老师写的《ARFoundation增强现实开发实战》书籍的阅读笔记,汪老师实在是太强了!

猜你喜欢

转载自blog.csdn.net/qq_45955580/article/details/131352938
今日推荐