1.简介
路径规划问题是移动机器人技术研究领域的热点问题之移动机器人路径规划是指机器人通过自身传感器获取环境信息,在工作空间内自行规划出一条安全的运行路线,同时高效完成作业任务”"。路径规划算法有多种,学者们针对机器人路径规划问题已做了大量研究,本文在前沿路径规划问题的研究基础上,将PSO/GWO/AFO等算法运用于基于栅格地图环境的机器人路径规划方案中进行研究。
代码架构:
室内环境栅格法建模步骤
1.栅格粒大小的选取
栅格的大小是个关键因素,栅格选的小,环境分辨率较大,环境信息存储量大,决策速度慢。栅格选的大,环境分辨率较小,环境信息存储量小,决策速度快,但在密集障碍物环境中发现路径的能力较弱。
2.障碍物栅格确定
当机器人新进入一个环境时,它是不知道室内障碍物信息的,这就需要机器人能够遍历整个环境,检测障碍物的位置,并根据障碍物位置找到对应栅格地图中的序号值,并对相应的栅格值进行修改。自由栅格为不包含障碍物的栅格赋值为0,障碍物栅格为包含障碍物的栅格赋值为1.
3.未知环境的栅格地图的建立
通常把终点设置为一个不能到达的点,比如(-1,-1),同时机器人在寻路过程中遵循“下右上左”的原则,即机器人先向下行走,当机器人前方遇到障碍物时,机器人转向右走,遵循这样的规则,机器人最终可以搜索出所有的可行路径,并且机器人最终将返回起始点。
将AGV的工作环境进行单元分割, 将其用大小相等的方块表示出来,这样栅格大小的选取是影响规划算法性能的一个很重要的因素。栅格较小的话,由栅格地图所表示的环境信息将会非常清晰,但由于需要存储较多的信息,会增大存储开销,同时干扰信号也会随之增加,规划速度会相应降低,实时性得不到保证;反之,由于信息存储量少,抗干扰能力有所增强,规划速随之增快,但环境信息划分会变得较为模糊,不利于有效路径的规划。在描述环境信息时障碍物所在区域在栅格地图中呈现为黑色,地图矩阵中标为1,可自由通行区域在栅格地图中呈现为白色,地图矩阵中标为0。路径规划的目的就是在建立好的环境地图中找到一条最优的可通行路径,所以使用栅格法建立环境地图时,栅格大小的合理设定非常关键。
2.地形数据
可以自己设计
3.部分代码
figure
%%给值是1的坐标赋值黑色,给值是0的坐标赋值白色
b =MAP; %把MAP赋值给b
b(end+1,end+1) = 0;
colormap([1 1 1;0 0 0]); % 创建颜色:其中1是白色,0是黑色
pcolor(0.5:size(MAP,2)+0.5,0.5:size(MAP,1)+0.5,b); % 赋予栅格颜色
set(gca,'XTick',1:size(MAP,1),'YTick',1:size(MAP,2)); % 设置坐标
axis image xy;
hold on
plot(landmark(:,1),landmark(:,2),'b+');
%%
data.landmark=landmark;
data.map=MAP;
sizeMap=size(MAP);
node=[];
for i=1:sizeMap(1)
for j=1:sizeMap(2)
x=i;
y=j;
if MAP(i,j)==0
node=[node;y,x];
end
end
end
data.node=node;
data.D=pdist2(node,node);
%data.R=1;%只允许上下行走
data.R=sqrt(2); %可以斜着走
function drawPc(result1,option,data,str)
figure
%%给值是1的坐标赋值黑色,给值是0的坐标赋值白色
MAP=data.map;
b =MAP; %把MAP赋值给b
b(end+1,end+1) = 0;
colormap([1 1 1;0 0 0]); % 创建颜色:其中1是白色,0是黑色
pcolor(0.5:size(MAP,2)+0.5,0.5:size(MAP,1)+0.5,b); % 赋予栅格颜色
set(gca,'XTick',1:size(MAP,1),'YTick',1:size(MAP,2)); % 设置坐标
axis image xy;
hold on
plot(data.landmark(:,1),data.landmark(:,2),'b+');
plot(data.node(result1.path2,1),data.node(result1.path2,2),'-')
title([str,'结果,最优目标:',num2str(result1.fit)])
end
4.实验结果
源码下载:https://mianbaoduo.com/o/bread/YpmUmJpr
联系我:406090313