【论文笔记】Baidu Apollo EM Motion Planner

在这里插入图片描述

文章目录

  • Abstract
  • I. INTRODUCTION
    • A. Multilane Strategy
    • B. Path-Speed Iterative Algorithm
    • C. Decisions and Traffic Regulations
  • II. EM PLANNER FRAMEWORK WITH MULTILANE STRATEGY
  • III. EM PLANNER AT LANE LEVEL
    • A. SL and ST Mapping (E-step)
    • B. M-Step DP Path
    • C. M-Step Spline QP Path
    • D. M-Step DP Speed Optimizer
    • E. M-Step QP Speed Optimizer
    • F. Notes on Solving Quadratic Programming Problems
    • G. Notes on Non-convex Optimization With DP and QP
  • CASE STUDY
  • Else

Abstract

EMplanner通过一个层级结构的方式去考虑多车道和单车道的情况:
(1)顶层策略通过比较不同车道级轨迹来处理变道场景;
(2)在Frenet坐标下不断迭代求解路径优化和速度优化问题来生成轨迹;
(3)为了使框架易于扩展和调整,可以同时处理交通规则、障碍物决策和平滑曲线,他们提出了一种融合DP和QP采样的优化算法。

I. INTRODUCTION

Motion Planning安全性考虑因素:

  1. 交通规则。
  2. 范围。目标轨迹需要至少8秒的视野和200米的轨迹长度。
  3. 工作周期。小于100ms。
  4. 紧急情况。

乘员体验也是是十分重要的,考虑以下几点:

  1. 场景。不仅仅是简单的超车、让行的场景,更要能适应多车道、复杂、动态的场景。
  2. 交通规则。
  3. 舒适度。轨迹平滑。
    在这里插入图片描述
    Apollo的Pipeline

EM思想的最早起源:《Maximum likelihood from incomplete data via the EM algorithm》

EM算法,全称期望最大化算法(Expectation-Maximization Algorithm),是一种迭代算法,用于含有缺失数据的概率模型参数估计。

EM算法分为两步,即“期望步骤”(E步)和“最大化步骤”(M步)。在E步中,求出在当前参数下缺失数据的概率分布,即求出缺失数据的期望。在M步中,利用E步中求出的缺失数据的期望,最大化似然函数(或极大化后验概率)来估计模型参数。这样,利用EM算法可以通过迭代更新参数估计值,逐渐逼近真实数据分布的参数值。

EM算法广泛应用于数据挖掘、图像处理、自然语言处理等领域中的模型参数学习,比如高斯混合模型、隐马尔可夫模型等

A. Multilane Strategy

采用对不同车道进行cost计算的方式可能存在的难点:

  1. 多车道带来的计算复杂度。
  2. 不容易结合交通规则。
  3. 需要考虑不同Planning Cycle之间的变化对轨迹产生的影响。

多车道的策略需要考虑主动换道(routing规划时产生)和被动换道的场景(受障碍物、环境变化影响)。

对于每一条候选车道,将障碍物以及环境信息投影到Frenet坐标系中;每一条车道加以相应的交规约束,并对每一条车道生成一条轨迹;利用cost function和规则决定选择哪一条车道。

B. Path-Speed Iterative Algorithm

在Frenet框架中寻找最优轨迹本质是一个三维约束的优化问题。主要有两种解决方式:

  1. 综合ST问题,直接求解:通常是采用采样+搜索的算法进行,得到一条符合kinodynamic的轨迹。计算复杂度高。若为了减小计算量,可能会采用减小resolutions的方式,但这样一来会导致生成的轨迹非最优。
  2. ST解耦。路径优化考虑静态障碍物,速度优化考虑动态障碍物。求解效率高,但有可能存在求解失败的问题。

【论文笔记】Perception, Planning, Control, and Coordination for Autonomous Vehicles这篇论文也涉及相关问题的讨论。

