1. 规划简介
在规划中,我们通过结合高精地图、定位和预测来构建车辆轨迹。
规划的第一步是路线导航,侧重于如何从地图上的A点前往B点。在进行路径规划时,将地图数据作为输入,并输出可行使路径。轨迹规划的目标是生成免碰撞和舒适的可执行轨迹,该轨迹由一系列点定义,每一个点都有一个关联速度和一个指示何时应抵达那个点的时间戳。
2. Sebastian 介绍规划
略
3. 路由
路线规划的目标是从地图上的A点前往B点,路线规划有三个输入:地图、起当前在地图上的位置、目的地。
4. 世界到图
在进行路径搜索前,需要将地图转换为“图"这一数据结构。路线规划所用的搜索算法实际上绝大部分都是基于图的搜索算法。我们将地图转换为图,并且引入”开销"(或者说“成本”)的概念,
图论(Graph theory),是组合数学的一个分支,和其他数学分支,如群论、矩阵论、拓扑学有着密切关系。图是图论的主要研究对象。图是由若干给定的顶点及连接两顶点的边所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系。顶点用于代表事物,连接两顶点的边则用于表示两个事物间具有这种关系。
5. 网格世界_a &6. 网格世界_b& 7. 网格世界_c
A*搜索算法(A * search algorithm)是一种经典的路径搜索算法,是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法。
该算法综合了最良优先搜索(英语:Best-first search)和Dijkstra算法的优点:在进行启发式搜索提高算法效率的同时,可以保证找到一条最优路径(基于评估函数)。
在此算法中,如果以g(n)表示从起点到任意顶点n的实际距离,h(n)表示任意顶点n到目标顶点的估算距离(根据所采用的评估函数的不同而变化),那么A*算法的估算函数为:
f ( n ) = g ( n ) + h ( n ) {\displaystyle f(n)=g(n)+h(n)} f(n)=g(n)+h(n)
这个公式遵循以下特性:
- 如果g(n)为0,即只计算任意顶点n到目标的评估函数h(n),而不计算起点到顶点n的距离,则算法转化为使用贪心策略的最良优先搜索(英语:Best-first search),速度最快,但可能得不出最优解;
- 如果h(n)不大于顶点n到目标顶点的实际距离,则一定可以求出最优解,而且h(n)越小,需要计算的节点越多,算法效率越低,常见的评估函数有——欧几里得距离、曼哈顿距离、切比雪夫距离;
- 如果h(n)为0,即只需求出起点到任意顶点n的最短路径g(n),而不计算任何评估函数h(n),则转化为单源最短路径问题,即Dijkstra算法,此时需要计算最多的顶点;
有关A*算法,可以参考很多博客,我准备有时间也写一个(flag
8. A*
现在我们来考虑现实中的情况,假设现在到了一个交叉路口,我们可以直走、左转和右转。首先,我们把地图转换为具有三个候选节点的图形。
接下来,我们将对选项进行评估,在实际生活中,拐过交叉口很费劲,所以我们为这个节点分配了更高的g值,g值是从起始点到候选节点的成本。
在查看公路选项之后,我们意识到必须走很长的路才能离开公路,并返回我们的目标。所以我们为该选项分配了更高的h值,h值是从候选节点到目的地的估计成本。
接下来,我们将通过g值和h值的相加来计算每个节点的f值,我们看到,实际f值最低的对应的是最右边的候选节点,所以这是我们接下来要前往的节点。
9. 从路由到轨迹
高等级地图路线只是规划过程的一部分,仍需要构建沿这条路线前进的低等级轨迹,这意味着要处理不属于地图的物体如车辆、自行车、行人,例如可能需要与试图在前面掉头的汽车互动,或者可能希望在公路上驶过一辆慢车,这些场景需要更低级别、更高精确度的规划,我们将这一级别的规划称为轨迹生成。
10. 3D 轨迹
轨迹生成的目标是生成由一系列路径点所定义的轨迹,为每个路径点分配了一个时间戳和速度。让一条曲线与这些路径点拟合生成轨迹的几何表征,由于移动的障碍物可能会暂时阻挡部分路段,轨迹中的每个路点都有时间戳。