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

  目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码


💥1 概述

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

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

📚2 运行结果

 

 

🎉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_robot_form
                         nearest_bot=Initial_Positions(p,:);
                         nearest_robot_form=distance1;
                     end
                 if distance1<clearance && distance1~=0 
                     mindist=[distance1 mindist];
                     if min(mindist)== distance1
                     near_bot=Initial_Positions(p,:);
                     end
                 end
            end            

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值