5 基于优化的轨迹规划

5.1 全局方法 vs 局部方法

  1. 核心概念:全局方法 vs 局部方法
    在这里插入图片描述

    类别 核心思想 特点
    全局方法(Global Methods) 强调 探索(Exploration)+ 利用(Exploitation),在复杂环境中寻找全局最优解或可行路径 在采样次数趋于无穷时,保证趋于最优解
    局部方法(Local Methods) 强调 确定性优化(Deterministic Optimization),从初始点出发,逐步改进轨迹,追求局部最优 在采样次数趋于无穷时,不保证最优解
  2. 典型算法对比

    • 全局方法:Sampling + Graph Search

      算法 特点 应用场景
      PRM* / RRT* 随机采样构建图,渐进式优化路径 复杂环境、高维空间(如机械臂)
      A* 基于启发式的网格搜索 已知静态地图(如自动驾驶)
      JPS 跳点搜索(Jump Point Search),加速 A* 规则网格环境(如游戏AI)
    • 局部方法:

      算法 特点 应用场景
      CHOMP 梯度下降优化轨迹,考虑动力学 平滑轨迹生成(如机械臂抓取)
      DDP / iLQR 动态规划/迭代线性二次调节器 高精度控制(如无人机飞行)
      Flatness 利用系统平坦性参数化轨迹 无人机轨迹生成(如四旋翼)
      MPC / NMPC 模型预测控制,滚动优化 实时在线规划(如自动驾驶)
  3. 优缺点对比

    维度 全局方法 局部方法
    优点 • 全局最优性 • 处理复杂环境能力强 • 易移植 • 不需要高阶信息(零阶) • 局部最优性 • 处理动力学复杂性强 • 高维空间中速度快 • 收敛快
    缺点 • 高维空间中慢 • 难以融入动力学模型 • 收敛率差 • 更复杂 • 需要高阶信息(梯度、Hessian) • 易陷入浅层局部极小
  4. 实际部署方式:解耦架构,前段(front end)+ 后段(back end)结合

    • 前端(Global Method)
      • 如 RRT*, A* → 提供一条粗略但安全的路径
      • 解决“能不能到”的问题
    • 后端(Local Method)
      • 如 CHOMP, MPC → 将粗略路径优化为平滑、动力学可行的轨迹
      • 解决“怎么走才好”的问题

5.2 轨迹规划

  1. 轨迹的核心定义

    • 轨迹(Trajectory)是一个从时间 t t t 到某个空间的映射函数
      x ( t ) :   R → X \boldsymbol{x}(t):~\mathbb{R} \rightarrow \mathcal{X} x(t): RX

    • 其中 X \mathcal{X} X 可以是

      • Configuration Space(构型空间):如 ( x , y ) (x,y) (x,y)
      • State-Input Space(状态-输入空间):如 ( x , y , v x , v y , u x , u y ) (x,y,v_x,v_y,u_x,u_y) (x,y,vx,vy,ux,uy)
      • Flat Space(平坦空间):某些系统可参数化为多项式形式(如四旋翼)
    • 总结:轨迹是时间参数化 time-parameterized 的路径,具有空间和时间两个维度的信息

  2. 光滑性 smoothness 的含义
    在这里插入图片描述

    • 平滑性不是几何概念:很多高质量的轨迹在几何上并不“顺滑”,但在动力学上是可行且高效的。
    • 一个平滑的轨迹应至少满足以下两点
      • 满足系统的微分约束(differential constraints of dynamics), x ˙ = f ( x , u ) \dot{x}=f(x,u) x˙=f(x,u)
      • 最小化状态 x x x 和输入 u u u 的能量泛函(energy functional), min ⁡ ∫ 0 T L ( x , u ) d t \min\int_{0}^{T}\mathcal{L}(x,u)\mathrm{d}t min0TL(x,u)dt
  3. 为什么需要轨迹优化?

    • 如果我们已经有前端(路径发现),为什么还需要后端优化?
      • 因为前端只解决了“存在性”,没解决“质量性”
    • 如果前端已经是动力学可行的,为什么还需要后端优化?
      • 因为“动力学可行” ≠ “最优”

5.3 微分平坦 Differential Flatness

  1. 微分平坦的定义

    • 考虑一个动力学系统(以常微分方程描述)
      x ˙ = f ( x ) + g ( x ) u f : R n ↦ R n ,   g : R n ↦ R n ,   x ∈ R n ,   u ∈ R m , r a n k ( g ) = m \dot{x}=f(x)+g(x)u \\ f:\mathbb{R}^n \mapsto \mathbb{R}^n,~g:\mathbb{R}^n\mapsto\mathbb{R}^n,~x\in\mathbb{R}^n,~u\in\mathbb{R}^m, \mathrm{rank}(g)=m x˙=f(x)+g(x)uf:RnRn, g:RnRn, xRn, uRm,rank(g)=m
      如果存在一个输出变量 z ∈ R m z\in\mathbb{R}^m zRm,称为 flat output,其有限阶导数可以唯一确定系统的全部状态 x x x 和输入 u u u,则称这个动力系统是微分平坦的 differentially flat

    • 平坦输出 z z z 可以唯一确定系统的全部状态 x x x 和输入 u u u
      x = Ψ x ( z , z ˙ , ⋯   , z ( s − 1 ) ) u = Ψ u ( z , z ˙ , ⋯   , z ( s ) ) x=\Psi_x(z,\dot{z},\cdots,z^{(s-1)}) \\ u = \Psi_u(z,\dot{z},\cdots,z^{(s)}) x=Ψx(z,z˙,,z(s1))u=Ψu(z,z˙,,z(s))

  2. 微分平坦的意义

    • 微分平坦消除了微分约束
      在这里插入图片描述

    • 左图需满足动力学约束 G D ( x , u ) ⪯ 0 \mathcal{G}_D(x,u)\preceq0 GD(x,u)0,右图将所有状态和输入都表示为 z z z 的导数的函数,动力学约束也变成 G ( z , z ˙ , ⋯   , z ( s ) ) ⪯ 0 \mathcal{G}(z,\dot{z},\cdots,z^{(s)})\preceq0 G(z,z˙,,z(s))0

    • 但是左图需要满足的微分方程不再出现在右图。

  3. 多旋翼的动力学与微分平坦

    • 多种不同的多旋翼模型
      在这里插入图片描述

      • 具有平行螺旋桨的四旋翼是微分平坦的;
      • 受到线性风阻的四旋翼是微分平坦的;
      • 具有平行螺旋桨的八旋翼是微分平坦的;
      • 满足一定秩条件的带倾斜螺旋桨的多旋翼也是微分平坦的。
    • 不同的定义方式会带来不同的奇异点
      在这里插入图片描述

      • Hopf fibration 方法仅在多旋翼 up-side-down 时具有奇异。
      • 微分平坦多旋翼动力学应当考虑阻力同时减少奇异
  4. 多旋翼模型

    • 多旋翼状态向量
      x = { r , v , R , ω } ∈ R 3 × R 3 × S O ( 3 ) × R 3 x=\{r,v,R,\omega\}\in\mathbb{R}^3\times\mathbb{R}^3\times\mathrm{SO(3)}\times\mathbb{R}^3 x={r,v,R,ω}R3×R3×SO(3)×R3
      分别对应位置、速度、姿态旋转矩阵、角速度

    • 控制输入(在输入映射之后)
      u = { f , τ } ∈ R ≥ 0 × R 3 u=\{f,\tau\}\in\mathbb{R}_{\geq0}\times\mathbb{R}^3 u={f,τ}R0×R3
      分别对应总推力(沿机体 Z 轴,方向由姿态矩阵 R R R 决定),力矩

    • 非线性动力学方程
      { r ˙ = v , m v ˙ = − m g e 3 − R D R ⊤ σ ( ∥ v ∥ ) v + R f e 3 , R ˙ = R ω ^ M ω ˙ = τ − ω × M ω − A ( ω ) − B ( R ⊤ v ) \begin{cases} \dot{r} &= v, \\ m\dot{v} &= -mge_3 - RDR^\top\sigma(\|v\|)v+Rfe_3, \\ \dot{R} &= R\hat{\omega} \\ M\dot{\omega}&=\tau-\omega\times M\omega - A(\omega)-B(R^\top v) \end{cases} r˙mv˙R˙Mω˙=v,=mge3RDRσ(v)v+Rfe3,=Rω^=τω×MωA(ω)B(Rv)
      其中:

      • − m g e 3 -mge_3 mge3 表示重力(向下), − R D R ⊤ σ ( ∥ v ∥ ) v -RDR^\top\sigma(\|v\|)v RDRσ(v)v 代表空气阻力(线性阻尼项), R f e 3 Rfe_3 Rfe3 表示推力(沿机体 Z 轴,投影到惯性系)
      • τ \tau τ 外部施加的力矩; ω × M ω \omega\times M\omega ω×Mω 科里奥利项; A ( ω ) A(\omega) A(ω) 用户定义的“力矩诱导角速度”项(可忽略或用于建模); B ( R ⊤ v ) B(R^\top v) B(Rv) 用户定义的“速度诱导角速度”项(例如风扰影响)
      • D = d i a g ( d h , d h , d v ) D=\mathrm{diag}(d_h,d_h,d_v) D=diag(dh,dh,dv) 阻力系数
    • 平坦输出 Flat Output
      z = { r , ψ } ∈ R × S O ( 2 ) z=\{r,\psi\}\in\mathbb{R}\times\mathrm{SO(2)} z={r,ψ}R×SO(2)
      其中: r r r 是三维位置, ψ \psi ψ 是偏航角

  5. 求解微分平坦变换

    • 显然成立
      r = r , v = r ˙ \color{red} r=r, v=\dot{r} r=r,v=r˙

    • 利用牛顿方程投影到机体坐标系

      • 定义机体 X / Y X/Y X/Y 轴在惯性系中的方向
        x b = R e 1 ,   y b = R e 2 x_b=Re_1,~y_b=Re_2 xb=Re1, yb=Re2

        ( R e i ) ⊤ (Re_i)^\top (Rei) 则是将向量从惯性系投影到机体 i i i 轴的操作

      • 对牛顿第二定律点乘机体 X / Y X/Y X/Y
        ( R e i ) ⊤ m v ˙ = ( R e i ) ⊤ ( − m g e 3 − R D R ⊤ σ ∥ v ∥ v + R f e 3 ) ,    ∀ i ∈ { 1 , 2 } (Re_i)^\top m\dot{v}=(Re_i)^\top(-mge_3-RDR^\top\sigma\|v\|v+Rfe_3),~~\forall i\in\{1,2\} (Rei)mv˙=(Rei)(mge3RDRσvv+Rfe3),  i{1,2}

      • 化简结果
        ( R e i ) ⊤ ( v ˙ + d n m σ ( ∥ v ∥ ) v + g e 3 ) = 0 ,    ∀ i ∈ { 1 , 2 } (Re_i)^\top(\dot{v}+\frac{d_n}{m}\sigma(\|v\|)v+ge_3)=0,~~\forall i\in\{1,2\} (Rei)(v˙+mdnσ(v)v+ge3)=0,  i{1,2}
        说明:机体 X/Y 轴必须垂直于某个特定向量,记这个向量为
        a e f f = v ˙ + d h m σ ( ∥ v ∥ ) v + g e 3 a_{eff}=\dot{v}+\frac{d_h}{m}\sigma(\|v\|)v+ge_3 aeff=v˙+mdhσ(v)v+ge3

    • 计算机体 Z 轴方向和阻力大小

      • 推力和机体 Z 轴方向一致,定义该方向在惯性系下的表示为
        z b = N ( a e f f ) = N ( v ˙ + d h m σ ( ∥ v ∥ ) v + g e 3 ) \color{red} z_b=\mathcal{N}(a_{eff})=\mathcal{N}(\dot{v}+\frac{d_h}{m}\sigma(\|v\|)v+ge_3) zb=N(aeff)=N(v˙+mdhσ(v)v+ge3)
        其中 N : = x ∥ x ∥ \mathcal{N}:=\frac{x}{\|x\|} N:=xx 表示向量归一化

      • 将牛顿方程点乘 机体 Z 轴 R e 3 Re_3 Re3
        ( R e 3 ) ⊤ m v ˙ = ( R e 3 ) ⊤ ( − m g e 3 − R D R ⊤ σ ( ∥ v ∥ ) v + R f e 3 ) (Re_3)^\top m\dot{v}=(Re_3)^\top(-mge_3-RDR^\top\sigma(\|v\|)v+Rfe_3) (Re3)mv˙=(Re3)(mge3RDRσ(v)v+Rfe3)
        化简后得到推力大小的显式表达式
        f = z b ⊤ ( m v ˙ + d v σ ( ∥ v ∥ ) v + m g e 3 ) \color{red} f=z_b^\top(m\dot{v}+d_v\sigma(\|v\|)v+mge_3) f=zb(mv˙+dvσ(v)v+mge3)

    • 为了构造完整的姿态四元数 q q q,将总旋转分解为两部分

      • 偏航旋转 Yaw Rotation:绕惯性系 Z 轴旋转角度 ψ \psi ψ,对应四元数
        q ψ = ( cos ⁡ ( ψ / 2 ) ,   0 ,   0 ,   sin ⁡ ( ψ / 2 ) ) ⊤ q_\psi=(\cos(\psi/2),~0,~0,~\sin(\psi/2))^\top qψ=(cos(ψ/2), 0, 0, sin(ψ/2))

        这是标准的绕 Z 轴旋转的单位四元数表示

      • 倾斜旋转 Tilt Rotation:将机体 Z 轴从“向上”调整到目标方向 z b z_b zb,这个旋转不包含绕惯性 Z 轴的分量(即没有额外偏航),使用 Hopf fibration 方法进行分解,对应四元数为
        q z = 1 2 ( 1 + z b ( 3 ) ) ( 1 + z b ( 3 ) , − z b ( 2 ) , z b ( 1 ) , 0 ) ⊤ q_z=\frac{1}{\sqrt{2(1+z_b(3))}}(1+z_b(3),-z_b(2),z_b(1),0)^\top qz=2(1+zb(3)) 1(1+zb(3),zb(2),zb(1),0)

    • 总姿态四元数

      • 复合旋转,先做倾斜旋转再做偏航旋转,总旋转为
        q = q z ⊗ q ψ q=q_z\otimes q_\psi q=qzqψ

      • 展开后的结果:将两个四元数相乘并展开
        q = 1 2 ( 1 + z b ( 3 ) ) [ ( 1 + z b ( 3 ) ) cos ⁡ ( ψ / 2 ) − z b ( 2 ) cos ⁡ ( ψ / 2 ) + z b ( 1 ) sin ⁡ ( ψ / 2 ) z b ( 1 ) cos ⁡ ( ψ / 2 ) + z b ( 2 ) sin ⁡ ( ψ / 2 ) ( 1 + z b ( 3 ) ) sin ⁡ ( ψ / 2 ) ] \color{red} q=\frac{1}{\sqrt{2(1+z_b(3))}}\begin{bmatrix} (1+z_b(3))\cos(\psi/2) \\ -z_b(2)\cos(\psi/2)+z_b(1)\sin(\psi/2) \\ z_b(1)\cos(\psi/2) + z_b(2)\sin(\psi/2) \\ (1+z_b(3))\sin(\psi/2) \end{bmatrix} q=2(1+zb(3)) 1 (1+zb(3))cos(ψ/2)zb(2)cos(ψ/2)+zb(1)sin(ψ/2)zb(1)cos(ψ/2)+zb(2)sin(ψ/2)(1+zb(3))sin(ψ/2)

      • 一旦有了 q q q,就可以通过标准公式计算旋转矩阵
        R = R q u a t ( q ) \color{red} R=\mathcal{R}_{quat}(q) R=Rquat(q)
        这样就得到了完整的姿态 R R R,即 x = { r , v , R , ω } x=\{r,v,R,\omega\} x={r,v,R,ω} 中的 R R R

    • 旋转矩阵与角速度

      • 对于刚体运动,有经典公式
        R ˙ = R ω ^ \dot{R}=R\hat{\omega} R˙=Rω^
        这意味着角速度 ω \omega ω 可以通过 R R R R ˙ \dot{R} R˙ 计算出来,即
        ω = ( R ⊤ R ˙ ) ∨ \omega=(R^\top \dot{R})^\vee ω=(RR˙)

      • 使用四元数表示角速度
        ω = 2 ( q z ⊗ q ψ ) − 1 ⊗ ( q ˙ z ⊗ q ψ + q z ⊗ q ˙ ψ ) \omega=2(q_z\otimes q_\psi)^{-1}\otimes(\dot{q}_z\otimes q_\psi+q_z\otimes \dot{q}_\psi) ω=2(qzqψ)1(q˙zqψ+qzq˙ψ)
        代入具体的表达式
        ω = ( z ˙ b ( 1 ) sin ⁡ ( ψ ) − z ˙ b ( 2 ) cos ⁡ ( ψ ) − z ˙ b ( 3 ) ( z b ( 1 ) sin ⁡ ( ψ ) − z b ( 2 ) cos ⁡ ( ψ ) ) 1 + z b ( 3 ) z ˙ b ( 1 ) cos ⁡ ( ψ ) + z ˙ b ( 2 ) sin ⁡ ( ψ ) − z ˙ b ( 3 ) ( z b ( 1 ) cos ⁡ ( ψ ) + z b ( 2 ) sin ⁡ ( ψ ) ) 1 + z b ( 3 ) z b ( 2 ) z ˙ b ( 1 ) − z b ( 1 ) z ˙ b ( 2 ) 1 + z b ( 3 ) + ψ ˙ ) \color{red} \omega = \begin{pmatrix} \frac{ \dot{z}_b(1) \sin(\psi) - \dot{z}_b(2) \cos(\psi) - \dot{z}_b(3)(z_b(1)\sin(\psi) - z_b(2)\cos(\psi)) }{1 + z_b(3)} \\ \frac{ \dot{z}_b(1) \cos(\psi) + \dot{z}_b(2) \sin(\psi) - \dot{z}_b(3)(z_b(1)\cos(\psi) + z_b(2)\sin(\psi)) }{1 + z_b(3)} \\ \frac{ z_b(2)\dot{z}_b(1) - z_b(1)\dot{z}_b(2) }{1 + z_b(3)} + \dot{\psi} \end{pmatrix} ω= 1+zb(3)z˙b(1)sin(ψ)z˙b(2)cos(ψ)z˙b(3)(zb(1)sin(ψ)zb(2)cos(ψ))1+zb(3)z˙b(1)cos(ψ)+z˙b(2)sin(ψ)z˙b(3)(zb(1)cos(ψ)+zb(2)sin(ψ))1+zb(3)zb(2)z˙b(1)zb(1)z˙b(2)+ψ˙

        这个公式看起来复杂,但它完全是由 z b ( t ) z_b(t) zb(t) ψ ( t ) \psi(t) ψ(t) 的导数构成的。

    • z b z_b zb 求导:为了完成整个表达,需要知道 z ˙ b \dot{z}_b z˙b,即机体 Z 轴方向的变化率
      z ˙ b = d h m D N ( v ˙ + d h m σ ( ∥ v ∥ ) v + g e 3 ) T ( m d h v ¨ + σ ( ∥ v ∥ ) v ˙ + σ ˙ ( ∥ v ∥ ) v T v ˙ ∥ v ∥ v ) \color{red} \dot{z}_b = \frac{d_h}{m} \mathcal{D}N(\dot{v} + \frac{d_h}{m}\sigma(\|v\|)v + g e_3)^T \left( \frac{m}{d_h} \ddot{v} + \sigma(\|v\|)\dot{v} + \dot{\sigma}(\|v\|)\frac{v^T \dot{v}}{\|v\|} v \right) z˙b=mdhDN(v˙+mdhσ(v)v+ge3)T(dhmv¨+σ(v)v˙+σ˙(v)vvTv˙v)
      其中
      D N ( x ) : = 1 ∥ x ∥ ( I − x x T x T x ) . \mathcal{D}N(x) := \frac{1}{\|x\|} \left( I - \frac{x x^T}{x^T x} \right). DN(x):=x1(IxTxxxT).
      是单位化操作的雅可比矩阵。

    • 计算力矩

      • 从表示旋转动力学的欧拉方程中,解出
        τ = M ω ˙ + ω × M ω + A ( ω ) + B ( R ⊤ v ) \color{red} \tau=M\dot{\omega}+\omega\times M\omega +A(\omega)+B(R^\top v) τ=Mω˙+ω×Mω+A(ω)+B(Rv)

      • 只要知道 ω ( t ) \omega(t) ω(t),就能算出 τ ( t ) \tau(t) τ(t),而 ω ( t ) \omega(t) ω(t) 已经完全由 r ( t ) , ψ ( t ) r(t),\psi(t) r(t),ψ(t) 的导数表示

  6. 总结

    • 核心步骤
      • 设定 flat output: z = { r , ψ } z=\{r,\psi\} z={r,ψ}
      • 得到速度 v = r ˙ v=\dot{r} v=r˙,加速度 a = r ¨ a=\ddot{r} a=r¨
      • 构造了机体 Z 轴方向: z b = N ( r ¨ + d h m σ ( ∥ r ˙ ∥ ) r ˙ + g e 3 ) z_b=\mathcal{N}\left( \ddot{r}+\frac{d_h}{m}\sigma(\|\dot{r}\|)\dot{r}+ge_3 \right) zb=N(r¨+mdhσ(r˙)r˙+ge3)
      • 利用 Hopf fibration 和四元数复合,得到完整的姿态 R R R
      • 计算出角速度 ω \omega ω(由 z b z_b zb ψ \psi ψ 的导数表达)
      • 求解力矩 τ \tau τ
    • 结果:所有变量都由 flat output 表达
      • r r r:直接是 z z z
      • v v v r ˙ \dot{r} r˙
      • R R R:由 z b z_b zb ψ \psi ψ 构造
      • ω \omega ω:由 z ˙ b , ψ ˙ , z b , ψ \dot{z}_b,\dot{\psi},z_b,\psi z˙b,ψ˙,zb,ψ 表达
      • f f f:由 z b z_b zb r ¨ , r ˙ \ddot{r},\dot{r} r¨,r˙ 表达
      • τ \tau τ:由 ω ˙ , ω , R , v \dot{\omega},\omega,R,v ω˙,ω,R,v 表达
    • [Qwen] 成立的前提条件:多旋翼系统是微分平坦的,当且仅当
      • 推力方向可控(通过姿态调整)
      • 推力大小可独立调节( f ≥ 0 f\geq0 f0
      • 偏航角 ψ \psi ψ 可独立控制(通过力矩 τ z \tau_z τz
      • 系统无不可控的内部动态(如柔性结构,未建模执行器延迟等)
      • 空气动力学模型足够简单(如线性阻尼或可忽略)
      • 最核心的物理条件是:推力必须始终沿机体 Z 轴,且该轴可通过姿态任意指向(除奇异点外)
  7. 基于平坦性的规划-控制闭环架构
    在这里插入图片描述

    • 上层:轨迹规划器,输出期望的 flat output 轨迹
    • 中间层:位置控制器,输出期望的姿态指令 ϕ c , θ c , ψ d e s \phi_c,\theta_c,\psi_{des} ϕc,θc,ψdes
    • 下层:姿态控制器,输出控制信号 u 2 , u 3 , u 4 u_2,u_3,u_4 u2,u3,u4,即力矩指令
    • 最终执行器:多旋翼无人机,接受总推力 u 1 = f u_1=f u1=f 和三个力矩 u 2 , u 3 , u 4 u_2,u_3,u_4 u2,u3,u4
  8. 通过样条曲线参数化 flat output

    • flat output
      z = { r , ψ } ∈ R 3 × S O ( 2 ) z=\{r,\psi\} \in\mathbb{R}^3\times\mathrm{SO(2)} z={r,ψ}R3×SO(2)

    • 在 flat-output 空间的一条轨迹
      z ( t ) :   [ 0 , T ] ↦ R 3 × S O ( 2 ) z(t):~[0,T] \mapsto \mathbb{R}^3\times\mathrm{SO(2)} z(t): [0,T]R3×SO(2)

    • 使用 样条(splines) 来参数化这条轨迹的优点

      • 易于确定光滑性准则
      • 容易且闭式计算导数
      • 三维空间中的解耦轨迹生成
      • 高数值稳定性

5.4 轨迹优化

  • 通用最优控制问题 General problem formulation
    min ⁡ z ( t ) ,   T ∫ 0 T v ( t ) ⊤ W   v ( t )   d t + ρ ( T ) , s. t. z ( s ) ( t ) = v ( t ) , ∀ t ∈ [ 0 , T ] , G ( z ( t ) , z ˙ ( t ) , … , z ( s ) ( t ) ) ≤ 0 , ∀ t ∈ [ 0 , T ] , z ( t ) ∈ F , ∀ t ∈ [ 0 , T ] , z [ s − 1 ] ( 0 ) = z ˉ o , z [ s − 1 ] ( T ) = z ˉ f , where z [ s − 1 ] : = ( z ⊤ z ˙ ⊤ z ¨ ⊤ ⋯ z ( s − 1 ) ⊤ ) ⊤ . \begin{aligned} & \min_{z(t),\, T} \int_0^T v(t)^\top \mathbf{W} \, v(t) \, dt + \rho(T), \\ \text{s. t.} & \quad z^{(s)}(t) = v(t), \quad \forall t \in [0, T], \\ & \quad \mathcal{G}\big(z(t), \dot{z}(t), \dots, z^{(s)}(t)\big) \leq \mathbf{0}, \quad \forall t \in [0, T], \\ & \quad z(t) \in \mathcal{F}, \quad \forall t \in [0, T], \\ & \quad z^{[s-1]}(0) = \bar{z}_o, \quad z^{[s-1]}(T) = \bar{z}_f, \\ \text{where} &\quad z^{[s-1]} := \begin{pmatrix} z^\top & \dot{z}^\top & \ddot{z}^\top & \cdots & z^{(s-1)\top} \end{pmatrix}^\top. \end{aligned} s. t.wherez(t),Tmin0Tv(t)Wv(t)dt+ρ(T),z(s)(t)=v(t),t[0,T],G(z(t),z˙(t),,z(s)(t))0,t[0,T],z(t)F,t[0,T],z[s1](0)=zˉo,z[s1](T)=zˉf,z[s1]:=(zz˙z¨z(s1)).

    • W \mathbf{W} W 一般可以是对角矩阵 d i a g ( w 1 , w 2 , ⋯   , w s ) \mathrm{diag}(w_1,w_2,\cdots,w_s) diag(w1,w2,,ws)
    • 通用但是求解困难
  • 在平坦输出的空间中显式最小化其高阶导数

    • 为什么最小化高阶导数?

      最小化目标 物理意义 工程优势
      Min jerk 最小化角速度变化率 视觉跟踪稳定,减少抖动
      Min snap 最小化推力变化率 节省能源,延长续航
    • 各阶导数对应什么物理量

      导数阶数 平移(Translation) 旋转(Rotation) 推力(Thrust)
      1 Velocity(速度)
      2 Acceleration(加速度) Rotation(旋转角度)
      3 Jerk(加加速度) Angular Velocity(角速度) Thrust(推力)
      4 Snap(加加加速度) Angular Acceleration(角加速度) Differential Thrust(推力变化率)

5.5 无约束情形 Unconstrained case:

5.5.1 边界值问题 BVP

  1. 无约束情形
    在这里插入图片描述

    • 不考虑障碍物、边界、动力学极限等限制,只求解一个最简单的最优控制问题。

    • BIVP 数学形式定义,不考虑 F , G , ρ ( T ) \mathcal{F},\mathcal{G},\rho(T) F,G,ρ(T)
      min ⁡ z ( t ) ,   T ∫ 0 T v ( t ) ⊤ W v ( t ) d t , s. t. z ( s ) ( t ) = v ( t ) , ∀ t ∈ [ 0 , T ] , z [ s − 1 ] ( 0 ) = z ˉ o , z [ s − 1 ] ( T ) = z ˉ f , ⏟ Boundary value z [ d i − 1 ] ( t i ) = z ˉ i , 1 ≤ i < M , ⏟ Intermediate value t i − 1 < t i , 1 ≤ i < M . \begin{aligned} & \min_{z(t),\, T} \int_0^T v(t)^\top \mathbf{W} v(t) \mathrm{d}t, \\ \text{s. t.} & \quad z^{(s)}(t) = v(t), \quad \forall t \in [0, T], \\ & \underbrace{\color{green} \quad z^{[s-1]}(0) = \bar{z}_o, \quad z^{[s-1]}(T) = \bar{z}_f,}_{\text{Boundary value}} \\ & \underbrace{\color{blue} z^{[d_i-1]}(t_i)=\bar{z}_i,\quad 1\leq i < M,}_{\text{Intermediate value}} \\ & t_{i-1}<t_i,\quad 1\leq i<M. \end{aligned} s. t.z(t),Tmin0Tv(t)Wv(t)dt,z(s)(t)=v(t),t[0,T],Boundary value z[s1](0)=zˉo,z[s1](T)=zˉf,Intermediate value z[di1](ti)=zˉi,1i<M,ti1<ti,1i<M.
      关键点 P 0 P_0 P0 起点; P 1 , P 2 , ⋯   , P N P_1,P_2,\cdots,P_N P1,P2,,PN 中间路径点 waypoints; P f P_f Pf 终点。

    • 蓝色虚线圈表示中间值约束(intermediate values),即在某些时刻必须满足特定状态。

    • 物理意义:这是在规划一条从 P 0 P_0 P0 P f P_f Pf 的平滑轨迹,途中经过若干关键点,并可能在某些时间点满足额外条件(如速度、加速度要求)。

  2. 定理:最优性条件 Optimality Conditions

    • 一条轨迹 z ∗ ( t ) z^*(t) z(t) 是最优的,当且仅当以下条件成立

      • 边界值 Boundary value:每一段子区间上的轨迹是一个 2 s − 1 2s-1 2s1 次多项式 → 即每个时间段内用一个高次多项式拟合(如 s = 4 s=4 s=4 时用 7 7 7 次多项式)

      • 所有边界和中间条件都满足 → 包括起点、终点、中间点的状态要求

      • 中间值 Intermediate value:在每个中间点 t i t_i ti,轨迹具有 2 s − d i − 1 2s-d_i-1 2sdi1 阶连续可微性 → 保证光滑连接(例如 s = 4 , d i = 3 s=4,d_i=3 s=4,di=3 时,需要 C 3 C^3 C3 连续)

    • 此外:满足这些条件的最优轨迹是唯一的。

    • 总结:在无约束情况下,最小化某阶导数的积分问题,其最优解是分段 2 s − 1 2s-1 2s1 次多项式,且在边界和中间点满足给定条件——这就是现代无人机轨迹优化的核心理论依据。

  3. 边界值问题 Boundary value problem(BVP)

    • BVP 数学形式:只考虑起点和终点的边界条件,不包含中间点约束
      min ⁡ z ( t ) ∫ 0 T v ( t ) ⊤ W v ( t ) d t , s.t. z ( s ) ( t ) = v ( t ) , ∀ t ∈ [ 0 , T ] , z [ s − 1 ] ( t 0 ) = z ˉ o , z [ s − 1 ] ( t M ) = z ˉ f . ⏟ Boundary value \begin{aligned} & \min_{z(t)} \int_0^T v(t)^\top \mathbf{W} v(t) dt, \\ & \text{s.t.} \quad z^{(s)}(t) = v(t), \quad \forall t \in [0,T], \\ & \underbrace{\color{green}\quad z^{[s-1]}(t_0) = \bar{z}_o, \quad z^{[s-1]}(t_M) = \bar{z}_f.}_{\text{Boundary value}} \end{aligned} z(t)min0Tv(t)Wv(t)dt,s.t.z(s)(t)=v(t),t[0,T],Boundary value z[s1](t0)=zˉo,z[s1](tM)=zˉf.

    • 说明

      • 最小化控制输入 v ( t ) v(t) v(t) 的能量,如 jerk 或 snap
      • z ( t ) z(t) z(t) 是平坦输出,如位置和偏航角
      • v ( t ) = z ( s ) ( t ) v(t)=z^{(s)}(t) v(t)=z(s)(t):即 v v v z z z s s s 阶导数
    • 物理意义

      • 求一条从初始状态到目标状态的最优轨迹,使运动尽可能平滑。
    • 用于接球任务的不同运动原语
      在这里插入图片描述

      • 从同一个起点出发,到达不同的终点,形成一个“扇形”空间
      • s = 3 s=3 s=3(最小化 jerk)时,最优解是 5 次多项式
      • s = 4 s=4 s=4(最小化 snap)时,最优解是 7 次多项式
  4. 通过 BVP 生成光滑一维轨迹
    在这里插入图片描述

    • 轨迹参数化:设计一条 5 5 5 次多项式
      x ( t ) = c 0 + c 1 t + c 2 t 2 + c 3 t 3 + c 4 t 4 + c 5 t 5 x(t) = c_0 + c_1 t + c_2 t^2 + c_3 t^3 + c_4 t^4 + c_5 t^5 x(t)=c0+c1t+c2t2+c3t3+c4t4+c5t5

    • 要求满足边界条件

      时间 位置 速度 加速度
      t = 0 t=0 t=0 a a a 0 0
      t = T t=T t=T b b b 0 0
    • 将边界条件代入多项式及其导数,得到线性方程组
      [ a 0 0 b 0 0 ] = [ 1 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 1 T T 2 T 3 T 4 T 5 0 1 2 T 3 T 2 4 T 3 5 T 4 0 0 2 6 T 12 T 2 20 T 3 ] [ c 0 c 1 c 2 c 3 c 4 c 5 ] \begin{bmatrix} a \\ 0 \\ 0 \\ b \\ 0 \\ 0 \end{bmatrix}= \begin{bmatrix} 1 & 0 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 \\ 0 & 0 & 2 & 0 & 0 & 0 \\ 1 & T & T^2 & T^3 & T^4 & T^5 \\ 0 & 1 & 2T & 3T^2 & 4T^3 & 5T^4 \\ 0 & 0 & 2 & 6T & 12T^2 & 20T^3 \end{bmatrix} \begin{bmatrix} c_0 \\ c_1 \\ c_2 \\ c_3 \\ c_4 \\ c_5 \end{bmatrix} a00b00 = 100100010T10002T22T2000T33T26T000T44T312T2000T55T420T3 c0c1c2c3c4c5
      矩阵形式
      d = A F ( T ) c ⇒ c = A F − 1 ( T ) d d = \mathbf{A}_F(T) c \quad\Rightarrow\quad c = \mathbf{A}^{-1}_F(T)d d=AF(T)cc=AF1(T)d

    • 连续性准则:高阶连续性由参数化方式保证

  5. 通过 BVPs 生成多段平滑轨迹

    • 轨迹参数化:使用 5 次多项式
      x ( t ) = c 0 + c 1 t + c 2 t 2 + c 3 t 3 + c 4 t 4 + c 5 t 5 x(t) = c_0 + c_1 t + c_2 t^2 + c_3 t^3 + c_4 t^4 + c_5 t^5 x(t)=c0+c1t+c2t2+c3t3+c4t4+c5t5

    • 边界条件

      时间 位置 速度 加速度
      t = 0 t=0 t=0 a a a v 0 \color{red} v_0 v0 0
      t = T t=T t=T b b b v r \color{red} v_r vr 0
    • 求解线性方程组
      [ a v 0 0 b v T 0 ] = [ 1 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 1 T T 2 T 3 T 4 T 5 0 1 2 T 3 T 2 4 T 3 5 T 4 0 0 2 6 T 12 T 2 20 T 3 ] [ c 0 c 1 c 2 c 3 c 4 c 5 ] \begin{bmatrix} a \\ {\color{red} v_0} \\ 0 \\ b \\ {\color{red} v_T} \\ 0 \end{bmatrix}= \begin{bmatrix} 1 & 0 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 \\ 0 & 0 & 2 & 0 & 0 & 0 \\ 1 & T & T^2 & T^3 & T^4 & T^5 \\ 0 & 1 & 2T & 3T^2 & 4T^3 & 5T^4 \\ 0 & 0 & 2 & 6T & 12T^2 & 20T^3 \end{bmatrix} \begin{bmatrix} c_0 \\ c_1 \\ c_2 \\ c_3 \\ c_4 \\ c_5 \end{bmatrix} av00bvT0 = 100100010T10002T22T2000T33T26T000T44T312T2000T55T420T3 c0c1c2c3c4c5
      矩阵形式
      d = A F ( T ) c ⇒ c = A F − 1 ( T ) d d=\mathbf{A}_F(T) c \quad\Rightarrow\quad c = \mathbf{A}^{-1}_F(T)d d=AF(T)cc=AF1(T)d
      矩阵 A F ( T ) A_F(T) AF(T) 是固定的,只依赖于时间 T T T,可预先计算或缓存。

    • 折线路径被平滑处理后的示例
      在这里插入图片描述

      • 原始路径:由多个直线段组成(红色虚线)
      • 平滑后路径:蓝色曲线,连接所有关键点
      • 关键特征
        • 在每个拐角处有圆弧状过渡
        • 优先保持恒定速度 v v v
        • 优先保持零加速度
        • 需要对短段进行特殊处理
  6. 边界值问题 BVP 的显式解

    • 原始优化问题数学形式
      min ⁡ z ( t ) ∫ 0 T v ( t ) ⊤ W v ( t ) d t , s.t. z ( s ) ( t ) = v ( t ) , ∀ t ∈ [ 0 , T ] , z [ s − 1 ] ( 0 ) = z ˉ o , z [ s − 1 ] ( T ) = z ˉ f . \min_{z(t)} \int_0^T v(t)^\top \mathbf{W} v(t) dt, \\ \text{s.t.} \quad z^{(s)}(t) = v(t), \quad \forall t \in [0,T], \\ \quad z^{[s-1]}(0) = \bar{z}_o, \quad z^{[s-1]}(T) = \bar{z}_f. z(t)min0Tv(t)Wv(t)dt,s.t.z(s)(t)=v(t),t[0,T],z[s1](0)=zˉo,z[s1](T)=zˉf.
      这个 BVP 问题具有显式解,解总是有 2 s − 1 2s-1 2s1 次多项式

    • 正向映射
      d = A F ( T ) c , where A F ( t ) = [ E 0 F ( t ) G ( t ) ] d = \mathbf{A}_F(T) c, \quad \text{where} \quad \mathbf{A}_F(t) = \begin{bmatrix} \mathbf{E} & \mathbf{0} \\ \mathbf{F}(t) & \mathbf{G}(t) \end{bmatrix} d=AF(T)c,whereAF(t)=[EF(t)0G(t)]
      其中: d d d 是边界条件向量(包含位置、速度、加速度等); c c c 多项式系数向量; A F ( T ) A_F(T) AF(T) 依赖于时间 T T T 的矩阵
      E i j = { ( i − 1 ) ! if  i = j , 0 if  i ≠ j , F i j ( t ) = { ( j − 1 ) ! / ( j − i ) ! ⋅ t j − i if  i ≤ j , 0 if  i > j , G i j ( t ) = ( s + j − 1 ) ! ( s + j − i ) ! ⋅ t s − i − j \mathbf{E}_{ij} = \begin{cases} (i-1)! & \text{if } i = j, \\ 0 & \text{if } i \ne j, \end{cases} \\ \mathbf{F}_{ij}(t) = \begin{cases} (j-1)! / (j-i)! \cdot t^{j-i} & \text{if } i \le j, \\ 0 & \text{if } i > j, \end{cases} \\ \mathbf{G}_{ij}(t) = \frac{(s+j-1)!}{(s+j-i)!} \cdot t^{s-i-j} Eij={(i1)!0if i=j,if i=j,Fij(t)={(j1)!/(ji)!tji0if ij,if i>j,Gij(t)=(s+ji)!(s+j1)!tsij
      T T T 很小时,求 A F ( T ) \mathbf{A}_F(T) AF(T) 的逆存在不稳定的问题,能否直接表示出它的逆 → 逆向映射

    • 逆向映射
      c = A B ( T ) d , where A B ( t ) = [ U 0 V ( t ) W ( t ) ] c = \mathbf{A}_B(T) d, \quad \text{where} \quad \mathbf{A}_B(t) = \begin{bmatrix} \mathbf{U} & \mathbf{0} \\ \mathbf{V}(t) & \mathbf{W}(t) \end{bmatrix} c=AB(T)d,whereAB(t)=[UV(t)0W(t)]
      其中: A B ( T ) \boldsymbol{A}_B(T) AB(T) 逆矩阵,用于从边界条件直接计算系数,即给定边界条件直接得到系数。
      U i j = { 1 / ( i − 1 ) ! if  i = j , 0 if  i ≠ j , V i j ( t ) = ∑ k = 0 s − max ⁡ ( i , j ) ( − 1 ) k ( s i − k ) ( 2 s − j − k − 1 s − 1 ) ( j − 1 ) ! ⋅ ( − 1 ) i ⋅ t s + i − j W i j ( t ) = ∑ k = 0 s − max ⁡ ( i , j ) ( s − k − 1 i − 1 ) ( 2 s − j − k − 1 s − 1 ) ( j − 1 ) ! ⋅ ( − 1 ) i − j ⋅ t s + i − j \mathbf{U}_{ij} = \begin{cases} 1/(i-1)! & \text{if } i = j, \\ 0 & \text{if } i \ne j, \end{cases}\\ \mathbf{V}_{ij}(t) = \frac{\sum_{k=0}^{s-\max(i,j)} (-1)^k \binom{s}{i-k} \binom{2s-j-k-1}{s-1}}{(j-1)! \cdot (-1)^i \cdot t^{s+i-j}}\\ \mathbf{W}_{ij}(t) = \frac{\sum_{k=0}^{s-\max(i,j)} \binom{s-k-1}{i-1} \binom{2s-j-k-1}{s-1}}{(j-1)! \cdot (-1)^{i-j} \cdot t^{s+i-j}} Uij={1/(i1)!0if i=j,if i=j,Vij(t)=(j1)!(1)its+ijk=0smax(i,j)(1)k(iks)(s12sjk1)Wij(t)=(j1)!(1)ijts+ijk=0smax(i,j)(i1sk1)(s12sjk1)

  7. 三维空间中的平滑多段轨迹

    • 边界条件:起点和终点的位置(以及姿态)
    • 中间条件:航点 waypoints 的位置(以及姿态)
      • 先用路径规划找到“安全路径”上的点,如 A*,RRT*,PRM等
      • 再用轨迹优化将这些点连接成平滑曲线
    • 平滑性准则:一般转化为最小化“输入变化率”
  8. 如何检查运动原语的可行性?

    • 核心思想

      • 给定一条轨迹 p ( t ) = ( p 1 ( t ) , p 2 ( t ) , p 3 ( t ) ) ⊤ ,   t ∈ [ 0 , T ] p(t)=(p_1(t),p_2(t),p_3(t))^\top,~t\in[0,T] p(t)=(p1(t),p2(t),p3(t)), t[0,T]
      • 需要验证它是否满足一系列连续时间约束
    • 四类典型约束
      在这里插入图片描述

      • 最大速度限制: ∣ v ( t ) ≤ v max ⁡ |v(t)\leq v_{\max} v(t)vmax
      • 推力上下限: f min ⁡ ≤ f ( t ) ≤ f max ⁡ f_{\min}\leq f(t)\leq f_{\max} fminf(t)fmax
      • 几何障碍物: ∣ x ( t ) − o i ∣ ≥ r i |x(t)-o_i|\geq r_i x(t)oiri
      • 安全飞行走廊(多边形/球形): x ( t ) ∈ C x(t)\in\mathcal{C} x(t)C
    • 所有这些都可以写成同一形式
      G ( p 1 ( i ) ( t ) , p 2 ( i ) ( t ) , p 3 ( i ) ( t ) ) < 0 ,   ∀ t ∈ [ 0 , T ] G(p_1^{(i)}(t), p_2^{(i)}(t), p_3^{(i)}(t))<0,~\forall t\in[0,T] G(p1(i)(t),p2(i)(t),p3(i)(t))<0, t[0,T]
      其中 G G G 是一个多元多项式
      G ( a , b , c ) : = ∑ e 1 + e 2 + e 3 ≤ d g d c ∈ R , e j ∈ N d c ⋅ a e 1 b e 2 c e 3 G(a,b,c):=\sum_{e_1+e_2+e_3\leq d_g}^{d_c\in\mathbb{R},e_j\in\mathbb{N}}d_c\cdot a^{e_1}b^{e_2}c^{e_3} G(a,b,c):=e1+e2+e3dgdcR,ejNdcae1be2ce3

    • 关键问题

      • 如何知道这个不等式在整个时间段内都成立?
      • 这就是连续时间可行性检查器(Continuous-time feasibility checker)的作用
    • 三种可行性检查方法
      在这里插入图片描述

      方法 优点 缺点
      离散时间采样 Discrete time sampling 灵活 低分辨率下可能漏检(false negative),高分辨率下慢
      递归边界检查器 Recursive Bound Checker 效率高 仅适用于5次多项式,结果依赖分辨率,存在不确定情况
      极值检查器 Extreme Value Checker 稳定性好 数值迭代慢,仅适用于5次多项式
  9. 对于多元多项式连续性的验证方法:Sturm 序列法

    • 核心思想

      • 如果 G ( p 1 ( i ) ( t ) , p 2 ( i ) ( t ) , p 3 ( i ) ( t ) ) G(p_1^{(i)}(t), p_2^{(i)}(t), p_3^{(i)}(t)) G(p1(i)(t),p2(i)(t),p3(i)(t)) 是关于 t t t 的单变量多项式,则可以用 Sturm 定理判断其是否有根
      • 轨迹可行 ⇔ G ( t ) < 0 G(t)<0 G(t)<0 [ 0 , T ] [0,T] [0,T] 内无零点 ⇔ G ( t ) = 0 G(t)=0 G(t)=0 无解
    • Sturm 序列定义
      g 0 ( t ) = G ( t ) , g 1 ( t ) = G ˙ ( t ) , − g k + 1 ( t ) = Rem ( g k − 1 ( t ) , g k ( t ) ) \begin{aligned} g_0(t) &= \mathcal{G}(t), \\ g_1(t) &= \dot{\mathcal{G}}(t), \\ -g_{k+1}(t) &= \text{Rem}(g_{k-1}(t), g_k(t)) \end{aligned} g0(t)g1(t)gk+1(t)=G(t),=G˙(t),=Rem(gk1(t),gk(t))
      其中

      • R e m \mathrm{Rem} Rem 表示欧几里得除法的余数(纯代数运算)
      • G ( t ) \mathcal{G}(t) G(t) 是将约束函数 G ( ⋅ ) G(\cdot) G() 沿轨迹 z ( t ) z(t) z(t) 代入后得到的关于时间 t t t 的单变量函数。
    • 示例计算
      在这里插入图片描述

      • 给定
        G ( t ) = − t ( t − 1 ) ( t − 3 ) ( t − 6 ) = 18 t − 27 t 2 + 10 t 3 − t 4 G(t) = -t(t-1)(t-3)(t-6) = 18t - 27t^2 + 10t^3 - t^4 G(t)=t(t1)(t3)(t6)=18t27t2+10t3t4

      • 构造 Sturm 序列
        g 0 ( t ) = G ( t ) g 1 ( t ) = 18 − 54 t + 30 t 2 − 4 t 3 g 2 ( 2 ) = − 11.25 + 20.25 t − 5.25 t 2 g 3 ( t ) = 13.2245 − 10.7755 t g 4 ( t ) = − 5.69473 \begin{aligned} g_0(t) &= G(t) \\ g_1(t) &= 18-54t+30t^2-4t^3 \\ g_2(2) &= -11.25+20.25t-5.25t^2 \\ g_3(t) &= 13.2245-10.7755t \\ g_4(t) &= -5.69473 \end{aligned} g0(t)g1(t)g2(2)g3(t)g4(t)=G(t)=1854t+30t24t3=11.25+20.25t5.25t2=13.224510.7755t=5.69473

      • 计算符号变化数

        • t = − 1 t=-1 t=1 处,序列值为 ( − 56.00 , 106.00 , − 36.75 , 24.00 , − 5.69 ) (-56.00,106.00,-36.75,24.00,-5.69) (56.00,106.00,36.75,24.00,5.69) → 符号变化数 = 4

        • t = 7 t=7 t=7 处,序列值为 ( − 168.00 , − 262.00 , − 126.75 , − 62.20 , − 5.69 ) (−168.00,−262.00,−126.75,−62.20,−5.69) (168.00,262.00,126.75,62.20,5.69) → 符号变化数 = 0

        • 4 − 0 = 4 4-0=4 40=4 个根在区间 ( − 1 , 7 ) (-1,7) (1,7)

      • 不依靠因式分解,纯解析运算得到根的个数,速度快且稳定

5.5.2 边界-中间值问题 BIVP

  1. 多段最小 snap 轨迹
    在这里插入图片描述

    • 经过多个航点,在航点的速度和加速度自动生成优化,保持光滑。
  2. 边界-中间值问题(BIVP)

    • BIVP 数学形式
      min ⁡ z ( t ) ∫ t 0 t M v ( t ) ⊤ W v ( t )   d t , s.t. z ( s ) ( t ) = v ( t ) , ∀ t ∈ [ t 0 , t M ] , z ( s − 1 ) ( t 0 ) = z ˉ o , z ( s − 1 ) ( t M ) = z ˉ f , ⏟ Boundary value z ( d i − 1 ) ( t i ) = z ˉ i , 1 ≤ i ≤ M , ⏟ Intermediate value t i − 1 < t i , 1 ≤ i ≤ M . \begin{aligned} & \min_{z(t)} \int_{t_0}^{t_M} v(t)^\top \mathbf{W} v(t) \, dt, \\ \text{s.t.} &\quad z^{(s)}(t) = v(t), \quad \forall t \in [t_0, t_M], \\ & \quad \underbrace{\color{green} z^{(s-1)}(t_0) = \bar{z}_o, \quad z^{(s-1)}(t_M) = \bar{z}_f,}_{\text{Boundary value}} \\ & \quad \underbrace{\color{blue}z^{(d_i-1)}(t_i) = \bar{z}_i, \quad 1 \leq i \leq M,}_{\text{Intermediate value}} \\ & \quad t_{i-1} < t_i, \quad 1 \leq i \leq M. \end{aligned} s.t.z(t)mint0tMv(t)Wv(t)dt,z(s)(t)=v(t),t[t0,tM],Boundary value z(s1)(t0)=zˉo,z(s1)(tM)=zˉf,Intermediate value z(di1)(ti)=zˉi,1iM,ti1<ti,1iM.

    • 核心思想:给定一系列航点 waypoints ** 和其对应的导数约束**(如位置、速度、加速度等);要求构造一条光滑轨迹 z ( t ) z(t) z(t),满足这些条件;目标是最小化某种能量函数(如 jerk 或 snap)。

    • 术语:Position → Velocity → Acceleration → Jerk → Snap → Crackle → Pop

    • 纯航点中间条件的 BIVP
      在这里插入图片描述

      • s = 3 s=3 s=3 时:使用 5 次分段多项式,保证连续 snap最小 jerk 轨迹
      • s = 4 s=4 s=4 时:使用 7 次分段多项式,保证连续 pop最小 snap 轨迹
      • 使用 BIVP 可以直接构造最优解
      • 比隐式或显式优化更高效(如 QP 方法)
  3. 通过 BIVP 生成样条轨迹

    • 分段多项式形式
      f ( t ) = { f 1 ( t ) = ∑ i = 0 N p 1 , i t i , T 0 ≤ t ≤ T 1 f 2 ( t ) = ∑ i = 0 N p 2 , i t i , T 1 ≤ t ≤ T 2 ⋮ f M ( t ) = ∑ i = 0 N p M , i t i , T M − 1 ≤ t ≤ T M f(t) = \begin{cases} f_1(t) = \sum_{i=0}^N p_{1,i} t^i, & T_0 \leq t \leq T_1 \\ f_2(t) = \sum_{i=0}^N p_{2,i} t^i, & T_1 \leq t \leq T_2 \\ \vdots \\ f_M(t) = \sum_{i=0}^N p_{M,i} t^i, & T_{M-1} \leq t \leq T_M \end{cases} f(t)= f1(t)=i=0Np1,iti,f2(t)=i=0Np2,iti,fM(t)=i=0NpM,iti,T0tT1T1tT2TM1tTM

    • 关键假设

      • 每段是多项式
      • 多项式阶数固定为 2 s − 1 2s-1 2s1
      • 每段的时间长度必须已知(时间长度未知时,需额外优化)
    • 线性约束条件
      在这里插入图片描述

      • 导数约束(红色,在端点)
        Derivative constraints:  f j ( k ) ( T j − 1 ) = x 0 , j ( k ) f j ( k ) ( T j ) = x T , j ( k ) \text{Derivative constraints: } \quad \begin{aligned} f_j^{(k)}(T_{j-1}) &= x_{0,j}^{(k)} \\ f_j^{(k)}(T_j) &= x_{T,j}^{(k)} \end{aligned} Derivative constraints: fj(k)(Tj1)fj(k)(Tj)=x0,j(k)=xT,j(k)

      • 连续性约束(蓝色,在连接点)
        Continuity constraints:  f j ( k ) ( T j ) = f j + 1 ( k ) ( T j ) \text{Continuity constraints: } \quad f_j^{(k)}(T_j) = f_{j+1}^{(k)}(T_j) Continuity constraints: fj(k)(Tj)=fj+1(k)(Tj)

    • 时间轴表示方法

      • 多个相对时间轴:实现方便,数值稳定,适合编程
        在这里插入图片描述

      • 单一公共时间轴:教学清晰,便于理论分析
        在这里插入图片描述

    • 将所有约束整理后,得到一个线性方程组
      M c = b \mathbf{M} \mathbf{c} = \mathbf{b} Mc=b
      其中 M \mathbf{M} M 是一个稀疏的块对角矩阵, b \mathbf{b} b 是由边界和中间条件构成的向量
      M = ( F 0 0 0 ⋯ 0 E 1 F 1 0 ⋯ 0 0 E 2 F 2 ⋯ 0 ⋮ ⋮ ⋱ ⋱ ⋮ 0 0 0 E M − 1 F M − 1 0 0 0 ⋯ D M ⊤ ) b = ( D 0 ⊤ D 1 ⊤ 0 m × d ˉ 1 ⋯ D M − 1 ⊤ 0 m × d ˉ M − 1 D M ⊤ ) ⊤ \mathbf{M} = \begin{pmatrix} \mathbf{F}_0 & 0 & 0 & \cdots & 0 \\ \mathbf{E}_1 & \mathbf{F}_1 & 0 & \cdots & 0 \\ 0 & \mathbf{E}_2 & \mathbf{F}_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \ddots & \vdots \\ 0 & 0 & 0 & \mathbf{E}_{M-1} & \mathbf{F}_{M-1} \\ 0 & 0 & 0 & \cdots & \mathbf{D}_M^\top \end{pmatrix} \\ \mathbf{b} = \begin{pmatrix} D_0^\top& D_1^\top&0_{m\times\bar{d}_1}& \cdots &D_{M-1}^\top& 0_{m\times\bar{d}_{M-1}} & D_M^\top \end{pmatrix}^\top M= F0E10000F1E20000F200EM1000FM1DM b=(D0D10m×dˉ1DM10m×dˉM1DM)

    • 关键性质

      • M \mathbf{M} M 是带状矩阵 banded matrix
      • 只要每段时间大于零, M \mathbf{M} M 非奇异
      • 求解只需线性时间复杂度
    • 最终轨迹
      在这里插入图片描述

  4. 分层运动规划

    • 通过 BIVP 的分层方法
      在这里插入图片描述

      将复杂的轨迹规划问题拆分成两个步骤

      • 路径规划:在低维空间中找到一条无碰撞的路径
      • 轨迹生成:在已知路径上,插值出平滑、动力学可行的轨迹

      图解说明

      • 左图:已知路点(waypoints) → 我们知道如何用BIVP拟合多项式轨迹
      • 右图:如何获得这些无碰撞的路点? → 这就是路径规划的任务
    • 分层方法的安全性问题
      在这里插入图片描述

      • 问题:路径是无碰撞的,但轨迹可能不是
      • 因为:轨迹生成时会引入曲率、加速度、jerk 等动态因素,即时路径远离障碍物,高速转弯或急加速也可能导致机器人“越界”
    • 迭代 BIVP 改进方案(Iterative BIVPs)
      在这里插入图片描述

      • 解决速度:不直接使用原始航点,而是通过迭代添加中间航点,逐步逼近最优轨迹
      • 左图:初始路径是无碰撞的(紫色线),但轨迹(蓝色)在拐角处接近障碍物
      • 右图:在危险区域插入新的路点(绿色点),重新生成轨迹 → 更贴合路径且避免碰撞
    • RRT* + BIVP 分层方法
      在这里插入图片描述

      流程

      • RRT* 在配置空间中搜索无碰撞路径(灰色树状结构)
      • 提取路径上的关键点(蓝线)
      • 用BIVP生成光滑轨迹(红蓝曲线)

      优势

      • RRT* 找到全局无碰撞路径
      • BIVP 生成动力学可行、平滑的轨迹
      • 结合两者实现“安全 + 平滑 + 高效
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