Fork me on GitHub

【干货篇】轻舟智航:自动驾驶中的决策规划技术(附视频回放 +PPT 下载)

分享嘉宾:李仁杰,轻舟智航规划算法负责人
整理出品:扬奇智能社区

PPT下载及视频回放:
https://www.jancsitech.net/#/community

导读 : 在自动驾驶系统中,决策规划模块用于解决车辆“怎么走”的问题。与业界惯用的时空分离算法不同,轻舟智航采用时空联合规划算法,同时在空间和时间维度求解最优行车轨迹,得到更加舒适、安全、拟人的驾驶行为。本次分享,轻舟智航规划算法负责人李仁杰将介绍自动驾驶决策规划技术的基本概念,并解释时空联合规划算法如何让轻舟无人车轻松应对中国特色的复杂交通场景,开得更像“老司机”。

嘉宾介绍: 李仁杰,轻舟智航规划算法负责人,自动驾驶决策与规划技术专家。 本科、博士毕业于清华大学,曾在智能驾驶领域的国际顶级期刊与会议上发表过多篇高影响力论文,目前负责轻舟智航的运动规划算法研发工作。

图片

图片

首先简单介绍一下自动驾驶系统里的模块,以及每个模块所承担的任务。我们知道自动驾驶系统既包含软件也包含硬件。先说硬件,其中一类很重要的是传感器,传感器主要用来获取外部的信息。一类传感器是定位传感器,比如惯导之类。另一类传感器用来获取感知信息,比如L4级自动驾驶经常用的激光雷达。而更偏向量产的低级别自动驾驶产品,会更多地使用摄像头、超声波雷达等等。这些传感器数据会作为输入同时送到定位和感知模块里。定位模块主要负责解答的问题是“车现在在哪里”,是在道路上还是在路口,是在高架桥上还是在停车场里。感知模块则负责解答“车周围有什么”这个问题,就像开车一样,我们会观察周围是不是有红绿灯,旁边是不是有自行车,这些结果都由感知模块输出给下游。感知模块的一个重要下游是预测模块,预测模块主要解答“周围的车现在想干什么”,比如前面的车要cut in,预测模块就会给出前方车辆切入本车道的意图。预测对于高级别自动驾驶的决策规划是非常关键的,就像人开车一样,通常都会通过预测周围交通参与者的行为来灵活调整当前的动作。所以预测越智能,最后自动驾驶的行为也越智能。

高精度地图模块也需要着重说一下,对于高级别自动驾驶车辆来说,高精度地图是不可或缺的。比如对于感知来说,利用高精度地图的信息可以过滤掉障碍物。像马路牙子上一般不太可能停大卡车,高速公路上一般也不太可能有横穿马路的行人,所以感知通常会通过高精度地图信息来做一些预处理。预测也会利用高精度地图中的语义信息去预测车辆行为。比如路口有一辆车正停在左转车道上,那么预测模块会根据这个信息来判断,在接下来绿灯亮时它大概率会左转,而不会直行或右转。所以高精度地图对于预测来说也是很重要。

接下来是决策规划模块,它是一个非常关键的模块,主要通过接收上游的定位、地图和预测信息,来决定车辆应该怎么走。将决策规划模块进行细分主要包括三个子模块,分别是导航模块、决策模块和轨迹规划模块,后面会详细进行介绍。决策规划模块会根据自身当前位置和状态以及周围路况,输出一条轨迹下发给下游控制模块,然后控制模块将轨迹信息转译成可发送给下游执行器的命令,如油门、刹车、方向盘角度等等,控制车辆按照规划的路径去行驶。以上就是自动驾驶系统的大致模块划分情况。

图片

下面针对决策规划里的三个子模块,分别来介绍其功能。

