基于图的路径搜索技术基础知识
基于搜索的路径规划
1.0 图搜索基础
1.1 Configuration Space(配置空间)
Robot configuration
机器人配置,简单来说就是将机器人在空间中用一个点来描述,忽略了其外观信息,例如形状不管是圆形还是方形,都均会抽象成一个点进行表示。Robot degree of freedom (DOF)
在进行轨迹规划的时候是要考虑机器人的一个实际的运动模型的,不同的运动模型需要的输入和输出变量是不同的,即对应的控制变量的维度是不同的,尽可能的使用一个较小的自由度去表示机器人在配置空间中的位姿。Robot configuration space
一个 维的空间,包含着机器人的所有可能位置,称为C-Space
- 简单来说,每个机器人的位姿在
C-space
中就是一个点而已。
1.2 C-space Obstacle
Planning in workspace
首选解释一下什么事工作空间即什么是workspace
,简单来说其实就是机器人真实的一个工作空间,就是我们所处的物理世界。如果在物理世界中进行机器人的一个路径规划,其实是一个比较麻烦的事情,有如下两个原因:- 每个机器人拥有不同的形状和大小(different shape and size)
- 碰撞检测需要指导机器人的几何信息
这样进行规划是非常耗时和困难的,因此引入C-space
这一概念
Planning in C-space
- 在
C-space
中,机器人被抽象为了一个C-space
中的一个点,例如三维空间中机器人可以由 position(a point in ),pose (a point in ) - 至于真实世界中感知到的障碍物信息则需要提前展示部署到
C-space
中去,是一个在规划前要完成的工作,我们称这些障碍物为C-space
中的障碍物,或者称为C-obstacle
- 而我们通常所说的路径规划此时就可以说成是在
C-free
中找一个连接 和 的路径
- 在
1.3 总结
-
In workspace
机器人是一个拥有形状和大小的实体 (hard for motion planning) -
In configuration space
- 机器人是一个点 (easy for motion planning)
- 障碍物提前加入到
C-space
中去,其实严格上来说也不算是加入,只是以某种方式对规划时使用的地图进行了一定方式的变动,使得在后续的路径规划中可以忽略机器人的一个形状和大小的约束,从而简化规划问题的难度。
-
在
C-space
表示障碍物可能非常复杂。 因此在实践中使用了近似(但更保守)的表示,例如下图所示是将机器人通建模为一个半径为 的球形:
2.0 图和搜索技术
2.1 图
-
首先图这个概念相信大家或多或少的在本科学习中都会接触到图论相关的内容,简单来说图是由节点和边构成的。根据节点和边的不同形式还可以分成无向图,有向图,赋权图等等。下面是一些例子。
-
无向图
-
有向图
-
赋权图
-
-
状态空间图 (
state sapce graph
)
搜索算法的数学表示,即将一张图抽象成数学上的表达形式- 对于每一个搜索问题,都有一个对应的
state space graph
- 图中节点之间的联系自然由链接两个节点之间的边所表示
- 下面两张图分别代表了在基于栅格地图搜索是和基于概率路线图搜索是所对应的
state space graph
- 对于每一个搜索问题,都有一个对应的
2.2 图搜索概述
- 图搜索技术总是从一个起点
出发- 可以将搜索图画成一颗树(数据结构中的树),树的父节点就是起点
- 然后对该树进行遍历,当在树中找到目标点的时候,通过该节点进行回溯,即可找到一条从起点到终点的路径。
- 然而对于许多问题,我们永远无法真正构建整棵树,太大或效率低下——我们只想尽快到达目标节点。
- 下面展示的则是一个简单的将图转换为树的过程
一个基于图搜索的大致流程可以归结为如下步骤
- 维持一个 container 去存储将要访问的节点
- container 初始化的时候只有
节点 - LOOP
- 从 container 中 Remove 一个节点,移除的规则需要遵循提前定义好的
score function
- Visit a node
- Expansion: 获得移除节点的邻居节点
- Discover all its neighbors
- Push them (neighbors) into the container
- 从 container 中 Remove 一个节点,移除的规则需要遵循提前定义好的
- End LOOP
2.3 图搜索回顾
- Question 1: When to end the loop? 什么时候终止上述的 LOOP
- Possible Option: 当所维护的 container 为空的时候
- Question 2: What if the graph is cyclic? 如果图是循环的呢?
- 当一个节点从容器中移除(扩展/访问)时,它不应该再次添加回容器。
- Question 3: 以什么方式删除正确的节点,以便尽快达到目标状态,从而减少图节点的扩展。
2.4 图的遍历 (Graph Traversal)
2.4.1 Depth First Search (DFS)
2.4.2 Breadth First Search (BFS)
2.4.3 BFS VS DFS
- BFS 和 DFS 的对比如下图所示:
3.0 启发式搜索 (Heuristic Search)
3.1 贪心搜索
-
Heuristic Definition:
A heuristic is a guess of how close to you are to the target。即启发式是一个对当前点距离目标点多远的猜测,那么我们自然就可以使用两点之间的一个范式距离来判断猜测了,下图就表示了利用欧式距离和曼哈顿距离当作 heuristic 时所猜测的距离。
heuristic 应当满足以下两点:
-
启发式搜索可以指导你朝着一个尽可能正确的方向向目标点靠近。
-
启发式函数应当是非常简单进行计算的,因为本身我们在不使用启发式搜索时,单单通过广度优先遍历是可以找到一个起点到目标点的最有解的,但是其速度比较慢,因此才加入启发式搜索,但如果启发式函数计算较为复杂,反而会增加计算时间,得不偿失,启发式搜索也就是去了意义。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)