AStar路径规划算法
概要
AStar是一种路径规划算法,其思想包含Dijkstra算法和启发式算法。该算法也是通过起点开始,逐步记录能够搜索到的节点,并记录它们离起点的最短距离;同时还会估算搜索到的点离终点的距离。
公式
G -- 当前节点离起点的距离
H – 估算当前节点离终点的距离
F = G + H
两个队列
开启列表 – 当前寻址到的节点,包含GHF三个值,但其值可能会在随后的迭代搜寻中被更新。在每次寻址的过程中,会有新的节点存入开启列表(除非当前节点寻址到的所有节点都已经在开启列表中),也会有一个节点从开启列表移动到关闭列表中;
关闭列表 – 其节点来之开启列表中的节点。关闭列表表示其GHF三个值不会再发生变动了,或者说已经是最小值了;
H的计算方法
因为是估算,H的公式是需要考虑实际情况的,尽可能选取准确率更高的方法。这样能使得算法迭代的次数更少,性能更优。比如像北京这样的平原城市,道路规划工整,这样的地方选择使用曼哈顿的距离公式就比较合适。反之像重庆这样的山城,城市依山而建,选用欧式距离可能更为合适。
算法思想
选取开启列表中F值最小的节点,寻址通过它
能直接到达的所有其它节点。这部分节点分为三类:一是已经出现在关闭列表中,忽略;二是没有出现在开启列表中,我们就把它直接放入开启列表,同时记录其父节点为当前节点;三是已经出现在开启列表中,需要计算通过当前节点到达新节点的G值,如果该值更小,则更新(同时更改父节点指向当前节点),否则忽略。
当终点第一次出现在关闭列表中时,算法停止。通过父节点指针倒推,获取到最短路径。
小结
AStar算法是一种快速路径规划算法,只要H值计算的正确率较高,其性能是非常好的;反之其性能就会比较糟糕。
与Dijkstra算法一样,该算法也包含开启列表与关闭列表,并通过每一步迭代寻址改变两个列表中的值。这种方式保证了算法的严谨性,算出的路径一定是最短的路径。
与Dijkstra算法不同的是,它并非使用离起点最短的节点作为下一次迭代的起始节点,反而使用的是F值最小的节点。这时就体现出启发函数的作用了。如果在某些场景完全估算不出H值,AStar算法也是无法使用的。
参考文献
https://zhuanlan.zhihu.com/p/101938680
https://www.gamedev.net/reference/articles/article2003.asp
AStar路径规划算法相关推荐
- 【ROS-Navigation】—— Astar路径规划算法解析
文章目录 前言 1. 导航的相关启动和配置文件 1.1 demo01_gazebo.launch 1.2 nav06_path.launch 1.3 nav04_amcl.launch 1.4 nav ...
- (一)路径规划算法---Astar实现自定义的全局路径规划插件
Astar实现自定义的全局路径规划插件 文章目录 Astar实现自定义的全局路径规划插件 1.插件功能包的建立 2. 相关步骤 2.1 建立工作空间和环境变量的配置 2.2 建立功能包 2.3 添加源 ...
- a算法和a*算法的区别_机器人路径规划算法,全局路径规划与局部路径规划究竟有哪些区别?...
若步智能 移动这一简单动作,对于人类来说相当容易,但对机器人而言就变得极为复杂,说到机器人移动就不得不提到路径规划,路径规划是移动机器人导航最基本的环节,指的是 ...
- D* Lite路径规划算法
D* Lite路径规划算法 1.D* Lite算法简述 2.D* Lite算法伪代码 3.D*Lite算法一个简单的例子 3.1 地图无变化时 3.2地图变化时 4.算法总结 参考资料 搜索算法其他文 ...
- Field D*路径规划算法
Field D*路径规划算法 1.栅格法路径规划存在的问题 2.Filed D*算法主要思想解析 3.Filed D*算法伪代码 4.算法优化 5.算法总结 参考文献 搜索算法其他文章 紧接着上一篇D ...
- 自动驾驶路径规划——基于概率采样的路径规划算法(RRT、RRT*)
目录 1. RRT算法背景 1.1 RRT算法核心思想 1.2 RRT算法优缺点 2. 经典RRT算法 2.1 RRT算法流程 2.2 RRT伪代码 3. 基于目标概率采样 4. RRT*算法 4.1 ...
- Dijkstra、RRT两类路径规划算法原理的直观理解
在路径规划的算法里,有两大类算法是很常用的,一类是基于搜索和图的Dijkstra算法,还有一类是基于采样的RRT算法.本文对其算法原理进行简单的理解,力图生动的展示枯燥的数学公式背后精彩的思想. Di ...
- 中国物流供应链“零的突破”!阿里路径规划算法入围运筹学“奥斯卡”
鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 最新消息,中国物流力量,刚在全球运筹和管理科学界的最高荣誉中,实现零的突破! 1月15日,国际运筹学与管理科学学会(INFORMS)公布了2 ...
- 机器人学习--路径规划算法
参考网址:https://mp.weixin.qq.com/s?__biz=MzI5MDUyMDIxNA==&mid=2247520667&idx=3&sn=47ee67915 ...
最新文章
- android异常 More than one file was found with OS independent path ‘META-INF/XXX‘
- 史记.饭岛爱列传(转)
- Caffe学习系列(22):caffe图形化操作工具digits运行实例
- 新款苹果电脑_苹果真牛!iPhone的软件,苹果电脑上也照样可用了
- 管理项目的问题跟踪器的提示
- redis-bitmap 命令使用的一些帖子
- H264--1--编码原理以及I帧B帧P帧
- python+matlab2014b混合编程
- 多米诺喷码机维修大全之----缺字、字体不成形、字体跑点以及歪
- 【开发神器】自动化测试、用 Apipost!
- 好看的table-css样式
- 阿铭Linux_网站维护学习笔记20190408
- 技术经济与企业管理复习知识点总结
- WSJ0中的wv文件如何转换为wav文件
- 2020-06-03:抢红包设计
- OLED、QLED、miniled、microled的区别与优劣势是什么?(非商业转载)
- html网页表格中加超链接,用html给div加类似a标签的超链接(转)
- idea全局搜索文件
- uni-app【多媒体API】
- 3S基础知识:VC6.0+MapX编程总结
热门文章
- 「2019纪中集训Day23」解题报告
- 程序员遇到人生低谷期怎么做?
- 推荐系统 --- 推荐算法 --- 基于用户行为的推荐算法 - 协同过滤算法
- html怎么设置一个表格的宽度一样吗,html表格单元格大小 怎样在html中设置所有表格大小一样...
- 深度学习-根据日志画loss-acc折线图
- Gallary(中)
- python实现关联算法_【原创】利用python实现apriori关联算法并分析挖掘数据
- 【三维目标检测】3DSSD(一)
- 查询oracle数据库表名和中文名
- poj入门水题整理1--按刷题顺序解释