图论、图搜索算法

基础概念

配置空间、工作空间

  • 机器人配置(Robot Configuration):对机器人上所有点的位姿描述
  • 机器人自由度(Robot Degree Of Freedom, DOF):描述机器人路径规划的最少坐标数量 n n n
  • 机器人配置空间(Robot Configuration Space, C-Space):包含机器人所有可能位姿的 n n n维空间
  • 机器人位姿在配置空间中假定为一个点
  • 机器人工作空间(Robot Workspace):机器人实际工作的复杂环境

障碍物、运动规划

机器人具有不同的形状、尺寸大小,障碍物(Obstacle)的碰撞检测需要了解机器人的形状、大小等属性,较为复杂:

在这里插入图片描述

故而,一般在配置空间中做机器人的路径规划问题。已知机器人位姿在配置空间C-space中假定为一个点,例如欧氏空间下的机器人位姿可使用 ℜ 3 × 3 ∈ S O ( 3 ) \Re^{3\times3}\in SO(3) 3×3SO(3)进行表示。则可将障碍物进行膨胀得到配置空间中的障碍物(C-Obstacle),若机器人所在点不落在C-Obstacle范围内,则判定机器人处于自由状态下,不会被碰撞:C-Free。

在这里插入图片描述

配置空间由障碍物及自由空间组成: ( C − S p a c e ) = ( C − O b s t a c l e ) ∪ ( C − F r e e ) (C-Space)=(C-Obstacle)\cup(C-Free) (CSpace)=(CObstacle)(CFree)

移动机器人的运动规划是在机器人的起点 q s t a r t q_{start} qstart到机器人的目标点 q g o a l q_{goal} qgoal之间,处于 C − F r e e C-Free CFree空间中的规划。

图搜索(Graph Search Basis)

图(Graphs)

图是一种由节点(Nodes)和边(Edges)构成的抽象网络,网络中各个节点由边进行连接,表明两节点存在关系。

在这里插入图片描述

节点(Node)

节点表示某个事物或对象,如上图中各个带字母的点。

边(Edge)

边表示事物与事物间的逻辑关系,如上图中两节点间的绿线。

同构(Isomorphism)

同构的两张图具有相同的节点及节点间连接的边,同构图仅存在画法的不同,但包含的逻辑关系不变。

在这里插入图片描述

有向图(Directed Graph)、无向图(Undirected Graph)

无向图的边没有方向,而有向图的边具有方向性。

在这里插入图片描述

如上图,有向图的方向如下: D → A → G D\to A\to G DAG D → C → E D\to C\to E DCE B → A → G B\to A\to G BAG B → C → E B\to C\to E BCE B → F → E B\to F\to E BFE

权重(Weight)

图上的边具有权重值,每条边的权重可以不同,表示由一个节点至另一个节点的代价值。如下图由节点 A A A到节点 G G G的权重值为4。

在这里插入图片描述

路径(Path)、最优路径(Shortest Path)

图上任取两点作为起点与目标点,由起点到目标点,不经过重复节点和边的路线称为路径。由起点到目标点最短的路径称为最优路径,在选择最优路径时往往需要考虑边的权值。

图搜索(Search-based Method )

对图结构进行搜索,从起始节点 S S S到目标节点 G G G,将生成一个搜索树:

在这里插入图片描述

通常,构建一个完整的搜索树结构,所需要的代价很高。图搜索算法的基本逻辑如下:
1 : 维 护 一 个 用 于 存 储 所 有 被 访 问 节 点 的 容 器 2 : 容 器 内 初 始 值 为 起 点 X s 3 : 开 始 循 环 L o o p 4 : 访 问 节 点 : 根 据 预 先 定 义 的 评 分 函 数 ( S c o r e   F u n c t i o n ) 从 容 器 中 取 出 一 个 节 点 5 : 扩 展 节 点 : 获 得 该 节 点 的 所 有 邻 居 节 点 6 : 置 入 节 点 : 将 获 得 的 邻 居 节 点 置 入 容 器 7 : 结 束 循 环 E n d \begin{aligned} &1:维护一个用于存储所有被访问节点的容器\\ &2:容器内初始值为起点X_s\\ &3:开始循环Loop\\ &4:\qquad访问节点:根据预先定义的评分函数(Score\:Function)从容器中取出一个节点\\ &5:\qquad扩展节点:获得该节点的所有邻居节点\\ &6:\qquad置入节点:将获得的邻居节点置入容器\\ &7:结束循环End \end{aligned} 1:访2:Xs3:Loop4:访ScoreFunction5:6:7:End
循环结束条件一般置为抵达目标节点,或容器中所有节点被弹出,容器为空。

广度优先搜索(Breadth First Search, BFS)

广度优先算法基于队列(Queue)进行,遵从于先进先出的原则进行:

在这里插入图片描述

举例说明如下:

在这里插入图片描述

广度优先搜索搜先从起点节点 s s s开始,首先弹出节点 s s s,得到三个邻居节点 d 、 e 、 p d、e、p dep并置入容器中;随后弹出其中一个节点 p p p,得到其邻居节点 q q q置入容器;其次,再弹出一个节点 e e e并将其邻居节点 h 、 r h、r hr置入容器;周而复始,弹出 d d d并将其邻居节点 b 、 c 、 e b、c、e bce置入容器……知道搜索到目标为止。

应注意,对于邻居节点置入容器的顺序需要被确立,如从左到右置入、顺时针置入等方式。

深度优先搜索(Depth First Search, DFS)

深度优先搜索基于堆栈(Stack)进行,遵从于后进先出原则进行:

在这里插入图片描述

举例说明如下:

在这里插入图片描述

首先,从起点节点 s s s开始搜索,弹出节点 s s s后,得到邻居节点 d 、 e 、 p d、e、p dep并将其置入容器;随后,弹出节点 d d d得到其邻居节点 b 、 c 、 e b、c、e bce置入容器;周而复始,弹出 b b b得到邻居节点 a a a置入容器后,发现对 a a a进行搜索无邻居节点,故而再一次弹出节点 c c c得到其邻居节点 a a a,同样无邻居节点并再次弹出 e e e……直到抵达目标节点 G G G时离开循环。

同样应注意,对于邻居节点置入容器的顺序需要被确立。

效果对比

如下图所示,左侧为BFS右侧为DFS。一般深度优先搜索所得并非最短路径,故而实际在最优路径规划中,采用BFS进行:

在这里插入图片描述

贪心算法(Greedy Best First Search)

BFS和DFS算法弹出的下一个节点顺序按照先入先出、后入先出的规则进行,而贪心算法则通过人为指定的规则进行弹出对应节点,称为启发(heuristic)

启发(heuristic)

一个heuristic被定义为:当前点到目标点距离的猜测(Guess),此距离忽略地图中的障碍物,可采用欧氏距离(Euclidean Distance)或曼哈顿距离(Manhattan Distance)进行猜测。

在这里插入图片描述

一个heuristic应该易于计算,同时它将给予我们搜索图的方向。

效果对比

在理想环境中,不存在障碍物。与BFS算法相比,贪心算法能够在更短时间内找到最短路径(下图一)。而在效果上,两者规划得到的最优路径相同(下图二):
在这里插入图片描述

在这里插入图片描述

然而在实际地图环境下,存在大量的障碍物。此时,虽然贪心算法依旧能够较快得到规划路径(下图一),但是所得的路径并非实际上的最优路径(下图二):
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值