Apollo学习笔记(13)Lattice Planner与OBVP问题

本文是学习了深蓝科技相关课程与阅读了相关文献后,整理所得。
论文为A computationally efficient motio primitive for quadrocopter trajectory generation。

Lattice Planner算法的根本目标就是从车辆当前的位置,结合地图、定位、障碍物等信息,通过采样并搜索出一条设定的目标 cost function 值最小的一组坐标。这就和BVP问题很相像了,都是知道起始状态信息和最终信息(部分也可以),求解出满足要求的多阶曲线。如下图所示,

在这里插入图片描述初始时刻为t=0,终点时刻t=T,起点终点信息知道后,目标就是找到一条五次样条曲线使得车辆在满足约束条件和目标cost方程的情况下找到一条满足的路径。设最终的样条曲线方程为
x ( t ) = c 5 t 5 + c 4 t 4 + c 3 t 3 + c 2 t 2 + c 1 t + c 0 x(t)=c_{5}t^{5}+c_{4}t^{4}+c_{3}t^{3}+c_{2}t^{2}+c_{1}t+c_{0} x(t)=c5t5+c4t4+c3t3+c2t2+c1t+c0

给定的初始位置和终点位置分别为a和b,则有下式,
[ a b 0 0 0 0 ] = [ 0 0 0 0 0 1 T 5 T 4 T 3 T 2 T 1 0 0 0 0 1 0 5 T 4 4 T 3 3 T 2 2 T 1 0 0 0 0 2 0 2 20 T 3 12 T 2 6 T 2 0 0 ] [ c 5 c 4 c 3 c 2 c 1 c 0 ] \begin{bmatrix} a \\ b \\ 0 \\ 0 \\ 0 \\ 0 \\ \end{bmatrix}= \begin{bmatrix} 0 & 0 & 0 & 0 & 0 & 1 \\ T^5 & T^4 & T^3 & T^2 & T & 1 \\ 0 & 0 & 0 & 0 & 1 & 0 \\ 5T^4 & 4T^3 & 3T^2 & 2T & 1 & 0 \\ 0 & 0 & 0 & 2 & 0 & 2 \\ 20T^3 & 12T^2 & 6T & 2 & 0 & 0 \\ \end{bmatrix}\begin{bmatrix} c_{5} \\ c_{4} \\ c_{3} \\ c_{2} \\ c_{1} \\ c_{0} \\ \end{bmatrix} ab0000=0T505T4020T30T404T3012T20T303T206T0T202T220T1100110020c5c4c3c2c1c0

可以看出上述方程可以有很多个解,但是在我们给定了一个目标方程后,满足目标的最优解就只有一个。

在OBVP方法中,我们已经给定了初始位置和终点位置,再加上一个目标方程,我们就可以得到一个可以求解出最有输入控制量的方程。

论文中的 objective function只考虑了jerk的平方(jerk是加速度的加速度),那么问题就只和车辆的位置、速度和加速度相关了,控制系统的输入为jerk,状态控制为位置,速度,加速度和jerk的函数,

Objective Function,使得jerk的平方和为最小值,
J ∑ = ∑ k = 1 3 J K ,   J k = 1 T ∫ 0 T j k ( t ) 2 d t J_{\sum}=\displaystyle\sum_{k=1}^3J_{K}, \\ \space \\ J_{k}=\frac{1}{T}\int^{T}_{0}j_{k}(t)^{2}dt J=k=13JK, Jk=T10Tjk(t)2dt
State Function:
S t a t e : S k = ( p k , v k , a k )   I n p u t : u k = j k State:S_{k}=(p_{k},v_{k},a_{k}) \\ \space \\ Input: u_{k}=j_{k} State:Sk=(pk,vk,ak) Input:uk=jk
SystemModel:
S ˙ k = f s ( s k , u k ) = ( v k , a k , j k ) \dot{S}_{k}=f_{s}(s_{k},u_{k})=(v_{k},a_{k},j_{k}) S˙k=fs(sk,uk)=(vk,ak,jk)

