【路径规划】基于matlab天牛须算法栅格地图机器人最短路径规划【含Matlab源码 2866期】

基于Matlab天牛须算法的栅格地图机器人路径规划

💥💥💥💥💞💞💞💞💞💞欢迎来到玄武科研社博客之家💞💞💞💞💞💞💥💥💥💥
在这里插入图片描述
✅博主简介:985研究生,热爱科研的Matlab仿真开发者,完整代码 论文复现 程序定制 期刊写作 科研合作 扫描文章底部QQ二维码。
🍎个人主页:玄武科研社
🏆代码获取方式:扫描文章底部QQ二维码

⛳️座右铭:行百里者,半于九十。
更多Matlab路径规划仿真内容点击👇
Matlab路径规划(玄武科研社版)

⛳️关注微信公众号Matlab王者助手或Matlab海神之光,更多资源等你来!!

⛄一、天牛须算法及栅格地图简介

1 天牛须算法
1 天牛须搜索算法定义
天牛须搜索(Beetle Antennae Search-BAS),也叫甲壳虫须搜索,是2017年提出的一种高效的智能优化算法。类似于遗传算法、粒子群算法、模拟退火等智能优化算法,天牛须搜索不需要知道函数的具体形式,不要虚梯度信息,就可以实现高效寻优。相比于粒子群算法,天牛须搜索只只要一个个体,即一个天牛,运算量大大降低。

2 原理及代码实现
2.1 仿生原理
天牛须搜索时受到天牛觅食原理启发而开发的算法。
生物原理:当天牛觅食时,天牛并不知道食物在哪,而是根据食物气味的强弱来觅食。天牛有俩只长触角,如果左边触角收到的气味强度比右边大,那下一步天牛就往左飞,否则就往右飞。根据这一简单原理天牛就可以有效找到食物。
天牛须搜索得来的启发:食物的气味就相当于一个函数,这个函数在三维空间每个点值都不同,天牛两个须可以采集自身附近两点的气味值,天牛的目的是找到全局气味值最大的点。仿照天牛的行为,我们就可以高效的进行函数寻优。

2.2 算法
天牛在三维空间运动,而天牛须搜索需要对任意维函数都有效才可以。因而,天牛须搜索是对天牛生物行为在任意维空间的推广。采用如下的简化模型假设描述天牛:
天牛左右两须位于质心两边。
天牛步长step与两须之间距离d0的比是个固定常数,即step=c*d0,其中c是常数。即,大天牛(两须距离长)走大步,小天牛走小步。
天牛飞到下一步后,头的朝向是随机的。

2.3 建模:(n维空间函数f最小化)
第一步:对一个n维空间的优化问题,我们用xl表示左须坐标,xr表示右须坐标,x表示质心坐标,用d0表示两须之间的距离。根据假设3,天牛头朝向任意,因而从天牛右须指向左须的向量的朝向也是任意的,所以可以产生一个随机向量dir=rands(n,1)来表示它。对此归一化:dir=dir/norm(dir);我们这样可以得到xl-xr=d0dir;显然,xl,xr还可以表示成质心的表达式;xl=x+d0dir/2;xr=x-d0dir/2。
第二步:对于待优化函数f,求取左右两须的值:felft=f(xl);fright=f(xr);判断两个值大小,如果fleft<fright,为了探寻f的最小值,则天牛向着左须方向行进距离step,即x=x+step
normal(xl-xr);如果fleft>fright,为了探寻f的最小值,则天牛向着右须方向行进距离step,即x=x-stepnormal(xl-xr);如以上两种情况可以采用符号函数sign统一写成:x=x-stepnormal(xl-xr)sign(fleft-fright)=x-stepdir*sign(fleft-fright)。
(注:其中normal是归一化函数)

循环迭代:
dir=rands(n,1);dir=dir/norm(dir);%须的方向
xl=x+d0dir/2;xr=x-d0dir/2;%须的坐标
felft=f(xl);fright=f(xr);%须的气味强度
x=x-stepdirsign(fleft-fright)。%下一步位置
关于步长:
两种推荐:
每步迭代中采用step=etastep,其中eta在0,1之间靠近1,通常可取eta=0.95;
引入新变量temp和最终分辨率step0,temp=eta
temp,step=temp+step0.
关于初始步长:初始步长可以尽可能大,最好与自变量最大长度相当。

2 栅格地图
2.1 栅格法应用背景
路径规划时首先要获取环境信息, 建立环境地图, 合理的环境表示有利于建立规划方法和选择合适的搜索算法,最终实现较少的时间开销而规划出较为满意的路径。一般使用栅格法在静态环境下建立环境地图。
2.2 栅格法实质
将AGV的工作环境进行单元分割, 将其用大小相等的方块表示出来,这样栅格大小的选取是影响规划算法性能的一个很重要的因素。栅格较小的话,由栅格地图所表示的环境信息将会非常清晰,但由于需要存储较多的信息,会增大存储开销,同时干扰信号也会随之增加,规划速度会相应降低,实时性得不到保证;反之,由于信息存储量少,抗干扰能力有所增强,规划速随之增快,但环境信息划分会变得较为模糊,不利于有效路径的规划。在描述环境信息时障碍物所在区域在栅格地图中呈现为黑色,地图矩阵中标为1,可自由通行区域在栅格地图中呈现为白色,地图矩阵中标为0。路径规划的目的就是在建立好的环境地图中找到一条最优的可通行路径,所以使用栅格法建立环境地图时,栅格大小的合理设定非常关键。
2.3 10乘10的静态环境地图
在这里插入图片描述
10乘10的静态环境地图代码

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%建立环境地图%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function DrawMap(map)
n = size(map);
step = 1;
a = 0 : step :n(1);
b = 0 : step :n(2);
figure(1)
axis([0 n(2) 0 n(1)]); %设置地图横纵尺寸
set(gca,'xtick',b,'ytick',a,'GridLineStyle','-',...
'xGrid','on','yGrid','on');
hold on
r = 1;
for(i=1:n(1))         %设置障碍物的左下角点的x,y坐标
    for(j=1:n(2))
        if(map(i,j)==1)
            p(r,1)=j-1;
            p(r,2)=i-1;
            fill([p(r,1) p(r,1) + step p(r,1) + step p(r,1)],...
                 [p(r,2) p(r,2) p(r,2) + step p(r,2) + step ],'k');
            r=r+1;
            hold on
        end
    end
end
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%栅格数字标识%%%%%%%%%%%%%%%%%%%%%%%%
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值