正文
Trajectory 2:Lane 1、Lane 6、Lane 8对应路口直行;
Trajectory 3:Lane 1、Lane 4、Lane 5、Lane7对应换道后直行通过路口。
假设在t+w时刻,无人车经过Lane 6行驶到Lane8的位置,那么轨迹Trajectory 2便成为该Binary Classification的正样本,其余两条轨迹便成为负样本。在这种基于Lane序列的问题抽象下,所有的正负样本可以从历史数据的回放中获得,并成为模型训练的样本数据。另一方面,模型的特征抽取可以结合一定时间内的如下信息来设计:
在上述的样本标签定义和特征抽取下,无人车Prediction部分的宏观行为预测可以很好的抽象成典型的机器学习问题来解决。在预测得出的宏观行为基础上,相关的轨迹生成和速度预测可以通过特定的规则或者物理模型来实现。
无人车路径规划的Routing寻径问题,虽然也是要解决从A点到B点的路由问题,但由于其输出结果并不是为实际的驾驶员所使用,而是给下游的行为决策(Decision)和动作规划(Planning)等模块作为输入,其路径规划的层次要更加深入到无人车所使用的高精地图的车道(Lane)级别。如图4所示,其中的箭头线段代表高精地图级别的道路划分和方向。
lane
1
,lane
2
,………,lane
8
构成了一条Routing输出的路由片段序列。可以看到,无人车地图级别的Lane划分并非和实际的自然道路划分对应。比如
lane
2
,lane
5
,lane
7
都代表了由地图定义绘制的“虚拟”转向Lane。类似的,一条较长的自然道路,也可能被划分为若干个lane(例如
lane
3
,lane
4
)。
做为整体无人车决策控制规划(Decision,Planning & Control)系统的最上游模块,路由寻径模块的输出严格依赖于无人车高精地图(HD-Map)的绘制。在高精地图定义绘制的路网(Road Graph)的道路(Lane)划分的基础上,以及在一定的最优策略定义下,路由寻径模块需要解决的问题是计算出一个从起点到终点的最佳道路(Lane)行驶序列:
{(lane,start_posotion,end_position)
i
}
,其中,(lane,start_posotion,end_position)
i
我们称作一个Routing Segment(路由片段),所在的道路由lane来标识,start_posotion,end_position分别代表在这条道路上的起始纵向距离和结束纵向距离。
图4 无人车路由寻径模块(Routing)的高精地图道路(Lane)级别寻径路由
图5 无人车寻径(Routing)基于Lane Point的有向带权图上的最短路径问题抽象
我们可以把无人车在高精地图的Lane级别寻径问题,抽象成一个在带权有向图上的最短路径搜索问题(如图5所示)。路由寻径(Routing)模块首先会基于Lane级别的高精度地图,在一定范围内所有可能经过的Lane上进行分散“撒点”,我们称这些点为“Lane Point”。这些点代表了对无人车可能经过的Lane上的位置的抽样。这些点与点之间,由有向带权的边进行连接。Lane Point之间连接的权,代表了无人车从一个点行驶到另一个点的潜在代价(Cost)。在这样的有向带权图的问题抽象下,路由寻径问题可以利用常见的A*算法或者Dijkstra算法来进行实现。
行为决策(Behavioral Decision)
行为决策(Behavior Decision)层在整个无人车决策规划控制软件系统中扮演着“副驾驶”的角色。这个层面汇集了所有重要的车辆周边信息,不仅包括了无人车本身的当前位置、速度、朝向以及所处车道,还收集了无人车一定距离以内所有重要的感知相关的障碍物信息以及预测轨迹。行为决策层需要解决的问题,就是在知晓这些信息的基础上,决定无人车的行驶策略。这些信息具体包括:
所有的路由寻径结果:比如无人车为了达到目的地,需要进入的车道是什么(target lane)。
-
无人车的当前自身状态:车的位置速度朝向,以及当前主车所在的车道。
-
无人车的历史信息:在上一个行为决策(Behavioral Decision)周期,无人车所做出的决策是什么?是跟车,停车,转弯或者是换道?
-
无人车周边的障碍物信息:无人车周边一定距离范围内的所有障碍物信息。例如周边的车辆所在的车道,邻近的路口有哪些车辆,它们的速度位置如何?以及在一个较短的时间内它们的意图和预测的轨迹。周边是否有自行车或者行人,以及他们的位置速度轨迹等;
-
无人车周边的交通标识信息:一定范围内的Lane的变化情况。比如路由寻径的结果是在Lane1的纵向位移10m处换道进入对应的相邻Lane2的纵向位移20m处,那么Lane1的合法的纵向位移换道空间是多大?比如从一个直行Lane行驶结束,需要进入下一个左转Lane,两条Lane的交界处是否有红绿灯或者人行道?
-
当地的交通规则:例如道路限速,是否可以红灯右拐等等。
无人车的行为决策模块, 就是要在上述所有信息的基础上,做出如何行驶的决策。可以看出,无人车的行为决策模块是一个信息汇聚的地方。由于需要考虑如此多种不同类型的信息以及受到非常本地化的交规限制,行为决策问题往往很难用一个单纯的数学模型来进解决。往往更适合行为决策模块的解决方法,是利用一些软件工程的先进观念来设计一些规则引擎系统。例如在DARPA无人车竞赛中,Stanford的无人车系统“Junior”利用一系列cost设计和有限状态机(Finite State Machine)来设计无人车的轨迹和操控指令。在近来的无人车规划控制相关工作中,基于马尔可夫决策过程(Markov Decision Process)的模型也开始被越来越多得应用到无人车行为层面的决策算法实现当中。简而言之,行为决策层面需要结合路由寻径的意图,周边物体和交通规则,输出宏观的行为层面决策指令供下游的动作规划模块去更具体地执行。其具体的指令集合设计则需要和下游的动作规划模块达成一致。