路径优化利用上一帧的speed profile来估计低速障碍物。对于高速障碍物,EM planner更倾向于采取变道而不是nudge操作。

C. Decisions and Traffic Regulations

不同于以往的一些方法直接利用数值优化的方法同时求解决策和轨迹规划,EM planner采取了先决策后轨迹规划的方式,去减少求解最优轨迹时的计算量。

决策方法可分为基于规则(手动操作)和基于模型的方法:

  1. 基于规则:容易手动调整,但是泛用性差。
  2. 基于模型:通常将车辆状态离散化为有限驾驶状态,再使用数据驱动的方式去调整。

多智能体的交互在预测和决策等方面很重要,这就需要POMDP、RL等方法了。

EM的决策流程

  • 首先,通过一条粗糙可通行的轨迹来表示自车的意图。同时也利用这个轨迹来测量障碍物之间的交互。
  • 接着,基于这个轨迹,生成凸空间。基于凸优化的问题,生成遵循决策的平滑路径和速度曲线。

II. EM PLANNER FRAMEWORK WITH MULTILANE STRATEGY

在这里插入图片描述

Data Center:用于收集和同步所有的信息。
Reference Line Generator:提供车道级的参考线,参考线包括交规、障碍物等信息。

基于Frenet坐标系估计自车和周围环境的相对关系,并将信息传递到车道级的优化器之中。

Optimizer

  • path optimization
    • (E-step):将周围环境信息投影到Frenet坐标系(SL)。
    • (M-step):生成光滑的轨迹。
  • speed optimization:
    • (E-step): 将障碍物投影到ST图。
    • (M-step):生成光滑的速度曲线。

最后合并路径和速度部分,并送入reference line trajectory decider基于车辆状态、规则、cost选出最优路径。

III. EM PLANNER AT LANE LEVEL

在这里插入图片描述
两步E-step和两步M-step;轨迹随着规划周期进行迭代。

在第一个E-step中,障碍物被投射到车道Frenet坐标系,包括静态障碍物和动态障碍物。在Apollo框架中,动态障碍物的意图是用障碍物的移动轨迹来描述的.处于安全的考虑,路径优化部分只考虑低速或相向的障碍物,高速情况利用变道进行解决。

在第二个E-step中,所有障碍物,包括高速、低速和迎面而来的障碍物都会投影到ST图中进行评估。

在M-step中,通过DP+QP的方式生成path profiles和speed profiles。利用DP给出一个粗糙的决策,将非凸的空间转化为凸空间。QP进行优化。

A. SL and ST Mapping (E-step)

SL部分

SL投影基于参考线二阶导连续。
状态向量:

  • 在笛卡尔坐标系中: ( x , y , θ , κ , κ ˙ ) (x,y,\theta,\kappa,\dot\kappa) (x,y,θ,κ,κ˙)
  • 在Frenet坐标系中: ( s , l , d l , d d l , d d d l ) (s,l,dl,ddl,dddl) (s,l,dl,ddl,dddl)

对于动态障碍物,利用上一帧自车的轨迹。给定一个时间,可以估计出相应的位置,再利用这个位置与障碍物的轨迹进行交互决策。

下面是一个例子。
在这里插入图片描述

蓝色:自车;
红色:迎面而来的障碍车以及其轨迹;
紫色:交互区域。


ST部分
路径优化之后,可能产生交互作用的静态障碍物和动态障碍物都被投影到路径上。ps:注意apollo在之后方案与此处的不同。

在这里插入图片描述

一个障碍物在 t = 2 s t=2s t=2s, s = 40 m s=40m s=40m处切入当前车道,其在ST图中的投影为红色。后方车辆在ST图中的投影为绿色。剩余的区域为可行区域。

B. M-Step DP Path

在这里插入图片描述

DP的结构:包括lattice采样、代价函数以及DP search。

动态规划用于先给出一个粗略的路径。下面是一个示例。

