返回 登录
0

面向增强现实的自主导航介绍

1. 简介

感知计算代表着人机交互的最新发展。 它囊括了能够感知并理解物理环境的各项技术,包括手势、语音识别、面部识别、运动追踪和环境重构。 高级英特尔® 实感™ 摄像头 F200 和 R200 处于感知计算领域的最前沿。 深度感知功能支持 F200 和 R200 重构 3D 环境,并跟踪设备相对于环境的运动。 环境重构结合运动跟踪,可支持虚拟资产与现实环境实现相互融合,从而提供出色的增强现实体验。

尽管英特尔实感摄像头可提供数据支持增强现实应用,但沉浸式体验的创建依然取决于开发人员。 使用自主代理是创造真实环境的方法之一。 自主代理指使用人工智能独立行动的实体。 人工智能定义操作参数以及代理必须遵守的规则。 代理以实时的方式动态响应环境,因此即使是简单设计也可创建复杂行为。

自主代理的存在方式有多种;但此处为了便于介绍,我们仅介绍用于移动和导航的代理。 这类代理的例子非常丰富,包括视频游戏中的非玩家角色 (NPC) 和教育动画中的鸟群。 代理的目的因应用的不同而有所差异,但其移动和导航原则大体相同。

本文旨在介绍自主导航,以及如何将其应用于增强现实应用。 我们开发一个采用英特尔实感摄像头 R200 和 Unity* 3D 游戏引擎的示例。 最好对英特尔® 实感™ SDK 和 Unity 有一定的了解。 关于集成英特尔实感 SDK 和 Unity 的信息,请参阅: “Unity* 和英特尔® 实感™ 3D 摄像头助力游戏开发”和“第一印象: 英特尔® 实感™ R200 助力 Unity 中的增强现实”。

2. 自主导航

从实施和计算的角度来说,处理基于代理的导航的方法多种多样,从简单到复杂,各种方法一应俱全。 简单方法即为代理定义路径。 选择一个坐标点,代理按照该坐标点直线移动。 尽管实施起来非常简单,但该方法存在许多问题。 最明显的是:如果代理和坐标点之间不存在直线路径该怎么办(图 1)?

An agent moves along a straight path towards the target

图 1. 代理沿着直线路径朝目标移动,但该路径可能被障碍物阻挡。 注: 本次介绍的内容适用于 2D 和 3D 空间导航,但 2D 仅用于说明。

我们需要增加其他坐标点以绕过该障碍物(图 2)。

Additional waypoints are added to allow the agent to navigate around obstacles

图 2. 增加其他坐标点使代理绕过障碍物。

在障碍物多的大型地图中,通常会有更多的坐标点和路径。 另外,坐标点越密集(图 3),越能提高路径的效率(缩短到达目的地的行程)。

the number of waypoints and possible paths increases

图 3. 随着地图的扩大,坐标点和路径的数量也会大幅增加。

数量庞大的坐标点要求必须能够在非相邻坐标点之间找到一条路径。 这一问题被称为路径查找。 路径查找与图论息息相关。除了导航之外,路径查找还可广泛应用于多个领域。 因此,人们对该主题的研究也非常深入,开发了许多算法以解决相关问题。 A* 是其中最为突出的一种路径查找算法。 简言之,该算法穿梭于前往目的地的相邻坐标点,并将所访问的坐标点及其与之相连的坐标点绘制成地图。 到达目的地后,该算法使用它生成的地图计算路径。 之后代理就可按照该路径移动。 A* 算法不搜索整个空间,因此无法确保最佳路径, 尽管在计算方面非常高效。

The A* algorithm traverses a map searching for a route to the target

图 4. A* 算法穿梭于地图之中搜索目标路线。 动画,Subh83 / CC BY 3.0 制作

A* 算法无法适应环境中的动态变化,比如添加/移除障碍物、移动边界等等。 从本质上来说,增强现实环境具有动态性,因为它们的创建和更改以用户的移动和物理空间为基础。

对动态环境来说,最好让代理实时制定决策,以便将对环境的最新了解融入到决策之中。 因此必须制定行为框架,支持代理实时制定决策并采取行动。 就导航而言,将行为框架分成三层不仅非常方便,而且非常普遍:

行动选择,包括设定目标和决定如何实现目标。 例如,一只小兔子正在四处寻找食物,看到附近出现了捕食者,决定立即逃走。 状态机可用于再现这种行为,因为该设备可定义代理的状态以及状态变化的前提条件。
操控指根据代理目前的状态计算移动。 如果捕食者追赶小兔子,小兔子应想方设法摆脱捕食者。 操控用于计算这种运动力的强度和方向。
移动指代理移动时所遵循的机制。 兔子、人类、汽车和宇宙飞船,其移动方式各不相同。 移动规定代理的移动方式(比如用腿、车轮、推进器等)以及运动参数(比如质量、最大速度、最大力等)。
这些层级共同组成了代理的人工智能。 第 3 节将展示一个 Unity 示例,以介绍这些层级的实施方法。 第 4 节介绍如何将自主导航集成至使用 R200 的增强现实应用。

3. 实施自主导航

本节将从移动开始,详细介绍 Unity 场景中面向自主导航的行为框架。

移动

代理的移动以牛顿运动定律(力是物体产生加速度的原因)为基础。 我们将使用质量分布均匀的简单模型,它能够使力作用于物体的各个方向。 为了限制移动,必须定义最大力和最大速度(表 1)。

表 1. 代理移动模型。

该代理必须包含…查看全文
了解更多相关内容,请关注CSDN英特尔开发专区

Intel技术双周刊已全面开启:订阅请点击这里

评论