自动驾驶之轨迹规划4——Apollo规划模块算法解析_20201219直播讲解

本文详细介绍Apollo自动驾驶规划模块的算法原理及实现,包括基于场景分类的规则调用框架、基于FrenetFrame的路径速度规划、基于规则的路径速度决策及基于数值优化算法的路径速度轨迹生成等关键内容。

前言

本课程由Apollo平台fuyiqun主讲,视频链接如下:现场录屏,另外有官方解析文章:直播回顾丨Apollo自动驾驶论坛①规划模块算法解析(本篇另增问答整理),视频官方PPT在此(可免费下载)。下面是随堂记录。

Apollo规划模块算法解析

在这里插入图片描述
在这里插入图片描述
本文将为大家介绍Apollo规划模块(Planning)的算法解析,主要内容包括:
在这里插入图片描述
功能:基于预测的结果、路由模块(routing)的全局路线指引和地图信息,生成安全舒适的驾驶轨迹。
在这里插入图片描述
首先输入来自3个模块,包括Prediction、Chassis、Localization,目前Palnning模块是由这3个消息来触发的,触发之后我们会创建几个reader来读取Traffic Light和Routing信息,最后的输出是ADC Trajectory,也就是Planning的轨迹线。


1. 基于场景分类的规则和算法调用框架

在这里插入图片描述
在这里插入图片描述
在Apollo中,Planning的场景和任务管理是如何实现的?我们有一个双层的状态管理机,上层是一个场景管理器,叫做Scenario Manager,这里举了3个场景的例子,Pull Over、Parking、Junction,每个场景的配置文件/参数是不一样的。

有了场景之后,会基于不同的规划器(Planner)进行规划,Apollo中目前(20201219)有俩个Planner,一个是On Lane Planning Tasks(目前的主要规划方法),一个是Open Space Planning Tasks(泊车)

On Lane Planning Tasks是默认的规划器,接下来重点介绍(Open Space Planning Tasks在GitHub有相关的论文和代码)。

有了规划器之后,会通过Path decision,把道路边界测出来。主要是通过不同脚本的task拆分完成的,比如Path decision,可以拆分成Lane Borrow和Lane Change。当decision做好之后,还会进行Path Planning。

有了轨迹后,可以再进行速度决策,速度决策也是通过小的task进行的。这里列了两个:

  • Cross Lane Safety:主要是我们进行交叉变道时,对安全上的考虑。
  • Lane Merge Waiting:主要是进行车辆汇流时,我们如何决策的。比如车辆需要等待,就需要生成一个Stop Fence。

有了Speed decision之后,用Speed的Optimizer ,来进行速度的规划。


2. 基于Frenet Frame的解耦合路径速度规划

在这里插入图片描述

2.1. 基于Frenet Frame的解耦合路径速度规划_Frent Frame

在这里插入图片描述
首先为什么要进行Frenet Frame?可以将笛卡尔坐标系下的运动状态进行了横纵向的分解。横向是指车辆l离我们的reference line的距离,纵向是沿着reference line走了多远,用s来表示。

通过这样的拆分,相当于把Planning降维了,可以大大的降低计算的复杂度。

2.2. 基于Frenet Frame的解耦合路径速度规划_reference line smoother

在这里插入图片描述
介绍下reference line smoother是如何做的:我们会直接优化离散点位置,用QCQP来解优化点间曲率,这样的运算时间大概是10ms。具体Cost Function如上图:

  • 第一项表示俩个向量 P k − P k − 1 P_k-P_{k-1} PkPk1 P k + 1 − P k P_{k+1}-P_k Pk+1Pk之差,最小的情况是三个点在一条直线上,意味着这时的车是比较舒适的,没有左右摇摆。
  • 第二项是 P k P_k Pk距离指引线(reference line)的距离,距离越小越好。
  • 第三项是指俩个相邻点之间的距离不要差的太远。

上式的约束条件:

  • P k P_k Pk不能超过boundary的约束范围。
  • 符合曲率的限制。

在这里插入图片描述

下面简单介绍下曲率限制的推导过程,另有一篇文章详细描述Apollo中的离散点平滑方法

  • P i P_i Pi表示坐标。
  • θ \theta θ表示向量 P k − P k − 1 P_k-P_{k-1} PkPk1 P k + 1 − P k P_{k+1}-P_k Pk+1
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值