• 遗传算法在机器人路径规划中的应用研究(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_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            

  • 相关阅读:
    MySQL数据迁移遇到的一些错误
    基于Matlab的超像素图像分割
    (pytorch进阶之路)U-Net图像分割
    C#和Java,究竟选哪个方向?我只说事实,你自己分析……
    调教kimi写一个小说爬虫的全过程
    【计算机毕设选题】计算机毕业设计选题推荐
    【html audio】播放音频
    聊聊并发编程——Condition
    Linux驱动开发(八)---树莓派SR04驱动开发
    Python海洋专题五之水深地形图海岸填充
  • 原文地址:https://blog.csdn.net/weixin_66436111/article/details/128102650