自动驾驶中轨迹规划的探索和挑战

10.3.1.轨迹规划的概念
轨迹规划的核心就是要解决车辆该怎么走的问题。比如知道了附近有行人、骑自行车的人以及前方的卡车,如果现在将要左转,该怎么办?这就是轨迹规划该解决的问题。轨迹规划的输入包括拓扑地图,障碍物及障碍物的预测轨迹,交通信号灯的状态,还有定位导航(因为要知道目的地是哪才能规划路径)、车辆状态等其他信息。而轨迹规划的输出就是一个轨迹,轨迹是一个时间到位置的函数,就是在特定的时刻车辆在特定的位置上。该位置是t ->(x,y,z),把z标灰是因为目前为止车不会飞,如图10-16所示。
 
图10-16. 典型的自动驾驶系统架构
轨迹规划本质上来说是一个优化问题。谈到优化问题,需要知道优化的约束和优化的目标。首先看约束,第一个约束就是车辆要遵守交规,这是强制性的约束;第二个约束是要避免碰撞;第三个约束是要使规划的轨迹在控制上可实现,不能出现规划了一个急弯的轨迹,车根本拐不过来的状况。而优化的目标就是要跟人开的像,具体表现就是让人乘坐起来感到舒适。但像人也有不同的优化目标,比如可以开的稳一点也可以开的急一点,像老司机一点。图10-17表示轨迹规划本质上来说是一个优化问题。
 
图10-17. 轨迹规划本质上来说是一个优化问题
这样一个优化问题在数学上的性质是什么呢?关心一个优化问题首先看这个优化问题是不是凸的,因为凸的问题比较好解一些。什么是凸的?可以简单描述对于一个问题它的两个可行解,其线性组合也应该是可行的,而且不比这两个解都要差。那么轨迹规划是不是一个凸优化问题呢,并不是,它是非凸的。为什么呢?在对t ->(x,y)问题进行求解时,复杂度比较高计算量比较大。所以通常的做法是把他分成横向规划和纵向规划。横向规划,这是s ->(x,y),就是决定轨迹的形状是什么。纵向规划是t ->s,也就是指在此形状上运动的速度状态,也就是时间与位移的关系。横向规划和纵向规划联合起来就是t ->(x,y)。那么横向规划是凸的吗?如图10-18所示,图上没有时间信息,这就是横向规划。两条黑线代表不同的变道轨迹都是可行解,然后看其线性组合也就是中间的红线,但明显红线的轨迹是不能用的,这是很差的,他变道太慢,骑线行驶的距离太长了,所以横向规划是非凸的。
再来看纵向规划,经常用t - s图表示。t表示时间,s表示走过的路程。当一个人横穿马路时,可以用白色矩形来在t - s图上表示这个过程,左边界表示人进入规划路径的时刻,右边界表示离开规划路径的时刻。横向上,上下边界差可以理解为人在占用规划路径的宽度。对于这样一个纵向规划,有两种选择,一种是要让人,即下边的绿色路线,一种是车辆加速超过,即上边的绿色路线。但它的线性组合可能是这条红线,明显这已经撞上了,所以这并不是一个凸的问题。
非凸优化问题
什么是凸的?
  • 两个可行解

     与

     ,

对于

 ,

也应当可行且不能比

 与

 都差

轨迹规划t->(x, y)非凸
  • 横向规划s->(x, y)非凸
  • 纵向规划t->s非凸
 
图10-18. 轨迹规划本质上来说是一个优化问题
10.3.2.决策
正是因为轨迹规划是非凸的,所以需要用决策的模块来解决。什么是决策呢?从数学上来讲,决策就是限定非凸问题的解空间,将问题转化为凸的。可以看下图的例子,如果两个人在穿马路的话,大体上可以有四种不同的决策,既让两个人,超两个人,让一超一和超一让一。而一旦决策确定,那么其实就可转换为凸的问题,求解就会相对来说比较容易。决策也会使解更加稳定,因为一个单纯的数值优化问题的求解,会很难保证每一帧的解是相对稳定的,不会出现第一帧要让,而第二帧却要冲的问题。但需要注意决策的问题是一个NP-hard 问题。有一些需要决策的场景,比如抢行还是让行,这是否要冲黄灯,在哪两辆车之间变道、并线,这是否要主动变道,这是从左还是右绕行前方障碍物,只有做了决策才能使问题变为凸优化问题,便于求解。对于凸问题,有很多比较快速的算法进行计算了。线性规划,二次规划,序列二次规划,都是数值求解优化问题的方式。可以看一下二次规划中,如果Q正定,二次规划就是凸的问题,有很快的方式求解它。图10-19表示
ADAS决策技术。
 
图10-19. ADAS决策技术
求解优化问题
动态规划
线性规划(LP)

 二次规划(QP)

 序列二次规划(SQP)

 下边就是看如何把自动驾驶中的问题转化为优化问题。