首先是导航模块,我们开车出去或要远行都会首先拿出手机地图软件选定一个目的地,然后规划一条路线。对于自动驾驶来说,导航模块功能也是类似,主要在给定地图上任意两点a点和b点之后,寻找一条从a点到b点的导航路线。以上图为例,假如车辆位置是a点,然后又给定了终点b点,导航模块最终会根据路网信息来决定应该通过什么样的车道级路线到达b点。导航模块在业内相对比较成熟,常用算法一般是A*类的启发式搜索算法,给定路网信息后去搜索出一条最优路线。这里的最优性通常要求路线尽量短、尽量少变道、红绿灯尽可能少等。导航技术在业内比较成熟,像大家常用的百度地图、高德地图、腾讯地图等等,都已做到非常成熟的导航水平,所以这一块面临的问题会比较少。

图片

下一个是决策模块,决策其实是个非常笼统的概念,这里我会做一个更加细分的拆解。对于自动驾驶来说,一般包含两级决策,第一级决策叫做车道决策,指在路上行驶时,我们是应该保持当前车道直行,还是借旁边车道再返回本车道,或因为某个目的而进行变道(上图分别对应这三种情况)。对于车道决策来说,目前业内主要有两种算法实现,第一种是基于规则和有限状态机来做状态转移,第二种是基于轨迹评价来决策变道。

图片

首先是基于规则与有限状态机的变道决策算法,通常会将车辆的变道状态做一些枚举和划分。比如这里就是一个简单的变道决策状态机,把车辆的变道状态分成车道保持、变道等待、变道执行和变道取消这四类。在车道保持状态时收到变道请求,会进入变道等待状态中。变道请求可能来自于驾驶员指示、或是导航的要求,也可能来自车辆主动提速的需求。比如说前面的车特别慢,我们想超过他,就会主动发起变道请求。等进入变道等待状态后,会检查当前车道和目标车道状态是否安全可允许变道。检查通过后,就开始执行变道。在变道过程中也会持续检查目标车道是否符合继续变道的条件。比如变道时如果后方车辆突然加速,就需要取消或暂停变道。整个变道过程就是用这几个有限的状态加一些规则来驱使车辆在不同状态之间切换。对于这一类算法,做变道安全检查时一般都是用比较简单的规则。如上图右侧所示,一般会检查自车跟前车的距离,或跟目标车道前车和后车的距离与相对速度是否满足安全的变道条件。这种方法比较简单,适用于低级别L2级自动驾驶系统。但由于它是手写规则,所以不太适合复杂的城市道路场景,更适用于结构化高速公路场景。

图片

下面介绍第二种变道决策算法,核心思想是基于轨迹的评价来决定是否需要变道。上图可以看到在当前车辆状态下,有两种选择,一个是继续保持直行跟在前车的后面,另一个选择是尝试变道,在目标车道前方切过去。由于无法用简单规则来判定哪个决策更好,这类方法会尝试分别基于两种车道决策规划一条轨迹,对两条轨迹进行评价,最后通过判断哪条轨迹分数更高来决定当前是否应该变道。一般做轨迹评价会用到这么几个评分指标,第一类是轨迹走得越远越好,第二类是轨迹越平滑越好,第三类是轨迹离其他车辆越远越好,第四类是轨迹离我们的目的地越近越好。比如前方有个路口马上要左转,我们跟在一个慢车后面,此时选择变道可以让我们暂时开得更快,但考虑到未来回到最左车道还要再向左变一次道,所以我们可能会选择继续跟在慢速车后面。基于轨迹评价的变道算法更适合处理复杂场景,比较适用于高级别自动驾驶系统和复杂的城区道路。评分函数一开始可以人工设置指标和调参,但积累足够多的数据后,也可用数据驱动方式去持续改进评分函数,让变道决策越来越智能。

图片

自动驾驶的变道决策目前有两个难题,第一个难题是在路上怎么判断前面静止的车,到底需不需要变道绕行它?这个决策对于人类驾驶员来说非常容易做,可以通过看前面的车是否打了双闪,后面是不是放有三角牌,车里是否有人以及车门是否打开等等信息,综合判断车是不是抛锚或出事故需要变道绕行,但是这些感知语义信息对于自动驾驶来说不是很容易获取。第二个难题是怎么在拥挤的交通下完成变道行为。根据人类驾驶员的习惯,在比较拥挤的路况下进行变道加塞,是可以与后方车辆进行丰富的交互的。如上图右侧的加塞是非常激进的,这时后车如果不让行撞上,变道加塞车辆需要承担责任。人类驾驶员可以冒风险去做比较激进的变道决策,对于自动驾驶车辆来说就较难做到。

