目录

  • 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

包含以下四部分:

  1. Graph Search Basis
  2. Dijkstra and A*
  3. Jump Point Search
  4. 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.

  1. For every search problem, there’s a corresponding state space graph.
  2. 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 a heuristic.

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*算法。

深蓝学院移动机器人路径规划笔记-图搜索相关推荐

  1. 深蓝学院移动机器人HW_2

    文章目录 HW2 -- A* and JPS 源代码在RVIZ中出现的异常 项目解析 A* 和 Dijkstra 算法步骤 数据结构 算法流程 不同启发式函数对A*运行效率的影响 控制变量 Eucli ...

  2. rrt算法流程图_RRT算法移动机器人路径规划(快速扩展随机树).pdf

    ( ) 第 34 卷 第 5期 南京理工大学学报 自然科学版 Vo l. 34 No. 5 20 10年 10 月 Journal of N anj ing Un iversity of Scienc ...

  3. 基于遗传算法的移动机器人路径规划

      之前在网上找基于遗传算法的移动机器人路径规划资料的时候,没有找到理想的开源代码.最后参照论文,用matlab写了代码.最近开了公众号--Joe学习笔记,会不定期更新一些文章,主要是自己平时学到的知 ...

  4. 全局路径规划:图搜索算法介绍6(A star)Matlab算法实现

    本文接:全局路径规划:图搜索算法介绍2(A star) https://blog.csdn.net/gophae/article/details/103061702 % This is Yunchen ...

  5. 移动机器人路径规划算法及思考——A*算法

    A*算法原理 A算法是一种经典的路径搜索算法,A算法的原理初学者可以去网上搜索算法原理详解,讲得很好 链接:http://www.gamedev.net/reference/articles/arti ...

  6. 【深蓝学院:语音信号处理笔记】前端语音处理技术综述

    [深蓝学院:语音信号处理笔记]前端语音处理技术综述 常见设备的语音处理技术 1.手机语音通话降噪 至少俩个麦克风,一个在手机底部,一个在手机顶部.语音通话时,到达底部与顶部麦克风的语音信号有幅度差,一 ...

  7. 面向多任务的仓储移动机器人路径规划与调度

    文章着重对移动机器人路径规划和多机器人调度问题展开研究. 1.针对移动机器人路径规划问题,在蚁群算法基础上做出了巨大改进,设计了基于独狼蚁群混合算法的路径规划,算法在路径选择方向.信息素控制和路径停滞 ...

  8. 3 移动机器人路径规划(5- DWA路径规划算法)

    3 移动机器人路径规划 5.1 DWA路径规划基本原理 5.2 DWA路径规划流程 5.3 栅格地图上绘制XY图像 5.3.1 栅格地图和XY坐标系关系 5.3.2 栅格行列位置转坐标系函数sub2c ...

  9. 深蓝学院-机器人运动规划学习笔记-第一章

    第一课 移动机器人运动规划 Motion planning for mobile robots Introduction Course outline Typical planning methods ...

最新文章

  1. piblog 0.2
  2. python any()和all()
  3. Leetcode 153. 寻找旋转排序数组中的最小值 解题思路及C++实现
  4. 24、Cocos2dx 3.0游戏开发找小三之网格动作:高炫酷的3D动作
  5. Win10最常用的快捷键,效率Max提高100%(常用的应该是最全的)
  6. JAVA Web学习篇--Servlet
  7. Java面向对象的构造方法例子
  8. 两个必备小本领——恢复设备出厂配置、如何配置web方式登陆交换机
  9. React—Native开发之 Could not connect to development server(Android)解决方法
  10. 如何在Mac上备份和共享文本替换?
  11. Visual Studio 开源控件扩展 NuGet 常用组件安装命令
  12. 机器学习中的七种分类算法
  13. Linux.2- shell命令(部分)
  14. if...else语句的四种结构用法
  15. left函数未定义_access中LEFT函数未定义的解决方案\表达式中'left'函数未定义。
  16. 树莓派3+安装centos
  17. 一起学爬虫(Python) — 10
  18. DDD 聚合根 限界上下文
  19. 曾成功预测H1N1病毒疫情,细数这些年大数据的神应用
  20. flask wtf用的多吗_WTF是Docker吗?

热门文章

  1. 自媒体各大平台收益对比_几大主流自媒体平台的玩法和收益对比
  2. 装备制造业精益化管理的应用
  3. 曲阜有学计算机的学校吗,曲阜学习计算机,曲阜学计算机哪个好,曲阜学计算机效果怎么样 - IT教育频道...
  4. 数据库课程设计——宾馆管理系统UML状态图
  5. html5地图连线原理,基于html5技术绘制上海地铁图 – 双车道路况信息
  6. 13.Shell之sed
  7. Java用n种方法编写实现双色球随机摇号案例
  8. 移动端css hover效果,css移动端:acitve效果的实现
  9. GoldenGate 日常监控
  10. 电脑黑屏+Duilib加载文件资源失败的解决办法