⛄一、获取代码方式
获取代码方式1:
完整代码已上传我的资源:【路径规划】基于matlab内螺旋算法清洁机器人路径规划【含Matlab源码 2974期】
点击上面蓝色字体,直接付费下载,即可。
获取代码方式2:
付费专栏Matlab路径规划(初级版)
备注:
点击上面蓝色字体付费专栏Matlab路径规划(初级版),扫描上面二维码,付费29.9元订阅海神之光博客付费专栏Matlab路径规划(初级版),凭支付凭证,私信博主,可免费获得1份本博客上传CSDN资源代码(有效期为订阅日起,三天内有效);
点击CSDN资源下载链接:1份本博客上传CSDN资源代码
⛄二、内螺旋算法简介
内螺旋覆盖法(internal spiral coverage, ISC)最初是基于接触传感器的算法研究的基础上由 Butler 等人提出的。该算法的基本思想是:移动机器人按照顺时针或者逆时针方向前进来遍历整个工作区域。当机器人运行的前方没有障碍物的时候,机器人就前行一步;若机器人的前方有障碍物,则移动机器人按照某个规则顺时针或者逆时针旋转 90 度。如图 3.1 表示的就是典型的内螺旋覆盖法的示意图。该方法算法简单,方便低成本软件设计实现,无需采用现今通用的效益函数即可进行规划。
⛄三、部分源代码
function []=xunhuansaomiao07
global a;
global qj;
global qi;
global oj;
global oi;
global xz;
global zz;
global sz;
global yz;
global xzz;
global xsz;
global xyz;
global zxz;
global zsz;
global zyz;
global sxz;
global szz;
global syz;
global yxz;
global yzz;
global ysz;
global cz;
global mh;
global ms;
%%%%%%%%七号房间
a=[ -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
-1 0 0 0 0 0 0 0 0 -1
-1 0 0 0 0 0 0 0 0 -1
-1 0 0 0 0 0 0 0 0 -1
-1 0 0 0 0 0 0 0 -1 -1
-1 0 0 0 -1 -1 -1 -1 -1 -1
-1 0 0 0 -1 -1 -1 -1 -1 -1
-1 0 0 0 -1 -1 -1 -1 -1 -1
-1 0 0 0 -1 -1 -1 -1 -1 -1
-1 0 0 0 0 0 0 0 -1 -1
-1 0 0 0 0 0 0 0 0 -1
-1 0 0 0 0 0 0 0 0 -1
-1 0 0 0 0 0 0 0 0 -1
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1];
mh=10;
ms=14;
qi=2;
qj=2;
oi=qi;
oj=qj;
xz=1;
zz=0;
sz=0;
yz=0;
xzz=0;xsz=0;xyz=0;
zxz=0;zsz=0;zyz=0;
sxz=0;szz=0;syz=0;
yxz=0;yzz=0;ysz=0;
cz=0;
a(qi,qj)=1;
xiaxing(qi,qj,a(qi,qj));
hxz=xz+zxz+sxz+yxz;
hzz=zz+szz+xzz+yzz;
hsz=sz+xsz+zsz+ysz;
hyz=yz+xyz+zyz+syz;
h=hxz+hzz+hsz+hyz;
cxz=xz-(zxz+sxz+yxz);
czz=zz-(szz+xzz+yzz);
csz=sz-(xsz+zsz+ysz);
cyz=yz-(xyz+zyz+syz);
cr=cz/(h-cz)
xlswrite(‘清扫结果7.xls’,a);
% a
chongdianluxian;
a
cz
h
cr=cz/(h-cz)
function []=xiaxing(xi,xj,xa)
global mh;
global ms;
global a;
global qj;
global qi;
global oj;
global oi;
global xz;
global xzz;
global xsz;
global xyz;
global cz;
xi,xj,xa
a
%a(xi,xj)=xa;
%下行扫描xiaxing(i-1,j,a(i-1,j));
oi=xi;
oj=xj;
index=find(a0);
if (index)~=0%没走完
j=xj
for i=xi:ms-1
% if iqi&&j==qj+1
% disp(‘边界扫描完成’);
% neiluoxuan(i,j,a(i.j));
% end
i
if a(i,j+1)=0&&a(i,j-1)=0&&a(i+1,j)~=0 %判断有没有走进死胡同
a(i,j)=1;
if a(i-1,j)~=-1%后面无障碍
i=i-1;
a(i,j)=1;
cz=cz+1;
xz=xz+1;
oi=i;
oj=j;
disp(‘后退’);
xiaxing(i,j,a(i,j));%后退
break;
elseif a(i,j-1)~=-1%右转
j=j-1;
a(i,j)=1;
cz=cz+1;
xz=xz+1;
oi=i;
oj=j;
disp('右转');
youxing(i,j,a(i,j));
break
elseif a(i,j+1)~=-1%左转
j=j+1;
a(i,j)=1;
cz=cz+1;
xz=xz+1;
oi=i;
oj=j;
disp('左转');
zuoxing(i,j,a(i,j));
break
elseif a(i+1,j)~=-1
i=i+1
a(i,j)=1;
cz=cz+1;
xz=xz+1;
oi=i;
oj=j;
disp('掉头');
shangxing(i,j,a(i,j));%反向掉头 上行
break
end
⛄四、运行结果
⛄五、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除