在这里插入图片描述

  • 在自车的前方撒点。不同行之间的点通过五次多项式进行连接。采样间隔依赖于速度、道路结构以及场景(比如说换道场景会增大采样间隔)。
  • 采样结束后,利用SL投影、交规以及车辆动力学去构造代价函数。
  • 最后DP找到最低cost的路径,同时给出相应的决策。

DP-path总的代价函数:
C t o t a l ( f ( s ) ) = C s m o o t h ( f ) + C o b s ( f ) + C g u i d a n c e ( f ) C_{total}(f(s))=C_{smooth}(f)+C_{obs}(f)+C_{guidance}(f) Ctotal(f(s))=Csmooth(f)+Cobs(f)+Cguidance(f)

路径平滑程度的代价
C s m o o t h ( f ) = w 1 ∫ ( f ′ ( s ) ) 2 d s + w 2 ∫ ( f ′ ′ ( s ) ) 2 d s + w 3 ∫ ( f ′ ′ ′ ( s ) ) 2 d s . \begin{aligned} C_{smooth}(f)& \begin{aligned}&=w_1\int(f'(s))^2ds+w_2\int(f''(s))^2ds\end{aligned} \\ &+w_3\int(f^{\prime\prime\prime}(s))^2ds. \end{aligned} Csmooth(f)=w1(f(s))2ds+w2(f′′(s))2ds+w3(f′′′(s))2ds.
f ′ ( s ) f'(s) f(s)代表车道和自车航向角之差;
f ′ ′ ( s ) f''(s) f′′(s)代表路径的曲率, κ = d θ d s \kappa = \frac {d\theta}{ds} κ=dsdθ;
f ′ ′ ′ ( s ) f'''(s) f′′′(s)代表路径曲率的二阶导。

障碍物的代价
C o b s ( d ) = { 0 , d > d n C n u d g e ( d − d c ) , d c ≤ d ≤ d n C c o l l i s i o n d < d c C_{obs}(d)=\begin{cases}0,&d>d_n\\C_{nudge}(d-d_c),&d_c\leq d\leq d_n\\C_{collision}&d<d_c&\end{cases} Cobs(d)= 0,Cnudge(ddc),Ccollisiond>dndcddnd<dc
遍历路径上的 s s s序列 s 0 , s 1 , . . . , s n {s_0,s_1,...,s_n} s0,s1,...,sn,比较和障碍物的距离 d d d C n u d g e C_{nudge} Cnudge是一个单调递减函数。 d c d_c dc是一个基于安全考虑的buffer。 d n d_n dn是一个阈值,超过它,cost为0,阈值可随场景变更; C c o l l i s i o n C_{collision} Ccollision是碰撞的cost,通常会设一个很大的值。

车道的代价由两部分组成:
一部分是参考线的代价,使得轨迹靠近参考线;另一部分是道路的代价,保证轨迹在道路边界之内(若不在,设置一个很高的惩罚)。
C g u i d a n c e ( f ) = ∫ ( f ( s ) − g ( s ) ) 2 d s C_{guidance}(f)=\int(f(s)-g(s))^2ds Cguidance(f)=(f(s)g(s))2ds
注意:这里的参考线指的是道路中心线

C. M-Step Spline QP Path

在这里插入图片描述
QP在DP的基础上平滑轨迹。

在这里插入图片描述

QP的流程,包含目标函数和线性化的约束。

QP的目标函数:
C s ( f ) = w 1 ∫ ( f ′ ( s ) ) 2 d s + w 2 ∫ ( f ′ ′ ( s ) ) 2 d s + w 3 ∫ ( f ′ ′ ′ ( s ) ) 2 + w 4 ∫ ( f ( s ) − g ( s ) ) 2 d s . \begin{aligned} C_{s}(f)& \begin{aligned}&=w_1\int(f'(s))^2ds+w_2\int(f''(s))^2ds\end{aligned} \\ &\begin{aligned}&+w_3\int(f'''(s))^2+w_4\int(f(s)-g(s))^2ds.\end{aligned} \end{aligned} Cs(f)=w1(f(s))2ds+w2(f′′(s))2ds+w3(f′′′(s))2+w4(f(s)g(s))2ds.

