初始无人驾驶—规划
课程简介
本次课程中会涉及多种规划策略;由于课时安排较为丰富;我也计划对所学内容进行系统梳理;希望同学们能够持续投入精力于学习中;同时大家也要避免在复习时过于冗长地纠结于细节之处!
一、规划简介
上一节课我们掌握了预测车辆行动的方法;这次我们将学习规划路径的技术
那么规划的第一步自然是路线导航?这依赖于高精度地图的支持。当车辆从A点运动到B点时,在路径规划阶段先将地图数据作为输入源,并输出可行行驶路径。手机通常用于导航操作这一事实表明 Apollo 平台采用了更为精细的地图数据进行导航计算以规避前方障碍物并为乘客提供平稳的乘车体验。为了深入研究这些功能 Apollo 平台的核心规划模块值得我们深入探索让我们一起走进这些前沿科技吧!
二、Sebastian介绍规划
基于之前的所学内容, 大家们已经了解到车辆是如何感知并预测未来的, 现在我们将深入探讨规划的方式, 这一任务具有较高的难度, 我们将深入探讨两种不同的规划情境: 一种是目标地点, 无论是多么遥远或复杂的位置; 另一种是运动轨迹的高度, 这将帮助我们在执行特定操作时确定汽车应采取何种转向方式. 这些表现为时间曲线特征的操作模式, 其中汽车可能以较快的速度运行, 或较慢的速度运行
三、路由
当车辆需要从A点行驶至B点时, 为了实现目标行程的顺利规划, 我们必须首先获取并使用 Apollo 提供的地图数据, 这些数据涵盖当前的道路网络布局以及实时动态交通状况。其次需要确定起始位置信息, 最后需要明确目标位置坐标(根据乘客需求)。基于这些关键信息的基础之上, 即可完成对最佳行驶路线的计算与规划。
四、世界地图
同样的道理,在A到B点时是这样的情况:车辆通常会沿着道路追踪路径以便检查是否存在通向目的地的任何路径这就是搜索过程 Apollo系统同样采用了这一方法但在实现上更加智能化一些
Apollo在搜索前将地图数据重新格式化为一种图形数据结构。其中包含顶点和边。每个顶点表示一段路,并通过边来表示各段路之间的连接关系。
例如车辆在十字路口时,可以从节点1到2、3、4三个任意节点:

为模拟不同节点之间的移动成本建立模型是一个合理的方法。例如,在交通网络中转弯相对于直线运动而言更为复杂,因此从起点1到达终点4所需的总成本通常会高于从起点1到达终点3的情况。通过改变思维方式可以让计算机更有效地在图形中寻找路径,当发现一条有效的路径时即可重新映射回实际的道路状况。
五、网格世界_a
A*算法是一种常用的路径搜索计算方法,在实际应用中通常会展示一个点如何定位另一个点(每个网格代表节点)。

每个节点都可以移动到其任意相邻节点,这些网格中包含若干个阻碍潜在路径的墙壁
六、网格世界_b
对于人类而言,在图形界面中查看路径相对不难即可获取所需信息;然而,在这种情况下让计算机完成同样任务却十分困难。人们普遍认为这一现象是合理的。首先,在这种情况下要求计算机核查是否存在通向目标点的任何路径,并尽力尝试各种可能路径以寻找最短时间所需资源;这确实耗时较长。例如,在上一小节的地图中,在这种情况下对于红色节点我们可采用向外扩展的方式逐步定位绿色目标节点;但这种做法既耗时又占用内存资源较多。
七、网格世界_c
首先从初始起点出发需要识别出8个相关联的邻接点,在每一个连接点上都需要完成两项工作步骤。第一项工作是评估初始路径的成本值相对容易实现,在第二项工作中则面临一定的挑战性:即估算目标路径至当前路径之间剩余的距离长度。评估第一条路径的成本只需要估算走出多少步即可完成,在第二条路径中则需要更加谨慎地进行估算才能确保最终结果的有效性。

