规划中通过结合高进度地图,定位和预测来构建车辆的轨迹。
第一步:路径导航,如从A地道B地,将地图数据作为输入,并输出可行驶路径
路径规划目标:找到从地图上的A地到B地的最佳路线。
路由
路线规划使用三个输入:
地图:地图数据包括公路网和实时交通信息
我们当前在地图上的位置
我们的目的地:通常取决于车辆的乘客
世界地图
从地图A-B,无人驾驶通常货沿道路搜索有没有任何路径,称作搜索。Apollo也利用搜索来查找路径,但搜索算法更智能,在搜索之前将地图重新格式化成“图形”的数据结构,该图形由“节点”和“边缘”组成。
可以对从一个节点到另一节点所需要的成本进行建模,从实际中就可以得出从1-3所需成本是比1到其它节点的要少,从上图可知,蓝色的为低成本。在计算机领域里,人们已经发现许多用于从图形中搜索路径的算法,所以将地图装换为图形有利于无人驾驶车搜索路径。
网格世界
从初始节点开始,还需要相邻的八个节点中哪个是最有希望的最佳候选节点,对每个候选节点都要考虑两件事:
首先:计算候选节点到开始节点的成本;
然后:计算从候选节点到最后节点的成本,可以自己定义计算成本的规则,比如有交通堵塞等情况。
定义:
g:代表从初始节点到候选节点的成本
h:表示候选节点到目标节点的成本
f:表示两个值的和,值越小,表示成本越低。
A*算法
通过g,h值相加得到的f值来确定最佳路线,如下图,最佳路线是网右转,f值最小。
从路由到轨迹
高等级地图只是规划过程的一部分,我们需要构建沿这条道路的低等级轨迹,意味找要处理地图上没有的物体,如其它车辆,行人及自行车等。如试图与调头的车辆互动。这一级别的规划称为轨迹生成。
3D轨迹
轨迹生成目的是:生成由一系列路径点所定义的轨迹,每个路径点都分配了一个时间戳和速度,让一条曲线与这些路径点拟合,生成轨迹的几何表征,移动的障碍物可能会暂时阻挡部分路段,路段的每个路径点都有一个时间戳,将时间戳与预测模块的输出结合起来,以确保车辆在通过时,路径上的每个点都未被占用。这些时间戳创建了一个三维轨迹。
评估一条轨迹
如何评估一条轨迹,采用成函数,选择成本最低的路径。轨迹成本由各种规范和处罚组成。
如下图考虑到了:
车辆偏离中心线的距离
可能发生碰撞
速度限制
舒适度
通过将这些成本计算成数字,最终的出最佳的路径。
车辆甚至可以在不同环境中使用不同的成本函数。
Frenet坐标
- 笛卡尔坐标系
通常我们使用笛卡尔坐标系来描述物体的位置,但对于车辆来说,确不是最佳的选择,我们即使能够知道车辆的(x,y)坐标,我们不知道路在哪里,很难知道车辆行驶了多远,以难以确定车辆是否偏移车道中心。
- Frenet坐标系
描述了汽车相对于车道的位置,在Frenet框架中,s代表沿道路的距离,已被称为纵坐标,d表示与纵向线的位移,已被称为横坐标,在道路的每个点,横轴与纵轴都是垂直的。
纵坐标表示车辆行驶距离,横坐标表示车辆偏离中心线的距离。
路径速度解耦规划
路径-速度解耦规划将轨迹规划划分为两步:
路径规划:生成候选曲线,这是车辆可行驶的路径,我们使用成本函数对每条路径进行成本评估,该函数包含平滑,安全性,与车道中心的偏离,以及我们想要考虑的其它的任何因素。按成本对路径进行排名,并选择成本最低的路径。
速度规划:路径规划之后就考虑速度的规划,我们可能希望改变在该路段是的速度,我们需要选择的事与路径点相关的一系列速度,而不是单个速度,该系列称之为“速度曲线”,可以用优化功能为路径选择,受到各种限制的良好速度曲线,通过将路径曲线和速度曲线相结合,可构建车辆的行驶轨迹。
路径生成与选择