深蓝学院移动机器人路径规划笔记-图搜索
目录
- Graph Search
- Graph Search Basis
- Configuration Space
- Search-based Method
- Graph Search Overview
- Graph Traversal
- Breadth First Search (BFS) vs. Depth First Search (DFS)
- Depth First Search (DFS)
- Breadth First Search (BFS)
- BFS vs. DFS: which one is useful?
- Heuristic search
- Greedy Best First Search
- Dijkstra and A*
- Costs on Actions
Graph Search
包含以下四部分:
- Graph Search Basis
- Dijkstra and A*
- Jump Point Search
- Homework
Graph Search Basis
Configuration Space
C-空间: 可以阅读机器人学书籍学习,该知识针对机械臂这类高维空间里的运动规划很重要。
思想: 简单而言,就是为了将机器人描述为空间(不一定是欧式空间,可以是非欧式空间的表达)中的一个点。
Search-based Method
• Graphs have nodes and edges.
• State space graph: a mathematical representation of a search algorithm.
- For every search problem, there’s a corresponding state space graph.
- Connectivity between nodes in the graph is represented by (directed
or undirected) edges.
使用栅格地图表示图,栅格地图本身可以作为图:
Grid-based graph: use grid as vertices and grid connections as edges
使用PRM采样生成图:
Graph Search Overview
The search always start from start state XsX_{s}Xs
- Searching the graph produces a search tree
- Back-tracing a node in the search tree gives us a path from the start state to that node
- For many problems we can never actually build the whole tree, too large or inefficient – we only want to reach the goal node asap.
将图转换为树结构
算法三个步骤:
• Maintain a container to store all the nodes to be visited
• The container is initialized with the start state Xs
• Loop1. Visit:Remove a node from the container according to some pre-defined score function- Visit a node2. Expansion: Obtain all neighbors of the node- Discover all its neighbors3. Add:Push them (neighbors) into the container
• End Loop
算法的三个问题:
• Question 1: When to end the loop?
- Possible option: End the loop when the container is empty
- 除了上述的,可以采取不同的终止条件,比如到达目的地。
• Question 2: What if the graph is cyclic?
- When a node is removed from the container (expanded / visited), it should never be added back to the container again
- 因此,在程序中,除了维护一个储存将来所有可能会访问的节点的container,还维护一个储存已访问点的container。
• Question 3: In what way to remove the right node such that
the goal state can be reached as soon as possible, which
results in less expansion of the graph node.
- 解决这个问题就是我们算法的关键:效率,快速。
Graph Traversal
图的遍历是算法的基础。
目前常见的两种算法是深度优先搜索和宽度优先搜索。
Breadth First Search (BFS) vs. Depth First Search (DFS)
两种遍历方法对比如下:
BFS的容器模型是队列(queue),遵循先进先出原则。所以,先进的节点会先出来。
DFS的容器模型是栈(stack),遵循后进先出原则。所以,后进的节点会先出来。
Depth First Search (DFS)
DFS在搜索中的原理
Breadth First Search (BFS)
BFS在搜索中的原理
BFS vs. DFS: which one is useful?
DFS vs. BFS在搜索中的对比
- BFS在遍历到目标时,可通过回溯找到最短路径。为什么是最短路径?从图BFS在搜索中的原理 可知,BFS从顶层逐层搜索下层,因此,最终回溯到的路径将是最短的。
- DFS “一路走到黑”,搜索到目标时便停止搜索,当存在多条目标路径时,很有可能搜索出来的目标路径是非优的甚至很差。
- 因此,后面的算法会以BFS为基础遍历节点。
Heuristic search
启发式算法,以贪心算法为例。
启发式算法与DFS、BFS区别:
- BFS and DFS pick the next node off the frontiers based on which was “first in” or “last in”.
- Greedy Best First picks the “best” node according to
some rule
, called aheuristic
.
Greedy Best First Search
- Definition: A heuristic is a
guess
of how close you are to the target. - guess: 在找到解之前,我们无法得知实际的最近距离,所以,只是一种当下猜想。
对于上图,加入我们想要猜测期待到最短的距离,通常可以采用两种方法 - 欧氏距离(Euclidean Distance):直线
- 曼哈顿距离(Manhattan Distance):▲x + ▲y
启发式算法的好处:
- A heuristic guides you in the right direction.
- A heuristic should be easy to compute.
问题:
如何设计一个好用的启发式函数呢?
对比上面两种情况来看,在复杂情况下(障碍物)贪心算法不一定能找到很好的路径。但这并不意味着贪心算法毫无用处,我们仍然可以借鉴它的思想设计出更好的启发式算法。
Dijkstra and A*
Costs on Actions
- A practical search problem has a cost “C” from a node to its neighbor
• Length, time, energy, etc. - When all weight are 1, BFS finds the optimal solution
- For general cases, how to find the least-cost path as soon as possible?
在之前的算法里,我们没有考虑边的代价问题。为了解决这个问题,提出了Dijkstra and A*算法。
深蓝学院移动机器人路径规划笔记-图搜索相关推荐
- 深蓝学院移动机器人HW_2
文章目录 HW2 -- A* and JPS 源代码在RVIZ中出现的异常 项目解析 A* 和 Dijkstra 算法步骤 数据结构 算法流程 不同启发式函数对A*运行效率的影响 控制变量 Eucli ...
- rrt算法流程图_RRT算法移动机器人路径规划(快速扩展随机树).pdf
( ) 第 34 卷 第 5期 南京理工大学学报 自然科学版 Vo l. 34 No. 5 20 10年 10 月 Journal of N anj ing Un iversity of Scienc ...
- 基于遗传算法的移动机器人路径规划
之前在网上找基于遗传算法的移动机器人路径规划资料的时候,没有找到理想的开源代码.最后参照论文,用matlab写了代码.最近开了公众号--Joe学习笔记,会不定期更新一些文章,主要是自己平时学到的知 ...
- 全局路径规划:图搜索算法介绍6(A star)Matlab算法实现
本文接:全局路径规划:图搜索算法介绍2(A star) https://blog.csdn.net/gophae/article/details/103061702 % This is Yunchen ...
- 移动机器人路径规划算法及思考——A*算法
A*算法原理 A算法是一种经典的路径搜索算法,A算法的原理初学者可以去网上搜索算法原理详解,讲得很好 链接:http://www.gamedev.net/reference/articles/arti ...
- 【深蓝学院:语音信号处理笔记】前端语音处理技术综述
[深蓝学院:语音信号处理笔记]前端语音处理技术综述 常见设备的语音处理技术 1.手机语音通话降噪 至少俩个麦克风,一个在手机底部,一个在手机顶部.语音通话时,到达底部与顶部麦克风的语音信号有幅度差,一 ...
- 面向多任务的仓储移动机器人路径规划与调度
文章着重对移动机器人路径规划和多机器人调度问题展开研究. 1.针对移动机器人路径规划问题,在蚁群算法基础上做出了巨大改进,设计了基于独狼蚁群混合算法的路径规划,算法在路径选择方向.信息素控制和路径停滞 ...
- 3 移动机器人路径规划(5- DWA路径规划算法)
3 移动机器人路径规划 5.1 DWA路径规划基本原理 5.2 DWA路径规划流程 5.3 栅格地图上绘制XY图像 5.3.1 栅格地图和XY坐标系关系 5.3.2 栅格行列位置转坐标系函数sub2c ...
- 深蓝学院-机器人运动规划学习笔记-第一章
第一课 移动机器人运动规划 Motion planning for mobile robots Introduction Course outline Typical planning methods ...
最新文章
- piblog 0.2
- python any()和all()
- Leetcode 153. 寻找旋转排序数组中的最小值 解题思路及C++实现
- 24、Cocos2dx 3.0游戏开发找小三之网格动作:高炫酷的3D动作
- Win10最常用的快捷键,效率Max提高100%(常用的应该是最全的)
- JAVA Web学习篇--Servlet
- Java面向对象的构造方法例子
- 两个必备小本领——恢复设备出厂配置、如何配置web方式登陆交换机
- React—Native开发之 Could not connect to development server(Android)解决方法
- 如何在Mac上备份和共享文本替换?
- Visual Studio 开源控件扩展 NuGet 常用组件安装命令
- 机器学习中的七种分类算法
- Linux.2- shell命令(部分)
- if...else语句的四种结构用法
- left函数未定义_access中LEFT函数未定义的解决方案\表达式中'left'函数未定义。
- 树莓派3+安装centos
- 一起学爬虫(Python) — 10
- DDD 聚合根 限界上下文
- 曾成功预测H1N1病毒疫情,细数这些年大数据的神应用
- flask wtf用的多吗_WTF是Docker吗?
热门文章
- 自媒体各大平台收益对比_几大主流自媒体平台的玩法和收益对比
- 装备制造业精益化管理的应用
- 曲阜有学计算机的学校吗,曲阜学习计算机,曲阜学计算机哪个好,曲阜学计算机效果怎么样 - IT教育频道...
- 数据库课程设计——宾馆管理系统UML状态图
- html5地图连线原理,基于html5技术绘制上海地铁图 – 双车道路况信息
- 13.Shell之sed
- Java用n种方法编写实现双色球随机摇号案例
- 移动端css hover效果,css移动端:acitve效果的实现
- GoldenGate 日常监控
- 电脑黑屏+Duilib加载文件资源失败的解决办法