二次规划ST速度优化
from https://github.com/ApolloAuto/apollo/blob/master/docs/specs/qp_spline_st_speed_optimizer_cn.md

Tip: 为了更好的展示本文档中的等式,我们建议使用者使用带有插件的Chrome浏览器,或者将Latex等式拷贝到在线编辑公式网站进行浏览。

1 定义
从二次规划样条路径中选取一条路径后,Apollo将路线上的所有障碍物和自动驾驶车辆(ADV)展现在一个时间-路径图上(path-time ST),该路径图表示了路径上的站点变化。速度优化的任务是在ST图上找到一条合理的,无障碍的路径。

Apollo使用多个样条来表示速度参数,在ST图上表示为一系列的ST点。Apollo会对二次规划的结果做再次的平衡以获得最佳的速度参数。QP问题的标准类型定义为:

minimize12⋅xT⋅H⋅x+fT⋅xs.t.LB≤x≤UBAeqx=beqAx≤bminimize \frac{1}{2} \cdot x^T \cdot H \cdot x + f^T \cdot x \\ s.t. LB \leq x \leq UB \\ A_{eq}x = b_{eq} \\ Ax \leq b minimize21​⋅xT⋅H⋅x+fT⋅xs.t.LB≤x≤UBAeq​x=beq​Ax≤b
2 目标函数
2.1 获取样条段
将路ST速度参数分为 n 段,每段路径用一个多项式来表示。

2.2 定义样条段函数
每个样条段 i 都有沿着参考线的累加距离did_idi​。每段的路径默认用5介多项式表示。多项式介数可以通过配置参数进行调整。

s=fi(t)=a0i+a1i⋅t+a2i⋅t2+a3i⋅t3+a4i⋅t4+a5i⋅t5s = f_i(t) = a_{0i} + a_{1i} \cdot t + a_{2i} \cdot t^2 + a_{3i} \cdot t^3 + a_{4i} \cdot t^4 + a_{5i} \cdot t^5 s=fi​(t)=a0i​+a1i​⋅t+a2i​⋅t2+a3i​⋅t3+a4i​⋅t4+a5i​⋅t5
2.3 定义样条段优化函数
Apollo首先定义cost1cost_1cost1​以使路径更加平滑:

