环境感知与规划专题(一)——A*算法入门

本文介绍了A*算法在路径规划中的应用,详细阐述了算法的实现过程,并提供了MATLAB仿真代码及结果,适用于自动驾驶场景。通过算法迭代,生成了从起始节点到目标节点的最优路径。
摘要由CSDN通过智能技术生成

前言

A算法作为路径规划算法中应用最广泛实用的算法,由于A算法的算法原理较为简单,网络上能够找到各种各样的学习资料,本文仅对其实现过程进行总结,同时,附上matlab仿真源码及结果图供参考学习。

算法实现过程

A*算法作为一种启发式的寻路算法被广泛应用于解决游戏中以及机器人、无人车、无人机的路径规划问题。该算法的步骤为:

1 .把起始节点添加到openList;

2 . 重复如下步骤:

a) 寻找openList当中F值最低的节点,将其称为当前节点;

b) 将该节点从openList中删除,并加入closeList当中;

c) 对于当前节点相邻的8个节点:
* 如果它不可通过或者已在closeList当中,忽略它,反之如下;
* 如果它不在openList当中,将其添加进去。把当前节点作为它的父节点。同时更新它的F,G和H值。
* 如果它已经在openList当中,通过判断沿当前节点到它的路径的G值是否更小,若更小,则将当前节点作为它的父节点,同时更新它的F和G值。否则,不做任何操作。

d) 当目标节点已添加到closeList时,路径已被找到;或者没有找到目标节点,此时openList已为空。这时候,路径不存在。以上两种情况结束循环。

3 .路径回归。从目标节点开始,沿着每一个节点的父节点移动至起始节点,形成的路径即为所求路径。

仿真代码

	clear,clc
	startPosition = [1 5];
	goalPosition = [8 8];
	findGoal = false;
	map = [0 0 0 0 0 0 0 0 0 0;
      0 0 0 1 1 1 0 1 0 0;
      0 0 0 0 0 0 1 0 1 0;
      0 0 0 0 0 1 0 0 1 0;
      0 0 0 0 1 0 0 1 0 0;
      0 0 0 0 0 0 1 0 1 1;
      0 0 1 0 1 0 0 0 0 0;
      0 1 0 0 0 1 0 0 0 0;
      1 0 0 0 0 0 1 0 0 0;
      0 0 0 0 0 0 0 0 0 0;];
	[mapRow, mapCol] = size(map);
	closeList = struct('row', 0, 'col', 0, 'g', 0, 'h', 0, 'fartherNodeRow', 0, 'fartherNodeCol', 0);
	closeListLength = 0;
	openList = struct('row', 0, 'col', 0, 'g', 0, 'h', 0, 'fartherNodeRow', 0, 'fartherNodeCol', 0);
	openListLength = 0;
	direction = [0, -1; -1, -1; -1, 0; -1, 1; 
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值