A_star三维路径规划基于matlab PID控制器和 A_star算法无人机三维路径规划含Matlab源码 2244期
Posted 海神之光
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了A_star三维路径规划基于matlab PID控制器和 A_star算法无人机三维路径规划含Matlab源码 2244期相关的知识,希望对你有一定的参考价值。
⛄一、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算法流程
⛄二、部分源代码
close all;
clear all;
clc;
addpath(genpath(‘./’));
disp(‘Hello! Choose from the following maps to simulate flight in:’);
disp(‘1. Through a hole and above a bench 2.Obstacle sprint 3. Along a corridor’);
choice=input(‘enter map:’);
%% Plan path
disp(‘Planning …’);
if choice==1
map = load_map(‘map0.txt’, 0.2, 0.5, 0.2);
start = [0.0 -4.9 0.2];
stop = [8.0 18.0 3.0];
end
if choice==2
map = load_map(‘map3.txt’, 0.2, 0.5, 0.2);
start = [1.5 0 0];
stop = [20 5 6];
end
if choice==3
map = load_map(‘map2.txt’, 0.2, 0.5, 0.2);
start = [0.0 -4.9 0.2];
stop = [10.0 30.0 5.0];
end
nquad = length(start);
for qn = 1:nquad
pathqn = dijkstra(map, startqn, stopqn, true);
end
if nquad == 1
plot_path(map, path1);
else
% you could modify your plot_path to handle cell input for multiple robots
end
⛄三、运行结果
⛄四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1]钱程,许映秋,谈英姿.A Star算法在RoboCup救援仿真中路径规划的应用[J].指挥与控制学报. 2017,3(03)
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除
以上是关于A_star三维路径规划基于matlab PID控制器和 A_star算法无人机三维路径规划含Matlab源码 2244期的主要内容,如果未能解决你的问题,请参考以下文章
三维路径规划基于matlab A_star算法机器人栅格地图三维路径规划含Matlab源码 190期
三维路径规划基于matlab A_star算法无人机山地三维路径规划含Matlab源码 266期
A_star三维路径规划基于matlab A_star算法和B次样条危险模型无人机三维航迹规划含Matlab源码 2162期
A_star三维路径规划基于matlab A_star算法和B次样条危险模型无人机三维航迹规划含Matlab源码 2162期