cost1=∑i=1n(w1⋅∫0di(fi′)2(s)ds+w2⋅∫0di(fi′′)2(s)ds+w3⋅∫0di(fi′′′)2(s)ds)cost_1 = \sum_{i=1}^{n} \Big( w_1 \cdot \int\limits_{0}^{d_i} (f_i')^2(s) ds + w_2 \cdot \int\limits_{0}^{d_i} (f_i'')^2(s) ds + w_3 \cdot \int\limits_{0}^{d_i} (f_i^{\prime\prime\prime})^2(s) ds \Big) cost1​=i=1∑n​(w1​⋅0∫di​​(fi′​)2(s)ds+w2​⋅0∫di​​(fi′′​)2(s)ds+w3​⋅0∫di​​(fi′′′​)2(s)ds)
然后,Apollo定义cost2cost_2cost2​表示最后的S-T路径和S-T巡航路径(有速度限制且m个点)的差值:

cost2=∑i=1n∑j=1m(fi(tj)−sj)2cost_2 = \sum_{i=1}^{n}\sum_{j=1}^{m}\Big(f_i(t_j)- s_j\Big)^2 cost2​=i=1∑n​j=1∑m​(fi​(tj​)−sj​)2
同样地,Apollo定义了cost3cost_3cost3​表示第一个S-T路径和随后的S-T路径(o个点)的差值:

cost3=∑i=1n∑j=1o(fi(tj)−sj)2cost_3 = \sum_{i=1}^{n}\sum_{j=1}^{o}\Big(f_i(t_j)- s_j\Big)^2 cost3​=i=1∑n​j=1∑o​(fi​(tj​)−sj​)2
最后得出的目标函数为:

cost=cost1+cost2+cost3cost = cost_1 + cost_2 + cost_3 cost=cost1​+cost2​+cost3​
3 约束条件
3.1 初始点约束
假设第一个点是(t0t0t0, s0s0s0),且s0s0s0在路径fi(t)f_i(t)fi​(t), f′i(t)f'i(t)f′i(t), 和fi(t)′′f_i(t)''fi​(t)′′上(位置、速率、加速度)。Apollo将这些约束转换为QP约束的等式为:

Aeqx=beqA_{eq}x = b_{eq} Aeq​x=beq​
3.2 单调约束
路线必须是单调的,比如车辆只能往前开。

在路径上采样 m 个点,对每一个 jjj和j−1j-1j−1 的点对,且(j∈[1,...,m]j\in[1,...,m]j∈[1,...,m]),如果两个点都处在同一个样条kkk上,则:

∣1tjtj2tj3tj4tj5∣⋅∣akbkckdkekfk∣>∣1tj−1tj−12tj−13tj−14tj−15∣⋅∣akbkckdkekfk∣\begin{vmatrix} 1 & t_j & t_j^2 & t_j^3 & t_j^4&t_j^5 \\ \end{vmatrix} \cdot \begin{vmatrix} a_k \\ b_k \\ c_k \\ d_k \\ e_k \\ f_k \end{vmatrix} > \begin{vmatrix} 1 & t_{j-1} & t_{j-1}^2 & t_{j-1}^3 & t_{j-1}^4&t_{j-1}^5 \\ \end{vmatrix} \cdot \begin{vmatrix} a_{k} \\ b_{k} \\ c_{k} \\ d_{k} \\ e_{k} \\ f_{k} \end{vmatrix} ∣∣​1​tj​​tj2​​tj3​​tj4​​tj5​​∣∣​⋅∣∣∣∣∣∣∣∣∣∣∣∣​ak​bk​ck​dk​ek​fk​​∣∣∣∣∣∣∣∣∣∣∣∣​>∣∣​1​tj−1​​tj−12​​tj−13​​tj−14​​tj−15​​∣∣​⋅∣∣∣∣∣∣∣∣∣∣∣∣​ak​bk​ck​dk​ek​fk​​∣∣∣∣∣∣∣∣∣∣∣∣​
如两个点分别处在不同的样条kkk和lll上,则:

∣1tjtj2tj3tj4tj5∣⋅∣akbkckdkekfk∣>∣1tj−1tj−12tj−13tj−14tj−15∣⋅∣alblcldlelfl∣\begin{vmatrix} 1 & t_j & t_j^2 & t_j^3 & t_j^4&t_j^5 \\ \end{vmatrix} \cdot \begin{vmatrix} a_k \\ b_k \\ c_k \\ d_k \\ e_k \\ f_k \end{vmatrix} > \begin{vmatrix} 1 & t_{j-1} & t_{j-1}^2 & t_{j-1}^3 & t_{j-1}^4&t_{j-1}^5 \\ \end{vmatrix} \cdot \begin{vmatrix} a_{l} \\ b_{l} \\ c_{l} \\ d_{l} \\ e_{l} \\ f_{l} \end{vmatrix} ∣∣​1​tj​​tj2​​tj3​​tj4​​tj5​​∣∣​⋅∣∣∣∣∣∣∣∣∣∣∣∣​ak​bk​ck​dk​ek​fk​​∣∣∣∣∣∣∣∣∣∣∣∣​>∣∣​1​tj−1​​tj−12​​tj−13​​tj−14​​tj−15​​∣∣​⋅∣∣∣∣∣∣∣∣∣∣∣∣​al​bl​cl​dl​el​fl​​∣∣∣∣∣∣∣∣∣∣∣∣​
3.3 平滑节点约束
该约束的目的是使样条的节点更加平滑。假设两个段segkseg_ksegk​ 和segk+1seg_{k+1}segk+1​互相连接,且segkseg_ksegk​的累计值 s 为sks_ksk​。计算约束的等式为:

fk(tk)=fk+1(t0)f_k(t_k) = f_{k+1} (t_0) fk​(tk​)=fk+1​(t0​)
即:

∣1tktk2tk3tk4tk5∣⋅∣ak0ak1ak2ak3ak4ak5∣=∣1t0t02t03t04t05∣⋅∣ak+1,0ak+1,1ak+1,2ak+1,3ak+1,4ak+1,5∣\begin{vmatrix} 1 & t_k & t_k^2 & t_k^3 & t_k^4&t_k^5 \\ \end{vmatrix} \cdot \begin{vmatrix} a_{k0} \\ a_{k1} \\ a_{k2} \\ a_{k3} \\ a_{k4} \\ a_{k5} \end{vmatrix} = \begin{vmatrix} 1 & t_{0} & t_{0}^2 & t_{0}^3 & t_{0}^4&t_{0}^5 \\ \end{vmatrix} \cdot \begin{vmatrix} a_{k+1,0} \\ a_{k+1,1} \\ a_{k+1,2} \\ a_{k+1,3} \\ a_{k+1,4} \\ a_{k+1,5} \end{vmatrix} ∣∣​1​tk​​tk2​​tk3​​tk4​​tk5​​∣∣​⋅∣∣∣∣∣∣∣∣∣∣∣∣​ak0​ak1​ak2​ak3​ak4​ak5​​∣∣∣∣∣∣∣∣∣∣∣∣​=∣∣​1​t0​​t02​​t03​​t04​​t05​​∣∣​⋅∣∣∣∣∣∣∣∣∣∣∣∣​ak+1,0​ak+1,1​ak+1,2​ak+1,3​ak+1,4​ak+1,5​​∣∣∣∣∣∣∣∣∣∣∣∣​
然后,

∣1tktk2tk3tk4tk5−1−t0−t02−t03−t04−t05∣⋅∣ak0ak1ak2ak3ak4ak5ak+1,0ak+1,1ak+1,2ak+1,3ak+1,4ak+1,5∣=0\begin{vmatrix} 1 & t_k & t_k^2 & t_k^3 & t_k^4&t_k^5 & -1 & -t_{0} & -t_{0}^2 & -t_{0}^3 & -t_{0}^4&-t_{0}^5\\ \end{vmatrix} \cdot \begin{vmatrix} a_{k0} \\ a_{k1} \\ a_{k2} \\ a_{k3} \\ a_{k4} \\ a_{k5} \\ a_{k+1,0} \\ a_{k+1,1} \\ a_{k+1,2} \\ a_{k+1,3} \\ a_{k+1,4} \\ a_{k+1,5} \end{vmatrix} = 0 ∣∣​1​tk​​tk2​​tk3​​tk4​​tk5​​−1​−t0​​−t02​​−t03​​−t04​​−t05​​∣∣​⋅∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣​ak0​ak1​ak2​ak3​ak4​ak5​ak+1,0​ak+1,1​ak+1,2​ak+1,3​ak+1,4​ak+1,5​​∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣​=0
等式中得出的结果为t0t_0t0​ = 0。

同样地,为下述等式计算约束等式:

fk′(tk)=fk+1′(t0)fk′′(tk)=fk+1′′(t0)fk′′′(tk)=fk+1′′′(t0)f'_k(t_k) = f'_{k+1} (t_0) \\ f''_k(t_k) = f''_{k+1} (t_0) \\ f'''_k(t_k) = f'''_{k+1} (t_0) fk′​(tk​)=fk+1′​(t0​)fk′′​(tk​)=fk+1′′​(t0​)fk′′′​(tk​)=fk+1′′′​(t0​)
3.4 点采样边界约束
在路径上均匀的取样 m 个点,检查这些点上的障碍物边界。将这些约束转换为QP约束不等式,使用不等式:

Ax≤bAx \leq b Ax≤b
首先基于道路宽度和周围的障碍物找到点 (sj,lj)(s_j, l_j)(sj​,lj​)的下边界llb,jl_{lb,j}llb,j​,且j∈[0,m]j\in[0, m]j∈[0,m]。计算约束的不等式为:

∣1t0t02t03t04t051t1t12t13t14t15..................1tmtm2tm3tm4tm5∣⋅∣aibicidieifi∣≤∣llb,0llb,1...llb,m∣\begin{vmatrix} 1 & t_0 & t_0^2 & t_0^3 & t_0^4&t_0^5 \\ 1 & t_1 & t_1^2 & t_1^3 & t_1^4&t_1^5 \\ ...&...&...&...&...&... \\ 1 & t_m & t_m^2 & t_m^3 & t_m^4&t_m^5 \\ \end{vmatrix} \cdot \begin{vmatrix} a_i \\ b_i \\ c_i \\ d_i \\ e_i \\ f_i \end{vmatrix} \leq \begin{vmatrix} l_{lb,0}\\ l_{lb,1}\\ ...\\ l_{lb,m}\\ \end{vmatrix} ∣∣∣∣∣∣∣∣​11...1​t0​t1​...tm​​t02​t12​...tm2​​t03​t13​...tm3​​t04​t14​...tm4​​t05​t15​...tm5​​∣∣∣∣∣∣∣∣​⋅∣∣∣∣∣∣∣∣∣∣∣∣​ai​bi​ci​di​ei​fi​​∣∣∣∣∣∣∣∣∣∣∣∣​≤∣∣∣∣∣∣∣∣​llb,0​llb,1​...llb,m​​∣∣∣∣∣∣∣∣​
同样地,对上边界lub,jl_{ub,j}lub,j​,计算约束的不等式为:

∣1t0t02t03t04t051t1t12t13t14t15..................1tmtm2tm3tm4tm5∣⋅∣aibicidieifi∣≤−1⋅∣lub,0lub,1...lub,m∣\begin{vmatrix} 1 & t_0 & t_0^2 & t_0^3 & t_0^4&t_0^5 \\ 1 & t_1 & t_1^2 & t_1^3 & t_1^4&t_1^5 \\ ...&...&...&...&...&... \\ 1 & t_m & t_m^2 & t_m^3 & t_m^4&t_m^5 \\ \end{vmatrix} \cdot \begin{vmatrix} a_i \\ b_i \\ c_i \\ d_i \\ e_i \\ f_i \end{vmatrix} \leq -1 \cdot \begin{vmatrix} l_{ub,0}\\ l_{ub,1}\\ ...\\ l_{ub,m}\\ \end{vmatrix} ∣∣∣∣∣∣∣∣​11...1​t0​t1​...tm​​t02​t12​...tm2​​t03​t13​...tm3​​t04​t14​...tm4​​t05​t15​...tm5​​∣∣∣∣∣∣∣∣​⋅∣∣∣∣∣∣∣∣∣∣∣∣​ai​bi​ci​di​ei​fi​​∣∣∣∣∣∣∣∣∣∣∣∣​≤−1⋅∣∣∣∣∣∣∣∣​lub,0​lub,1​...lub,m​​∣∣∣∣∣∣∣∣​
3.5 速度边界优化
Apollo同样需要建立速度限制边界。

在st曲线上取样 m 个点,为每个点jjj获取速度限制的上边界和下边界,例如vub,jv{ub,j}vub,j 和 vlb,jv{lb,j}vlb,j,约束定义为:

f′(tj)≥vlb,jf'(t_j) \geq v_{lb,j} f′(tj​)≥vlb,j​
即:

∣01t0t02t03t0401t1t12t13t14..................01tmtm2tm3tm4∣⋅∣aibicidieifi∣≥∣vlb,0vlb,1...vlb,m∣\begin{vmatrix} 0& 1 & t_0 & t_0^2 & t_0^3 & t_0^4 \\ 0 & 1 & t_1 & t_1^2 & t_1^3 & t_1^4 \\ ...&...&...&...&...&... \\ 0& 1 & t_m & t_m^2 & t_m^3 & t_m^4 \\ \end{vmatrix} \cdot \begin{vmatrix} a_i \\ b_i \\ c_i \\ d_i \\ e_i \\ f_i \end{vmatrix} \geq \begin{vmatrix} v_{lb,0}\\ v_{lb,1}\\ ...\\ v_{lb,m}\\ \end{vmatrix} ∣∣∣∣∣∣∣∣​00...0​11...1​t0​t1​...tm​​t02​t12​...tm2​​t03​t13​...tm3​​t04​t14​...tm4​​∣∣∣∣∣∣∣∣​⋅∣∣∣∣∣∣∣∣∣∣∣∣​ai​bi​ci​di​ei​fi​​∣∣∣∣∣∣∣∣∣∣∣∣​≥∣∣∣∣∣∣∣∣​vlb,0​vlb,1​...vlb,m​​∣∣∣∣∣∣∣∣​
且,

f′(tj)≤vub,jf'(t_j) \leq v_{ub,j} f′(tj​)≤vub,j​
即:

∣01t0t02t03t0401t1t12t13t14..................01tmtm2tm3tm4∣⋅∣aibicidieifi∣≤∣vub,0vub,1...vub,m∣\begin{vmatrix} 0& 1 & t_0 & t_0^2 & t_0^3 & t_0^4 \\ 0 & 1 & t_1 & t_1^2 & t_1^3 & t_1^4 \\ ...&...&...&...&...&... \\ 0 &1 & t_m & t_m^2 & t_m^3 & t_m^4 \\ \end{vmatrix} \cdot \begin{vmatrix} a_i \\ b_i \\ c_i \\ d_i \\ e_i \\ f_i \end{vmatrix} \leq \begin{vmatrix} v_{ub,0}\\ v_{ub,1}\\ ...\\ v_{ub,m}\\ \end{vmatrix} ∣∣∣∣∣∣∣∣​00...0​11...1​t0​t1​...tm​​t02​t12​...tm2​​t03​t13​...tm3​​t04​t14​...tm4​​∣∣∣∣∣∣∣∣​⋅∣∣∣∣∣∣∣∣∣∣∣∣​ai​bi​ci​di​ei​fi​​∣∣∣∣∣∣∣∣∣∣∣∣​≤∣∣∣∣∣∣∣∣​vub,0​vub,1​...vub,m​​∣∣∣∣∣∣∣∣​

appollo-二次规划ST速度优化相关推荐

  1. YUV视频格式到RGB32格式转换的速度优化 上篇(转)

    YUV视频格式到RGB32格式转换的速度优化 上篇                     HouSisong@GMail.com    2007.10.30   tag: YUV,YCbCr,YUV ...

  2. 页面加载速度优化的12个建议

    1.合并Js文件和CSS 将JS代码和CSS样式分别合并到一个共享的文件,这样不仅能简化代码,而且在执行JS文件的时候,如果JS文件比较多,就需要进行多次"Get"请求,延长加载速 ...

  3. 近邻取样插值和其速度优化

    本文的主要内容转载自博客 <图像缩放算法 >或<图形图像处理-之-高质量的快速的图像缩放 上篇 近邻取样插值和其速度优化>,将其中的代码改写在自己的机器上进行实际测试,从而更加 ...

  4. netty系列之:一个价值上亿的网站速度优化方案

    文章目录 简介 本文的目标 支持多个图片服务 http2处理器 处理页面和图像 价值上亿的速度优化方案 总结 简介 其实软件界最赚钱的不是写代码的,写代码的只能叫马龙,高级点的叫做程序员,都是苦力活. ...

  5. 速度优化_网站打开速度慢?如何优化?

    网站打开速度直接影响用户的第一道体验,打开速度偏慢,用户可能就没耐心继续等下去了,造成大量用户流失,今天我们谈谈如何优化网站打开速度: 网站打开速度慢?如何优化? 服务器配置 服务器要安全.稳定性良好 ...

  6. 分享网页加载速度优化的一些技巧?

    日期:2013-2-17  来源:GBin1.com 不管你是不是相信,在最近的几年里,互联网网页的大小已经显著增大了.由HTTP Archive研究得出的结果表明,目前平均一个页面的大小是1.25M ...

  7. LaTeX的编译速度优化方案

    1 运行字体 如果是卡在 eu1lmr.fd 的话,是因为 XeLaTeX 在定位字体. 用管理员运行 fc-cache -fv 一般能够解决. 其它方法: https://www.zhihu.com ...

  8. Ansible执行过程分析、异步模式和速度优化

    Ansible系列(七):执行过程分析.异步模式和速度优化 分类: Linux服务篇 undefined 我写了更完善的Ansible专栏文章:一步到位玩儿透Ansible Ansible系列文章:h ...

  9. 网站加载速度 优化_您肯定要优化网站的加载速度。 这是如何做。

    网站加载速度 优化 Do you remember this iconic scene from a very famous Star Wars Parody? 您还记得著名的<星球大战> ...

最新文章

  1. 商汤招股书详解:40名教授250+博士3593位工程师,AI收入亚洲第一,一年15亿研发工资支出...
  2. UVA10905孩子们的游戏
  3. wireshark抓包过滤指定的字节数据
  4. [INS-32025] 所选安装与指定 Oracle 主目录中已安装的软件冲突
  5. DateUtils.paraseDate(String sDate,String[] parasePatterns);转换时间不对,pattern数组顺序
  6. C#中的事件和委托(续)
  7. 夸计算机老师的成语,夸赞老师的成语
  8. tf.global_variables_initializer()什么时候用?
  9. EntityFramework 7 Linq Contains In 奇怪问题(已修复)
  10. 数字电视厂商及解决方案全景大扫描
  11. 协同过滤算法_从网易云日推浅谈个性化推荐系统(1)——基于用户的协同过滤算法...
  12. java 杨辉三角_JAVA实现杨辉三角的三种方式
  13. 织梦DedeCMS使用教程:留言簿模块
  14. asp.net core 日志中间件(LoggerMiddleware)
  15. 浅谈二叉查找树、AVL树、红黑树、B树、B+树的原理及应用
  16. ipsec与服务器协议失败,IPSEC SA无法协商成功
  17. ipv4与ipv6的联系与区别
  18. Kiva(亚马逊)机器人介绍
  19. ROS机器人程序设计(原书第2版).
  20. 大学计算机二级必考,计算机二级大学生必考吗

热门文章

  1. 科班出身程序员和培训出来的程序员区别在哪?
  2. Codeforces 1326 E. Bombs (线段树)
  3. k-means算法简介
  4. Oracle 10g For Windows 10.1.0和 Oracle 10g For Linux 10.1.0.3下载地址
  5. LoadRunner 11(LR11) 下载链接及破解方法
  6. Windows 下的一款弱网模拟工具NEWT
  7. long型转String(*)
  8. BLOB与CLOB的区别
  9. less和sass的定义和区别
  10. 进入BeOS的花花世界 系列一