图片

接下来介绍一下障碍物决策,指的是在给定车道决策的情况下,如何定性地去处理障碍物。如车前有石头挡着路,可以决定从左绕开还是从右绕开。前面有车要cut in时,我们可以选择在它cut in前加速超过它,也可以选择减速让行。对于障碍物决策来说,常用的算法中第一类也是基于规则的,但只适用于单个障碍物的简单场景。当障碍物比较多时,通常会用一些基于搜索的算法,如A*、DP等,来决定怎么对各个障碍物分别做决策。如上图,假定道路空间上有两个障碍物,我们可以把道路空间离散成一个一个格点,然后通过一些像DP这样的算法去最终搜索出一条比较粗糙的路径来决定应该从左边绕开第一个障碍物,再从右边绕开第二个障碍物。障碍物决策现在的难点与挑战还是在于当周围车辆较多时,怎么与障碍物进行复杂的交互与决策。当有了车道决策和障碍物决策后,就可以共同为下游的轨迹规划提供一个可行解空间,做进一步的轨迹优化了。

图片

最后一个部分就是轨迹规划,主要指当我们给定导航路线,以及车道决策、障碍物决策后,怎么去定量地规划一条从当前位置指向目的地的轨迹。轨迹规划概念最早来自于机器人领域。上世纪六七十年代,一些大学和机构就开始研究如何规划一条合适的路径和轨迹让室内机器人从a点到达b点。当自动驾驶技术兴起后,也借鉴了机器人领域的轨迹规划概念。通常我们所说的轨迹规划中的轨迹,其实指的是车辆在未来一段时间内的状态序列。状态有哪些量,主要取决于轨迹规划使用什么样的车辆模型。以上图左下角为例,假如用一个二阶的车辆运动学模型作为轨迹规划的车辆模型,通常包含这么几个状态量,一是 x、y方向的坐标,另一个是相对x轴的夹角(也就是航向角),还有一些高阶量包括当前的瞬时转弯曲率,以及纵向速度和纵向加速度等。

通常轨迹规划所输出的轨迹需要满足一些性质,第一是一定要保证安全,不能与周围的障碍物发生碰撞;第二是需要比较舒适,加减速尽量平滑,在通过一些曲率比较大的路口时,速度也不要太快;第三是要求遵守交通规则,满足道路限速,遇到人行横道上的行人要礼貌让行。满足以上要求后,还要求轨迹能尽量快地将车辆引导到目的地。

对于自动驾驶的轨迹规划研发来说,常用的有几类方法,第一类是基于搜索的算法,但这类方法由于搜索粒度比较粗,所以一般用在非结构化道路的规划任务里,比如泊车等。第二类方法是基于采样择优的方法,核心思想是在当前位置选定不同目标点,然后用各种各样的曲线模型,如多项式曲线、贝塞尔曲线等去采样出一系列轨迹,最后通过对轨迹打分,选出最优轨迹作为输出。第三种是基于数值优化的方法,也是目前业内比较领先的一种方法,直接将未来车辆的轨迹状态量作为优化变量,以数值优化形式求解一个最优轨迹。这种方法通常可以很好地考虑到各种安全约束,同时也比较容易得到更加灵活的轨迹,所以是比较适合城市复杂场景的轨迹规划方案。

图片

