【论文阅读】Safe Trajectory Generation for Complex Urban Environments Using Spatio-Temporal Semantic Corridor
有一篇可以参考的https://blog.csdn.net/u011841848/article/details/123173791
这篇文章代码在https://github.com/HKUST-Aerial-Robotics/spatiotemporal_semantic_corridor,有空要复现一下。
摘要:先定义什么叫语义元素(semantic elements):比如动态agents,交通信号灯,速度限制等等。这些语义元素有不同的数学表述(障碍物、约束、损失函数)。怎么统一调节这些不同元素的影响呢?这篇文章用了一个统一的时空语义走廊(SSC),是不同种类的语义元素的统一抽象表达。这样子的话碰撞检测这个非凸约束就变成了凸约束,轨迹生成变成了二次规划。且可以保证安全性和可行性,因为使用了凸包和贝塞尔曲线。
1. introduction
语义元素有不同的数学表述(障碍物、约束、损失函数)。所以用统一的形式表示不同的语义元素的影响很重要。
此外,怎么保证轨迹的安全性和可行性也是比较重要的问题。现在的方法,基于优化的和基于Lattice的,是在一系列采样点上检查约束,但采样点中间的轨迹段不一定成立了,所以不能保证整个轨迹的可行性。【好像一般不会,但可以考虑一下采样时间过长的场景,以及龙格现象的影响,这种问题确实存在,会影响控制】
以上两个问题,催生了这篇文章。关键点在于定义时空语义走廊SSC。怎么想到要定义这个SSC呢?是基于一个事实:大部分语义元素都可以被表示为两种形式之一:①时空障碍物 ②时空域上的区间范围。本质上,SSC是由一系列互相连接的无碰撞的cubes(包含动力学约束)组成的。定义了SSC之后,变成凸约束了,就可以用QP+贝塞尔曲线来解决。The proposed formulation is built on the top of the convex hull and hodograph properties of the Bézier curve.
文章的贡献对应了刚刚提的问题:① 语义元素统一的表达形式;②基于优化的轨迹生成,保证整个轨迹的安全和可行;③仿真平台,验证表现。
文章如何组织:II.相关工作, III,轨迹生成框架概览; IV,预备知识;V&VI,详细讲SSC和轨迹生成方法。VII实验。VIII结论。
2. related works
2.1 时空联合运动规划
时空运动规划有很多文章。[5]对时空lattice采样,用搜索方法获得可执行轨迹。[6]也是ST lattice,用数值优化方法可以符合车道几何线型。由于时空范围内维度太高,维度灾难,[6]用了GPU加速的动态规划。但上面这些文章不考虑其他语义元素(限速、信号灯)。
有的方法考虑了。一个朴素的想法是在损失函数里考虑这些限制。[9]用人工势能场APF,把这些元素整合在损失函数里面考虑,但缺点是局部最优。然而,损失函数里考虑,各项的权重难以权衡。[10]吧信号灯和动态障碍物作为S-T(纵向和时间)图像中的障碍物,然后搜索方法得结果。[1]把车道限制整合到障碍物里面,速度限制作约束条件。
基于上述的 obstacle-like和constraint-like的表示,本文提出了SSC,为轨迹优化提供信息。
2.2 行车走廊(也有译作行车隧道)的生成
空间上的行车走廊(自由行驶的凸空间)已经广泛运用了。[11]在初始路径附近生成无碰撞的“tube”,化运动规划问题为凸约束下的二次规划。[13]在参考轨迹附近找到一个凸的可行集(这个没太理解,是不是可行轨迹簇集合?)来加速非凸的优化,但计算复杂度还是高。此外,这些方法只考虑避碰,不考虑其他语义元素。
本文受空间行车走廊启发,拓展到时间-空间域,成为时空行车走廊SSC,且考虑了多种语义元素。
3. 系统概览
先明确,本方法属于运动规划层,因此需要上游模块(行为决策层)的结果作为输入。
一个规划循环(包含上游模块)有4个阶段:
①语义级地图信息。理解上就是把感知到的信息,用OGM、动态对象、交通规则等形式作表述,重构环境。
②预测。不仅要预测其他车的高级的驾驶行为,还要预测轨迹。
③行为决策。multi-policy decision making(MPDM),IV里面会提。
④运动规划。将行为决策给出的未来的离散的模拟得到的状态(应该就是粗略轨迹),作为行车隧道生成的种子点。注意,这个规划器可以承接任意可以给出未来状态的初始推测(初始概略轨迹)的行为决策器。
小总结一下,4个关键点:语义地图,他车预测轨迹,未来模拟状态(行为决策输出概略轨迹),全局规划给的参考车道。注意:若行为决策直接考虑了他车的预测状态,则预测模块可略去,他车的模拟状态当做轨迹。
文章还强调了一点,他们行为决策用了MPDM,其实已经考虑了他车的状态,但为了普适性,他们在实验里还是选用了预测的轨迹,所以可能会丢失交互信息。个人认为,如果把预测和决策一体化去考虑,加一些博弈的理论,再套进来,将会绝杀,以后可以研究研究。
4. multi-policy decision making的预备知识
MPDM把行为决策,视作一个 多智能体部分可观测的马尔科夫决策过程multi-agent partially observable Markov decision process (POMDP), 可以考虑交互和不确定性。
因为车数量增多时,解POMDP计算量上不可接受,MPDM把问题松弛,假设自车和他车都执行有限的离散“策略”集合,比如{换道,保持车道等(说叫策略policy,其实应该叫意图maneuver/intention)}。然后每个闭环的“策略”又可以用简化的仿真模型,前向模拟生成未来的预测状态,比如理想化的转角和速度控制器。【也就是说,还是对抽象的高级驾驶行为做决策,再辅以一个简单规划器搞一个粗略轨迹】
本文用前向模拟生成的模拟状态作为种子点,生成走廊。需要说明的是:这些初始种子点不会碰撞,但不能直接执行,因为时间粒度粗糙并且模拟模型很简化。
MPDM一次性可以提供多种maneuver的未来模拟状态,本文充分利用这个特性,一次性为所有可能的maneuver生成对应的轨迹候选集,来增强稳定性。
5.时空Corridor
5.1 语义元素和frenet坐标
构型空间:S-L-T。结合Frenet坐标系,比较好理解,不多说了。
语义元素分两类:obstacle-like和constraint-like
①obstacle-like
物理意义为:slt空间上不允许行驶的一个特定部分。动静态障碍物都是。红灯视作一定时期占据特定纵向位置的障碍物。构型空间表达为一个3D Occupancy Grid
②constraint-like
特指一些动力学约束或时域上的约束。限速以及停车线可以视作速度约束。时间上的约束有点不理解,举了一个例子说,换道的时候,换道总时长不应该过长。为了整合constraint-like约束,文章提出一个统一的表述叫做语义边界(semantic boundaries)。比如限速,可以视作[s_begin,s_end]上的速度约束,s_begin和s_end就是两个语义边界。换道过程,可以视作[d_begin, d_end]上的时间约束,d_begin, d_end就是两个语义边界。注意约束层面有软约束和硬约束之分,下面会详细说。
5.2 Semantic Corridor Generation
①种子点生成
SSC的可行性取决于环境复杂度和种子点的优劣。首先要保证种子直接构成的立方体(fig 4.a,注意一下fig 4是S-T图像)无碰撞。
② 结合语义边界,膨胀立方体
基于种子点迭代生成走廊,上次膨胀后的立方体如果包含该种子点,则跳过。膨胀的对象是一系列初始立方体,是连续两个种子点作为顶点生成的。
膨胀过程中,务必注意考虑语义边界,这样就能考虑约束。具体来说,膨胀时碰到语义边界或者障碍物,这个维度就会停止膨胀。文中提到,为了保证凸性,不清晰地优化每一块cube的持续时间,当前cube的时间上界应该和下一个cube的时间下界刚好一致。如果想考虑改进这一点,可以增加时间维度的重叠。(这边不是很理解)
③ cube的松弛
一些软约束,用一定的裕度,允许其膨胀超界。
6.保障安全和可行的轨迹生成
文章先解释了为什么不用五次多项式?①一段五次多项式的表达能力非常弱,可能无法表达一个复杂约束下的maneuver ②这种多项式不适用于复杂构型空间和复杂动力学约束的问题,约束只在部分采样点上检查,两点间的可行性无法保证。文章在S和L两个维度上用了贝塞尔曲线。
6.1. 贝塞尔曲线基础和属性
m维的贝塞尔曲线是由m+1个控制点定义的。
凸包特性:贝塞尔曲线必然在控制点组成的凸包内。所以凸包都是自由空间的话,曲线也是无碰撞的。
速端曲线特性(不懂the hodograph property):约束曲线的高阶微分,可以用于动力学约束。基于这个特性,初始贝塞尔曲线的一阶导数也是贝塞尔曲线,控制点是 。对这个一阶导数的贝塞尔曲线再应用凸包特性,可以保证动力学约束。
6.2. 分段的贝塞尔曲线表示
轨迹是分段贝塞尔曲线,每段都与一个SSC的cube关联。
目标函数就是横向jerk和纵向jerk平方加权和,然后给变换到贝塞尔曲线能表达的形式。
6.3 施加安全和动力学约束
文章用了五阶贝塞尔曲线。
由于 hodograph property,那么贝塞尔曲线的k阶微分,是位于以下这些控制点组成的凸包里面的:
每一段贝塞尔曲线的k阶微分,在端点部分是被控制点约束的,两端约束为
考虑语义元素约束时,k阶微分需要在一定区间内,实际上只要保证控制点不越界就可以了,因为有凸包性质
下面具体分析一下约束条件。
① 预期状态约束(说的玄乎玄乎的,就是整个轨迹的两端约束)
起点和终点是确定的,所以对第一段的起点和最后一段的终点需要明确,
k=0,1,2,就是一直约束到二阶导。写成上面提到的两端约束形式。
② 连续性约束
因为是分段的贝塞尔曲线,在连接部分应该连续。
k=0,1,2,3,也就是说一直到3阶导数(jerk相关)都应该一样。还是写成两端约束形式。这个是每一段轨迹的两端约束。
③ 自由空间约束:
顾名思义就是无碰撞约束。有了每个cube的边界,只要把上面不等式约束写成0阶导形式就行。
④动力学约束
把上面不等式约束写成高阶导形式就行。
综上,模型建立完毕,这是一个二次规划问题,可以很快地用优化算法解决。
7.实验结果
貌似只有个定性的结果,但是确实这个如何定量呢?
不细说了
8.结论
主要贡献是2个:SSC和相应的贝塞尔轨迹生成方法。
主要的缺陷是:预测的不确定性和交互的不确定性没有被充分建模
词语积累
non-trivial
tune
enforce
render
the trajectory parameterization
hodograph
conform
facilitate
intractable
clearance
twofold
relax the problem
a space-time manifold
a quadratic programming (QP) formulation
There is extensive literature on