对于上述问题,论文中使用庞特里亚金最小值原理求解,此原理的基本内容为;
s ˙ ∗ = f ( s ∗ ( t ) , u ∗ ( t ) ) , g i v e n : s ∗ ( t ) = s ( 0 )   λ ( t )   i s   t h e   s o l u t i o n   o f   : λ ˙ ( t ) = − ∇ s H ( s ∗ ( t ) , u ∗ ( t ) , λ ( t ) )   w i t h   t h e   b o u n d a r y   c o n d i t i o n   o f   : λ ( T ) = − ∇ h ( s ∗ ( T ) )   a n d   t h e   o p t i m a l   c o n t r o l   i n p u t   i s : u ∗ ( t ) = arg ⁡ min ⁡ u ( t )   H ( s ∗ ( t ) , u ( t ) , λ ( t ) ) \dot{s}^{*}=f(s^{*}(t),u^{*}(t)), given:s^{*}(t) = s(0) \\ \space \\ \lambda(t) \space is \space the \space solution \space of \space : \\ \dot{\lambda}(t)=-\nabla_{s}H(s^{*}(t),u^{*}(t),\lambda(t)) \\ \space \\ with \space the \space boundary \space condition \space of \space : \\ \lambda(T)=-\nabla h(s^{*}(T)) \\ \space \\ and \space the \space optimal \space control \space input \space is : \\ u^{*}(t)= \arg \underset{u(t)}{\min}\space H(s^{*}(t),u(t),\lambda(t)) s˙=f(s(t),u(t)),given:s(t)=s(0) λ(t) is the solution of :λ˙(t)=sH(s(t),u(t),λ(t)) with the boundary condition of :λ(T)=h(s(T)) and the optimal control input is:u(t)=argu(t)min H(s(t),u(t),λ(t))

这部分内容一眼看上去就挺懵,可以自己查一下相关资料,这里就不赘述了,下面说一下如何此原理是如何应用的。

第一步,先写出汉密尔顿(hamiltonian)函数
H ( s , u , λ ) = g ( s , u ) + λ T f ( s , u ) λ = ( λ 1 , λ 2 , λ 3 ) H(s,u,\lambda)=g(s,u)+\lambda^{T}f(s,u) \\ \lambda=(\lambda_{1},\lambda_{2},\lambda_{3}) H(s,u,λ)=g(s,u)+λTf(s,u)λ=(λ1,λ2,λ3)
式中, g g g就是 objective function 中的 transition cost, f f f 就是系统的状态方程(system model)。

那么,在本问题中,对应的 transition cost 就是 j 2 j^2 j2 f f f是系统状态方程 v , a , j v,a,j v,a,j,则此时汉密尔顿方程为,
H ( s , u , λ ) = 1 T j 2 + λ T f s ( s , u ) = 1 T j 2 + λ 1 v + λ 2 a + λ 3 j H(s,u,\lambda)=\frac{1}{T}j^{2}+\lambda^{T}f_{s}(s,u)=\frac{1}{T}j^{2}+\lambda_{1}v+\lambda_{2}a+\lambda_{3}j H(s,u,λ)=T1j2+λTfs(s,u)=T1j2+λ1v+λ2a+λ3j

第二步,根据庞特里亚金最小值原理
λ ˙ ( t ) = − ∇ s H ( s ∗ ( t ) , u ∗ ( t ) , λ ( t ) ) \dot{\lambda}(t)=-\nabla_{s}H(s^{*}(t),u^{*}(t),\lambda(t)) λ˙(t)=sH(s(t),u(t),λ(t))

可知 λ ( t ) \lambda(t) λ(t)是对汉密尔顿方程 H H H分别求 p , v , a p,v,a p,v,a的偏导,
λ ˙ = − ∇ s H ( s ∗ , j ∗ , λ ) = ( 0 , − λ 1 , − λ 2 ) \dot{\lambda}=-\nabla_{s}H(s^{*},j^{*},\lambda)=(0,-\lambda_{1},-\lambda_{2}) λ˙=sH(s,j,λ)=(0,λ1,λ2)
然后通过积分获 λ \lambda λ表达式(这里对系数做了一些处理,为了便于后续的计算更方便):
λ ( t ) = 1 T [ − 2 α 2 α t + 2 β − α t 2 − 2 β t − 2 γ ] \lambda(t)=\frac{1}{T}\begin{bmatrix} -2\alpha \\ 2\alpha t+2\beta \\ -\alpha t^2 - 2\beta t -2\gamma \\ \end{bmatrix} λ(t)=T12α2αt+2βαt22βt2γ

