当前位置:舍宁秘书网 > 专题范文 > 公文范文 > 基于AStar算法的避障路径局部规划方法开发

基于AStar算法的避障路径局部规划方法开发

时间:2024-10-16 17:15:01 来源:网友投稿

刘志军,苏 亮,吴少雄

(厦门金龙联合汽车工业有限公司,福建 厦门 361023)

汽车自动驾驶技术的路径规划可分为全局规划和局部规划[1]。全局规划是指在一定的地图范围内规划出起点到终点的行驶路径,全局规划是一次性完成的;局部规划是指对全局规划结合实际环境信息进行规划路径的细化,当全局规划的行驶区域内出现障碍物时就需要局部规划来解决。而避障规划则是局部规划中非常重要的一环,能够大大提高自动驾驶的智能化程度。

一次性的全局规划通常先利用AStar[2]进行路径点的搜索,再对结果进行平滑处理得到适合行驶的路径。而局部规划往往会因环境的变化,需要二次甚至多次规划才能得到合适的行驶路径。

本文基于AStar与路径平滑算法,结合实际应用场景,重新设计局部路径规划流程,实现用于避障的局部路径规划,最后利用Carla[3]仿真环境进行模拟与验证。

AStar算法是在Dijkstra算法基础上改进而来的一种启发式的路径搜索算法。而Dijkstra[4]算法为基于广度优先空间搜索算法,从起始点周围的节点开始迭代扩展搜索至终点,从而得到起始点到终点的规划点信息。这种算法对算力要求高,且执行时间长。AStar算法通过代价函数(式(1))[5]来确定迭代搜索的方向,避免盲目搜索导致的算力消耗,算力要求相对较低,且执行时间较短。

f(a)=g(a)+h(a)

(1)

式中:f(a)为节点a的代价;g(a)起始节点到节点a的代价;h(a)为节点a到目标节点的代价。

h(a)的计算可以是欧几里得距离h1(a),也可以是曼哈顿距离h2(a)[6]:

(2)

h2(a)=|xa-xgoal|+|ya-ygoal|

(3)

式中:xa、ya分别为节点a的x坐标和y坐标;xgoal、ygoal分别为目标节点的x坐标和y坐标。

欧几里得距离h1(a)计算的是节点a到目标节点的直线距,需要进行平方与开根号计算,会占用较多的浮点算力;曼哈顿距离h2(a)仅计算节点a得到目标节点横向与纵向的距离和,只需要用到加法计算,可以提高计算效率,优先推荐使用。

AStar算法会创建OpenList[2]和CloseList[2]2个表对节点信息进行管理。其中OpenList用来保存可能被搜索到的节点,并根据代价函数计算的结果进行排序;CloseList用来保存已经被舍弃的节点,算法不会对这部分节点进行搜索。当搜索完成后,OpenList将被清空。

本文方案的第一步是进行路径的平滑处理,利用AStar算法最终得到离散路径点信息,为了避免路径抖动带来的控制算法振荡问题,需要使用贝塞尔曲线[7]算法对离散的路径点进行平滑处理。贝塞尔曲线有一阶、二阶和高阶之分,一阶贝塞尔曲线为一条直线,不满足使用要求;高阶贝塞尔曲线则会消耗大量算力,因而选择式(4)所示的二阶贝塞尔曲线进行路径平滑处理。

B(t)=(1-t)2P0+2t(1-t)P1+t2P2,t∈[0,1]

(4)

式中:B(t)为t时刻下的坐标,这里限定t在1 s内;P0为起始点坐标;P1、P2为控制点坐标。

图1是使用二阶贝塞尔平滑前后的路径对比图。从图中可看出,采用平滑算法后的路径曲线更加贴合实际车辆行驶的轨迹,也更能让控制算法执行。

图1 路径平滑算法

智能车绕障场景是局部路径规划的一种典型应用,如果要使用AStar算法进行规划则需要进行2次甚至多次规划。让其可以根据实时环境不断地调整规划路径,根据此需求设计如图2所示的规划流程。

图2 AStar局部路径规划流程

