《Baidu Apollo EM Motion Planner》是Apollo官方的出的文章(虽然是官方文章,但其中有表述不是很严谨,也有一些小错误,大家可以审视的研读这篇文章,另外可以找一些该文的参考文献看一看会有很大帮助),网上的讲解很多都是机翻,本文根据自己对《Baidu Apollo EM Motion Planner》的理解整理如下:
Apollo的功能架构如下:这篇文章是专门将Motion planner的,其中:
备注:Routing类似于现在开车时用到的导航模块,通常考虑的是起点到终点的最优路径(通常是最短路径),Routing考虑的是起点到终点的最短路径,而Planning则是行驶过程中,当前一小段时间如何行驶,需要考虑当前路况,是否有障碍物。Routing模块则不需要考虑这些信息,只需要做一个长期的规划路径即可
论文提出一种适用于高速公路和低速城市场景的多车道-单车道分层架构:
备注:对于规划的覆盖范围:至少提供8秒或者200米的运动规划轨迹,算法的反应时间必须在100ms(人是300ms反应时间)内做出反应。
一般来讲,L4级的自动驾驶应当包含变道,而变道分为主动变道和被动变道。主动变道是routing模块因为要到达最终目的地而发出的换道请求,被动变道是本车道被障碍物挡住被迫避让变道。而Apollo的EM planner提出了自己的解决方案:
基于Frenet frame(SLT)方法的轨迹规划一般分为2种:直接在3维空间下优化求解,或将路径和车速解耦求解(轨迹包含两部分:路径和路径上每个点的速度)。
备注:对于高速动态障碍物,考虑到安全问题,Apollo EM planner倾向于变道而不是减速避让。
约束分两类:
硬约束:交通规则
软约束:避让、超车、接近障碍物的决策
Apollo EM planner倾向先做决策在做规划(和其他算法相比,该算法请决策重规划,该特点会在后面阐述),因为决策过程可以明确变道可行性,这样可大大减小搜索空间。
在EM planner的decision阶段有如下几个步骤(1.1中的描述类似,其实可以理解为是一个东西,只是描述侧重不一样),下面的全文都是对这几个步骤的详解:
本节讲EM planner的多车道 multilane strategy架构(对1.1和1.3的重复描述,但更详细了):
本节将EM planner的单车道 lane level架构:
Path E-step:
1、静态、低速和来向障碍物投影到SL坐标中;
2、动态障碍物用EM planner的变道策略去cover(考虑到安全问题,path optimization时遇到动态障碍物时倾向于避让,因此用变道策略cover该场景);
3、path的E-step最终输出的是带有静态障碍物、动态障碍物轨迹和预测碰撞区的SL。
Speed E-step:
1、所有障碍物(低速、高速、来向)都投影到基于path profile的ST坐标中;
2、如果障碍物轨迹和path有重合点,则在ST图中该处则会生成碰撞阴影区;
3、speed的E-step最终输出的是带有前后障碍物的ST(其M-step可在空白区域搜索可行车速)。
备注:静态障碍物是直接投影,但动态障碍物是把运动轨迹投影到Frenet frame中。且目前得到的仍是非凸问题。
M-step:使用动态规划和二次规划生成平滑的path和speed
1、E-step后,该问题是一个非凸优化问题;
2、动态规划能够得到一个粗略解,决策应该避让nudge、减速yield还是超车overtake;
3、基于粗略解,可将1个非凸问题分解为多个凸问题。
SL
1、在SL坐标系中,我们用S、L、侧向速度dL、侧向加速度ddL、侧向加加速度dddL,这5个量描述本车状态;
2、静态障碍物的位置是时不变的,在投影时比较简单;
3、动态障碍物的位置,则需要根据当前时刻本车和障碍物的S方向的速度,预测T时刻后其所处的位置(障碍物的预测位置是prediction module给出的),以此来判断是否有碰撞。
4、path的E-step最终输出的是带有静态障碍物、动态障碍物轨迹和预测碰撞区的SL。
下图中大概3s左右会出现碰撞:
ST
speed的E-step最终输出的是带有前后障碍物的ST(其M-step可在空白区域搜索可行车速)。
path M-step:其作用是基于Frenet frame生成平滑的path profile(但此时SL空间是非凸的,eg:左右车道避让均可能为局部最优解),分为两大步骤:
1、基于动态规划的path decision:动态规划会提供一个粗略的、带有可行区域和障碍物避让策略(nudge decision)的path profile。其步骤主要包括:lattice sampler、cost function和dynamic programming search;
2、基于样条曲线的path planning:二次规划。
lattice sampler
1、lattice sample的不同行(这个“行”是垂直车道线的,即L方向)之间的点通过五次多项式来平滑连接(应该每段都有一个五次多项式,piecewise就会有多个五次多项式)。行内sample points的间隔距离(L方向)取决于速度,道路结构,变换车道等;
2、具体采样策略可根据场景自定义;
3、但出于安全考虑,lattice sample的S方向的距离最好大于8s或200m。
cost function
总的代价函数是:平滑度、障碍物避让、车道代价3部分线性叠加得来的。
会基于代价函数,用动态规划搜索最合适的path,这就涉及到了决策decision,即应对障碍物的策略:nudge、overtake还是yield。
path M-step中的DP已经可以求解出一个粗略的feasible tunnel,而QP要做的就是平滑这个DP输出来的guidance line。具体效果类似下图:
目标函数:
约束:
DP的约束有两个:boundary constraints 和 dynamic feasibility。
boundary constraints:边界约束也可以理解为碰撞约束,可以在车头车尾加两个半圆作为车辆边界以保证约束的线性和凸性。
dynamic feasibility:DP给出了由很多points(每个row上一个point)组成guidance line,QP可以此为基础调整每个point在L方向的位置以实现平滑path。但调整是有可行范围的,该范围可量化为QP的约束(lmin和lmax)。另外曲率 f ′ ′ ( s ) f''(s) f′′(s)和曲率变化率 f ′ ′ ′ ( s ) f'''(s) f′′′(s)也可以用dynamic feasibility去约束衡量(如下图)。
这里的约束主要是车辆动力学约束,如加速度 a a a和加加速度 j e r k jerk jerk的约束,另外还有个比较重要的是车辆直行不倒车的约束(下面的Speed QP会着重解决该问题)。
Speed的M-step中的QP主要是为了平滑速度(具体效果类似下图),包含三部分:cost function、linearized constraint 和 spline QP solver。
其代价函数如下:
speed M-step的QP的线性约束如下,其中:
出于安全的考虑,Apollo评估了大概100个不同位置或时间点的路径和速度。约束的数量超过600。对于选择所需的路径和速度优化器,我们发现五项多项式是比较合适的。样条曲线包括3到5个多项式,大约有30个参数。
总的来讲,DP对非凸问题做决策(nudge from right or left or follow or overtake)。QP以DP决策为基础,在凸域内平滑曲线。
如上所述,虽然大多数高级的规划算法都是基于重决策的,但EM planner是一个基于轻决策的规划器。确实,基于重决策的算法,或者依赖规则的算法,很容易理解和解释。但是缺点也很明显:它可能被困在角落的情况下(陷入局部最优解的频率与限制条件的复杂性和数量密切关),并不总是最优的。在本节中,我们将通过几个案例来说明基于轻决策的规划算法的优点。这些案例都是在百度很多的重决策规划模块中的日常测试中暴露出来的,并最后由轻决策解决。
上图是EM规划器如何在规划周期和迭代周期之间迭代以获得最佳轨迹的实际例子。在这个案例研究中,我们演示了当障碍物进入我们的路径时如何生成轨迹。假设车辆的速度为10m/s,并且有一个动态障碍物以10m/s的速度朝我们移动,EM规划器将按照一下步骤迭代生成路径和速度曲线。
因此,基于这四个步骤生成的最终轨迹整体过程是:在s=30处缓慢躲避障碍物,然后车辆通过障碍物再加速,这才是人类驾驶员在这种情况下可能的操作。
请注意,规划并不一定要始终执行四个步骤。它根据不同的场景可以采用更少或者更多的步骤。一般来说,环境越复杂,可能需要的步骤就越多。
由于将三维状态横向速度问题分解为状态横向速度和状态速度两个二维问题,极大降低了EM Planner的计算复杂度。因而具有很高的规划效率。假设我们有 n n n个障碍物、 M M M条候选路径和 N N N条候选速度曲线,则该算法的计算复杂度为 O ( n ( M + N ) ) O(n(M+N)) O(n(M+N))。
EM Planner是一个基于轻决策的规划算法。与其他基于重决策的算法相比,Em规划器的优势在于能够在复杂的多障碍场景下执行。当基于重决策的方法试图预先确定如何处理每个障碍物时,困难是显而易见的:(1)很难理解和预测障碍物如何与主车相互作用,因此它们的跟随运动难以描述,很难用约束和规则来表征;(2)当多个障碍物阻塞道路时,无法找到满足所有预定决策的轨迹概率大大提高,从而导致规划的失败。
自动驾驶汽车的一个关键问题是对安全性和通过性的挑战,严格的规则增加了汽车的安全性,但降低了通过性,反之亦然。以换道为例,如果后面有车辆,只要有简单的规则,就可以很容易地暂停换道过程。这样可以保证安全,但大大降低了通过性。本文所描述的EM-planner,在解决潜在决策与规划不一致的同时,也提高了自主驾驶车辆的通过性。
EM计划器通过将3维的(SLT)问题转换为两个两维问题(SL和ST),大大降低了计算复杂度。 它可以大大减少处理时间,从而提高了整个系统的交互能力。