自动驾驶路径规划:A*(Astar)算法

发布者:InspiredDreamer最新更新时间:2024-12-13 来源: elecfans关键字:自动驾驶  路径规划 手机看文章 扫描二维码
随时随地手机看文章

1. 最佳优先搜索(Best-First Search)

最佳优先搜索(BFS),又称A算法,是一种启发式搜索算法(Heuristic Algorithm)。[不是广度优先搜索算法( Breadth First Search , BFS )]BFS算法在广度优先搜索的基础上,用启发估价函数对将要被遍历到的点进行估价,然后选择代价小的进行遍历,直到找到目标节点或者遍历完所有点,算法结束。要实现最佳优先搜索我们必须使用一个优先队列(priority queue)来实现,通常采用一个open优先队列和一个closed集,open优先队列用来储存还没有遍历将要遍历的节点,而closed集用来储存已经被遍历过的节点。1.1 最佳优先搜索的过程最佳优先搜索的过程可以被描述为:1、将根节点放入优先队列open中。2、从优先队列中取出优先级最高的节点X。3、根据节点X生成子节点Y:X的子节点Y不在open队列或者closed中,由估价函数计算出估价值,放入open队列中。X的子节点Y在open队列中,且估价值优于open队列中的子节点Y,将open队列中的子节点Y的估价值替换成新的估价值并按优先值排序。X的子节点Y在closed集中,且估价值优于closed集中的子节点Y,将closed集中的子节点Y移除,并将子节点Y加入open优先队列。4、将节点X放入closed集中。5、重复过程2,3,4直到目标节点找到,或者open为空,程序结束。bbab03a2-c9b7-11ed-bfe3-dac502259ad0.png?imageView2/2/w/1000BFS不能保证找到一条最短路径。然而,它比Dijkstra算法快的多,因为它用了一个启发式函数(heuristic function)快速地导向目标结点。这篇博客对BFS进行了详细的介绍用的是罗马尼亚度假问题https://blog.csdn.net/weixin_46582817/article/details/115217489bbc88d82-c9b7-11ed-bfe3-dac502259ad0.png?imageView2/2/w/1000   

2. A-Star算法

1968年发明的A*算法就是把启发式方法(heuristic approaches)如BFS,和常规方如Dijsktra算法结合在一起的算法。A-Star算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。•和Dijkstra一样,A*能用于搜索最短路径。•和BFS一样,A*能用启发式函数引导它自己。左图为Astar算法效果图,右图为Dijkstra算法效果图bc1bf17a-c9b7-11ed-bfe3-dac502259ad0.png?imageView2/2/w/1000Astar算法与Dijkstra算法的效果差不多,但Astar算法访问的节点数明显比Dijkstra算法少得多,说明其速度更快,运行时间更短。 2.1 Astar算法所属分类 A*算法在最短路径搜索算法中分类为:•直接搜索算法:直接在实际地图上进行搜索,不经过任何预处理;•启发式算法:通过启发函数引导算法的搜索方向;•静态图搜索算法:被搜索的图的权值不随时间变化(后被证明同样可以适用于动态图的搜索 ) 2.2 Astar算法基本概念 A*算法启发函数表示为:f(n)=g(n)+h(n)•f(n) 是从初始状态经由状态n到目标状态的代价估计•g(n) 是在状态空间中从初始状态到状态n的实际代价•h(n) 是从状态n到目标状态的最佳路径的估计代价(对于路径搜索问题,状态就是图中的节点,代价就是距离)Astar算法是启发式搜索算法,启发式搜索是在状态空间中对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标。这样可以省略大量无谓的搜索路径,提高效率。在启发式搜索中,对位置的估价是十分重要的。采用了不同的估价可以有不同的效果。启发函数(Heuristics Function)(估价函数):H为启发函数,也被认为是一种试探。由于在找到唯一路径前,不确定在前面会出现什么障碍物,计算H的算法(例如,H可采用传统的曼哈顿距离)具体根据实际场景决定父节点(parent):在路径规划中用于回溯的节点。搜索区域(The Search Area):前面图中的搜索区域被划分为了简单的二维数组,数组每个元素对应一个小方格,也可以将区域等分成是五角星,矩形等,通常将一个单位的中心点称之为搜索区域节点(Node)。开放列表(Open List):将路径规划过程中待检测的节点存放于Open List中。关闭列表(Close List):将路径规划过程中已经检查过的节点放在Close List。 2.3 启发函数单调性的推导 单调性:单调性是Astar算法非常重要的一个性质,它决定了在用Astar算法进行路径搜索时,一定能找到一条最优路径。设父节点的坐标为(x0,y0),它的任意一个子节点的坐标为(xi,yi),所以对两者之间的h(x),就一定满足bc4127ce-c9b7-11ed-bfe3-dac502259ad0.png?imageView2/2/w/1000 在Astar算法的运行过程中,后继的f(x)值时大于当前f(x)的值,即f(x)在之后对子节点的搜索扩展是单调递增的,不会像人工势场法一样出现局部极小值,因此使用Astar算法规划出的路径一定是最优路径.2.4 设计代价函数时所需注意的点在使用A*算法的过程中,启发代价的值必须尽量接近于真实值(尽量选取能取到的最大值,这样可以提升搜索效率),以保证规划出的路径尽可能地与实际地图环境相符合。根据所需的模型选择不同的启发代价的计算方法时,同样必须保证启发代价所得的估计值小于真实值。 2.5 代价函数的选择 2.5.1 曼哈顿距离 曼哈顿距离函数在标准坐标系中,表示起始和目标两节点的绝对值总和,其估计值就是从当前点做水平和垂直运动,到达目标点的成本的估计,因此,曼哈顿距离函数中,两点的距离如下bc64454c-c9b7-11ed-bfe3-dac502259ad0.png?imageView2/2/w/1000K——相邻两节点之间的距离,即单位距离;
(x1,y1)——起始节点的坐标;
(x2,y2)——目标节点的坐标;bc7a8078-c9b7-11ed-bfe3-dac502259ad0.png?imageView2/2/w/1000 2.5.2 欧几里得距离 欧几里得距离又称为欧式距离,它是衡量两点之间距离远近的最常用的方法之一。欧几里得距离函数的值可以直接看作起始节点和目标节点,在欧式空间中的直线距离,其表达式如下所示bca67926-c9b7-11ed-bfe3-dac502259ad0.png?imageView2/2/w/1000K——相邻两节点之间的距离,即单位距离;
(xi,yi)——当前节点的坐标;
(xk,yk)——目标节点的坐标;bcbcb3ee-c9b7-11ed-bfe3-dac502259ad0.png?imageView2/2/w/1000欧几里德距离函数作为启发代价的计算方法时,虽然寻径时搜索空间增加从而导致搜索效率的降低,但其所得的估计值最小;而在使用曼哈顿距离函数时,虽然寻径需要遍历的栅格空间少于欧几里得距离函数,搜索效率较高,但这种方法得到的估计值与欧几里得距离函数相比,距离真实值更远。 2.6 确定最终路径 已经确定了目标节点的坐标为,根据此目标节点的位置,和先前设置的方向存储函数之中的方向,从目标节点利用方向反推至起始节点。具体实现的示意图如下bcdabc7c-c9b7-11ed-bfe3-dac502259ad0.png?imageView2/2/w/1000 2.7 路径平滑 我们需要对规划出的路径进行平滑处理,将路径的转折处转化为平滑的曲线,使之更加符合无人车的实际运动路径。主要有基于B样条曲线的路径优化方法,基于Dubins圆的路径优化方法,和基于Clothoid曲线的路径优化方法,基于贝塞尔曲线的路径平滑算法。bd01ee64-c9b7-11ed-bfe3-dac502259ad0.png?imageView2/2/w/1000

