路径规划 | RRT结合APF算法快速探索随机树结合人工势场法的路径规划算法(Matlab)

目录

  • 效果一览
  • 基本介绍
  • 程序设计
  • 参考文献

效果一览


基本介绍

RRT结合APF算法的matlab代码。地图为可以替换的栅格地图。代码是在复现华中科技大学发表的英文论文的基础上的进一步改进。RRT算法。人工势场算法。

1.原论文方法简介:针对快速探索随机树(RRT)路径规划算法存在的随机抽样和效率低等问题,提出了一种结合人工势场法(APF)的改进算法。该方法首先在基本 RRT 算法的随机树扩展步骤中引入概率值,加快随机树向目标节点的收敛速度,并在随机树中加入引力成分,引导随机树向目标点生长,加快搜索过程。在障碍物周围建立斥力场,限制障碍物之间的搜索区域,减少路径的随机性。

2.本代码在复现原论文方法的基础上进一步改进。代码删除了RRT算法产生的大量冗余节点,生成更短且更合理的路径。红色路径为未删除冗余节点的路径。绿色路径为最终的路径。

3.代码还附带一份创建地图矩阵的代码。

程序设计

  • 完整源码和数据私信博主回复RRT结合APF算法快速探索随机树结合人工势场法的路径规划算法(Matlab)
matlab 复制代码
clc;clear;close all;
% Experimental result parameters
% Ll = Path length; Tt = Time; Node = Number of nodes
% All_Iterations = Iterations
Ll = []; Tt = []; Node = []; Cut_L=[]; All_Iterations = []; 

%-------------------------------------
load MAP.mat;     %这里可以替换为自己的地图矩阵
m = size(MAP,1);
n = size(MAP,2);

global obs
global obs_new
obs_index=[];
for index=1:m*n
    if ~MAP(index)
        obs_index(end+1)=index;
    end
end
for k=1:length(obs_index)
   [x,y]=ind2sub(size(MAP), obs_index(k)); 
   obs(k,1)=x;
   obs(k,2)=y;
end

obs = [obs(:,2),m-obs(:,1)];

obs = obs*1000/m;

obs(:,3) = 1000/m;
obs(:,4) = 1000/m;
%-------------------------------------


for j=1:1:2      % 运行次数
    % 设置参数
    p=0.3;                  % 模板偏差概率
    start_pose =[0,0];      % 起点
    global goal_pose;
    goal_pose = [999,999];  % 目标点
    global step;
    step = 20;              
    global kp;              % 引力系数
    kp=1;
    global p0;              % 斥力最大作用范围
    p0 = 250;
    global krep;            % 斥力系数

参考文献

[1] 基于人工势场结合快速搜索树APF+RRT实现机器人避障规划附matlab代码

[2] 基于蚁群算法求解栅格地图路径规划问题matlab源码含GUI