2022年CIE SCI2区TOP,双向交替搜索 A* 算法的移动机器人全局路径规划,深度解析+性能实测

目录


1.摘要

针对传统 A* 算法在大规模环境中存在的计算效率低、路径转向角大以及路径不平滑等问题,本文提出了一种改进 A* 路径规划算法,该方法引入双向交替搜索(BAS)策略,通过正向与反向搜索交替进行并在路径相遇时完成规划,有效提升了搜索效率;同时,采用指数衰减加权的启发式函数,进一步优化了搜索性能。为减少路径冗余并降低转向角,算法引入路径节点筛选机制,并利用 Bézier 曲线实现路径平滑处理,以满足移动机器人运动控制的实际需求。

2.改进A*算法

双向交替搜索策略

双向交替搜索(BAS)策略,从起点和终点同时进行路径搜索,通过交替选取正、反向开放列表中的最优节点作为搜索目标,使两条路径自适应地相遇,从而减少无效节点扩展并提高搜索效率。正反向搜索均采用 8 邻域扩展,并以欧氏距离作为启发式函数:
f F ( N F ) = g F ( N F ) + h F ( N F ) f_F(N_F)=g_F(N_F)+h_F(N_F) fF(NF)=gF(NF)+hF(NF)

f B ( N B ) = g B ( N B ) + h B ( N B ) f_B(N_B)=g_B(N_B)+h_B(N_B) fB(NB)=gB(NB)+hB(NB)

h F ( N F ) = ( x N B − x N F ) 2 + ( y N B − y N F ) 2 h_F(N_F)=\sqrt{\left(x_{N_B}-x_{N_F}\right)^2}+\sqrt{\left(y_{N_B}-y_{N_F}\right)^2} hF(NF)=(xNB−xNF)2 +(yNB−yNF)2
h B ( N B ) = ( x N F − x N B ) 2 + ( y N F − y N B ) 2 h_B(N_B)=\sqrt{\left(x_{N_F}-x_{N_B}\right)^2}+\sqrt{\left(y_{N_F}-y_{N_B}\right)^2} hB(NB)=(xNF−xNB)2 +(yNF−yNB)2

改进启发式函数

BAS-A* 算法在部分情况下仍存在绕障能力不足和节点重复搜索的问题,导致计算效率下降。针对评价函数在搜索效率与最优性之间的权衡,本文对启发式函数进行加权改进,使节点距离较远时增强搜索引导、加速路径相遇,距离较近时弱化启发影响以逼近真实代价,从而有效减少冗余搜索并提升整体规划效率。
f ( n ) = g ( n ) + e h ( n ) ⋅ h ( n ) f(n)=g(n)+\mathrm{e}^{h(n)}\cdot h(n) f(n)=g(n)+eh(n)⋅h(n)

3.结果展示

4.参考文献

1\] Li C, Huang X, Ding J, et al. Global path planning based on a bidirectional alternating search A\* algorithm for mobile robots\[J\]. Computers \& Industrial Engineering, 2022, 168: 108123. ### 5.代码获取 xx ### 6.算法辅导·应用定制·读者交流 xx

相关推荐
-dzk-3 小时前
【代码随想录】LC 59.螺旋矩阵 II
c++·线性代数·算法·矩阵·模拟
风筝在晴天搁浅3 小时前
hot100 78.子集
java·算法
Jasmine_llq3 小时前
《P4587 [FJOI2016] 神秘数》
算法·倍增思想·稀疏表(st 表)·前缀和数组(解决静态区间和查询·st表核心实现高效预处理和查询·预处理优化(提前计算所需信息·快速io提升大规模数据读写效率
超级大只老咪4 小时前
快速进制转换
笔记·算法
m0_706653234 小时前
C++编译期数组操作
开发语言·c++·算法
故事和你914 小时前
sdut-Java面向对象-06 继承和多态、抽象类和接口(函数题:10-18题)
java·开发语言·算法·面向对象·基础语法·继承和多态·抽象类和接口
qq_423233904 小时前
C++与Python混合编程实战
开发语言·c++·算法
TracyCoder1235 小时前
LeetCode Hot100(19/100)——206. 反转链表
算法·leetcode
m0_715575345 小时前
分布式任务调度系统
开发语言·c++·算法