注意这里的 g ( s ) g(s) g(s)是DP规划出来的路径。因为DP规划出来的路径包含了对nudge障碍物的考虑,因此QP的目标函数则是对nudge以及路径平滑程度两者之间的权衡。

QP路径的约束考虑了边界约束以及动态可行性。边界约束包括 f ( s ) , f ′ ( s ) , f ′ ′ ( s ) f(s),f'(s),f''(s) f(s),f(s),f′′(s)

在这里插入图片描述

为了保证约束的凸性和线性,在自车bounding box前面和后面分别添加了一个半圆。
l left front corner = f ( s ) + s i n ( θ ) l f + w / 2 l_\text{left front corner}=f(s)+sin(\theta)l_f+w/2 lleft front corner=f(s)+sin(θ)lf+w/2
l f l_f lf后轴到车前部的距离;
w w w半车宽;
θ \theta θ车辆航向角和道路方位角之差。
f ( s ) + s i n ( θ ) l f + w / 2 ≤ f ( s ) + f ′ ( s ) l r + w / 2 ≤ l left corner bound \begin{aligned} \begin{aligned}f(s)+sin(\theta)l_f+w/2\end{aligned}& \begin{aligned}&\leq f(s)+f'(s)l_{\textcolor{purple}{r}}+w/2\end{aligned} \\ &\leq l_{\text{left corner bound}} \end{aligned} f(s)+sin(θ)lf+w/2f(s)+f(s)lr+w/2lleft corner bound
线性化近似之后得到下式。其余三个点也一样。

当然还有起点约束。

这部分还可参考二次规划(QP)样条路径优化

D. M-Step DP Speed Optimizer

在这里插入图片描述
还有剪枝的操作,可参考【Apollo学习笔记】——规划模块TASK之SPEED_HEURISTIC_OPTIMIZER

在这里插入图片描述
速度DP结果:分段线性化的speed profile(在QP中作为参考线)、可行区域(在QP中用以生成凸空间)以及对障碍物的决策。

代价函数:
C t o t a l ( S ) = w 1 ∫ t 0 t n g ( S ′ − V r e f ) d t + w 2 ∫ t 0 t n ( S ′ ′ ) 2 d t + w 3 ∫ t 0 t n ( S ′ ′ ′ ) 2 d t + w 4 C o b s ( S ) \begin{aligned} C_{total}(S)& \begin{aligned}=w_1\int_{t_0}^{t_n}g(S'-V_{ref})dt\end{aligned} \\ &\begin{aligned}&+w_2\int_{t_0}^{t_n}(S'')^2dt+w_3\int_{t_0}^{t_n}(S''')^2dt\end{aligned} \\ &+w_4C_{obs}(S) \end{aligned} Ctotal(S)=w1t0tng(SVref)dt+w2t0tn(S′′)2dt+w3t0tn(S′′′)2dt+w4Cobs(S)

考虑因素:

  • 速度接近于参考速度 V r e f V_{ref} Vref V r e f V_{ref} Vref取决于限速、交规、曲率。 g g g用以适应于不同场景调整相应的惩罚。
  • 平滑程度。 S ′ ′ , S ′ ′ ′ S'',S''' S′′,S′′′
  • 障碍物。

DP搜索空间考虑的约束有:加速度、加加速度以及单调递增(不考虑向后行车)。

E. M-Step QP Speed Optimizer

在这里插入图片描述QP的结构

C t o t a l ( S ) = w 1 ∫ t 0 t n ( S − S r e f ) 2 d t + w 2 ∫ t 0 t n ( S ′ ′ ) 2 d t + w 3 ∫ t 0 t n ( S ′ ′ ′ ) 2 d t . \begin{aligned} C_{total}(S)& \begin{aligned}&=w_1\int_{t_0}^{t_n}(S-S_{ref})^2dt+w_2\int_{t_0}^{t_n}(S'')^2dt\end{aligned} \\ &+w_3\int_{t_0}^{t_n}(S''')^2dt. \end{aligned} Ctotal(S)=w1t0tn(SSref)2dt+w2t0tn(S′′)2dt+w3t0tn(S′′′)2dt.
S r e f S_{ref} Sref为DP规划出的speed profile。

