Hybird A* 算法

tech2022-07-07  211

Hybird A*算法

操作步骤:小结   路径规划做为机器人导航中的一个重要的技术,一个好的路径规划可以极大地提高后续跟踪控制的效果,对机器人的运行好坏程度有非常直观的表现。从最初搜索一条有效路径(如Dijkstra、A*、RRT等),到现如今通过前端搜索,后端优化的方式得到一条考虑机器人运动学、动力学,安全性的高质量路径,众多学者、工程师提出了非常有效的路径规划方法。   Hybird A* 算法只需通过搜索就可以得到一条平滑的高质量路径,在计算效率上有一定的优势(特别是在宽阔的位置)。本文需要有一定的路径规划基础,如掌握A*算法。    具体算法可以参考:

Hybire A* 算法源程序 (需要安装ROS及相应依赖包)

操作步骤:

将初始位置节点放入列表openlist和列表closelist中;如果openlist为空,没有有效路径,结束程序,否则,从openlist中选出启发值最小的节点 N o d e m i n Node_{min} Nodemin并移除出openlist;根据规则生成连接节点 N o d e m i n Node_{min} Nodemin 和目标点 N o d e g o a l Node_{goal} Nodegoal 的曲线,如果曲线有效,则成功完成路径搜索,否则,根据机器人运动学模型以 N o d e m i n Node_{min} Nodemin 为起点扩展新的节点 N o d e n e w Node_{new} Nodenew,并计算相应的距离、启发值等;如果节点 N o d e n e w Node_{new} Nodenew 不在closelist中,则将节点 N o d e n e w Node_{new} Nodenew加入到closelist和openlist中,否则,以节点到起点的距离为判断标准更新openlist和closelist中与节点 N o d e n e w Node_{new} Nodenew对应的节点;如果目标节点 N o d e g o a l Node_{goal} Nodegoal 在closelist中,则成功完成路径搜索,否则继续从步骤2开始运行;   以上Hybird A* 算法与基础A*算法的主要区别是在步骤3的“根据规则生成连接节点 N o d e m i n Node_{min} Nodemin 和目标点 N o d e g o a l Node_{goal} Nodegoal 的曲线”。这里的“规则”非常丰富,无人驾驶上用得比较多的是Reeds-shepp,以及Dubins、高次曲线、贝塞尔曲线等,也可以根据自己的需求定义曲线。以下为曲线示意图。 图1 图2 图3 图4

小结

Hybird A* 算法以较低的成本生成一条比较光滑的路径,但不是最优;可以用不同方法生成多条曲线,选择其中一条最优的做为最终路径,如路径最短、曲率变化平缓等;当步骤3的扩展步长较大时或曲线生成的条件过严,在地形狭窄的地方有可能无法搜索出路径;同一个栅格只能存在一个节点; 图1 图2 图3 图4
最新回复(0)