目录
论文 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,κ¨],其中:
- ( x , y , θ ) (x,y,\theta) (x,y,θ) 描述了车辆的二维坐标以及车辆的航向角。
- v v v 是车辆的纵向速度。
- a a a 是车辆的纵向加速度。
- κ \kappa κ 是车辆的曲率。
- κ ˙ \dot{\kappa} κ˙ 是车辆的曲率对时间 t t t 的一阶导。
- j j j 是纵向 jerk。
- κ ¨ \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 κˉ=Tr1∫0Trκ(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)tkk−1[((k−1)ϵ−g−kϵ)k−1]−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=way⋅ay2
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=wjy⋅jy2
3. Longitudinal Jerk
纵向 Jerk 的代价函数项:
c
o
s
t
j
=
w
j
⋅
j
2
cost^j=w_j\cdot j^2
costj=wj⋅j2
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
约束
- 车辆动力学约束
- 道路的边界约束
- 碰撞约束