第三步,继续看一下最小值原理,最优控制输入为
u ∗ ( t ) = arg ⁡ min ⁡ u ( t )   H ( S ∗ ( t ) , u ( t ) , λ ( t ) ) u^{*}(t)= \arg \underset{u(t)}{\min}\space H(S^{*}(t),u(t),\lambda(t)) u(t)=argu(t)min H(S(t),u(t),λ(t))

在第二步中已经计算出 λ \lambda λ,而且其中 p , v , a p,v,a p,v,a 都是最优解,现在只需要计算一下 j j j的最优解就可以了。

计算一下一阶导数就能计算出 j j j的值了,再带入 H H H的表达式,则有,
u ∗ ( t ) = j ∗ ( t ) = arg ⁡ min ⁡ j ( t )   H ( S ∗ ( t ) , u ( t ) , λ ( t ) ) = 1 2 α t 2 + β t + γ u^{*}(t)=j^{*}(t)= \arg \underset{j(t)}{\min}\space H(S^{*}(t),u(t),\lambda(t))=\frac{1}{2}\alpha t^{2} + \beta t + \gamma u(t)=j(t)=argj(t)min H(S(t),u(t),λ(t))=21αt2+βt+γ

j j j进行一次积分得到加速度 a a a,再进行一次积分得到速度 v v v,再进行一次积分得到位置信息 p p p
s ∗ ( t ) = [ α 120 t 5 + β 24 t 4 + γ 6 t 3 + a 0 2 t 2 + v 0 t + p 0 α 24 t 4 + β 6 t 3 + γ 2 t 2 + a 0 t + v 0 α 6 t 3 + β 2 t 2 + γ t + a 0 ] s^{*}(t)=\begin{bmatrix} \frac{\alpha}{120}t^{5}+\frac{\beta}{24}t^{4}+\frac{\gamma}{6}t^{3}+\frac{a_0}{2}t^{2}+v_{0}t+p_{0} \\ \frac{\alpha}{24}t^{4}+\frac{\beta}{6}t^{3}+\frac{\gamma}{2}t^{2}+a_{0}t+v_{0} \\ \frac{\alpha}{6}t^{3}+\frac{\beta}{2}t^{2}+{\gamma}t+a_{0} \\ \end{bmatrix} s(t)=120αt5+24βt4+6γt3+2a0t2+v0t+p024αt4+6βt3+2γt2+a0t+v06αt3+2βt2+γt+a0

稍加整理一下,有

[ 1 120 T 5 1 24 T 4 1 6 T 3 1 124 T 4 1 6 T 3 1 2 T 2 1 6 T 3 1 2 T 2 T ] [ α β γ ] = [ Δ p Δ v Δ a ] \begin{bmatrix} \frac{1}{120}T^{5} & \frac{1}{24}T^{4} & \frac{1}{6}T^{3} \\ \frac{1}{124}T^{4} & \frac{1}{6}T^{3} & \frac{1}{2}T^{2} \\ \frac{1}{6}T^{3} & \frac{1}{2}T^{2} & T \\ \end{bmatrix} \begin{bmatrix} \alpha \\ \beta \\ \gamma \\ \end{bmatrix} = \begin{bmatrix} \Delta p \\ \Delta v \\ \Delta a \\ \end{bmatrix} 1201T51241T461T3241T461T321T261T321T2Tαβγ=ΔpΔvΔa
式中,
[ Δ p Δ v Δ a ] = [ p f − p 0 − v 0 T − 1 2 a 0 T 2 v f − v 0 − a 0 T a f − a 0 ] \begin{bmatrix} \Delta p \\ \Delta v \\ \Delta a \\ \end{bmatrix}=\begin{bmatrix} p_{f}-p_{0}-v_{0}T-\frac{1}{2}a_{0}T^{2} \\ v_{f}-v_{0}-a_{0}T \\ a_{f}-a_{0} \\ \end{bmatrix} ΔpΔvΔa=pfp0v0T21a0T2vfv0a0Tafa0

