Apollo入门课程06-规划

规划

规划简介

规划的目标是寻找从A到B的最佳路线,分为路径规划和速度规划。Apollo在进行检索之前会将所得的地图数据转换成图像的格式,图像的格式中由节点和边缘两个部分组成。将空间转换成网格的形式,那么物体的移动可以看成从一个节点到另外一个节点的运动。

路由

当汽车向要从A点开到B点,我们需要输入三个数据:第一个是输入地图,Apollo提供的地图数据包括公路网和实时交通信息。第二是输入我们当前的位置,第三则是输入我们的目的地(取决于乘客)。有了这三个输入,路线规划就为寻找前往目的地的路径做好了准备。

世界到图

Apollo在搜索之前,把地图数据重新格式化为“图形”的数据结构,该图形有“节点”和“边缘”组成,节点代表路段,边缘代表这些路段之间的连接。例如车辆在十字路口时,可以从节点1到2、3、4三个任意节点:
在这里插入图片描述

网格世界

A*算法是经典的路径查找处理算法,我们能够从任何一个节点移动到其任意的相邻节点,这些网格包含一些阻挡潜在路径的墙壁。

对于人类来说,通过图形查看路径很容易就能得到,对计算机来说就很困难,计算机必须检查是否存在通往目的地的任何路径,它会尽可能的尝试各种路径找出最短时间,有时这个过程会很费时。

首先从初节点开始我们需要确定8个相邻节点,对于每个节点,我们需要考虑两件事。首先,我们计算从开始节点到候选节点的成本,然后我们估计候选节点到目标节点的成本(候选节点就是我们拓展出去的点)。计算第一个成本很简单,只需要计算我们走出去多少步就好了,但是第二个成本计算就有点困难了,但是我们可以估计成本,这样就能解决这个问题。

通过添加g值和f值来计算成本。g值就是开始到候选的成本,h值就是候选到目标的成本,f值为两者总和。在图形中我们很容易就能看到最小的成本候选带你是最下方的节点,只选择我们尚未访问过且具有最小f值得节点。便可以以一种最优的方式寻得结果。
在这里插入图片描述

轨迹生成

轨迹生成的目标是生成一系列路径点所定义的轨迹。我们为每个路径点分配了一个时间戳和速度。每个路径点都有时间戳。我们可以将时间戳与预测模块的输出相结合,以确保我们计划通过是,轨迹上的每个路径点均未被占有。

这些时间戳和空间上的两个维度(2D)共同创建了一个三维轨迹(3D)…我们还为每个路径点指定了一个速度,用于确保车辆按时到达每个路径点。

生产一系列路径点所定义的轨迹要注意许多约束条件:首先避免障碍物碰撞,然后需要确保乘客舒适感,再者排除不可能的行为,例如一百八十度托马斯回旋二脚踢。而且我们的驾驶还要受法律约束等等。

评估轨迹主要从使用成本考虑:为每个轨迹分配成本并选择成本最低的轨迹。成本包括:与车道中心的偏离、与障碍物的距离、速度和曲率的变化、对车辆的压力。而且在不同的环境中有不同的成本函数。

Frenrt坐标系

笛卡尔坐标系无法确定汽车是否偏离道路中心等,使用Frenrt坐标系可以描述汽车相对于道路的位置。

Frenrt坐标系由沿道路的举例和与纵向线的位移(表示偏离中心线的距离)组成。
在这里插入图片描述

路径-速度解耦规划

路径-速度解耦规划将轨迹划分为两步:路径规划和速度规划。

首先在路径规划步骤中生成候选曲线,这是车辆可行驶的路径。接着使用成本函数对每条线进行评估,该函数包含平滑度、安全性、与车道中心线的偏离以及开发者考虑的问题等。然后按照成本对路径进行排名并选择最低的路径。

确定沿这条路线行进的速度。改变该路径上的速度,所以真正需要选择的是与路径相关的一系列速度,而不是单个速度。我们称之为“速度曲线”。使用优化功能为路径选择受到各种限制的良好速度曲线。通过将路径和速度相结合可构建车辆行驶轨迹。

路径生成与选择

为了在路径-速度解耦规划中生成候选路径,首先将路段分割为单元格。然后对单元格随机采样。通过每个单元格中取出一个点并将其连接,我们创建了候选路径。通过重复该过程,实现对路径的构建。

ST图

”s“表示车辆纵向位移,”t“表示时间。由于速度是位置裱花的速率,所以可以通过查看曲线的斜率从ST图上推断速度。斜坡越陡则表示在更短的时间段内有更大的位移,对应更快的速度。
在这里插入图片描述

速度规划

为构建最佳速度曲线,需要将ST图离散为多个单元格。单元格之间的速度有所变化,但在每个单元格内速度保持不变,该方法可简化速度曲线的构建并保持曲线相似度。

在 ST 图中可以将障碍物绘制为在特定时间段内阻挡道路的某些部分的矩形。

优化

路径-速度解耦规划在很大程度上取决于离散化。路径选择涉及将道路划分为单元格,速度曲线构建涉及将ST图划分为单元格。但是这种解决方案并不理想。

可以使用”二次规划“技术(将平滑的非线性曲线与这些分段式线性段拟合)。我们只需要简单使用几种不同的优化包中的一种,包括一种Apollo推出的运行方案生成轨迹,一旦路径和速度曲线就绪,便可以用其构建三维轨迹。

Lattice规划

通过frenet左边生产三维轨迹(横坐标、纵坐 标、时间)。将三维轨迹分为两个二维轨迹(ST\SL)。

先分别建立ST\SL轨迹,随后转化为笛卡尔坐标系,最后合并构建有二维路径点和一维时间戳组成的三维轨迹,通过将s值进行匹配来合并。

猜你喜欢

转载自blog.csdn.net/qq_17437129/article/details/107434168