路径规划算法总体介绍
Apollo路径规划算力总体可以包含以下几个部分:
- 路径决策
- 路径优化
- 速度决策
- 速度优化
以上按照顺序执行
路径规划三部曲
LANE_FOLLOW_PATH任务
LANE_BORROW_PATH任务
LANE_CHANGE_PATH任务
路径二次规划问题
二次规划的标准型如下
m i n i m i z e 1 2 x T P x + q T x s u b j e c t t o l ≤ A x ≤ u x ∈ R n P ∈ S + n q ∈ R n \begin{aligned}&\mathrm{minimize}\quad\frac{1}{2}x^TPx+q^Tx\\&\mathrm{subject~to}\quad l\leq Ax\leq u\\&x\in\mathbf{R}^n\quad P\in\mathbf{S}_+^n\quad q\in\mathbf{R}^n\end{aligned} minimize21xTPx+qTxsubject tol≤Ax≤ux∈RnP∈S+nq∈Rn
目前求解二次规划问题使用基于ADMM的osqp算法。
定义优化变量
给出参考线:
将障碍物投影到为frenet坐标系上:
定义 l ′ = d l d s l'=\frac{dl}{ds} l′=dsdl
间隔 Δ s \Delta s Δs将参考线离散化:
l 0 l 1 l 2 l n − 2 l n − 1 l 0 ′ → Δ s l 0 ′ → Δ s l 2 ′ … l n − 2 ′ → Δ s l n − 1 ′ l 0 ′ ′ l 0 ′ ′ l 2 ′ ′ l n − 2 ′ ′ l n − 1 ′ ′ \begin{array}{ccccccccccccc}l_0&&&l_1&&&l_2&&&l_{n-2}&&&l_{n-1}\\l_0^{\prime}&\xrightarrow{\Delta s}&&l_0^{\prime}&\xrightarrow{\Delta s}&&l_2^{\prime}&\ldots&&l_{n-2}^{\prime}&\xrightarrow{\Delta s}&&l_{n-1}^{\prime}\\l_0^{\prime\prime}&&&l_0^{\prime\prime}&&&l_2^{\prime\prime}&&&l_{n-2}^{\prime\prime}&&&l_{n-1}^{\prime\prime}\end{array} l0l0′l0′′Δsl1l0′l0′′Δsl2l2′l2′′…ln−2ln−2′ln−2′′Δsln−1ln−1′ln−1′′
x = { l 0 , l 1 , … , l n − 1 , l 0 ′ , l 1 ′ , … , l n − 1 ′ , l 0 ′ ′ , l 1 ′ ′ , … , l n − 1 ′ ′ } x=\begin{Bmatrix}l_0,l_1,\ldots,l_{n-1},l_0^{\prime},l_1^{\prime},\ldots,l_{n-1}^{\prime},l_0^{\prime\prime},l_1^{\prime\prime},\ldots,l_{n-1}^{\prime\prime}\end{Bmatrix} x={ l0,l1,…,ln−1,l0′,l1′,…,ln−1′,l0′′,l1′′,…,ln−1′′}
确定优化函数
- 确保安全、礼貌的驾驶,贴近车道中心线 :
∣ l i ∣ ↓ |l_i|\downarrow ∣li∣↓ - 确保舒适的体感,尽量降低横向速度/加速度/加加速度:
∣ l i ′ ∣ ↓ , ∣ l i ′ ′ ∣ ↓ , ∣ l i → i + 1 ′ ′ ′ ∣ ↓ |l_i^{\prime}|\downarrow,\quad|l_i^{\prime\prime}|\downarrow,\quad|l_{i\to i+1}^{\prime\prime\prime}|\downarrow ∣li′∣↓,∣li′′∣↓,∣li→i+1′′′∣↓ - 确保终点接近参考点:
l e n d = l r e f l_{end}=l_{ref} lend=lref
因为是二次规划,采用二范数作为损失函数,其目标函数为:
m i n f = ∑ i = 0 n − 1 w r e f ( l i − l i − r e f ) 2 + w l l i 2 + w d l l i ′ 2 + w d d l l i ′ ′ 2 + w d d d l l i ′ ′ ′ 2 + w e n d − l ( l n − 1 − l e n d − l ) 2 + w e n d − d l ( l n − 1 ′ − l e n d ′ ) 2 + w e n d − d d l ( l n − 1 ′ ′ − l e n d ′ ′ ) 2 \begin{aligned}&minf=\sum_{i=0}^{n-1}w_{ref}(l_i-l_{i-ref})^2+w_l{l_i}^2+w_{dl}{l_i^{\prime}}^2+w_{ddl}{l_i^{\prime\prime}}^2+w_{dddl}{l_i^{\prime\prime\prime}}^2+w_{end-l}(l_{n-1}-l_{end-l})^2\\&+w_{end-dl}({l_{n-1}^{\prime}}-l_{end}^{\prime})^2+w_{end-ddl}({l_{n-1}^{\prime\prime}}-l_{end}^{\prime\prime})^2\end{aligned} minf=i=0∑n−1wref(li−li−ref)2+wlli2+wdlli′