首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

要安全、要舒适——自动驾驶路径生成标准

上节课我们提到了

网格数据的规划

,描述算法如何通过网格进行工作。这节课的开始,我们将话题递进,以现实世界中的地图为例。假设在前往目的地的途中我们遇到了一个交叉路口,我们可以沿着公路直走、左转或右转,我们需要判定哪种选择更加合理。

首先,我们把这张地图转换为具有三个候选节点的图形,并对选项进行评估;

直行(Straight):在对直行道路进行分析之后,我们发现可能要走更长的路才能到达我们的目标 ,所以我们为该选项分配了更高的 h 值,h 值是从候选节点到目的地的估计成本。

左转(Left):在实践中,拐过交叉路口很费劲,所以我们为这个节点分配了更高的 g 值,g 值是从起始点到候选节点的成本。

右转(Right):右转的距离较长,故 h 值较高,但途经的路况相对简单,故 g 值较低。

最后,我们结合以上分析得到的 g 值和 h 值相加来计算每个节点的 f 值,我们看到最低 f 值实际对应右转(Right)的候选节点,所以这是我们接下来要行进的方向。

以上步骤是在高等级地图上对整体路线的评估,接下来我们要在路线上生成更高精度的行进轨迹。

从路由到轨迹

高等级地图路线只是规划过程的一部分,我们仍需要构建沿这条路线前进的低等级轨迹。这就意味着要处理一些不属于地图的物体,如其他车辆、自行车或行人,为了完成对这些物体的处理,我们需要更低级别更高精确度的规划。我们将这一级别的规划称为轨迹生成。

轨迹生成的目标是生成一系列路径点所定义的轨迹。

我们为每个路径点分配了一个时间戳和速度,让一条曲线与这些路径点拟合,生成轨迹的几何表征。由于移动的障碍物可能会暂时阻挡部分路段,我们可以将每个路点上的时间戳与预测模块的输出相结合,以确保在我们计划通过时,轨迹上的每个路径点均未被占用。

每个路径点都会被分配一个时间戳和速度,时间戳会与预测模块的输出相结合

这些时间戳创建了一个三维轨迹。每个路点由空间中的两个维度以及时间上的第三个维度来定义(三维轨迹 = 二维坐标 + 时间)。我们还为每个路径点制定了一个速度,速度用于确保车辆按时到达每个路径点。

评估一条轨迹

轨迹生成应用在现实世界时面临多种约束:

轨迹应能免于碰撞,这意味着必须无障碍物;

让乘客感到舒适,所以路径点之间的过渡以及速度的任何变化都必须平滑;

路径点对车辆应实际可行。例如:高速行驶的汽车不能立即做180度转弯,我们不能构建包含这种不可行机动的轨迹;

最后,轨迹应合法。我们需要了解每个路径点的交通法律,并确保轨迹遵守这些法律法规。

在道路上的任何两点之间可能会有多个不会碰撞、舒适、可行且合法的轨迹。为了选择最佳轨迹,我们需要用到“成本函数”。

成本函数为每个轨迹分配一个“成本”,我们选择成本最低的轨迹。轨迹成本由各种犯规处罚组成,例如偏离道路中心(deviation)、有可能会碰撞(collision),超出速度限制(speed limit)或轨迹曲率和对乘客舒适度的影响(comfort)均会使成本增加。

轨迹成本将所有这些缺陷聚合为单个数字,我们对不同的轨迹进行排名,最终得出最佳轨迹。在未来,车辆甚至可以在不同的环境中使用不同的成本函数,比如高速公路的成本函数与停车场的成本函数可能是不同的。

Frenet 坐标

通常情况下我们会使用笛卡尔坐标系描述物体的位置,但笛卡尔坐标系对车辆来说并不是最佳选择,即使给出了车辆位置(x,y),如果我们不知道道路在哪里,也很难测量车辆的行驶距离以及是否偏离了车道中心。

所以我们用 Frenet 坐标系替代笛卡尔坐标系。Frenet 坐标系描述了汽车相对于道路的位置,在 Frenet 框架中:

s 代表沿道路行驶的距离,也被称为纵轴 (Longitudinal Axis);

d 表示汽车偏离中心线的距离,也被成为横轴(lateral axis);

在道路的每个点上横轴和纵轴都是垂直的,纵轴表示在道路中的行驶距离,横轴表示汽车偏离中心线的距离。

本节课的最后,让我们简单了解一下路径的速度解耦规划。速度的解耦规划将轨迹规划分为两步:

路径规划

在路径规划步骤中生成候选曲线,这是车辆可行驶的路径。我们使用成本函数对每条路径进行评估,该函数包含平滑度、安全性、与车道中心的偏离、以及我们想要考虑的其他任何因素,我们按成本对路径进行排名,并选择成本最低的路径。

速度规划

在车辆的行驶过程中,我们需要能够适时改变路径上的速度,所以我们真正需要选择的是与该路径点相关的一系列速度,而不是单个速度。我们将该序列称作“速度曲线”,我们可以使用优化功能为路径选择受到各种限制的良好速度曲线 。

通过将路径和速度曲线相结合,我们便可以构建车辆行驶轨迹。下节课我们将以路径的速度解耦规划为起始,学习规划模块的其他内容。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190123B17POA00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券