可以看到,在我们的算法中引入了g值和f值的概念来计算成本。其中g值代表从起始点到当前目标节点的成本(即路径长度),h值则表示当前目标节点到最终目标点的成本(即剩余路径长度)。而f值则是这两个数值的总和。通过观察图形我们可以直观地看到哪个目标节点具有最小的成本(即位于最下方的那个节点)。因此,在未探索的所有目标节点中(即尚未访问过的那些),我们总是优先选择具有最低f值的那个。
八、现实世界地图

我们正处在一个交叉路口处时可以向左转或直行。为了更好地规划路径选择我们需要先构建三个候选节点的图形结构。随后我们将对每个节点展开评估分析。由于转向左道可能耗时较长因此我们在left节点上赋予较高的g值系数而对直行路径则因为其较长距离被赋予较大的h值系数最终我们将通过计算每个节点的f值(即g与h之和)来确定最优路径选择其中最小的那个f值即为我们应当优先考虑的方向。
九、轨迹生成
高级地图仅是规划过程中的一个组成部分,在继续推进该路线的过程中,则必须建立相应的低级路径。为此,在规划时充分考虑这些不属于地图范围内的物体及其动态情况将是必要的。
例如,在面对那些试图从前方突然转向的车辆时,我们需要采取相应的应对措施;或者在某些情况下希望超越其他车辆时,则需要做出相应的调整。这些情况都要求我们在规划策略时更加注重细节,并采用更为精确的方法来实现目标。

主要目标在于创建一系列由路径点定义的轨迹。给定每个路径点都赋予了特定的时间戳和速度参数。所有路径点均包含对应的时间戳信息。我们可以将其与预测模块输出的数据进行整合来保证规划方案的有效性,并确保轨迹上的每一个位置均未被占用位置上
这些时间戳和空间上的两个维度(2D)共同构建了一个三维轨迹(3D)。我们还对每个路径点配置了一个速度值,以保证车辆能够按时抵达每一个路径点。

现实世界的规划面临着诸多限制条件。首要任务是规避障碍物的撞击,其次必须保证乘客的舒适体验,并再次需要剔除不可行的行为方案。如'180度托马斯回旋二踢'技术等实例也应被严格筛选排除。此外,驾驶员还需遵守一系列法律法规规定等等
对于道路任意两点之间的情况而言,在满足无碰撞风险的前提下,并且具有良好的行驶舒适度的情况下可能存在多个可行且合法的道路轨迹。因此,在选择路径时我们需要引入“成本函数”这一评估工具。其中的成本函数由以下几大因素构成:路径偏离道路的程度、潜在碰撞的可能性以及运动学约束如速度限制和轨迹曲率变化等;每个轨迹都会被赋予一个对应的数值指标——即其总成本值。

度量通过将所有这些缺点汇总为一个单一数值来评估不同轨迹的成本。该方法允许我们根据数值大小对不同轨迹进行排序。例如,在某些情况下(如高速公路),成本函数可能与其他场景(如停车场)表现不同。
十、Frenet坐标系
在通常情况下,我们采用笛卡尔坐标系来定位物体的位置;然而,在实际应用中发现这一方法并不完全适合于描述车辆的位置信息。即使知道了车辆的坐标位置(x, y),若缺乏道路信息,则难以确定车辆行驶的距离有多远;同样地,无法判断车辆是否偏离了道路中线。

由于笛卡尔框架的局限性,在该系统中我们选择了具有优越性能的Frenet坐标系统来替代其应用范围。在该框架下,Frenet坐标系统用于描述车辆在其行驶道路上的位置关系。其中s变量代表沿着道路方向的距离量度,并被称作纵向位置量度;而d变量则表示车辆在横向相对于纵向中心线的位置偏移量度。
当车辆在行驶过程中时,在图形中纵轴代表车辆沿道路行驶的距离,在横轴上则显示车辆偏离中心线的程度。

这节课的内容已经全部讲解完毕。不过本章的内容尚未完成,请稍后休息片刻后继续进行。

