遗传算法在机器人路径规划中的应用研究(Matlab代码实现)

  目录

1 概述

2 运行结果

3 参考文献

‍4 Matlab代码


1 概述

机器人运动规划是移动机器人导航的核心技术之一。40多年来,运动规划技术发展迅速,涌现出了许多规划算法,但因为环境描述方式差异巨大,技术差别大,实验比较难度较大。在总结机器人发展史上具有典型意义的规划算法的基础上,提出了路径规划算法的评价标准和形式化描述方式,介绍了每种算法的原理或技术,从搜索策略和环境建模的角度将它们分为四大类,分别是基于自由空间几何构造的规划算法、前向图搜索算法、基于随机采样的运动规划算法以及智能化规划算法,并按照提出的标准比较它们的性能。 

针对路径规划以及碰撞检测这一研究的重点问题,提出了C空间法、人工势力场法、遗传算法等。序列规划问题一般转化为旅行商问题来求解。在综合现有序列规划和路径规划方法的基础上,提出两种机器人运动规划算法:基于任意路径的运动规划算法和基于直线路径的运动规划算法,思路简单,能对各种机器人工程任务进行运动规划。 

2 运行结果

遗传算法在机器人路径规划中的应用研究(Matlab代码实现)_第1张图片

 遗传算法在机器人路径规划中的应用研究(Matlab代码实现)_第2张图片

 

 遗传算法在机器人路径规划中的应用研究(Matlab代码实现)_第3张图片

3 参考文献

[1]刘华军,杨静宇,陆建峰,唐振民,赵春霞,成伟明.移动机器人运动规划研究综述[J].中国工程科学,2006(01):85-94.

‍4 Matlab代码

主函数部分代码:

clc 
clear all

num = 20; % number of robots
Initial_Positions = 50*rand(num,2); % Random generation of robots in entire plot area

% If robot spawned in obstacle area
for k=1:num
if Initial_Positions(k,1)>25 && Initial_Positions(k,1)<30 && Initial_Positions(k,2)>20 && Initial_Positions(k,2)<35
    Initial_Positions(k,:)=rand(1,2);
end
end

% Obstacle reagion
Obstacle_1 = [25 30 30 25 25; 20 20 35 35 20];
Obstacles = [15 15;35 40];

V = 0.01;
dt = 1;
% parameters for weightage
am=1.1;
bm=4;
ar=2;
clearance=1;
timesteps = 850;

waypoints = [5 3;  40 45]; % Initial and final goal positions

% Flocking towards centre of mass
for i = 1:1:2
    X_goal = waypoints(i,1);
    Y_goal = waypoints(i,2);
for j = 1:1:timesteps  
    Updated_Coordinates = [];
    if j == 1
        for z = 1:1:num
             X_curr = Initial_Positions(z,1);
             Y_curr = Initial_Positions(z,2);
             Update = goal_seeking(X_goal,Y_goal,X_curr,Y_curr,dt,am);
             Updated_Coordinates = [Updated_Coordinates;Update];
        end
    else
    for l = 1:1:num
%         if l>1
            near_bot=[];
            Update=Initial_Positions(l,:);
            mindist=[];
            nearest_robot_form=inf;
            for p=1:num
                 distance1=nearest_robot(Update,Initial_Positions(p,:));
                 heading_diff= (Initial_Positions(l,3)- Initial_Positions(p,3));
                     if distance1                          nearest_bot=Initial_Positions(p,:);
                         nearest_robot_form=distance1;
                     end
                 if distance1                      mindist=[distance1 mindist];
                     if min(mindist)== distance1
                     near_bot=Initial_Positions(p,:);
                     end
                 end
            end            

完整代码:

链接:https://pan.baidu.com/s/1S0vrmf6eeL6H5BoMTzUKsA 
提取码:wyhw 
--来自百度网盘超级会员V2的分享

你可能感兴趣的:(优化算法,路径规划问题,matlab,开发语言)