如图2所示,正常行驶情况的路径由全局规划负责,当遇到障碍物并且满足避障条件时,以车辆当前坐标为原点,建立新的Odometry[8]坐标系。整个绕障过程在这个新的坐标系中完成,车辆完成绕障后,驶回全局规划的路线上完成整个局部路径规划。路径规划前需要通过激光雷达获取车辆前方的点云信息,并且生成costmap[9]。可行驶区域需要根据实际道路标线进行规划,案例中规划的可行驶区域为单向双车道,相比全局规划,受限制的规划区域算法能够更快速完成求解。由于车辆前方有障碍物遮挡,激光雷达无法探测障碍物后面的环境信息,只能预估目标距离,并在参考线上找到对应的参考点作为目标点。在AStar规划的结果上重新选取偏离参考线最远的点作为新的目标点,将当前起始位置到目标点的路径通过贝塞尔曲线进行平滑处理,处理后的曲线再与原有参考线进行拼接。当车辆运动到目标点时触发路径重规划,如果原始参考线上没有障碍物,则通过贝塞尔曲线重新规划一条返回原始参考线的路径。如果当前参考线上仍然存在无法通过的障碍物,则通过AStar重新规划绕障路径。

4.1 Carla仿真平台简介

Carla是一款支持自动驾驶系统开发、测试的开源仿真平台,本文采用该平台进行AStar绕障算法的可行性仿真分析。

要进行AStar绕障算法的仿真分析,首先需要进行相应的场景搭建,然后根据图2介绍的AStar局部规划流程编写自动驾驶程序,再通过自动驾驶程序进行车辆控制的仿真分析。

Carla平台可以模拟多种环境下的城市道路、行人、车辆等原始要素,并将这些原始要素组合成开发者需要的仿真场景。同时Carla也支持多种传感器(GNSS、摄像头、激光雷达等),通过自带的RosBridge[10]功能实现Carla与ROS Topic[11]或者其他第三方自动驾驶程序的交互,完成闭环仿真,如图3所示。

图3 仿真环境与自动驾驶程序的交互

4.2 场景搭建

在Carla中构建一个用于模拟避障路径规划的场景,如图4所示。图中①为受控制的自主车辆(ego car),②为障碍车辆,线段③围成的区域为规划的可行驶区域,线段④为全局规划得到的参考线。

4.3 AStar算法可行性仿真

自动驾驶程序可行性仿真分析包括地图生成、驶离全局规划、多次路径规划、返回全局规划。根据图4所搭建的场景运行自动驾驶程序,对绕障算法流程进行可行性验证。

4.3.1 生成局部地图

如图5所示,当前方障碍物侵入行驶路径造成无法通行,程序将栅格化激光雷达点云信息,并以当前位置作为原点生成局部地图。

4.3.2 驶离全局规划路径

如图6所示,使用4.3.1节生成的局部地图信息,通过AStar算法得到一条能够避开前方障碍物的局部路径。

4.3.3 多次路径规划

由于激光雷达无法探测出前方障碍物的长度,当车辆通过4.3.2节的路径绕开障碍物后,激光雷达可以探测到车辆的长度信息。如图7所示,当前一次规划要走完时,仍然无法绕回原有路径,算法会继续规划,直到车辆完全绕开障碍物。

图7 多次规划

4.3.4 返回全局规划

如图8所示,经过多次路径规划,车辆已经完全绕开障碍物。当满足驾驶全局规划的条件时,算法会生成一条返回全局规划的过渡路径。

图8 返回全局规划

图6~图9为整个绕障算法的执行过程,均为自动驾驶程序视角。图6中车辆在全局规划的参考线上发现障碍物,规划出一条驶离全局规划的避障路径;图7为避障路径行驶结束后,自动驾驶程序发现原全局规划路径上仍然有障碍物而继续规划避障路径;图8为自动驾驶程序规划返回全局规划路径的过渡路径;最后在图9的回放中,可以看到整个避障过程的行驶路径。

图9 轨迹回放

目前,该避障算法已经在仿真环境中完成多场景的验证测试,并在物流车与观光车等园区专用车辆上进行应用测试,成熟后将在开放道路的载客车辆上应用。

猜你喜欢 贝塞尔障碍物全局 Cahn-Hilliard-Brinkman系统的全局吸引子数学物理学报(2022年4期)2022-08-22量子Navier-Stokes方程弱解的全局存在性数学物理学报(2022年2期)2022-04-26看星星的人:贝塞尔少儿科技(2021年3期)2021-01-20高低翻越动漫界·幼教365(中班)(2020年3期)2020-04-20SelTrac®CBTC系统中非通信障碍物的设计和处理铁道通信信号(2020年9期)2020-02-06落子山东,意在全局金桥(2018年4期)2018-09-26基于虚宗量贝塞尔函数的螺旋带色散模型深圳职业技术学院学报(2018年3期)2018-07-23求解贝塞尔类方程的推广试探函数法大学物理(2016年6期)2016-10-15新思路:牵一发动全局中国卫生(2014年5期)2014-11-10土钉墙在近障碍物的地下车行通道工程中的应用城市道桥与防洪(2014年5期)2014-02-27

推荐访问:算法 局部 路径

猜你喜欢