约束:
S ( t i ) ≤ S ( t i + 1 ) , i = 0 , 1 , 2 , . . . , n − 1 , S l , t i ≤ S ( t i ) ≤ S u , t i , S ′ ( t i ) ≤ V u p p e r , − D e c m a x ≤ S ′ ′ ( t i ) ≤ A c c m a x − J m a x ≤ S ′ ′ ′ ( t i ) ≤ J m a x \begin{gathered} \begin{aligned}S(t_i)\leq S(t_{i+1}),i=0,1,2,...,n-1,\end{aligned} \\ \begin{aligned}S_{l,t_{i}}\leq S(t_{i})\leq S_{u,t_{i}},\end{aligned} \\ S^{\prime}(t_{i})\leq V_{upper}, \\ \begin{aligned}-Dec_{max}\leq S''(t_{i})\leq Acc_{max}\end{aligned} \\ \begin{aligned}-J_{max}\leq S^{\prime\prime\prime}(t_i)\leq J_{max}\end{aligned} \end{gathered} S(ti)S(ti+1),i=0,1,2,...,n1,Sl,tiS(ti)Su,ti,S(ti)Vupper,DecmaxS′′(ti)AccmaxJmaxS′′′(ti)Jmax

在这里插入图片描述

F. Notes on Solving Quadratic Programming Problems

  • 采用五次多项式进行QP求解。参考:二次规划ST速度优化、二次规划(QP)样条路径优化
  • 利用上一次规划的结果作为热启动以提高求解效率。

G. Notes on Non-convex Optimization With DP and QP

  • DP采样的节点数受到采样间隔的影响,同时DP在复杂场景的计算量会很大,占据大量计算时间。一般的,DP只是提供一个粗解,并不会给出最优解。
  • QP需要依赖于DP获得凸空间,否则可能会陷入局部最小值或规划失败。(QP并非一定需要DP作为前置步骤,若能转换到凸问题进行求解也是可以的)

CASE STUDY

EM planner是一个基于轻决策的规划器,相比传统的重决策或者完全rule-based的方案,更具有泛化能力。

一个两轮迭代的例子。
在这里插入图片描述
(a) 驻车沿着历史轨迹行驶。
(b) 两车相遇点在s=40处,因此在s=40处采用nudge操作通过可以有效避开障碍物。
© 主车会在s=40处降低速度通过。
(d) 更新nudge距离到s=30。
(e) 在s=30处nudge通过,之后在s=40处加速。

Else

附录里提到了reproducing kernel Hilbert space (RKHS)的概念,有些不大理解,后续再看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/106685.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为云云耀云服务器L实例评测|了解配置和管理L型云服务器

华为云云耀云服务器L实例配置和管理教程 华为云云耀云服务器L实例的介绍概述特点优势与弹性云服务器&#xff08;ECS&#xff09;的对比 注册和创建L型云服务器注册华为云账号创建L型云服务器实例配置实例参数配置其他参数尝试登录 远程登录 L实例查看公网ip通过本地shell远程连…

Date日期工具类(数据库日期区间问题)

文章目录 前言DateUtils日期工具类总结 前言 在我们日常开发过程中&#xff0c;当涉及到处理日期和时间的操作时&#xff0c;字符串与Date日期类往往要经过相互转换&#xff0c;且在SQL语句的动态查询中&#xff0c;往往月份的格式不正确&#xff0c;SQL语句执行的效果是不同的…