方程的解为,
[ α β γ ] = 1 T 5 [ 720 − 360 T 60 T 2 − 360 T 168 T 2 − 24 T 3 60 T 2 − 24 T 3 3 T 4 ] [ Δ p Δ v Δ a ] \begin{bmatrix} \alpha \\ \beta \\ \gamma \\ \end{bmatrix}=\frac{1}{T^{5}} \begin{bmatrix} 720 & -360T & 60T^{2} \\ -360T & 168T^{2} & -24T^{3} \\ 60T^{2} & -24T^{3} & 3T^{4} \\ \end{bmatrix} \begin{bmatrix} \Delta p \\ \Delta v \\ \Delta a \\ \end{bmatrix} αβγ=T51720360T60T2360T168T224T360T224T33T4ΔpΔvΔa

最后,计算出 α , β . γ \alpha,\beta.\gamma α,β.γ后,代入到objection function,
J = γ 2 + β γ T + 1 3 β 2 T 2 + 1 3 α γ T 2 + 1 4 α β T 3 + 1 20 α 2 T 4 J=\gamma^{2}+\beta \gamma T +\frac{1}{3}\beta^{2}T^{2}+\frac{1}{3}\alpha\gamma T^{2}+\frac{1}{4}\alpha \beta T^{3} + \frac{1}{20}\alpha^{2}T^{4} J=γ2+βγT+31β2T2+31αγT2+41αβT3+201α2T4

到目前为止,现在只剩下唯一一个未知数 T T T,根据实际项目中直接就可以得到 T T T的大小,代入上述公式就行。

拓展一下,上述中限制了的是终点位置的三个信息 p , v , a p,v,a p,v,a,如果并不是限制其中全部的信息呢?

这里直接上答案,具体过程可以自行搜索。

固定最终位置和速度:

[ α β γ ] = 1 T 5 [ 320 − 120 T 2 − 200 T 72 T 3 40 T 2 − 12 T 3 ] [ Δ p Δ v ] \begin{bmatrix} \alpha \\ \beta \\ \gamma \\ \end{bmatrix}=\frac{1}{T^{5}} \begin{bmatrix} 320 & -120T^{2} \\ -200T & 72T^{3} \\ 40T^{2} & -12T^{3} \\ \end{bmatrix} \begin{bmatrix} \Delta p \\ \Delta v \\ \end{bmatrix} αβγ=T51320200T40T2120T272T312T3[ΔpΔv]

固定最终位置和加速度:

[ α β γ ] = 1 2 T 5 [ 90 − 15 T 2 − 90 T 15 T 3 30 T 2 − 3 T 4 ] [ Δ p Δ a ] \begin{bmatrix} \alpha \\ \beta \\ \gamma \\ \end{bmatrix}=\frac{1}{2T^{5}} \begin{bmatrix} 90 & -15T^{2} \\ -90T & 15T^{3} \\ 30T^{2} & -3T^{4} \\ \end{bmatrix} \begin{bmatrix} \Delta p \\ \Delta a \\ \end{bmatrix} αβγ=2T519090T30T215T215T33T4[ΔpΔa]

固定最终速度和加速度:

[ α β γ ] = 1 T 3 [ 0 0 − 12 6 T 6 T − 2 T 2 ] [ Δ v Δ a ] \begin{bmatrix} \alpha \\ \beta \\ \gamma \\ \end{bmatrix}=\frac{1}{T^{3}} \begin{bmatrix} 0 & 0 \\ -12 & 6T \\ 6T & -2T^{2} \\ \end{bmatrix} \begin{bmatrix} \Delta v \\ \Delta a \\ \end{bmatrix} αβγ=T310126T06T2T2[ΔvΔa]

单纯的固定位置:

