目录
1.关于AR Foundation、ARcode、ARkit 对比图
一、AR技术的应用
🌱AR系统的特点
- 真实世界与虚拟三维数字世界对齐融合
- 虚实信息相互影响实时互动
- 虚实世界均遵循几何一致性和光照一致性原则
一般来说我们有两种思路实现AR
- 基于标识的增强现实:采用图片作为标识物,在此基础上叠加虚拟信息
- 无标识增强现实:实时跟踪设备位姿,在此基础上渲染虚拟信息
🌱AR技术的原理
“对于AR来说,最基础的功能是感知设备位置”
就是在现实世界最找到此时观察者的位置,在此基础上进行场景搭建渲染,信息识别
这个核心技术基础是SLAM,既搭载特定传感器的主体,在没有环境先验信息的情况下,于运动过程中建立环境模型,同时估计自己的运动。
同步定位与建图技术(Simultaneous Localization and Mapping,简称SLAM)是一个专用术语,也称为CML(Concurrent Mapping and Localization)或并发定位与建图。
可以描述为:机器人在未知环境中从一个未知位置开始移动,在移动过程中根据位置和地图进行自身定位,同时在自身定位的基础上建造增量式地图,实现机器人的自主定位和导航。
SLAM技术解决了两个问题:
- 估计传感器的自身位置
- 建立周围环境模型
接下来我们来逐一分析:
(1)传感器数据:
携带于运动主体上的各类传感器
- 激光传感器
- 相机
- 轮式编码器
- 惯性测量单元
- 深度传感器
注意:以上传感器测量的都是间接的物理量而不是直接的位置数据
我们只能通过这些物理量来推算出当前运动物体的位姿,所以在使用AR应用时必须移动才能实现正确的运动追踪。
(2)校准:
图像在计算机中以矩阵的形式进行描述和储存,为精确匹配图像中的像素与现实世界中的环境点,图像需要校准才能进入SLAM系统中。
校准分为:
- 相机光度校准
- 几何校准
(3)前端里程计
主要任务就是计算相邻图像间的运动,建立局部地图
原理:通过定量分析图像与空间点的几何对应关系、相对运动数据,能够估计相机的运动,并恢复场景空间结构。
弊端:由于前端里程计只计算相邻时刻的相机运动,不关联之前的数据,所以会出现累积漂移,数据偏移越来越大,导致最后位置计算失败
(4)后端优化
主要解决传感器的误差问题和前端里程计的数据偏移问题
对于传感器的测量难免出现误差,根据所处环境以及自身品质的影响误差或大或小
原理:在SLAM系统中,前端给后端提供待优化的数据,以及这些数据的初始值,而后端负责整体的优化过程,面对的只有数据。在ARcode中,前端倾向于计算机视觉研究领域,后端则主要是滤波与非线性优化算法。
(5)回环检测
又成闭环检测,主要解决位姿估计随时间漂移的问题
(6)建图
构建地图的过程。地图的形式随SLAM的应用场合而定
按用途分:
- 度量地图
- 拓扑地图
环境映射是实现真实物体与虚拟物体碰撞与遮挡关系的基础,在对真实环境进行三维重建后虚拟对象就可以与现实世界互动,实现碰撞及遮挡。
🌱AR Foundation介绍
在ARFoundation诞生之前,如果我们需要开发一个多平台的AR应用,会使用 ARCore XR Plugin 开发一个Android设备版本,使用 ARKit XR Plugin 开发一个iOS设备版本。由于底层API的不同,这样我们就需要同时维护多份代码,这无疑增加了我们工作量和开发成本。因此Unity利用其跨平台的优势,开发了一个与平台无关的AR开发工具包,将 ARCore XR Plugin 、ARKit XR Plugin、Magic Leap XR Plugin、Windows XR Plugin 等AR开发工具包,进行了二次封装,统一API,只需要写一份代码就可以发布到多平台,它会根据我们发布的平台自主选择底层SDK。Unity将这个AR开发工具包命名为“ARFoundation”
1.关于AR Foundation、ARcode、ARkit 对比图
这里给出知乎上博主大大的参考图
AR Foundation的功能的实现依赖于底层的SDK
2.AR Foundation支持的功能
3.基本术语
1.运动跟踪
又称世界跟踪,指AR设备实时解算其在物理世界中的相对位置和方向。
2.可跟踪对象
可以被AR设备检测和跟踪的真实特征,例如特征点、平面、人脸、二维图像、锚点
3.特征点
SLAM使用摄像头采集的图像来分析和跟踪环境中用于构建环境地图的特定点
4.会话
用于管理AR系统的状态,是AR功能的入口,是AR应用中非常重要的概念。
负责处理整个AR应用的生命周期,控制AR系统根据需要开始和暂停相机帧的采集、初始化、释放资源等。
5.会话空间
AR会话初始化后建立的坐标空间,会话空间的原点为AR应用完成初始化时设备摄像头所在的位置
6.射线检测
利用射线检测获取对应手机屏幕的(x,y)坐标,(通过点按或者应用支持的任何一种交互方式),将一条射线投射到摄像头的摄像头的视野中,返回这条射线贯穿的任何平面或特征点及碰撞位置在现实世界空间中的姿态,通过射线检测可以与AR场景中的物体交互。
7.增强图像
利用增强图像可以构建能够响应特定二维图像的AR应用,用户将设备摄像头对准特定图像时触发AR体验。使用增强图像时可以离线创建图像数据库,也可以在运行时实时添加参考图像,在AR应用运行时,AR Foundation将检测和跟踪这些图像,并返回其姿态。
8.体验共享
借助ARCore中的云锚点,可以创建适用于ios和android设备的多人共享AR应用,实现AR体验的多人共享。
9.平面
可以分为水平、垂直两种。
平面描述了一个真实世界中的一个二维平面,包括平面的中心点、平面的X轴和Y轴方向长度、组成平面多边形的顶点等数据。
检测到的平面还分为3种状态:正在跟踪、可恢复跟踪、永不恢复跟踪。
10.姿态
姿态可描述物体位置与方向属性,在AR Foundation API中的姿态可以被认为与OpenGL的模型矩阵或DirectX的世界矩阵一致。
11.光照估计
描述了通过设备摄像头采集的图像信息估计真实环境中的光照的过程,通过计算机视觉的是算法可以获取当前设备摄像头采集图像中的光照强度、颜色分量及光照方向,使用光照估计信息渲染虚拟对象照明效果会更加真实,并可以根据光照方向调整AR中虚拟物体的阴影方向,增强虚拟物体的真实感。