移动机器人路径规划一直是一个比较热门的话题,A星算法以及其扩展性算法被广范地应用于求解移动机器人的最优路径.该文在研究机器人路径规划算法中,详细阐述了传统A星算法的基本原理,并通过栅格法分割了机器人路径规划区域,利用MATLAB仿真平台生成了机器人二维路径仿真地图对其进行仿真实验,并对结果进行分析和研究,为今后进一步的研究提供经验.
close all
clear all
clc
format short;
global dongP;
global h1;
dongP=[80,0,10];
startXY=[0 0];
endXY=[100 100];%起点终点位置
nowXY=startXY;
searchR=4; %探寻半径
circleCencerR=20; %静态障碍物圆半径
circleCencer=[40,50]; %确定静态障碍物中心
r=rectangle('Position',[circleCencer(1)-circleCencerR,circleCencer(2)-circleCencerR,2*circleCencerR,2*circleCencerR],...
'Curvature',[1,1]); %静态障碍物
figure(1)
hold on
r.FaceColor = [0 0 0]; %障碍物颜色
axis([0 100 0 100]); %坐标系大小
Rout=[startXY]; %路径点集合
Routsize=0;
%% 开始寻找起始点的8位图,寻找路径
while(sqrt((endXY(2)-nowXY(2))^2+(endXY(1)-nowXY(1))^2)>=2*searchR)%当没有到达终点
Pot8=wei8(nowXY,endXY,searchR);%当前点的8方位点
longMin=Inf; %下一个位置点到终点的距离
for i=1:8 %对于每一个位置点
if(~isInBr(Pot8(i,:),circleCencer,circleCencerR))%不在障碍物内
Pot18=wei8(Pot8(i,:),endXY,searchR);%下一次的8方位点
for j=1:8
if(~isInBr(Pot18(j,:),circleCencer,circleCencerR))%如果不在静动障碍物内
Long=sqrt((endXY(2)-Pot18(j,2))^2+(endXY(1)-Pot18(j,1))^2);%下一点到终点距离
if Long longMin=Long; preRout=Pot8(i,:);%保存前一个路径点 end end end end
end nowXY=preRout; %更新新的路径点 Rout=[Rout;preRout]; Routsize=Routsize+searchR;%路径长度 circle(nowXY(1),nowXY(2),3); dongP=dongtai(3,12,80,0,0,1);%添加动态障碍物 pause(0.1); delete(h1); end %% 画图 Rout=[Rout;endXY]; Routsize=Routsize+sqrt((endXY(2)-preRout(2))^2+(endXY(1)-preRout(1))^2); circle(endXY(1),endXY(2),3); plotRout(Rout); [1]华洪, 张志安, 施振稳,等. 动态环境下多重A算法的机器人路径规划方法[J]. 计算机工程与应用, 2021. [2]郭翰卿, 付丽霞, 张勇,等. 基于动态障碍物的机器人避障路径规划方法[J]. 电视技术, 2022, 46(1):6. 部分理论引用网络文献,若有侵权联系博主删除。
3 运行结果
4 参考文献
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。