Hybird A* 算法
Hybird A*算法
- 操作步骤:
- 小结
路径规划做为机器人导航中的一个重要的技术,一个好的路径规划可以极大地提高后续跟踪控制的效果,对机器人的运行好坏程度有非常直观的表现。从最初搜索一条有效路径(如Dijkstra、A*、RRT等),到现如今通过前端搜索,后端优化的方式得到一条考虑机器人运动学、动力学,安全性的高质量路径,众多学者、工程师提出了非常有效的路径规划方法。
Hybird A* 算法只需通过搜索就可以得到一条平滑的高质量路径,在计算效率上有一定的优势(特别是在宽阔的位置)。本文需要有一定的路径规划基础,如掌握A*算法。
具体算法可以参考:
Hybire A* 算法源程序 (需要安装ROS及相应依赖包)
操作步骤:
- 将初始位置节点放入列表openlist和列表closelist中;
- 如果openlist为空,没有有效路径,结束程序,否则,从openlist中选出启发值最小的节点 NodeminNode_{min}Nodemin并移除出openlist;
- 根据规则生成连接节点 NodeminNode_{min}Nodemin 和目标点 NodegoalNode_{goal}Nodegoal 的曲线,如果曲线有效,则成功完成路径搜索,否则,根据机器人运动学模型以NodeminNode_{min}Nodemin 为起点扩展新的节点 NodenewNode_{new}Nodenew,并计算相应的距离、启发值等;
- 如果节点 NodenewNode_{new}Nodenew 不在closelist中,则将节点 NodenewNode_{new}Nodenew加入到closelist和openlist中,否则,以节点到起点的距离为判断标准更新openlist和closelist中与节点 NodenewNode_{new}Nodenew对应的节点;
- 如果目标节点NodegoalNode_{goal}Nodegoal 在closelist中,则成功完成路径搜索,否则继续从步骤2开始运行;
以上Hybird A* 算法与基础A*算法的主要区别是在步骤3的“根据规则生成连接节点 NodeminNode_{min}Nodemin 和目标点 NodegoalNode_{goal}Nodegoal 的曲线”。这里的“规则”非常丰富,无人驾驶上用得比较多的是Reeds-shepp,以及Dubins、高次曲线、贝塞尔曲线等,也可以根据自己的需求定义曲线。以下为曲线示意图。
图1 | 图2 | 图3 | 图4 |
小结
- Hybird A* 算法以较低的成本生成一条比较光滑的路径,但不是最优;
- 可以用不同方法生成多条曲线,选择其中一条最优的做为最终路径,如路径最短、曲率变化平缓等;
- 当步骤3的扩展步长较大时或曲线生成的条件过严,在地形狭窄的地方有可能无法搜索出路径;
- 同一个栅格只能存在一个节点;
图1 | 图2 |
图3 | 图4 |
Hybird A* 算法相关推荐
- python 非线性规划_自动驾驶运动规划-Hybird A*算法(续)
Hybird A*算法保证生成的路径是车辆可实际行驶的,但它仍然包含很多不必要的车辆转向操作,我们可以对其进行进一步的平滑和优化. Objective Function 对于Hybird A*生成的车 ...
- Hybird A*算法
1, 什么是Reeds-Shepp 和Dubins曲线 Reeds-Shepp曲线和Dubins曲线 A与HybridA差异及entrypoint解析
- 常用的优化理论类型介绍
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录 前言 一.常用优化的概念 1.凸优化与非凸优化 2.建立优化问题一般思想 ...
- (3)【全局路径规划】图搜索的路径探索方法--DFS\BFS\DFS-ID、贪心算法、Dijkstra和A*、JPS、.hybird A*、
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录 前言 图搜索的方法 0.基础知识介绍 1)图的概念 2)规划配置空间(C- ...
- 算法题+JVM+自定义View,隔壁都馋哭了
反思 昨晚去北京大望路阿里面试, 产生了严重的挫败感, 羞愧难当. 比不得从大学就有目标有理想, 一直在为目标努力学习技术的同学, 在大学唯一能拿得出手的就是参加了电子设计大赛, 学了点嵌入式的知识. ...
- 【每周一篇】常用推荐算法总结
本文主要来源:阿里云天池技术圈常用推荐算法(50页干货) 部分进行总结和详细解释(原文属于比较精炼没有侧重点的提纲) 适合和我一样的推荐算法小白和入门者 主要内容 一.推荐系统简介 信息过载 从海量信 ...
- 机器学习中的数学——粒子群算法(Particle Swarm Optimization, PSO)(三):改进的粒子群算法
分类目录:<机器学习中的数学>总目录 相关文章: · 梯度下降法(Gradient Descent) · 随机梯度下降(Stochastic Gradient Descent, SGD) ...
- 近十年的VI-SLAM算法综述与发展(附链接)
本文转载自INDEMIND,作者半不闲居士@CSDN.文章仅用于学术分享. 本文约7000字,建议阅读14分钟 本文为作者在从事Slam相关工作中对这几年遇到以及改进过相关VIO算法内容总结. 1.背 ...
- 了解Hybird和小程序和react-native的技术架构
1. Hybrid App 1.1 Hybrid app的优势 Hybrid app是介于native和web之间的一种混合app,它既有native良好的用户体验和兼容性特点,又具有web跨平台和快 ...
- 重点:机器学习总结之各算法常用包和函数
基本操作常用函数及包 预测函数:predict() type="prob"判别该量度的昆虫归类为A.B和C的概率:type="response":判别该量度的昆 ...
最新文章
- 新书上市 | C程序员! 这可能是你搞定指针最轻松的方式
- c语言答案填空选择,C语言试题配答案
- Java8新特性之函数式接口
- vue vue的table表格自适应_vue table autoHeight(vue 表格自动高度)
- XidianOJ 1090 爬树的V8
- spring与struts2整合出现错误HTTP Status 500 - Unable to instantiate Action
- poj3463 最短路和次短路 计数
- 三星note10显示无法连接服务器,三星Note10+ 体验后遇到的小麻烦
- matlab 打开文件bin
- Java基础系列:读取yml文件
- Word 前一页以表格结尾的空白页的删除
- 手把手简单制作一个 Java 木马程序
- Windows 此电脑->设备与驱动器->图标管理
- 还有不了解cookie的么,什么是cookie?cookie一直在用么?
- sql数据库本地服务器不显示,sql数据库本地服务器不显示
- (2000-2020高精度世界人口密度地图下载分享【附下载链接】
- 对于‘用C#编写一个员工工资计算’问题的代码编写风格和结构设计考虑的比较【发现自己还是太弱,大家可以在评论区中提出我代码中的不足】
- 苹果发布了没有太多更新的 iOS 13 beta 8;一次编码、到处运行;SwiftUI 的两个特性;如何让网站加载更快...
- MySQL数据库简单的操作命令
- JS模块化(一):Commonjs