基于高阶运动学模型与 Constrained iLQR/DDP 的自动驾驶轨迹规划算法

论文 Integrating Higher-Order Dynamics and Roadway-Compliance into Constrained ILQR-based Trajectory Planning for Autonomous Vehicles 介绍了当前基于 iLQR/DDP 的自动驾驶轨迹规划算法大多运用的是单车模型或简单的线性模型,这样对车辆运动学模型的粗略近似,对于微分动态规划等敏感度较高的优化算法来说,最终产生的轨迹不能很好的满足安全性和舒适性,使得实际工程化落地效果并不理想。

针对这种简单模型的局限性,文章引入了高阶运动学模型,对约束的处理则运用了松弛的对数障碍函数relaxed logarithmic barrier function),基于该高阶运动学模型进行带约束的 iLQR 轨迹规划,能更好的表达和设计更为丰富多样的代价函数以及约束条件,最终在复杂场景下收到更好的效果。

高阶运动学模型

文章对车辆运动学模型引入了高阶控制项,状态量是 [ x , y , v , θ , a , κ , κ ˙ ] [x,y,v,\theta,a,\kappa,\dot{\kappa}] [x,y,v,θ,a,κ,κ˙],控制量是 [ j , κ ¨ ] [j,\ddot{\kappa}] [j,κ¨],其中:

  1. ( x , y , θ ) (x,y,\theta) (x,y,θ) 描述了车辆的二维坐标以及车辆的航向角。
  2. v v v 是车辆的纵向速度。
  3. a a a 是车辆的纵向加速度。
  4. κ \kappa κ 是车辆的曲率。
  5. κ ˙ \dot{\kappa} κ˙ 是车辆的曲率对时间 t t t 的一阶导。
  6. j j j 是纵向 jerk
  7. κ ¨ \ddot{\kappa} κ¨ 是车辆的曲率对时间 t t t 的二阶导。

在每个离散的时间步 T r T_r Tr 内,假定 j j j κ ¨ \ddot{\kappa} κ¨ 都是恒定的,则该时间步内走过的距离 S r = v 0 T r + 1 2 a 0 T r 2 + 1 6 j 0 T r 3 S_r = v_0T_r + \frac12a_0T_r^2+\frac16j_0T_r^3 Sr=v0Tr+21a0Tr2+61j0Tr3,平均曲率 κ ˉ = 1 T r ∫ 0 T r κ ( t ) d t = κ 0 + 1 2 κ ˙ 0 T r + 1 6 κ ¨ 0 T r 2 \bar{\kappa} = \frac{1}{T_r}\int_0^{T_r}\kappa(t)dt=\kappa_0+\frac12\dot{\kappa}_0T_r+\frac16\ddot{\kappa}_0T_r^2 κˉ=Tr10Trκ(t)dt=κ0+21κ˙0Tr+61κ¨0Tr2

我们假设航向角的变化量与行驶距离成正比,则 d θ d s = κ ˉ \frac{d\theta}{ds}=\bar{\kappa} dsdθ=κˉ

运动学模型如下:

x 1 = x 0 + ∫ 0 S r cos ⁡ ( θ 0 + κ ˉ s ) d s = x 0 + sin ⁡ ( θ 0 + κ ˉ S r ) − sin ⁡ θ 0 κ ˉ ( κ ˉ ≠ 0 ) = x 0 + S r cos ⁡ θ 0 ( κ ˉ = 0 ) y 1 = y 0 + ∫ 0 S r sin ⁡ ( θ 0 + κ ˉ s ) d s = y 0 + − cos ⁡ ( θ 0 + κ ˉ S r ) + cos ⁡ θ 0 κ ˉ ( κ ˉ ≠ 0 ) = y 0 + S r sin ⁡ θ 0 ( κ ˉ = 0 ) v 1 = v 0 + a 0 T r + 1 2 j 0 T r 2 θ 1 = θ 0 + ∫ 0 S r κ ( s ) d s = θ 0 + ∫ 0 T r κ ( t ) v ( t ) d t κ 1 = κ 0 + κ ˙ 0 T r + 1 2 κ ¨ 0 T r 2 κ ˙ 1 = κ ˙ 0 + κ ¨ 0 T r \begin{aligned} & x_{1}&&=x_{0}+\int_{0}^{S_{r}}\operatorname{cos}{(\theta_{0}+\bar{\kappa}s)}ds \\ &&&\begin{aligned}=x_{0}+\frac{\sin\left(\theta_{0}+\bar{\kappa}S_{r}\right)-\sin\theta_{0}}{\bar{\kappa}}(\bar{\kappa}\neq0)\end{aligned} \\ &&&=x_0+S_r\cos\theta_0(\bar{\kappa}=0) \\ & y_{1} && \begin{aligned}=y_{0}+\int_{0}^{S_{r}}\sin{(\theta_{0}+\bar{\kappa}s)}ds\end{aligned} \\ &&&\begin{aligned}=y_0+\frac{-\cos{(\theta_0+\bar{\kappa}S_r)}+\cos{\theta_0}}{\bar{\kappa}}(\bar{\kappa}\neq0)\end{aligned} \\ &&&=y_0+S_r\sin\theta_0(\bar{\kappa}=0) \\ &v_{1}&& =v_0+a_0T_r+\frac12j_0T_r^2 \\ &\theta_{1}&& =\theta_{0}+\int_{0}^{S_{r}}\kappa(s)ds=\theta_{0}+\int_{0}^{T_{r}}\kappa(t)v(t)dt \\ &\kappa_{1}&& =\kappa_{0}+\dot{\kappa}_{0}T_{r}+\frac{1}{2}\ddot{\kappa}_{0}T_{r}^{2} \\ &\dot{\kappa}_{1}&& =\dot{\kappa}_0+\ddot{\kappa}_0T_r \end{aligned} x1y1v1θ1κ1κ˙1=x0+0Srcos(θ0+κˉs)ds=x0+κˉsin(θ0+κˉSr)sinθ0(κˉ=0)=x0+Srcosθ0(κˉ=0)=y0+0Srsin(θ0+κˉs)ds=y0+κˉcos(θ0+κˉSr)+cosθ0(κˉ=0)=y0+Srsinθ0(κˉ=0)=v0+a0Tr+21j0Tr2=θ0+0Srκ(s)ds=θ0+0Trκ(t)v(t)dt=κ0+κ˙0Tr+21κ¨0Tr2=κ˙0+κ¨0Tr