看看风景,咱们接着又来。
十一、路径-速度解耦规划
路径-速度解耦规划将轨迹划分为两步:路径规划和速度规划。
在路径规划阶段先生成候选曲线集合,这些曲线是供车辆使用的可行路线.随后采用成本函数对每条候选曲线进行评估,其中包含平滑度指标.安全性考量.与车道中心线的偏离程度以及开发人员特别关注的一些因素等.然后根据计算结果对所有候选曲线进行排序,并选择最优的一条作为最终路径.
下一步就是要确定沿此路线行进的速度。在调整路径上各点的速度时, 其实关键是要选择一系列与路径相关的理想化速度, 而不是单独的一个固定值, 我们将其称为"速度曲线"。借助优化工具可以选择符合多种限制条件的理想化速度曲线用于此路径. 将这些参数与路线结合后, 则能完整地描述车辆的行驶轨迹.
十二、路径生成与选择
为了解决路径-速度解耦规划问题而生成候选路径, 首先将路段划分为若干个单元格. 接着, 在所有单元格中进行随机采样. 然后从每个单元格中选取一个点, 并与相邻点相连, 从而形成了初步的候选路径. 最后, 通过重复这一过程, 就能够构建出完整的规划路线. 其他部分则大同小异, 不再赘述

十三、ST图
在选定路径后,则需依次选择与其相关的速度曲线。ST图作为一种辅助工具,在设计与选择速度曲线时具有重要应用。在图形中用's'标记表示车辆纵向位移,在't'轴上则标注时间数值。基于速度定义为单位时间内位置的变化量,则可通过观察ST图上各点切线斜率的变化来推断车辆运行的速度特性。当ST图中的切线斜率更为陡峭时,则表明车辆在较短时间内实现了较大的位移量。

十四、速度规划
在构建最佳速度曲线的过程中,在将ST图分割成若干个独立的单元格区域时就需考虑到各单元格之间的运动速率存在差异。而每个单元格内部的速度保持恒定的情况下,则可确保整个系统运行效率的最大化。该方法不仅能够显著简化速度曲线的构建过程,并且能够较好地维持其基本特征。
在 ST 图中可以将障碍物表示为在特定时间段内阻挡部分路段的方形区域
例如,在时间段 t0 到 t1 内预测车辆驶入车道 l 的情况下,在 ST 图中绘制了一个矩形区域(从位置 s0 到 s1),以表示车辆在此期间占据的位置范围。为了避免碰撞事件的发生,在此区域内设置不可穿过区域以保证安全距离的存在。一旦有了这张阻挡区域的 ST 图表,则可以通过优化引擎找到最佳的速度曲线来规避潜在碰撞风险。优化算法通过复杂的数学运算寻找满足所有限制条件的低成本解决方案。“这些限制条件可能包括:速度上限;与障碍物的安全距离;以及汽车本身的加速度能力等。”

十五、优化
该规划在很大程度上受到离散化过程的影响,在路径选择阶段,则需将道路网格化,在速度曲线生成阶段同样需要对ST图进行网格划分然而该方案存在明显的缺陷

我们能够利用二次规划方法将平滑的非线性曲线与分段线性段进行匹配。(将平滑的非线性曲线与这些分段式线性段拟合)。
只需选择几种不同的优化包中的一个即可,
当路径与速度曲线就绪后,则可利用它们构建三维轨迹。
十六、路径-速度规划的轨迹生成
当我们行驶在道路上时(或者说是当我们正在路上行驶的时候),车辆检测到一辆以较慢速度驶近我们的车辆(或者说是前方有一辆减速行驶的汽车逐渐靠近)。首先,在该区域计算出多条可能的路线,并运用成本函数进行筛选以确定最佳路线(或者说是从计算得到的可能性中选出最优解)。接着利用ST图法规划出合理的速度曲线(或者说就是通过ST方法绘制出合理的加减速带),最后将这些路线数据与所规划的速度曲线结合在一起形成完整的运动轨迹(或者说就是将计算得到的结果与得到的速度参数结合起来形成完整的运动方案)。其中红色线条表示较高的速度区间(或者说就是说在这幅图表中红色线条代表了较高的限速区域),而蓝色线条则代表较低的速度限制区域(或者说蓝色线条则是较低限速区域)。