关键字:自动驾驶  路径规划 引用地址:自动驾驶路径规划:A*(Astar)算法

上一篇:新能源车线束连接器领域的新材料探索应用
下一篇:保持正确转向:汽车照明系统故障电路的设计

推荐阅读最新更新时间:2026-03-21 00:37

自动驾驶路径规划A*(Astar算法
1. 最佳优先搜索(Best-Fi rs t Search) 最佳优先搜索(BFS),又称A 算法 ,是一种启发式搜索算法(Heuris ti c Algorithm)。 BFS算法在广度优先搜索的基础上,用启发估价函数对将要被遍历到的点进行估价,然后选择代价小的进行遍历,直到找到目标节点或者遍历完所有点,算法结束。要实现最佳优先搜索我们必须使用一个优先队列(priority queue)来实现,通常采用一个open优先队列和一个closed集,open优先队列用来储存还没有遍历将要遍历的节点,而closed集用来储存已经被遍历过的节点。1.1 最佳优先搜索的过程最佳优先搜索的过程可以被描述为:1、将根节点放入优先队列open中。
[嵌入式]
<font color='red'>自动驾驶</font><font color='red'>路径规划</font>:<font color='red'>A</font>*(<font color='red'>Astar</font>)<font color='red'>算法</font>
解析自动驾驶汽车路径规划算法
由于驾驶员的驾驶工作繁重,同时随着汽车拥有量的增加,非职业驾驶员的数量增多,导致交通事故频繁发生。如何提高汽车的主动安全性和交通安全性已成为急需解决的社会性问题。 随着计算机技术、电子技术、图像处理等信息处理技术研究的发展,研究人员开始将各种先进的技术应用于汽车控制上,辅助驾驶员进行汽车的操纵控制。在这些汽车电子控制系统研究的基础上,结合蓬勃发展的智能化信息处理技术,逐步产生了一个新兴的交叉学科——车辆的自动驾驶(又称为智能汽车)。未来实用化的智能汽车将最大限度地减少交通事故、提高运输效率、减轻驾驶员操纵负担,从而提高整个道路交通的安全性、机动性与汽车行驶的主动安全性。科技部于2001年已正式启动实施了十五计划中的国家科技攻关
[嵌入式]
简述自动驾驶路径规划的常用算法
自动驾驶自诞生那天起,其志向便已立下,成为熟知城市每一处道路的“老司机”,成为乘客更安全、更舒适、更高效出行的“守护神”。在搞钱捞钱的大背景下,这个无私追求朴素得令人敬畏。 在自动驾驶的分工中,决策规划将承担上述志向实现的大部分工作,也因此被毫不吝啬的称为自动驾驶的大脑。决策规划这块网上已经有数量众多的优秀科普文章,但他们都没有长成《十一号组织》的样子。抱着将所有自动驾驶知识都“撸一遍”的伟大理想,我决定用两万字简述决策规划的常用算法。 01 概述 1. 1 自动驾驶系统分类 自动驾驶系统没有严谨的分类,但行业内普遍喜欢将自动驾驶系统区别为模块化的和端到端的,图1所示为两者系统的原理框图对比。 图1 模块化和端到端自动驾驶系统
[嵌入式]
简述<font color='red'>自动驾驶</font><font color='red'>路径规划</font>的常用<font color='red'>算法</font>
全覆盖路径规划算法(CCPP)工作原理解析
1 前言 全覆盖路径规划(complete coverage path planning, CCPP)问题的任务是确定一条路径,该路径在避开障碍物的情况下通过一个区域或一定空间范围内的所有点。 Choset根据环境地图是否先验已知,将全覆盖路径规划算法分为“在线式”和“离线式”两类。离线式CCPP算法只依赖于静态环境信息,并且假设环境是先验已知的。然而,在许多情况下,假设对环境有充分的先验知识可能是不现实的。在线式CCPP算法不假设对要覆盖的环境有充分的先验知识,而是利用传感器数据实时扫描目标空间。因此,这些后期算法也被称为基于传感器的覆盖算法。这里也推荐「3D视觉工坊」新课程《深度剖析面向自动驾驶领域的车载传感器空间同步(
[嵌入式]
全覆盖<font color='red'>路径规划</font><font color='red'>算法</font>(CCPP)工作原理解析
机器人基于搜索和基于采样的路径规划算法
如何规划的运动方式是机器人开发领域的一大课题,本文分享GitHub的一个机器人技术中常用的路径规划的开源库,还有动图直观演示运行过程。大部分代码由实现 。 该开源库中实现的路径规划算法包括基于搜索和基于采样的规划算法,具体目录如下图所示: 基于搜索的路径规划算法 基于搜索的路径规划算法已经较为成熟且得到了广泛应用,常常被用于游戏中人物和移动机器人的路径规划。 最佳路径优先搜索算法 Dijkstra 算法 A * 搜索算法 双向 A * 搜索算法 重复 A * 搜索算法 Anyme Repair
[机器人]
机器人路径规划A*算法(附C++源码)
  1. 基本原理   A*的本质是广度优先的图搜索。意在寻找一个从起点到目标节点的最短路径。   A*算法在Dijkstra的基础上加入了启发式变量,一般用启发式距离(两点的直线距离)表示。      启发式距离   2. 算法伪代码   本伪代码摘取自Principles of Robot Moon   其中O代表优先队列,C存放着已访问过的节点。      3. 关键代码剖析   先来看看A*算法运行的最终结果吧   首先先创建一个类代表节点(省略了构造函数等Method)。   class node {   priv
[机器人]
关于扫地机器人路径规划算法的解读
(文章来源:领衔资讯) 随着人们生活水平的提高,人们对于智能家居的需求日益旺盛,扫地机器人就是其中之一,据前瞻网发布的数据显示,2018年扫地机市场增长预计达到120亿元,随着扫地机器人技术的不断发展,未来扫地机器人将会有更广阔的市场空间。在扫地机器人中,路径规划是其最核心的技术,所谓路径规划是指根据自身对环境进行认知,来确定周围环境和自身位置信息,进而规划出一条最优运行路线。同时又能高效完成清扫任务。 通常,移动机器人实现路径规划需要解决这三大问题:1.机器人从初始位置到目标位置的运动;2.通过相关算法使机器人能够绕开障碍物,并且经过某些必须经过的地方完成对应的工作任务;3.在完成以上任务的前提下,能做到机器人运动轨迹
[机器人]
机器人路径规划算法,全局路径规划与局部路径规划究竟有哪些区别?
移动这一简单动作,对于人类来说相当容易,但对机器人而言就变得极为复杂,说到机器人移动就不得不提到路径规划,路径规划是移动机器人导航最基本的环节,指的是机器人在有障碍物的工作环境中,如何找到一条从起点到终点适当的运动路径,使机器人在运动过程中能安全、无碰撞地绕过所有障碍物。这不同于用动态规划等方法求得的最短路径,而是指移动机器人能对静态及动态环境作出综合性判断,进行智能决策。 总的来说,路径规划主要涉及这3大问题:①明确起点位置及终点;②规避障碍物;③尽可能的做到路径上的优化。 机器人路径规划有全局与局部规划之分 根据对环境信息的掌握程度不同,机器人路径规划可分为全局路径规划和局部路径规划。 全局路径规划是在已知的环境中,给
[机器人]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved