Advertisement

文献精读:Robust and Efficient Quadrotor Trajectory Generation for Fast Autonomous Flight

阅读量:

文献精读:Robust and Efficient Quadrotor Trajectory Generation for Fast Autonomous Flight

  • 提出了一种鲁棒且高效的轨迹生成方法

Kinodynamic Path Searching

继承了标准的A*框架,但其中Node为primitive,Edge为kinodynamic motion primitive

Primitives Generation

采用无人机的二重积分模型

\mathbf{p}(t)=[p_x(t),p_y(t),p_z(t)]^\topp_\mu(t)=\sum\limits_{k=0}^{K}a_kt^k,\ \mu=\{x,y,z\}

\mathbf{x}(t):=[\mathbf{p}(t)^\top,\mathbf{\dot{p}}(t)^\top]^\top\mathbf{u}(t):=\mathbf{\ddot{p}}(t)

\mathbf{\dot{x}}=\mathbf{Ax}+\mathbf{Bu}

\mathbf{A=\begin{bmatrix}0&\mathbf{I_3}\\ 0&0 \end{bmatrix}}\mathbf{B}=\begin{bmatrix}0\\ \mathbf{I_3} \end{bmatrix}

\mathbf{x}(t)=e^{\mathbf{A}t}\mathbf{x}_0+\int_0^t e^{\mathbf{A}(t-\tau)}\mathbf{Bu}(\tau)d\tau

在控制量离散时,对于每个轴的 [-u_{max},u_{max}],平均离散为 \{-u_{max},-\frac{r-1}{r}u_{max},...,\frac{r-1}{r}u_{max},u_{max}\},即共得到 (2r+1)^3 个 primitives

轨迹的目标是时间最优和控制输入最优,因此代价设为

\mathcal{J}(T)=\int_0^T \Vert \mathbf{u}(t)\Vert^2dt + \rho T

当离散输入为 \mathbf{u}(t)=\mathbf{u}_d 且时间段为 \tau

e_c=(\Vert \mathbf{u}_d\Vert +\rho)\tau

g_c 表示起点到当前状态的实际代价,假设含 J 个 primitives,则

g_c=\sum_{j=1}^J (\Vert \mathbf{u}_{dj}\Vert^2+\rho)\tau

利用庞特里亚金最小原则设计了 A* 所需要的启发式函数 h_c

总代价为 f_c=g_c+h_c

搜索结束条件:

由于搜索终点很难正好落于目标,每次从 open set 弹出节点后,都计算一条从当前点到终点的轨迹,若轨迹通过了安全性和可行性检查,则提前终止搜索。

B-spline Trajectory Optimization

uniform b-spline

b-spline 由次数 p_bN+1 个控制点 {Q_0,Q_1,\dots,Q_n},knot vector [t_0,t_1,\dots,t_M] 决定,且满足 M=N+p_b+1,定义域为 t\in[t_{p_b},t_{M-p_b}]

对于 uniform b-spline,knot vector 是均匀的,即 \triangle t_m=t_{m-1}-t_m 为常数 \triangle t

对一段时间进行归一化,即令 s(t)=(t-t_m)/\triangle t,则 t 时刻的位置可由矩阵形式表达为
\begin{aligned} \mathbf{p}(s(t)) &= \mathbf{s}(t)^\top \mathbf{M}_{p_b+1}\mathbf{q}_m \\ \mathbf{s}(t) &= \begin{bmatrix}1&s(t)&s^2(t)&\dots&s^{p_b}(t) \end{bmatrix}^\top\\ \mathbf{q}_m &= \begin{bmatrix}\mathbf{Q}_{m-p_b}&\mathbf{Q}_{m-p_b+1}&\mathbf{Q}_{m-p_b+2}&\dots&\mathbf{Q}_{m} \end{bmatrix}^\top \end{aligned}

convex hull property

利用 b-spline 的凸包性质,完成动力学约束的表示

b-spline 的导数仍是 b-spline,因此可得速度和加速度轨迹的控制点,只需保证控制点满足约束,则轨迹也满足约束

\{\mathbf{V}_0,\mathbf{V}_1,\dots,\mathbf{V}_{N-1}\}, \qquad \mathbf{V}_i\in[-v_{max},v_{max}]^3

\{\mathbf{A}_0,\mathbf{A}_1,\dots,\mathbf{A}_{N-2}\}, \qquad\mathbf{A}_i\in[-a_{max},a_{max}]^3

\mathbf{V}_i=\frac{1}{\triangle t}(\mathbf{Q}_{i+1}-\mathbf{Q}_i)

\mathbf{A}_i=\frac{1}{\triangle t}(\mathbf{V}_{i+1}-\mathbf{V}_i)

b-spline 的障碍物约束

d_h>d_c-r_h,\qquad r_h\le r_{12}+r_{23}+r_{34}

d_h>d_c-r_n\ge d_c-(r_{12}+r_{23}+r_{34})

如果保证 d_c>0,\ r_{j,j+1},则可保证

d_h>0

problem formulation

对于有 N+1 个控制点 \{Q_0,Q_1,\dots,Q_n\}p_b 次 b-spline,优化 N+1-2p_b 个控制点 \{Q_{p_b},Q_{p_b+1},\dots,Q_{N-p_b}\},开始和结束的控制点用来决定边界状态,因此不做更改

总的 cost 函数为

f_{total}=\lambda_1f_s+\lambda_2f_c+\lambda_3(f_v+f_a)

f_s 为 smoothness cost,与时间分配无关

f_s=\sum\limits_{i=p_b-1}^{N-p_b+1}\ \Vert(\mathbf{Q}_{i+1}-\mathbf{Q}_i)+(\mathbf{Q}_{i-1}-\mathbf{Q}_i) \Vert^2

该式通过控制点之间的向量差关系,表达了轨迹的平滑性。虽然控制点不在轨迹上,但控制点会影响轨迹的趋势。可见,若该表达式趋于0,说明控制点逼近一条直线,那么轨迹也逼近一条直线,则轨迹也趋近于最平滑。可看作是连接各节点的两个弹簧的合力。

f_c 为 collision cost

f_c=\sum\limits_{i=p_b}^{N-p_b}F_c(d(\mathbf{Q}_i))

KaTeX parse error: Unknown column alignment: ( at position 42: …{\begin{array}(̲d(\mathbf{Q}_i)…

其中,d(\mathbf{Q}_i) 为控制点 \mathbf{Q}_i 到最近障碍物的距离,d_{thr} 为距离阈值

f_vf_a 为速度和加速度 cost

KaTeX parse error: Unknown column alignment: ( at position 32: …{\begin{array}(̲(v_\mu^2-v_{max…

F_a(a_\mu) 类似

利用凸包性,可得

f_v=\sum\limits_{\mu\in\{x,y,z\}}\sum\limits_{i=p_b-1}^{N-p_b}F_v(V_{i\mu})

f_a=\sum\limits_{\mu\in\{x,y,z\}}\sum\limits_{i=p_b-2}^{N-p_b}F_a(A_{i\mu})

time adjustment

优化后的轨迹可能会不满足动力学约束,因此通过调整 Knot vector 来使之满足约束

对于一个 non-uniform b-spline,其微分的控制点为

\mathbf{V}_i'=\frac{p_b(\mathbf{Q}_{i+1}-\mathbf{Q}_{i})}{t_{i+p_b+1}-t_{i+1}}

\mathbf{A}_i'=\frac{(p_b-1)(\mathbf{V'}_{i+1}-\mathbf{V'}_{i})}{t_{i+p_b+1}-t_{i+2}}

设不可行的速度控制点为 \mathbf{V'}_i=[V'_{i,x},V'_{i,y},V'_{i,z}]^\top,其中最大的不可行值为 \vert V'_{i,\mu}\vert=v_m,若我们将时间段调整为 \hat{t}_{i+p_b+1}-\hat{t}_{i+1}=\mu_v(t_{i+p_b+1}-t_{i+1}),则
\begin{aligned} \hat{V}_{i,\mu}&=\frac{p_b}{\hat{t}_{i+p_b+1}-\hat{t}_{i+1}}(Q_{i+1,\mu}-Q_{i,\mu})\\ &=\frac{1}{\mu_v}\frac{p_b}{t_{i+p_b+1}-t_{i+1}}(Q_{i+1,\mu}-Q_{i,\mu})\\ &=\frac{1}{\mu_v}V'_{i,u} \end{aligned}
\mu_v=\frac{v_m}{v_{max}},则速度就可行了,即 \vert\hat{V}_{i,\mu}\vert=\frac{v_{max}}{v_m}\vert V'_{i,\mu}\vert=v_{max}\in[-v_{max},v_{max}]

对于加速度也类似,由于 A'_{i,\mu}V'_{i,\mu},V'_{i+1,\mu} 的耦合关系,实际受 t_{i+p_b+2}-t_{i+1} 影响,因此修改 \triangle t_m=t_{m+1}-t_m\triangle\hat{t}_m=\mu_a\triangle t_m,m\in\{i+1,i+2,\dots,i+p_b+1\},得
\begin{aligned} \hat{A}_{i,\mu}&=\frac{p_b-1}{\hat{t}_{i+p_b+1}-\hat{t}_{i+2}}(\hat{V}_{i+1,\mu}-\hat{V}_{i,\mu})\\ &=\frac{1}{\mu_a}\frac{p_b-1}{t_{i+p_b+1}-t_{i+2}}(\frac{1}{\mu_a}V'_{i+1,\mu}-\frac{1}{\mu_a}V'_{i,\mu})\\ &=\frac{1}{\mu_a^2}\frac{p_b-1}{t_{i+p_b+1}-t_{i+2}}(V'_{i+1,\mu}-V'_{i,\mu})\\ &=\frac{1}{\mu_a^2}A'_{i,u} \end{aligned}
\mu_a=(\frac{a_m}{a_{max}})^{\frac{1}{2}},则加速度就可行了,即 \vert\hat{A}_{i,\mu}\vert=\frac{a_{max}}{a_m}\vert A'_{i,\mu}\vert=a_{max}\in[-a_{max},a_{max}]

全部评论 (0)

还没有任何评论哟~