粒子群算法详见:粒子群优化算法及应用-CSDN博客
目录
1栅格地图
1.1 什么是栅格地图
栅格地图是一种将环境或地图区域均匀划分为一系列大小一致的网格单元,并为每个单元分配特定属性信息的地图表示方法,它简单有效、易于实现,并广泛应用于自动驾驶、机器人导航、游戏开发等领域,用于环境感知、定位、路径规划和导航避障等功能。那么每个格子如何区分自己的状态是障碍物/墙,还是空地呢?这里可以赋予每个格子不同的值,比如0代表空地,1代表障碍物/墙。
图1 栅格地图
1.2 栅格地图绘制
在 MATLAB 中绘制栅格地图通常涉及将二维数据表示为图像或矩阵,其中每个像素或单元格表示地图上的特定区域。(1)创建一个二维矩阵,表示栅格地图的占据情况(例如,0 表示空地,1 表示障碍)。(2)绘制栅格地图:使用 imagesc , pcolor或者fill函数来绘制栅格地图,并添加颜色条和标签来增强可读性。下面是一个示例:
function map=map(MM,G)
axis([0,MM,0,MM])
for i=1:MM
for j=1:MM
if G(i,j)==1
x1=j-1;y1=MM-i;
x2=j;y2=MM-i;
x3=j;y3=MM-i+1;
x4=j-1;y4=MM-i+1;
fill([x1,x2,x3,x4],[y1,y2,y3,y4],[0,0,0]);
hold on
else
x1=j-1;y1=MM-i;
x2=j;y2=MM-i;
x3=j;y3=MM-i+1;
x4=j-1;y4=MM-i+1;
fill([x1,x2,x3,x4],[y1,y2,y3,y4],[1,1,1]);
hold on
end
end
hold on
end
hold on
axis([0 MM 0 MM])%限制图的边界
title('PSO栅格路径规划');
xlabel('坐标x');
ylabel('坐标y');
map="ditu";
end
2 基本原理
在栅格地图中进行路径规划时,适应度函数(fitness function)通常用于评估路径的优劣。适应度函数的设计取决于具体的路径规划算法和目标,例如最短路径、最少转弯次数、避开障碍物等。
%% 计算路径的距离
function [PathLength,Outpath] = fun(x,begins,ends,num,net,point)
DistAll = [];
Outpath = [];
[~,S]=sort(x);%对数据排序
PP = S(1:num);%重排序后的节点中,选取前num个节点,构成路径节点
[~,index]=sort(point(PP,1));
PP=PP(index);
path=[begins,PP,ends];
for i=1:length(path)-1
[Path,Dist]=shortestpath(net,path(i),path(i+1));
DistAll=[DistAll,Dist]; %存放相邻节点之间的距离
Outpath=[Outpath,Path];%存放路径
end
PathLength = sum(DistAll);%路径长度
end
3 结果展示
10x10的栅格地图:
30x30的栅格地图:
50x50的栅格地图:
100x100的栅格地图:
这个代码的适用性很不错,只需要改一下你的地图就可以直接使用,参数都不用改!
关注私信我代码获取
1 部分理论引用网络文献,若有侵权联系我整改!
2 优化算法有关的可以找我合作!!!
标签:PP,end,MM,路径,地图,算法,栅格,二维 From: https://blog.csdn.net/liutianbao2018/article/details/143025705