题目:
给定材料中包含的 MATLAB 代码,可以生成 50*50 的地图,x 表示障碍物,起点和终点均已
给定,用 A*算法实现路径规划。提交 PDF 文档,包括 A*算法 MATLAB 代码截图、MATLAB
运行界面截图、路径规划结果截图。
解答:
根据网上关于 A*的代码(链接如下):
https://www.pianshen.com/article/8034306603/#_4
对于此问题做了适配。
一、 CreateMAP.m
包括参数初始化、设置障碍点、选择起止位置点;最后将地图数据存为 map.mat,起止
位置点存为 point.mat。
clc;
clear all;
figure;
% 参数初始化
MAX_X=50;% 代表我们要画一个地图的长
MAX_Y=50;% 代表我们要画一个地图的宽
p_obstacle = 0.3;% 障碍率
% 设置障碍点
obstacle = ones(MAX_X,MAX_Y)*p_obstacle;
% 将 MAP 矩阵中障碍点置为-1,非障碍点置为 9998
MAP = 9999*((rand(MAX_X,MAX_Y))>obstacle)-1; % -1 值代表障碍物
j=0;
x_val = 1;
y_val = 1;
axis([1 MAX_X+1 1 MAX_Y+1])
set(gca,'YTick',0:1:MAX_Y);
set(gca,'XTick',0:1:MAX_X);
grid on;
hold on;
% 绘制出地图上的障碍物
for i=1:MAX_X
for j=1:MAX_Y
if MAP(i,j) == -1
plot(i+.5,j+.5,'rx');
end
end
end
%%地图上选择起始位置
pause(1);
h=msgbox('Please Select the Vehicle initial position using the Left Mouse button');
uiwait(h,5);% 5s 后关闭消息框
评论0