路径规划-栅格地图Theta_star算法求解机器人路径规划附matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
本文展示了两种任意角度的路径规划算法,分别是 Basic Theta* 和 Angle-Propagation Theta*。它们都是A * 算法的变体,都通过网格的边来扩展,同时也都不会将路径限制在格子的边缘上。与A * 不同的是,它们并不保证找到的路径一定是最短路径。它们名字中的符号 * 并不表示算法的最优性,只是为了表示它们与A * 算法的相似性。
Basic Theta * 算法更容易理解和实现,也能很快的找到较短的路径。而Angle-Propagation Theta * 在扩展顶点的过程当中传递可见角度范围,以实现在顶点扩展的过程中计算不会随着格子数量增线性增长,而是保持在常量级别。但是它也更复杂,速度更慢,找到的路径也通常稍长一些。
我们将这两种算法都统称为Theta * ,并对它的特性进行了研究。通过实验,我们发现在与A * 同级别的时间消耗下,Theta * 可以找出比基于后期平滑处理的A * 算法和FieldD * 算法(我们所知道的A * 的唯一个一个地种基于网格边缘扩展但不将路径固定在网格边上的版本)都要更短的路径。
最后,我们将Theta * 算法扩展到具有非均匀遍历成本的网格,并在路径长短和耗时之间提供权衡。
⛄ 部分代码
function Theta_star
clc;
clear;
close all;
%% 初始化界面
%load maze.mat map
n = 10; % field size n x n tiles 20*20的界面
wallpercent = 0.3; % this percent of field is walls 15%的界面作为阻碍物(墙)
cmap = [1 1 1; ...% 1 - white - 空地
0 0 0; ...% 2 - black - 障碍
1 0 0; ...% 3 - red - 已搜索过的地方
0 0 1; ...% 4 - blue - 下次搜索备选中心
0 1 0; ...% 5 - green - 起始点
1 1 0;...% 6 - yellow - 到目 标点的路径
1 0 1];% 7 - - 目标点
colormap(cmap);
global field
field= ones(n);
startposind =12; %sub2ind用来将行列坐标转换为线性坐标,这里是必要的,因为如果把startposind设置成[x,y]的形式,访问field([x,y])的时候
goalposind =55; %它并不是访问x行y列元素,而是访问线性坐标为x和y的两个元素
%field(ceil(n^2.*rand(floor(n*n*wallpercent),1) )) =2;
field(1:5, 7) = 2;
field(8,1:3) = 2;
field(3:5,3:5)=2;
field(5,4)=2;
% field(8,10)=Inf;
% startposind = sub2ind([n,n],ceil(n.*rand),ceil(n.*rand)); %sub2ind用来将行列坐标转换为线性坐标,这里是必要的,因为如果把startposind设置成[x,y]的形式,访问field([x,y])的时候
%goalposind = sub2ind([n,n],ceil(n.*rand),ceil(n.*rand)); %它并不是访问x行y列元素,而是访问线性坐标为x和y的两个元素
field(startposind )=5;
field(goalposind )=7;
costchart = NaN*ones(n); %costchart用来存储各个点的实际代价,NaN代表不是数据(不明确的操作)
costchart(startposind) = 0; %起点的实际代价
fieldpointers = zeros(n); %fieldpointers用来存储节点的父节点
global setOpenCosts;
setOpen = (startposind); setOpenCosts = (0); setOpenHeuristics = (Inf);
setClosed = []; setClosedCosts = [];%初始化起点的open表和close表
[goalpos(1) ,goalpos(2)] = ind2sub([10 10],goalposind);
% uicontrol('Style','pushbutton','String','RE-DO', 'FontSize',12, ...
% 'Position', [10 10 60 40], 'Callback','ASTAR');
tic
while true %ismember(A,B)返回与A同大小的矩阵,其中元素1表示A中相应位置的元素在B中也出现,0则是没有出现
field(startposind )=5;
field(goalposind )=7;
⛄ 运行结果
⛄ 参考文献
[1] 周东健, 张兴国, 马海波,等. 基于栅格地图-蚁群算法的机器人最优路径规划[J]. 南通大学学报:自然科学版, 2013, 12(4):91-94.
[2] 周东健, 张兴国, 马海波,等. 基于栅格地图-蚁群算法的机器人最优路径规划[J]. 南通大学学报:自然科学版, 2013, 12(4):4.
[3] 于晓天, 高秀花, 张俊,等. 基于分层栅格地图的移动机器人路径规划[J]. 导航与控制, 2017, 16(2):7.
[4] Daniel K , Nash A , Koenig S , et al. Theta*: Any-Angle Path Planning on Grids[J]. Journal of Artificial Intelligence Research, 2010, 39(1):533-579.
⛳️ 代码获取关注我
❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhieijfh
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
excel下划线不显示怎么办
PHP中文网 06-23 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
excel打印预览压线压字怎么办
PHP中文网 06-22