路径规划有三个组成部分:空间表示、搜索和启发式算法,
- 空间表示
空间表示意思就是在执行路径规划之前,为目标构建地图环境。执行任何类型的路径规划,都需要先将地图环境离散化为图形。为了提高路径规划的效果,可以将地图环境表示为几种特殊的图形,包括:导航网格、航点图和网格图。
1)导航网格
导航网格由现实世界抽象而成的特殊类型的图形。简而言之,导航网格可以定义为一组凸多边形,用于约束在这个环境中目标可以移动的范围。导航网格中的多边形具有以下属性:存在一个凸多边形P,然后在这个凸多边形P中的任意两点之间都存在一条直的路径。因此,只要目标在这个凸多边形中,那么它就可以自由行走。导航网格中多边形的标准边缘范围从3到6个,超过6个边缘的任何东西变得复杂且昂贵的记忆。对于导航网格所定义的凸多边形而言,它的边的个数必须在3到6中间,如果边数超过6,那么图形会变得复杂并且遍历的成本也会变高。
图2.1(a)和图2.1(b)描述了真实世界如何表示为导航网格,以及在导航网格上绘制这些路径的方法。
2)航点图
航点图在路径规划中将现实世界抽象成的另一种表示方式。航点图由在地图的不同位置的节点组成。这些节点通过直线连接,在这些直线上可以进行遍历。航点图通常由用户设计,这需要大量调整以使得搜索有效。它作用在封闭空间的图像上大有成效,例如图2.2表示的是一个房间的连通图。随着航点在地图上的数量增加,航点图的复杂性也随之增加。
图2.2 一个房间的航点图
3)网格
网格是最常用的表示现实世界的图形结构。网格是由被称为边的重复方块或一组方块组成的图形,用于表示地图的地形。网格的普及归因于这样的事实:网格可以快速有效地生成以表示环境,并且在路径搜索研究中被大量使用以测试新算法。如图2.3中所示的网格中的图块可用于存储关于网格图中的区域或单个图块的信息。
图2.3使用网格结构的地图的表示
如果现实世界被表示为网格,则代理在网格上的移动被限制为4向移动或8向移动,如下面的图2.4所示。
图2.4 网格表示和网格上可能的移动类型
当使用网格进行空间表示时,大多数路径规划问题可以用基于下面图2.5中描述的方式来解决。左侧的地图表示目标沿着图块的质心运动的路径,右侧的地图表示目标沿着网格边缘的运动路径。
图2.5 在网格图上绘制路径的不同方法
在本论文中,笔者将用网格来表示地图环境,这也是目前学术界最流行的空间表示方式。
2.2.2 搜索算法
有许多搜索算法可以在图形上工作,以便从起始节点查找目标结点。一些早期的研究者使用的搜索算法是BFS(广度优先搜索)、DFS(深度优先搜索)以及迭代加深搜索。这些方法往往都能找到所需路径,但是效率非常低下,因为它们都可以归结为暴力算法,必须将图上可能存在的每一种路径都遍历一遍。
为了提供一种更为智能和直观的搜索环境的方法,知情搜索算法应运而生。Dijkstra算法就是一种用于解决单源最短路径问题的知情搜索算法。它实时地计算从一个节点遍历到另一个节点,直至目标结点所需要的成本,并从中选择出成本最低的路径。类似的,最佳优先搜索计算当前结点每到下一个结点所需要的最低成本,而不是在整个遍历过程中实时计算各种路径所需要的成本
A *算法是通过融合Dijkstra和最佳优先搜索的属性而产生的。在第三章中笔者将对其进行详尽的解释。
2.2.3 启发式算法
启发式是现代路径规划的基石。它们为搜索算法提供了计算从初始节点到达目标结点的成本的能力。启发式算法为人类和机器在做决策和解决问题等方面提供了许多帮助。
在前边的介绍中本文提到了路径规划的过程是让目标从给定的初始结点运动到给定的目标结点的过程,因此需要计算出根据当前结点到其各个后续结点的路径成本来确定扩展哪个结点。所以启发式算法将帮助目标决定最期望扩展的结点,即最低成本结点。
在路径规划问题中有两种解决特定情况的经典启发式算法,包括曼哈顿距离和欧几里得距离。
1)曼哈顿距离
曼哈顿距离的定义是网格中的两点在笛卡尔坐标系中的距离。这种启发式的灵感来自看起来很像网格布局的曼哈顿城市道路网络。图2.6是用曼哈顿距离表示两点之间的路径长度。
2)欧几里得距离
启发式欧几里德距离被定义为网格上的两个点之间的直线距离。在平面空间中,该启发式被定义为毕达哥拉斯定理。
图2.7 使用欧几里得距离作为启发式绘制的路径
例如在平面上,坐标(x1, y1)的i点与坐标(x2, y2)的j点的欧几里得顿距离为: