【路径规划-栅格地图】基于Theta_star算法求解机器人路径规划附matlab代码

简介: 【路径规划-栅格地图】基于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电子书和数学建模资料


相关文章
|
7月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
668 0
|
7月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
327 8
|
7月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
375 8
|
8月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
530 2
|
7月前
|
机器学习/深度学习 数据采集 负载均衡
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
352 0
|
7月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
298 0
|
8月前
|
机器学习/深度学习 存储 算法
【微电网调度】考虑需求响应的基于改进多目标灰狼算法的微电网优化调度研究(Matlab代码实现)
【微电网调度】考虑需求响应的基于改进多目标灰狼算法的微电网优化调度研究(Matlab代码实现)
353 0
|
7月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
427 2
|
8月前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
249 6
|
8月前
|
传感器 机器学习/深度学习 编解码
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
353 3

热门文章

最新文章