基于模糊神经网络的移动机器人路径规划matlab仿真

1.程序功能描述
基于模糊神经网络的移动机器人路径规划

1.环境地图中的障碍物为静态、未知障碍物,可以随机设置。(一般设置5~7个,为计算简便设置成规则性状的障碍物)

2.机器人的行进方向为X轴的正方向,X轴逆时针旋转90°即为Y轴。两驱动轮之间的距离为50cm,驱动轮的直径为30cm。机器人的最大运动速度设为0.8m/s

3.为简化计算,在机器人的正前方及沿顺、逆时针各偏转45°的方位布置传感器。

机器人模型如图所示

 

4.控制系统的输入为机器人正前方障碍物的距离df、左前方障碍物的距离dl、右前方障碍物的距离dr、机器人运动方向与目标方向之间的夹角(航向角)α,输出为机器人左、右轮的速度vl、vr(或者为机器人的速度v和转向角增量Δθ,其中转向角θ为世界坐标系与机器人坐标系X轴之间的夹角)。

2.测试软件版本以及运行结果展示
MATLAB2022a版本运行

 


3.核心程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
       for kk = 1:N
       for m=1:Ns
           xs(:,m) = [x(1,time-1) + Sense_radius*cos(Jd(m,1));
                      x(2,time-1) + Sense_radius*sin(Jd(m,1))];
           G1(m,1) = func_obstacle(xs(:,m),xobstacle,yobstacle);
           G2(m,1) = func_goal(xs(:,m),Pend);
           G3(m,1) = G1(m,1) + G2(m,1);
       end
       [val,bestone]=min(G3);
       %如果某个方向有多个障碍物,那么选择最近的那个
       %如果某个方向的距离集合为空集合,那么说明这个方向的障碍物为无穷远,直接赋值一个较大值
       dr_in = min(dr);
       if isempty(dr) == 1
          dr_in = 1e20;
       end
       d_in  = min(d);
       if isempty(d) == 1
          d_in  = 1e20;
       end
       dl_in = min(dl);
       if isempty(dl) == 1
          dl_in = 1e20;
       end
  
       %代入到模糊神经网络的四个变量
       %调用模糊神经网络的模型
       [v_fnn,Theta_fnn]=func_fnn_test(dr_in,d_in,dl_in,alpha);
       DELTA_Theta = Theta_fnn;
       V           = v_fnn;
       x(:,time) =[x(1,time-1)+lambda*cos(Jd(bestone,1));
                   x(2,time-1)+lambda*sin(Jd(bestone,1))];
       Deltalambda = V;
       Deltatheta  = DELTA_Theta;
       x(:,time)   =[x(1,time)+Deltalambda*cos(Jd(bestone,1)+Deltatheta);
                     x(2,time)+Deltalambda*sin(Jd(bestone,1)+Deltatheta)];  
  
       %更新坐标
       Xs(time)    = x(1,time);
       Ys(time)    = x(2,time);  
       Tes         = [Tes,Jd(bestone,1)+Deltatheta];
       Vs          = [Vs,Deltalambda];      
    end
  
    %画图
    plot(x(1,time),x(2,time),'r.')
    hold on
    drawnow;  
    if sqrt((Xs(time)-X_end)^2+(Ys(time)-Y_end)^2)<0.2
       break;
    end
end
  
  
figure;
subplot(211);
plot(Tes);
grid on
xlabel('times');
ylabel('theta')
  
subplot(212);
plot(Vs);
grid on
xlabel('times');
ylabel('speed')
  
06_017m

  

4.本算法原理
4.1 移动机器人路径规划问题概述
在移动机器人领域,路径规划是一个核心任务,目标是在未知或已知环境中为机器人寻找一条从起始点到目标点的安全、有效且满足特定约束条件(如避障、最短距离等)的路径。数学上,通常将环境表示为一个离散或者连续的空间,并通过图论中的搜索算法来解决。

4.2 模糊系统与模糊逻辑
控制系统的输出为机器人左、右轮的速度vl、vr(或者为机器人的速度v和转向角增量Δθ,其中转向角θ为世界坐标系与机器人坐标系X轴之间的夹角)。

df、dl、dr的模糊集合为{Nr,Ml,Fr} Nr-近 Ml-中 Fr-远

α的模糊集合为{NB,NS,Z,PS,PB} NB-负大 NS-负小 Z-零 PS-正小 PB-正大

(当目标点位于机器人的右侧时航向角为α正,反之为负)

vl、vr、v的模糊集合为{Sw,Md,Ft} Sw-慢速 Md-中速 Ft-快速

Δθ的模糊集合为{ NS,Z,PS } NS-负小 Z-零 PS-正小

整个模糊神经网络的基本结构如下图所示:

 

由于左右两个传感器正好在45度方向,所以在实际工作的时候,

 

posted @   软件算法开发  阅读(71)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示