首先是纵向规划的决策,决策的方法已经谈到了一些,比如动态规划。这是一个NP-hard问题所以没有一个简单的算法进行精确求解。如图10-20所示,如果有两个人穿马路,来研究一下如何走才是最优的,可以将T-S进行离散化,离散化之后,就可作出一个状态转移方程,而这个状态转移方程可以看作每一步的决策只与前边的两步有关系,所以有转移方程。虽然这个方程在实际过程中比较难写但确实是一种做法。虽然离散化t和s降低了精度,但降低精度也能降低了运行时间。注意,这种方法并不能保证最后的速度比较舒适,它只是大概的一个决策方法,即到底让或者不让。
纵向规划决策求解:动态规划
状态转移

 离散化t与s,以损失精度降低运行时间

 
图10-20.ADAS行人过马路的决策技术
再来看一下决策方面的挑战。第一个挑战上面已经讲过了,决策问题是一个NP-hard问题,不易直接求解,有多种多样的近似算法。第二个挑战是很难用规则去拟合人的经验,包括上述的状态转移方程中的cost,也很难去表示。而一些解决的办法是可以根据各种不同的情况去建立一个数学模型。以及用机器学习的方法去做一些决策。比如说图10-21的例子,已经打算绕行,但前车突然起步了,该怎么办?是该变道还是跟在后边走还是继续绕行?这种情况确实很靠人的经验。如果要左转,但是前边这辆车停了很久也没有走要不要变道呢?作为人类司机也很难判断。场景的多变而复杂使得决策面临着很多挑战。
决策的挑战。图10-21表示ADAS行人过马路的决策技术。
 
图10-21.ADAS行人过马路的决策技术
10.3.3. 横向规划
轨迹规划可以拆成横向和纵向的规划。横向规划是一个方向的规划,它可以看成一个如何打方向盘的规划,它只决定了轨迹的形状。这个问题通常的解法分两种,一种是无车道的,比如说自由空间中的规划,或者说是停车之类的问题,它是没有车道线信息或者说先验信息的,大多都用OpenSpace路径生成的方式去做,一般也是低速的。对于有车道的情况,虽然有车道线但是输出s ->(x,y)这个函数难度也是比较大的,常见的做法是是离线生成参考线,之后就可以将s ->(x,y)这个问题变为一个求解s ->L的问题,L是指车辆在这个参考线上的横向偏移量。可以看到图10-22右边这张图,本来是沿车道往前走,但由于有车辆的遮挡,就必须绕行它。即横向偏移就可以了。
 
图10-22. ADAS行人过马路的决策技术
对于参考线的生成,很类似于开卡丁车时别人教过弯的最优路线,也是一个优化问题,当然也要保证安全性和舒适性,但是方便的是有了地图以后是可以离线去做的,所以可以用一些开销比较大的算法做到非常优。它的约束是在车道线内,且控制上要可实现。优化目标就要接近车道中心,曲率不能太大且曲率变化率不大。图10-23表示依据车道线求解进行优化。
 
图10-23.依据车道线求解进行优化
有了参考线之后就可以把参考线离散化,采一些点出来,那么就变成了解一个离参考线偏移距离的一个问题。就变成了s ->L的问题,约束是不跨越边界,避免碰撞,而优化的目标是要离参考线近,要离障碍物远,曲率不大,曲率变化率不大等等。图10-24表示依据车道线S->L求解进行优化。
 
 图10-24.依据车道线求解进行优化
看下如图10-25这个例子,那么这个问题就可以看成一个二次规划QP的问题。0,-1,-2是车过去的路径,0号点是车当前的位置,需要解的就是1,2,3,4,5,6这种点的相对于参考线的横向偏移x,已知就是x[-2],x[-1],x[0],求解x[1],x[2]等,而约束就是不能超过左右边界,包括马路牙,实线,障碍物等。优化目标就是要离中心参考线近,方向盘不能打太多太快。图10-25中的公式的形式就是一个关于x的二次的形式,所以它们可以去用QP的方法来解。
 
图10-25.依据车道线求解进行优化
再来看看横向规划的挑战。虽然大部分时候车都在一个有车道线的地方开,但比如像图10-26问题更像是一种没有参考线的自由空间的规划,这种都是比较大的挑战,如果说没有车道线或者说没有人按车道线开,那么这样的规划就会比较难做一点。
 
图10-26.没有参考线的自由空间的规划
另外一些挑战就是环境的问题,因为周围的环境是瞬息万变的,周围的环境预测也是困难的,如图10-27所示,本来车辆是要往左变道,而左下角黄色的块表示摩托车,这个摩托车正在飞速的过来,所以车辆又进行了取消变道的决策,也就是生成平滑的曲线回到原来的道路上去,这样的情况如何能保证路径光滑且在控制上可实现,也是一件很难的事情。
 
图10-27.横向规划的挑战
posted @ 2024-03-05 04:57  吴建明wujianming  阅读(23)  评论(0编辑  收藏  举报