十七、Lattice规划
这是一个很绕脑壳的算法,所以你需要打起十二分的精神来学习。
该方法借助Frenet坐标系将环境投影至纵向与横向轴上,并以纵向轨迹、横向轨迹及时间维度作为生成三维轨迹的目标
考虑到便于理解的问题描述复杂性

Lattice 规划包括两个主要步骤:首先分别构建 ST 和 SL 轨迹模块;然后将这些模块整合形成完整的纵向与横向二维运动轨迹
先将初始车辆状态投影到ST坐标系和SL坐标系中;然后从候选方案库中提取多个候选最终状态并进行采样;最后从而确定最终车辆状态
针对每个候选终态生成一组轨迹将车辆从其初始态转换至目标终态通过应用成本函数评估各组轨迹并选出最优路径即具有最低总成本的路径

十八、ST轨迹的终止状态
根据情况可以将状态分成 3 组:巡航 、跟随、停止。
当车辆经过规划后的步骤时会以恒定速度行驶;实际上,在对图表中的各个点进行采样分析时,在坐标系中横轴表示时间轴面纵轴代表速度值域。针对图表中的每个数据点而言,则表明汽车将进入稳定运行状态,在时间t时刻以s单位的速度维持匀速运动;就这种运行模式而言,则可观察到系统的所有终态均呈现无加速特性。

下一个需考虑的模式为随车变道,在这种情况下并对其位置与时间状态进行采样,并试图使时间t时的位置处于某辆车的后方。在随车变道时必须与前方车辆保持安全距离,并因其运动状态而调整自身参数;其速度与加速度将根据被跟踪车辆的情况而定,并在此模式下会受到相应校正。

最后一类行为模式表现为车辆的停止状态,在该状态下仅需采集车辆在不同时间和地点的停车数据,并在此时将其速度与加速度参数设为零值

十九、SL轨迹的终止状态
基于以下假设来进行SL 规划:任何车辆在遇到极端情况时都应精确地位于车道中心线。
这意味着只需要在一个小区域内,对横向终止位置进行采样。
具体而言,在道路上设置了相邻车道中心线周围的采样点作为数据采集的基础区域。为了保证稳定性,在汽车驶向时其最终状态应与车道中线保持一致。当采用横向坐标和纵向坐标绘制图形时,则需要考虑候选轨迹应当以车辆对齐并沿直线行驶的方式完成其形态特征提取过程。车的状态在朝向及位置的一阶导数和二阶导数均为零的情况下才能满足上述条件要求;这表明在这样的状态下车辆并未发生任何方向上的运动变化(一阶导数反映的是速度的变化),同时也不存在加速度的变化(二阶导数对应于加速度的变化)。因此可以推断此时车辆正在沿着固定方向平稳前行

二十、Lattice规划的轨迹生成
一旦同时拥有了 ST 和 SL 轨迹,就需要将它们重新转换为笛卡尔坐标系。
进而可以将它们结合起来构建一个由二维路径点和一维时间戳构成的三维轨迹模型
ST 轨迹是随着时间推移而产生的纵向位移,在其路径上每一个时刻都会记录下相应的数据;而 SL 轨迹则是在同一纵向位置上各点产生的横向偏移,在其分布范围内每个区域都会有独特的偏差值分布特征。在两条轨迹都具有相同的纵坐标 S 值的前提下,在其对应的位置处可以通过对 S 值进行精确匹配来实现两条轨迹的有效结合。

本次课程的总结至此结束。大家都收获满满,并有不少朋友觉得这门课程难度较大。我对这门课程感到有些厌倦,请也希望大家能够坚持下去哦。因为只剩下最后一节课,请让你完成入门学习吧!想不想新增一项技能就靠你的坚持呢?一起加油!奥力给!