最后一部分介绍轻舟智航独特的时空联合规划技术是怎么样做到业内领先的。首先介绍与时空联合规划相对应的时空分离规划框架。所谓时空分离规划指将三维时空下的决策和规划分解成路径规划和速度规划两个二维问题。第一步通常是仅考虑周围的静态障碍物,对静态障碍物做相应的横向决策,然后规划一条与静态障碍物没有碰撞的路径。比如说在左边这张图看来,它可能第一步它只会考虑前方静止的石头。第二步在上一步规划的路径上,对动态障碍物做是否让行的决策,在路径上规划出一条不与动态障碍物发生碰撞的速度曲线。最后一步将路径与速度曲线进行组合,得到最终输出的轨迹。时空分离规划算法的优点是求解比较简单,因为把一个三维的问题分解成了两个二维问题,适用于比较简单的像静态绕障和路口让行这样纵横向运动比较解耦的场景。但它也有一个明显的缺点,是很难实现与动态障碍物较复杂的纵横向联合交互,如超车、动态避让等等。上图右下角是一个前车慢行的场景,如果想去规划一条超车轨迹,是很难通过时空分离规划框架去实现的。

图片

这就引入了我们的时空联合规划框架,指不将三维轨迹规划问题分解成两个二维问题,而是直接在三维时空下对轨迹做横纵联合的决策与优化。其中也分为两步,第一步是时空联合的决策,不区分障碍物是动态还是静态,对障碍物做决策也不会区分横向纵向,而是统一在三维时空里对障碍物做定性的决策。我们会对障碍物做4种决策,分别是让行、超车、从左侧绕行和从右侧绕行这四种定性决策。以上图右侧场景为例,前方有一辆蓝色慢车,右车道又有一辆紫色稍快一点的车,现在对这两个障碍物有两组决策方案,第一组是可以在蓝车后面加速向右变道,切入紫车前方。在这个决策方案下,我们对蓝车的决策是从右侧绕行,对紫车的决策是超车。第二个决策方案是在蓝车后面先减速等待,再向右变道,切入紫车后方。在这个决策方案中,对蓝车的决策仍然是从右侧让行,对紫车的决策就变成了让行。

图片

通过我们的时空联合决策算法选择最优决策后,再进行第二步,也就是时空联合优化。时空联合优化算法首先会将时空联合决策的结果提炼为凸可行域,作为时空联合优化的状态安全约束集。比如上一步选择了决策方案一,就会得到不同时刻的可行区域,最后通过可行区域构造一个非线性的时空联合优化问题。对于这个时空联合的非线性优化问题,目标函数包含了轨迹的舒适性、效率以及对导航路线的跟踪性能等。我们用到的车辆模型一般也是非线性的,这样可以保证最后求解出的轨迹是实际可执行的。轻舟自主研发了一个非线性优化器,可以高效地求解这个时空联合优化问题,实现各种场景下都能实时输出一条智能、拟人与舒适的轨迹。

图片

图片

时空分离规划

图片

时空联合规划

这是一个典型的可以体现时空联合规划优越性的场景。马路对面有公交车正从对向驶来,同时我们前方还有一辆低速自行车。对于时空分离规划来说,它很难灵活地与周围的动态障碍物进行复杂绕行,所以只能规划出一条慢慢跟随自行车的轨迹。对于时空联合规划来说,它可以更加灵活地处理障碍物,所以可以规划一条先从左边绕行自行车、然后在公交车驶到近处之前从公交车右边对自行车超车的轨迹。所以说,时空联合规划可以实现更加拟人和智能的驾驶行为。

图片

我们的时空联合规划算法挑战了一个的旅游小镇。旅游小镇有一个非常大的特点就是人车混行、交通状况复杂。首先,它只有一条非常窄的双向车道,同时周围有很多行人、自行车、甚至其他自动驾驶车辆的穿行,路况非常复杂。但从视频(点击“阅读原文”观看)里可以看到我们的时空联合规划算法可以非常灵活地处理这些动态障碍物,做到非常聪明的绕行。

接下来的demo展示了我们在城市道路中处理多种复杂场景的表现:自动驾驶

图片

PPT下载:访问扬奇智能官网即可下载

www.jancsitech.net/#/community


本文地址:https://www.6aiq.com/article/1657865296348
本文版权归作者和AIQ共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出