基于A*算法的多机器人图形路径规划解决策略(Matlab代码实现)
💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
目录
💥1 概述
📚2 A*算法
🎉3 运行结果
👨💻4 参考文献
📚5 Matlab代码实现
💥1 概述
随着社会对移动机器人的需求日益增加,具备一定智能的移动机器人在外界环境部分未知或者完全未知的环境下的自主导航与路径规划能力成为近年来的研究热点。其中主要的研究内容包括机器人对周边环境的实时地图构建和自身的同步定位(Simultaneous Localization and Mapping,SLAM),以及基于构建地图的路径规划方法和决策。A*算法作为一种全局的静态路径规划搜索算法,它有着鲁棒性好,反应快等优点,但受算法原理限制,规划出来的路径折线较多,且随着环境变大搜索代价程指数增长。
📚2 A*算法
A*算法作为一种全局的静态路径规划搜索算法,它有着鲁棒性好,反应快等优点,但传统的A*算法在求解路径规划问题时存在路径不平滑,搜索效率低等问题,且仅适用于全局的静态环境[5]。本文提出一种基于动态环境下实现的多重A*算法:优化全局路径节点,引入删除冗余点准则与新增节点准则使得全局路径更加平滑,更符合机器人运动学规律;结合滚动窗口法的思想,在每个滚动窗口内进行局部路径规划,先根据前一步的节点信息确定局部子目标区域,然后在局部子目标区域内引入避障控制策略进行实时避障。本文结合全向移动的麦克纳姆轮底盘与转向移动的履带式底盘的移动特性,在改进的A*算法基础上分别设计以最短行进路径和最短耗时为指标的路径规划算法。
🎉3 运行结果
部分代码:
function [G Loc Edge]=GridGraph(ngrid)
% cretae 2nx2n zero graph as initial
G=zeros(2*ngrid,2*ngrid);
Edge=[];
nnode=1;
for n=1:ngrid*ngrid
% calculate position of nth node in grid
j=ceil(n/ngrid);
i=n-(j-1)*ngrid;
Loc(n,:)=[j i];
if i-1>=1
G(n,n-1)=1;
G(n-1,n)=1;
Edge=[Edge;n n-1;n-1 n];
end
if i+1<=ngrid
G(n,n+1)=1;
G(n+1,n)=1;
Edge=[Edge;n n+1;n+1 n];
end
if j-1>=1
G(n,n-ngrid)=1;
G(n-ngrid,n)=1;
Edge=[Edge;n n-ngrid;n-ngrid n];
end
if j+1<=ngrid
G(n,n+ngrid)=1;
G(n+ngrid,n)=1;
Edge=[Edge;n n+ngrid;n+ngrid n];
end
end
👨💻4 参考文献
[1]华洪. 基于改进A~*算法的自主移动机器人路径规划方法研究[D].南京理工大学,2021.DOI:10.27241/d.cnki.gnjgu.2021.001065.
[2]刘晨曦. 基于改进A*算法的仿人机器人路径规划研究[D].北京建筑大学,2018.
[3] Yu, Jingin, and Steven M. LaValle. "Optimal multirobot path planning on graphs: Complete algorithms andeffective heuristics." IEEE Transactions on Robotics 32.5(2016): 1163-1177.