【计算机网络】 IP协议格式以及以太网帧结构

文章目录 IP协议格式以太网帧结构 IP协议格式 IP工作在网络层 IP头分为两部分&#xff0c;固定部分和可变部分&#xff0c;固定部分就是一定要带这些数据&#xff0c;正常存储应该是连续的&#xff0c;并不是像图中这样会换行&#xff0c;图中只是为了方便观察。 首先是一个版…

配电网智能软开关(sop)规划模型matlab

目录 1 主要内容 2 部分程序 3 程序结果 1 主要内容 该程序参考文献《基于改进灵敏度分析的有源配电网智能软开关优化配置》&#xff0c;采用二阶锥算法&#xff0c;以改进的IEEE33节点配电系统模型作为分析对象&#xff0c;以联络开关位置作为sop安装备选位置&#xff0c;以…

Java jvm 内存溢出分析

1.如何分析jvm内存溢出呢 我们经常用visualVm监控Jvm的内存&#xff0c;cpu&#xff0c;线程的使用情况&#xff0c;通常可以根据内存不断增长来判断内存是否存在不释放。但是我们不可能时时盯着去看&#xff0c;这里涉及jvm堆内存配置&#xff0c;堆内存参数配置和调优会在其他…

华为OD机考算法题:分奖金

题目部分 题目分奖金难度难题目说明公司老板做了一笔大生意&#xff0c;想要给每位员工分配一些奖金&#xff0c;想通过游戏的方式来决定每个人分多少钱。按照员工的工号顺序&#xff0c;每个人随机抽取一个数字。按照工号的顺序往后排列&#xff0c;遇到第一个数字比自己数字…

客户需求调研的三个实用工具

在竞争激烈的市场中&#xff0c;了解客户的需求并满足他们的期望对于企业的成功至关重要。因此&#xff0c;进行客户需求调研是一项关键性工作&#xff0c;可以帮助企业更好地理解客户的需求、偏好和行为。为了更有效地进行客户需求调研&#xff0c;以下是三个实用工具&#xf…

案例实战-Spring boot Web

准备工作 需求&环境搭建 需求&#xff1a; 部门管理&#xff1a; 查询部门列表 删除部门 新增部门 修改部门 员工管理 查询员工列表&#xff08;分页、条件&#xff09; 删除员工 新增员工 修改员工 环境搭建 准备数据库表&#xff08;dept、emp&#xff09; -- 部门管理…

【linux基础(五)】Linux中的开发工具(上)---yum和vim

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到开通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; Linux中的开发工具 1. 前言2.…

批量采集的时间管理与优化

在进行大规模数据采集时&#xff0c;如何合理安排和管理爬取任务的时间成为了每个专业程序员需要面对的挑战。本文将分享一些关于批量采集中时间管理和优化方面的实用技巧&#xff0c;帮助你提升爬虫工作效率。 1. 制定明确目标并设置合适频率 首先要明确自己所需获取数据的范…

2020年12月 C/C++(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C编程&#xff08;1~8级&#xff09;全部真题・点这里 第1题&#xff1a;字符三角形 描述 给定一个字符&#xff0c;用它构造一个底边长5个字符&#xff0c;高3个字符的等腰字符三角形。 输入 输入只有一行&#xff0c; 包含一个字符。 输出 该字符构成的等腰三角形&#xff…

人工智能AI 全栈体系(二)

第一章 神经网络是如何实现的 上节描述的网络结构比较特殊&#xff0c;不具有一般性。比如前面我们讲过的权重都是1或者-1&#xff0c;这是很特殊的情况&#xff0c;实际上权重可以是任何数值&#xff0c;可以是正的&#xff0c;也可以是负的&#xff0c;也可以是带小数的。权…