[ α β γ ] = 1 T 5 [ 20 − 20 T 10 T 2 ] Δ p \begin{bmatrix} \alpha \\ \beta \\ \gamma \\ \end{bmatrix}=\frac{1}{T^{5}} \begin{bmatrix} 20 \\ -20T \\ 10T^{2} \\ \end{bmatrix} \Delta p αβγ=T512020T10T2Δp

单纯的固定速度:

[ α β γ ] = 1 T 3 [ 0 − 3 3 T ] Δ v \begin{bmatrix} \alpha \\ \beta \\ \gamma \\ \end{bmatrix}=\frac{1}{T^{3}} \begin{bmatrix} 0 \\ -3 \\ 3T \\ \end{bmatrix} \Delta v αβγ=T31033TΔv

单纯的固定加速度:

[ α β γ ] = 1 T [ 0 0 1 ] Δ a \begin{bmatrix} \alpha \\ \beta \\ \gamma \\ \end{bmatrix}=\frac{1}{T} \begin{bmatrix} 0 \\ 0 \\ 1 \\ \end{bmatrix} \Delta a αβγ=T1001Δa

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Apollo Lattice Planner是一个先进的自动驾驶规划器。它是百度Apollo自动驾驶平台的核心组件之一,旨在帮助无人驾驶车辆安全、高效地规划行驶路径。 Apollo Lattice Planner采用了格点(lattice)规划方法,通过将道路划分为一系列网格点,然后根据车辆动力学与约束条件,在这些网格点间搜索最优路径。与传统的基于图搜索的方法不同,格点规划具有更高的计算效率和适应性,并且能够兼顾车辆舒适性和行驶效率。 该规划器具备多个主要功能。首先,它可以根据车辆的感知信息和规划目标生成全局路径,通过高精度地图来避免碰撞、超速等问题。其次,Apollo Lattice Planner可以根据交通规则和预测模块的信息,智能地生成局部路径以适应复杂的交通环境,如变道、绕过障碍物等。此外,该规划器还可以根据实时感知信息进行路径修正,确保车辆能够快速且安全地反应不断变化的道路状况。 Apollo Lattice Planner的优势在于它的高度可靠性和适应性。它可以通过对驾驶场景的建模以及实时感知信息的分析,为无人驾驶车辆提供最佳的路径规划方案。它还可以根据不同行驶需求,比如快速行驶、舒适行驶等进行调整,以满足不同用户的需求。此外,该规划器还支持多车辆协同行驶,可以根据不同车辆的感知信息与规划目标动态优化路径规划,提高整体交通效率。 总之,Apollo Lattice Planner是一款先进的自动驾驶规划器,通过格点规划方法,能够智能、高效地规划无人驾驶车辆的行驶路径,提供安全、可靠的驾驶体验。 ### 回答2: Apollo Lattice Planner是一种用于自动驾驶系统的路径规划算法。它是在Baidu Apollo平台中开发的一种高效的规划器,主要用于城市环境的自动驾驶。 Apollo Lattice Planner使用基于格子的表示方法来生成可行的路径。通过将城市地图离散化为均匀网格,该算法能够更好地处理城市环境中的不规则道路和复杂交通情况。它将车辆当前位置与目标位置作为输入,并在城市地图上搜索最佳路径。该路径需要满足一系列的约束条件,如避免碰撞、保持车辆的稳定性和合理规划转弯等。 为了生成可行路径,Apollo Lattice Planner利用了快速的广度优先搜索算法。该算法在网格地图上进行搜索,通过考虑车辆的动力学属性和交通规则,确定每个格子的可行性,并进行路径评估。通过搜索和评估过程,该算法可以找到对于车辆来说最安全和最高效的路径。 Apollo Lattice Planner在实际应用中已经取得了较好的效果。通过合理规划路径,它能够使自动驾驶系统在城市道路上更加安全、高效地行驶。同时,它还可以与其他模块(如感知和控制)进行协同工作,从而实现整个自动驾驶系统的正常运行。 总之,Apollo Lattice Planner是一种用于自动驾驶系统的高效路径规划算法,它使用基于格子的表示方法,在城市环境中能够生成安全、高效的路径。它在自动驾驶领域中具有重要的应用潜力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值