论文解析:Spatial-temporal Semantic Corridor(SSC)在环境建模中的应用

本文解析Safe trajectory generation for complex urban environments using spatio-temporal semantic corridor 中提到的 Spatial-temporal Semantic Corridor(SSC) 概念,并讨论其如何在自动驾驶的环境建模中使用。
文章的contribution为:

  1. 使用SSC将不同的语义信息统一在时空语义通道中。
  2. 使用基于优化的trajectory generation 方法进行motion
    planning.
  3. 代码开源,并进行了仿真验证。

论文解析:Spatial-temporal Semantic Corridor(SSC)在环境建模中的应用_第1张图片
语义信息和坐标系:
本文使用坐标系为Frenet, 因为语义在马路上通常能够通过车道坐标系更好的表达,而不是使用笛卡尔坐标系下的free space。在语义信息方面,作者将其分成了两类:1,障碍物;2,约束。所谓的障碍物,就是比如静态障碍物(在整个时间线上占据一块区域;动态障碍物,在某个时间序列占据一系列空间;红绿灯:在特定时间区间占据某块区域,etc. 而约束指的是速度约束,停止线约束,变道时间约束等。比如说速度约束就是在整个s上,车辆的速度必须小于车道限速;变道时间约束就是变道过程必须在一定时间以内完成。这个约束有软约束和硬约束之分,速度约束就是硬约束,车辆禁止超过车道限速,而变道时间约束则是软约束,比如3-8s内都是合理的变道时间。这个软硬约束在corridor生成的过程中进行了考虑,主要就是在最后一步cube relaxation中进行cube膨胀。

SSC生成:文章以st graph中的SSC生成为例陈述了其corridor的生成方式。
论文解析:Spatial-temporal Semantic Corridor(SSC)在环境建模中的应用_第2张图片
SSC生成分为四步:
seed generation
cube inflation
constraint association
cube relaxation

Seed Generation

seed是cube的初始状态,生成corridor之前,要求前序模块给出一系列collision-avoidance的离散序列作为initial state。这一序列点就是initial cube.
Cube Inflation and Constraint Association
对起始点进行膨胀,知道碰到semantic boudnary为止。如下图:
论文解析:Spatial-temporal Semantic Corridor(SSC)在环境建模中的应用_第3张图片
第一个cube膨胀完成后,第二个的起点选择是有第一个cube内的最后一个点和不在cube中的下一个点构成的小cube作为起始cube开始膨胀,如下图:
论文解析:Spatial-temporal Semantic Corridor(SSC)在环境建模中的应用_第4张图片
这里的膨胀方向是有选择的,无法往坐标轴的负方向碰撞,车子只能前进不能后退。此外,由于在st graph中,我们并不考虑每段曲线的时间分配问题,所以这里也就没有必要让cube在t轴上发生重叠了,所以上一个cube的 t upper bound 应该为下一个cube的t lower bound. 如下图,在cube分割过程中,我们看到t轴不进行膨胀。
论文解析:Spatial-temporal Semantic Corridor(SSC)在环境建模中的应用_第5张图片

Cube Relaxation:

因为上面提到过软约束,变道时间并不是强行规定好的,所以在S方向,cube可以被膨胀一些,在变道过程中意思就是变道的时间可以在一定区间。上图中的最后一个cube在S方向上进行的膨胀,留出来更多的可行驶空间。

Trajectory Genration:

本文主要是用了piecewise Bezier Curve进行优化问题构造,更多的细节可以参考另一篇Gao Fei 的文章。本文中将cost function写成:
在这里插入图片描述
也就是说把横纵向何在一起进行规划。约束部分包括:
起点终点约束;规划的起点和终点的p,v,a被固定;
连续性约束,连续的两段曲线的0-3阶导数连续;
free-space约束;有cube决定,对应的曲线的位置被限制在对应的cube边界之内;
运动学约束;车辆的速度和加速度被约束在合理范围内;
由于bezier curve的特性,能够很好的刻画以上的约束。最后问题被构造成典型QP问题使用OOQP进行求解。

分析与讨论:

文章提出的SSC是个很好的概念,能够在环境建模阶段构造出时空语义信息,提供决策和规划很好的input. 但本文虽然构造了SSC,但是生成cube的时候还是解耦成了两维。上文所解析的cube generation是在 st graph中进行的,并没有L 方向的信息。而在cost function中,作者却把两个维度合在了一起,其实在两个维度上的曲线是两组曲线,st 上的piecewise bezier curves规划出了速度,而 lt 上规划出了横向位置。如何cost function要合起来,那个cube也应该提供三维的cube, 在对应的时间上不仅有st graph的边界,同时也要给出lt graph的边界。或者就是解耦出两维,分别进行规划,然后一个合并,就像百度那样。但是我认为,这里用了SSC 的环境建模方法,同时考虑了时空信息,规划的时候合并成slt规划才能更好的利用这个信息,更具体的说来,就是在决策和规划方面,同时考虑时空间信息能够作出更好的全局决策和规划。百度的方法,规划出空间轨迹后,在进行速度规划,进行了两次QP。但其实全局层面合并后并不是最优解,因为他们互相独立。举一个简单的例子,主动超车这件事,如果通过在SSC中进行规划,就可以规划出一条先是直行然后变道的轨迹,同时这个轨迹在直行过程中的速度调整和变道的速度规划都是连续的(SSC 中,我们预测这个过程周围车辆状态),而如果我们分离出两个维度处理这个问题,就不能给出全局最优解,我们先要规划空间轨迹,到底是变道还是直行,什么时候开始变道,只能通过决策模块下发。所以在我看来,SSC的构造最好的地方就是帮助决策规划作出全局最优解,并且在规划层面,也是做两次QP然后合并,看似我们在处理一个三维问题,其实和做两次两维规划是没有计算量增加的。

你可能感兴趣的:(自动驾驶论文解析,路径规划,自动驾驶)