【路径规划】基于matlab A_star算法机器人走迷宫路径规划【含Matlab源码 1389期】
一、获取代码方式
获取代码方式1:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。
获取代码方式2:
通过紫极神光博客主页开通CSDN会员,凭支付凭证,私信博主,可获得此代码。
获取代码方式3:
完整代码已上传我的资源:【路径规划】基于matlab A_star算法机器人走迷宫路径规划【含Matlab源码 1389期】
备注:开通CSDN会员,仅只能免费获得1份代码(有效期为开通日起,三天内有效);
订阅紫极神光博客付费专栏,可免费获得2份代码(有效期为订阅日起,三天内有效);
二、A_star算法简介
1 A Star算法及其应用现状
进行搜索任务时提取的有助于简化搜索过程的信息被称为启发信息.启发信息经过文字提炼和公式化后转变为启发函数.启发函数可以表示自起始顶点至目标顶点间的估算距离, 也可以表示自起始顶点至目标顶点间的估算时间等.描述不同的情境、解决不同的问题所采用的启发函数各不相同.我们默认将启发函数命名为H (n) .以启发函数为策略支持的搜索方式我们称之为启发型搜索算法.在救援机器人的路径规划中, A Star算法能结合搜索任务中的环境情况, 缩小搜索范围, 提高搜索效率, 使搜索过程更具方向性、智能性, 所以A Star算法能较好地应用于机器人路径规划相关领域.
2 A Star算法流程
承接2.1节, A Star算法的启发函数是用来估算起始点到目标点的距离, 从而缩小搜索范围, 提高搜索效率.A Star算法的数学公式为:F (n) =G (n) +H (n) , 其中F (n) 是从起始点经由节点n到目标点的估计函数, G (n) 表示从起点移动到方格n的实际移动代价, H (n) 表示从方格n移动到目标点的估算移动代价.
如图2所示, 将要搜寻的区域划分成了正方形的格子, 每个格子的状态分为可通过(walkable) 和不可通过 (unwalkable) .取每个可通过方块的代价值为1, 且可以沿对角移动 (估值不考虑对角移动) .其搜索路径流程如下:
图2 A Star算法路径规划
Step1:定义名为open和closed的两个列表;open列表用于存放所有被考虑来寻找路径的方块, closed列表用于存放不会再考虑的方块;
Step2:A为起点, B为目标点, 从起点A开始, 并将起点A放入open列表中, closed列表初始化为空;
Step3:查看与A相邻的方格n (n称为A的子点, A称为n的父点) , 可通过的方格加入到open列表中, 计算它们的F, G和H值.将A从open移除加入到closed列表中;
Step4:判断open列表是否为空, 如果是, 表示搜索失败, 如果不是, 执行下一步骤;
Step5:将n从open列表移除加入到closed列表中, 判断n是否为目标顶点B, 如果是, 表示搜索成功, 算法运行结束;
Step6:如果不是, 则扩展搜索n的子顶点:
a.如果子顶点是不可通过或在close列表中, 忽略它.
b.子顶点如果不在open列表中, 则加入open列表, 并且把当前方格设置为它的父亲, 记录该方格的F, G和H值.
Step7:跳转到步骤Step4;
Step8:循环结束, 保存路径.从终点开始, 每个方格沿着父节点移动直至起点, 即是最优路径.A Star算法流程图如图3所示.
图3 A Star算法流程
三、部分源代码
%% load map
clear;
ImpRgb = imread('maze.png');
Imp = rgb2gray(ImpRgb);
Imp = im2bw(Imp)*255;
MAX_X=size(Imp,1);
MAX_Y=size(Imp,2);
distanceFcn = @(p1,p2) norm(p1-p2);
%% AStar
GlbTab = zeros(MAX_X, MAX_Y); % 0|new 1|open 2|close
PathTab = zeros(MAX_X, MAX_Y, 2);
nodeStartXY = [1, 1];
nodeTargetXY = [250, 250];
startGn = 0;
startHn = distanceFcn(nodeTargetXY,nodeStartXY);
startFn = startGn + startHn;
% [fn | gn | hn | x | y]
nodeStart = [startFn, startGn, startHn, nodeStartXY]; %% loop
openset = [nodeStart];
foundpath = 0;
while(~isempty(openset))[~,minIdx] = min(openset(:,1));node = openset(minIdx,:);openset(minIdx,:) = [];if isequal(node(4:5), nodeTargetXY) foundpath = 1;break;endnode_x = node(4);node_y = node(5);node_gn = node(2);GlbTab(node_x, node_y) = 2;for k= 1:-1:-1for j= 1:-1:-1if (k~=j || k~=0) %The node itself is not its successors_x = node_x+k;s_y = node_y+j;if((s_x >0 && s_x <=MAX_X) && (s_y >0 && s_y <=MAX_Y))%node within array bound% exist close nodeif GlbTab(s_x, s_y) == 2 || Imp(s_x,s_y) == 0 continue;ends_gn = node_gn + distanceFcn([node_x,node_y], [s_x,s_y]);s_hn = distanceFcn(nodeTargetXY, [s_x,s_y]);s_fn = s_gn + s_hn;if GlbTab(s_x, s_y) == 0% new nodeGlbTab(s_x, s_y) = 1;openset = [openset; [s_fn, s_gn, s_hn, s_x, s_y]];PathTab(s_x, s_y, :) = [node_x, node_y];else% exist open nodex_set = openset(:,4);y_set = openset(:,5);existIdx = find(x_set == s_x & y_set ==s_y, 1);assert(~isempty(existIdx))exist_gn = openset(existIdx, 2);if exist_gn > s_gnendendendendendend
end
四、运行结果
五、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]钱程,许映秋,谈英姿.A Star算法在RoboCup救援仿真中路径规划的应用[J].指挥与控制学报. 2017,3(03)
【路径规划】基于matlab A_star算法机器人走迷宫路径规划【含Matlab源码 1389期】相关推荐
- 【路径规划】基于matlab A_star算法机器人动态避障【含Matlab源码 2571期】
⛄一.A_star算法简介 1 A Star算法及其应用现状 进行搜索任务时提取的有助于简化搜索过程的信息被称为启发信息.启发信息经过文字提炼和公式化后转变为启发函数.启发函数可以表示自起始顶点至目标 ...
- 【路径规划】基于A星算法机器人走迷宫路径规划matlab代码
1 简介 基本的迷宫搜索算法被称为无信息规划算法是一种盲从状态下的搜索算法.所谓的无信息规划,指的是除了起点和终点之间的点以外的中间节点都是可扩展节点,且它们成为系统后续搜索节点的概率是相同的.无信息 ...
- 【Matlab身份证识别】身份证号码识别【含GUI源码 014期】
一.代码运行视频(哔哩哔哩) [Matlab身份证识别]身份证号码识别[含GUI源码 014期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...
- 【Matlab车牌识别】停车计费系统【含GUI源码 735期】
一.代码运行视频(哔哩哔哩) [Matlab车牌识别]停车计费系统[含GUI源码 735期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MATLA ...
- 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】
一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...
- 【Matlab语音分析】语音信号分析【含GUI源码 1718期】
一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...
- 【Matlab水果识别】自助水果超市【含GUI源码 594期】
一.代码运行视频(哔哩哔哩) [Matlab水果识别]自助水果超市[含GUI源码 594期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]倪云峰,叶健,樊娇娇 ...
- 【路径规划】基于matlab A_star算法机器人避障最短路径规划【含Matlab源码 2295期】
⛄一.A_star算法简介 1 A Star算法及其应用现状 进行搜索任务时提取的有助于简化搜索过程的信息被称为启发信息.启发信息经过文字提炼和公式化后转变为启发函数.启发函数可以表示自起始顶点至目标 ...
- 【Matlab路径规划】A_star算法机器人栅格地图路径规划【含源码 116期】
一.代码运行视频(哔哩哔哩) [Matlab路径规划]A_star算法机器人栅格地图路径规划[含源码 116期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...
- 【A_star二维路径规划】基于matlab A_star算法无人机二维路径规划(起终点障碍物可设置)【含Matlab源码 1321期】
⛄一.获取代码方式 获取代码方式1: 通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码. 获取代码方式2: 完整代码已上传我的资源:[A_star二维路径规划]基于matlab A_s ...
最新文章
- nginx 添加自定义头部信息
- solidworks操作记录
- VS2015编译32位Opencv310(动态库+静态库,文末有下载链接)
- 序列赋值引发的Python列表陷进
- 关于tolua的使用
- Java的从业方向是什么?好找工作吗?
- 常用的linux远程管理方法,常用windows下远程管理Linux服务器的方法
- 一款不错的SpringCloud 脚手架项目
- 使用Revel(go)开发网站
- 阿里云基于NVM的持久化高性能Redis数据库 1
- 3. (5.18~5.25)2022年自动化保研信息+分析汇总(夏令营)
- 创新工场5位创业者2011创业感悟
- 如何实现excel的内容转成word报告模式
- bootstrap实现导航栏的响应式布局,当在小屏幕、手机屏幕浏览时自动折叠隐藏
- ​想知道与你最般配的伴侣长什么样?这个“夫妻相”生成器要火(附链接)...
- OpenGL with QtWidgets:练习之扑克翻转
- bzoj 1202 [HNOI2005]狡猾的商人
- 史上最全数据中心标识 参观数据中心你必须认识
- 【ZLR-T81 200A漏电继电器】
- 超完整!Springboot整合redis集群(Sentine),spring boot自动配置集成redis集群(Sentine)
热门文章
- Uva 1588.Kickdown
- C# 线程调用主线程中的控件
- WordPress seo 插件
- 设计模式大杂烩(24种设计模式的总结以及学习设计模式的几点建议)
- 摄影构图如何脱离规则套路
- 下载的****.ts格式的视频在迅雷播放器中无法播放
- 190126每日一句
- 基于Kinect 2.0深度摄像头的三维重建 and Kinect Fusion
- Atitit 人员级别评定法 目录 1.1. 十级评定法1--10 vs 年级评定法	1 1.2. 工龄评定 职级 岗位级别	1 2. 修订系数 学历*授课+绩效	1 3. 计算方法	1
- Atitit 事务的一些概念 目录 1. 事务的另一个特性:数据隔离级别	1 2. Spring五个事务隔离级别和七个事务传播行为	1 3. 在TransactionDefinition接口中定义了