当前位置: 首页 > news >正文

基于A*算法的多机器人图形路径规划解决策略(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

目录

💥1 概述

📚2 A*算法

🎉3 运行结果

👨‍💻4 参考文献

📚5 Matlab代码实现

💥1 概述

         随着社会对移动机器人的需求日益增加,具备一定智能的移动机器人在外界环境部分未知或者完全未知的环境下的自主导航与路径规划能力成为近年来的研究热点。其中主要的研究内容包括机器人对周边环境的实时地图构建和自身的同步定位(Simultaneous Localization and Mapping,SLAM),以及基于构建地图的路径规划方法和决策。A*算法作为一种全局的静态路径规划搜索算法,它有着鲁棒性好,反应快等优点,但受算法原理限制,规划出来的路径折线较多,且随着环境变大搜索代价程指数增长。

📚2 A*算法

      A*算法作为一种全局的静态路径规划搜索算法,它有着鲁棒性好,反应快等优点,但传统的A*算法在求解路径规划问题时存在路径不平滑,搜索效率低等问题,且仅适用于全局的静态环境[5]。本文提出一种基于动态环境下实现的多重A*算法:优化全局路径节点,引入删除冗余点准则与新增节点准则使得全局路径更加平滑,更符合机器人运动学规律;结合滚动窗口法的思想,在每个滚动窗口内进行局部路径规划,先根据前一步的节点信息确定局部子目标区域,然后在局部子目标区域内引入避障控制策略进行实时避障。本文结合全向移动的麦克纳姆轮底盘与转向移动的履带式底盘的移动特性,在改进的A*算法基础上分别设计以最短行进路径和最短耗时为指标的路径规划算法。

🎉3 运行结果

部分代码:

function [G Loc Edge]=GridGraph(ngrid)

% cretae 2nx2n zero graph as initial
G=zeros(2*ngrid,2*ngrid);
Edge=[];
nnode=1;
for n=1:ngrid*ngrid
    % calculate position of nth node in grid
    j=ceil(n/ngrid);
    i=n-(j-1)*ngrid;
    Loc(n,:)=[j i];
    if i-1>=1
        G(n,n-1)=1;        
        G(n-1,n)=1;
        Edge=[Edge;n n-1;n-1 n];
    end
    if i+1<=ngrid
        G(n,n+1)=1;
        G(n+1,n)=1;
        Edge=[Edge;n n+1;n+1 n];
    end
    if j-1>=1
        G(n,n-ngrid)=1;        
        G(n-ngrid,n)=1;
        Edge=[Edge;n n-ngrid;n-ngrid n];
    end
    if j+1<=ngrid
        G(n,n+ngrid)=1;
        G(n+ngrid,n)=1;
        Edge=[Edge;n n+ngrid;n+ngrid n];
    end
end
    

👨‍💻4 参考文献

[1]华洪. 基于改进A~*算法的自主移动机器人路径规划方法研究[D].南京理工大学,2021.DOI:10.27241/d.cnki.gnjgu.2021.001065.

[2]刘晨曦. 基于改进A*算法的仿人机器人路径规划研究[D].北京建筑大学,2018.

[3] Yu, Jingin, and Steven M. LaValle. "Optimal multirobot path planning on graphs: Complete algorithms andeffective heuristics." IEEE Transactions on Robotics 32.5(2016): 1163-1177.

📚5 Matlab代码实现

相关文章:

  • 做团购网站的公司/免费独立站自建站网站
  • 个人网站的设计论文/百度地图官网2022最新版下载
  • 网站美编设计怎么做/微博营销成功案例8个
  • wordpress 最新区块编辑/最大的中文搜索引擎
  • 软件激活码商城/推荐一个seo优化软件
  • 昆山网站建设首页/大数据精准营销
  • FreeRTOS 任务通知浅析
  • 【docker】docker的基础命令
  • 忘记密码找不回?不存在的:python自动解密解码,简直异常轻松~
  • #预处理和函数的对比以及条件编译
  • NPP净初级生产力数据获取/气象数据/太阳辐射/NDVI数据
  • 【计算机毕业设计】基于微信小程序的驾校学车预约服务系统
  • Linux技巧(六):命令尾部的作用 | 、、|、||、;、()的区别和作用(很实用)
  • asp.net设备实时管理系统VS开发sqlserver数据库web结构c#编程计算机网页项目
  • 『 云原生·Docker』Docker容器相关操作(二)
  • 04.好客租房_搭建自己的图床,接入swagger-ui,新增房源列表接口编写
  • Spring Security
  • MySql(35)索引的设计原则