欢迎来到天天文库
浏览记录
ID:27873102
大小:196.00 KB
页数:9页
时间:2018-12-06
《如何安全有效的规划自动驾驶汽车行驶路线?.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、如何安全有效的规划自动驾驶汽车行驶路线? 事实上,路径规划技术,现阶段是一个非常活跃的研究领域。路径规划之所以如此复杂,是因为其涵盖了自动驾驶的所有技术领域,从最基础的制动器,到感知周围环境的传感器,再到定位及预测模型等等。准确的路径规划,要求汽车要理解我们所处的位置以及周边的物体(其他车辆、行人、动物等)会在接下来的几秒钟内采取什么样的行为。另一项关键技术是轨迹生成器(trajectorygenerator),其产生输入路径规划算法的参考轨迹。 本期算法分享,我们重点介绍一种基于C++开发的高速公路路径规划算法。该算法利用jerkminimis
2、ation技术,可在模拟器中生成安全且高效的行驶路径。 本算法的一些假设如下: 任何情况下,不会与其他车辆发生事故 最大行驶速度为80KMH 最大加速度为10m/s2 最大jerk为10m/s3 车辆在不同车道之间不超过3s 车辆不能超出高速的3条车道 车辆不能逆向行驶 自动驾驶汽车的功能层 首先,我们来详细的研究下自动驾驶汽车的功能层(FunctionalLayers)。 路径规划需要自动驾驶汽车不同功能层之间的合作、协调。上图给出了一个自动驾驶系统的功能层的配置形式: 动作控制层:负责控制汽车,使其尽可能的安按照“设定
3、的”轨迹形式。该层需要最快的反映速度; 传感器融合层:负责合并个传感器的输出(如雷达和激光雷达) 定位层:负责尽可能准确的在地图上定位车辆的位置,并计算其他物体相对于车辆的位置 预测层:负责识别传感器检测到的物体的性质(又名感知),并根据汽车当前的轨迹、其他车辆的轨迹和场景中的各种元素(如交通灯)预测场景中近未来的变化。这个层的一个重要任务是预测冲突。 行为层:该层的主要作用是协调。根据底层的输入信息来决定如何调整行车轨迹 轨迹层:负责计算既定条件(速度、距离、车道、jerk等等)下的行车轨迹 生成行车轨迹的方法很多,这里我们采用了Fre
4、netCoordianteSystem方法。 传感器融合层的意义 我们在模拟器中为车辆设置了一系列传感器,它们的输出融合在一起以产生更精确的测量结果。大多数在Level4上的自动驾驶汽车公司在他们的传感器套件中使用雷达、激光雷达和照相机。拥有多种不同类型的传感器至关重要,因为每种传感器都有各自的优缺点。此外,对于同种传感器进行冗余设计,可以减轻传感器故障带来的影响。 在本算法中,模拟器可以提供以下传感器融合功能: 车辆的位置、速度和方向 其他车辆的位置和速度 上次提交的车辆行驶轨迹 通过以上信息,我们可以计算车辆与其他车辆的准确距离,并
5、通过行车轨迹来预测与其他车辆的碰撞可能性。 下面我们详细介绍轨迹生成器(TrajectoryGeneration)。 Frenet坐标系 通常,我们习惯使用笛卡尔坐标系来定义空间点的位置。但在现实中,道路往往不是“笔直”的,因此对于人类非常简单的操作(如判断车辆在哪条车道),在电脑的笛卡尔坐标系中,往往是难以准确定义的。下图展示了我们使用笛卡尔坐标系时所面临的问题: 笛卡尔坐标系中的曲线车道 设想一下,如果我们采用的坐标系可以反映道路的曲率,那么在新的坐标系下车辆向前行驶并保持在车道内的轨迹就会变成一条直线,这会大大简化路径规划的难度。
6、而Frenet坐标系正可以实现我们的设想。 不同坐标系下的行车轨迹: Frenet(左)vs笛卡尔坐标系(右) 在Frenet坐标系中,可以平面上的点的位置可以由纵轴和横轴定位,分别记为S和D。其背后的数学原理非常复杂,在此我们不进行累述。你可以认为穿过道路中心的曲线决定了S轴,并指出了车辆在路上走了多远;D轴则映射为车辆的侧向位移。下图显示了弯曲道路在Frenet坐标系上的样子: 行驶轨迹平滑处理 我们假设车道已经被预先映射,并且提供了沿着中黄线的路径点,这条中黄线分隔了公路的两边。这有助于我们确定我们在最近的路径点上的位置。
7、由于我们所设置的路径点非常稀疏,当我们试图将Frenet转换回真实世界坐标时,会产生带折角的轨迹。这反过来又会导致车辆突然的加速和颠簸。由于函数toRealWorld(s,d)->(x,y)使用两个路径点之间的线性插值,来确定x和y的最佳逼近值,我们总是冒着产生非平滑轨迹的风险。 如何进行改善呢?在之前分享的算法中,我们发现由多项式拟合的曲线往往会产生非常平滑的轨迹。因此,我们用多项式拟合来替代线性插值。利用在Frenet坐标系中取位置s来创建样条,得到真实世界的坐标(x,y)和偏移量(dx和dy),然后代入这个公式,得到最接近真实世界的坐标点。
8、 x=spline_s_x(s)+d*spline_s_dx(s)y=spline_s_y(s)+d*spl
此文档下载收益归作者所有