松弛障碍函数

CILQR 算法把每一项约束表示为一个代价函数项,从而使得初始轨迹不可行时,也能对轨迹进行迭代优化。文章对约束 g ( x , u ) g(x,u) g(x,u) 的代价计算采用了松弛对数障碍函数:

β r e l a x ( g ) = { − 1 t l o g ( − g ) ( g < − ϵ ) k − 1 t k [ ( − g − k ϵ ( k − 1 ) ϵ ) k − 1 ] − 1 t l o g ϵ ( g ≥ − ϵ ) \beta_{relax}(g)=\begin{cases}-\frac{1}{t}log(-g)&(g<-\epsilon)\\\frac{k-1}{tk}[(\frac{-g-k\epsilon}{(k-1)\epsilon})^k-1]-\frac{1}{t}log\epsilon&(g\ge-\epsilon)\end{cases} βrelax(g)={t1log(g)tkk1[((k1)ϵgkϵ)k1]t1logϵ(g<ϵ)(gϵ)

对于该函数中的参数,文章选择 k = 2 k=2 k=2 来保证它是 C 2 C^2 C2 型函数(即对任意的 ϵ \epsilon ϵ t t t 都大于 0 0 0)。对于所有不等式约束,文章选择 t = 5 t=5 t=5。而对于 ϵ \epsilon ϵ,则根据不同的约束,取不同的值。

代价函数

1. Lateral Acceleration

横向加速度:
a y = κ v 2 a_y=\kappa v^2 ay=κv2

横向加速度的代价函数项:
c o s t a y = w a y ⋅ a y 2 cost^{a_y} = w_{a_y}\cdot{a_y}^2 costay=wayay2

2. Lateral Jerk

横向 Jerk
j y = d d t ( v 2 κ ) = 2 v κ a x + v 2 L sec ⁡ 2 ( δ ) δ ˙ = 2 v κ a x + v 2 κ ˙ j_y=\frac{\mathrm d}{\mathrm dt}\left(v^2\kappa\right)=2v\kappa a_x+\frac{v^2}{L}\sec^2(\delta)\dot\delta=2v\kappa a_x+v^2\dot{\kappa} jy=dtd(v2κ)=2vκax+Lv2sec2(δ)δ˙=2vκax+v2κ˙

横向 Jerk 的代价函数项:
c o s t j y = w j y ⋅ j y 2 cost^{j_y} = w_{j_y}\cdot{j_y}^2 costjy=wjyjy2

3. Longitudinal Jerk

纵向 Jerk 的代价函数项:
c o s t j = w j ⋅ j 2 cost^j=w_j\cdot j^2 costj=wjj2

4. Direction Tracking

当前车辆航向角与道路方向的误差的平方作为方向追踪的代价函数项:

c o s t θ = w θ ⋅ ( θ k − θ k r ) 2 cost^{\theta}=w_{\theta}\cdot (\theta_k-\theta_k^r)^2 costθ=wθ(θkθkr)2

约束

  1. 车辆动力学约束
  2. 道路的边界约束
  3. 碰撞约束
  • 44
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值