【移动机器人运动规划】5 基于优化的轨迹规划 Part1
基于优化的轨迹规划方法综述 本文系统介绍了基于优化的轨迹规划方法,重点对比了全局方法与局部方法的核心特点和应用场景。全局方法(如PRM*/RRT*)通过探索与利用寻找全局最优解,适合复杂环境;局部方法(如CHOMP/DDP)通过确定性优化追求局部最优,更适用于动力学约束场景。文章详细阐述了轨迹的定义与平滑性要求,并深入探讨了微分平坦理论在多旋翼系统中的应用优势。研究表明,在实际部署中采用前端(全局
5 基于优化的轨迹规划
文章目录
5.1 全局方法 vs 局部方法
-
核心概念:全局方法 vs 局部方法

类别 核心思想 特点 全局方法(Global Methods) 强调 探索(Exploration)+ 利用(Exploitation),在复杂环境中寻找全局最优解或可行路径 在采样次数趋于无穷时,保证趋于最优解 局部方法(Local Methods) 强调 确定性优化(Deterministic Optimization),从初始点出发,逐步改进轨迹,追求局部最优 在采样次数趋于无穷时,不保证最优解 -
典型算法对比
-
全局方法:Sampling + Graph Search
算法 特点 应用场景 PRM* / RRT* 随机采样构建图,渐进式优化路径 复杂环境、高维空间(如机械臂) A* 基于启发式的网格搜索 已知静态地图(如自动驾驶) JPS 跳点搜索(Jump Point Search),加速 A* 规则网格环境(如游戏AI) -
局部方法:
算法 特点 应用场景 CHOMP 梯度下降优化轨迹,考虑动力学 平滑轨迹生成(如机械臂抓取) DDP / iLQR 动态规划/迭代线性二次调节器 高精度控制(如无人机飞行) Flatness 利用系统平坦性参数化轨迹 无人机轨迹生成(如四旋翼) MPC / NMPC 模型预测控制,滚动优化 实时在线规划(如自动驾驶)
-
-
优缺点对比
维度 全局方法 局部方法 优点 • 全局最优性 • 处理复杂环境能力强 • 易移植 • 不需要高阶信息(零阶) • 局部最优性 • 处理动力学复杂性强 • 高维空间中速度快 • 收敛快 缺点 • 高维空间中慢 • 难以融入动力学模型 • 收敛率差 • 更复杂 • 需要高阶信息(梯度、Hessian) • 易陷入浅层局部极小 -
实际部署方式:解耦架构,前段(front end)+ 后段(back end)结合
- 前端(Global Method):
- 如 RRT*, A* → 提供一条粗略但安全的路径
- 解决“能不能到”的问题
- 后端(Local Method):
- 如 CHOMP, MPC → 将粗略路径优化为平滑、动力学可行的轨迹
- 解决“怎么走才好”的问题
- 前端(Global Method):
5.2 轨迹规划
-
轨迹的核心定义
-
轨迹(Trajectory)是一个从时间 t t t 到某个空间的映射函数
x ( t ) : R → X \boldsymbol{x}(t):~\mathbb{R} \rightarrow \mathcal{X} x(t): R→X -
其中 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 的路径,具有空间和时间两个维度的信息。
-
-
光滑性 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 min∫0TL(x,u)dt。
-
为什么需要轨迹优化?
- 如果我们已经有前端(路径发现),为什么还需要后端优化?
- 因为前端只解决了“存在性”,没解决“质量性”
- 如果前端已经是动力学可行的,为什么还需要后端优化?
- 因为“动力学可行” ≠ “最优”
- 如果我们已经有前端(路径发现),为什么还需要后端优化?
5.3 微分平坦 Differential Flatness
-
微分平坦的定义
-
考虑一个动力学系统(以常微分方程描述)
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:Rn↦Rn, g:Rn↦Rn, x∈Rn, u∈Rm,rank(g)=m
如果存在一个输出变量 z ∈ R m z\in\mathbb{R}^m z∈Rm,称为 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(s−1))u=Ψu(z,z˙,⋯,z(s))
-
-
微分平坦的意义
-
微分平坦消除了微分约束

-
左图需满足动力学约束 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
-
但是左图需要满足的微分方程不再出现在右图。
-
-
多旋翼的动力学与微分平坦
-
多种不同的多旋翼模型

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

- Hopf fibration 方法仅在多旋翼 up-side-down 时具有奇异。
- 微分平坦多旋翼动力学应当考虑阻力同时减少奇异。
-
-
多旋翼模型
-
多旋翼状态向量
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,τ}∈R≥0×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,=−mge3−RDR⊤σ(∥v∥)v+Rfe3,=Rω^=τ−ω×Mω−A(ω)−B(R⊤v)
其中:- − 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(R⊤v) 用户定义的“速度诱导角速度”项(例如风扰影响)
- 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 ψ 是偏航角
-
-
求解微分平坦变换
-
显然成立
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)⊤(−mge3−RDR⊤σ∥v∥v+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:=∥x∥x 表示向量归一化 -
将牛顿方程点乘 机体 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)⊤(−mge3−RDR⊤σ(∥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=qz⊗qψ -
展开后的结果:将两个四元数相乘并展开
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 ω=(R⊤R˙)∨ -
使用四元数表示角速度
ω = 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(qz⊗qψ)−1⊗(q˙z⊗qψ+qz⊗q˙ψ)
代入具体的表达式
ω = ( 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∥)∥v∥vTv˙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):=∥x∥1(I−xTxxxT).
是单位化操作的雅可比矩阵。 -
计算力矩
-
从表示旋转动力学的欧拉方程中,解出
τ = 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(R⊤v) -
只要知道 ω ( t ) \omega(t) ω(t),就能算出 τ ( t ) \tau(t) τ(t),而 ω ( t ) \omega(t) ω(t) 已经完全由 r ( t ) , ψ ( t ) r(t),\psi(t) r(t),ψ(t) 的导数表示
-
-
-
总结
- 核心步骤
- 设定 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 f≥0)
- 偏航角 ψ \psi ψ 可独立控制(通过力矩 τ z \tau_z τz)
- 系统无不可控的内部动态(如柔性结构,未建模执行器延迟等)
- 空气动力学模型足够简单(如线性阻尼或可忽略)
- 最核心的物理条件是:推力必须始终沿机体 Z 轴,且该轴可通过姿态任意指向(除奇异点外)。
- 核心步骤
-
基于平坦性的规划-控制闭环架构

- 上层:轨迹规划器,输出期望的 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
-
通过样条曲线参数化 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),Tmin∫0Tv(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[s−1](0)=zˉo,z[s−1](T)=zˉf,z[s−1]:=(z⊤z˙⊤z¨⊤⋯z(s−1)⊤)⊤.- 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
-
无约束情形

-
不考虑障碍物、边界、动力学极限等限制,只求解一个最简单的最优控制问题。
-
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),Tmin∫0Tv(t)⊤Wv(t)dt,z(s)(t)=v(t),∀t∈[0,T],Boundary value z[s−1](0)=zˉo,z[s−1](T)=zˉf,Intermediate value z[di−1](ti)=zˉi,1≤i<M,ti−1<ti,1≤i<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 的平滑轨迹,途中经过若干关键点,并可能在某些时间点满足额外条件(如速度、加速度要求)。
-
-
定理:最优性条件 Optimality Conditions
-
一条轨迹 z ∗ ( t ) z^*(t) z∗(t) 是最优的,当且仅当以下条件成立
-
边界值 Boundary value:每一段子区间上的轨迹是一个 2 s − 1 2s-1 2s−1 次多项式 → 即每个时间段内用一个高次多项式拟合(如 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 2s−di−1 阶连续可微性 → 保证光滑连接(例如 s = 4 , d i = 3 s=4,d_i=3 s=4,di=3 时,需要 C 3 C^3 C3 连续)
-
-
此外:满足这些条件的最优轨迹是唯一的。
-
总结:在无约束情况下,最小化某阶导数的积分问题,其最优解是分段 2 s − 1 2s-1 2s−1 次多项式,且在边界和中间点满足给定条件——这就是现代无人机轨迹优化的核心理论依据。
-
-
边界值问题 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)min∫0Tv(t)⊤Wv(t)dt,s.t.z(s)(t)=v(t),∀t∈[0,T],Boundary value z[s−1](t0)=zˉo,z[s−1](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 次多项式
-
-
通过 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)c⇒c=AF−1(T)d -
连续性准则:高阶连续性由参数化方式保证
-
-
通过 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)c⇒c=AF−1(T)d
矩阵 A F ( T ) A_F(T) AF(T) 是固定的,只依赖于时间 T T T,可预先计算或缓存。 -
折线路径被平滑处理后的示例

- 原始路径:由多个直线段组成(红色虚线)
- 平滑后路径:蓝色曲线,连接所有关键点
- 关键特征
- 在每个拐角处有圆弧状过渡
- 优先保持恒定速度 v v v
- 优先保持零加速度
- 需要对短段进行特殊处理
-
-
边界值问题 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)min∫0Tv(t)⊤Wv(t)dt,s.t.z(s)(t)=v(t),∀t∈[0,T],z[s−1](0)=zˉo,z[s−1](T)=zˉf.
这个 BVP 问题具有显式解,解总是有 2 s − 1 2s-1 2s−1 次多项式。 -
正向映射
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={(i−1)!0if i=j,if i=j,Fij(t)={(j−1)!/(j−i)!⋅tj−i0if i≤j,if i>j,Gij(t)=(s+j−i)!(s+j−1)!⋅ts−i−j
当 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/(i−1)!0if i=j,if i=j,Vij(t)=(j−1)!⋅(−1)i⋅ts+i−j∑k=0s−max(i,j)(−1)k(i−ks)(s−12s−j−k−1)Wij(t)=(j−1)!⋅(−1)i−j⋅ts+i−j∑k=0s−max(i,j)(i−1s−k−1)(s−12s−j−k−1)
-
-
三维空间中的平滑多段轨迹
- 边界条件:起点和终点的位置(以及姿态)
- 中间条件:航点 waypoints 的位置(以及姿态)
- 先用路径规划找到“安全路径”上的点,如 A*,RRT*,PRM等
- 再用轨迹优化将这些点连接成平滑曲线
- 平滑性准则:一般转化为最小化“输入变化率”
-
如何检查运动原语的可行性?
-
核心思想
- 给定一条轨迹 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} fmin≤f(t)≤fmax
- 几何障碍物: ∣ x ( t ) − o i ∣ ≥ r i |x(t)-o_i|\geq r_i ∣x(t)−oi∣≥ri
- 安全飞行走廊(多边形/球形): 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+e3≤dg∑dc∈R,ej∈Ndc⋅ae1be2ce3 -
关键问题
- 如何知道这个不等式在整个时间段内都成立?
- 这就是连续时间可行性检查器(Continuous-time feasibility checker)的作用
-
三种可行性检查方法

方法 优点 缺点 离散时间采样 Discrete time sampling 灵活 低分辨率下可能漏检(false negative),高分辨率下慢 递归边界检查器 Recursive Bound Checker 效率高 仅适用于5次多项式,结果依赖分辨率,存在不确定情况 极值检查器 Extreme Value Checker 稳定性好 数值迭代慢,仅适用于5次多项式
-
-
对于多元多项式连续性的验证方法: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(gk−1(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(t−1)(t−3)(t−6)=18t−27t2+10t3−t4 -
构造 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)=18−54t+30t2−4t3=−11.25+20.25t−5.25t2=13.2245−10.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 4−0=4 个根在区间 ( − 1 , 7 ) (-1,7) (−1,7)
-
-
不依靠因式分解,纯解析运算得到根的个数,速度快且稳定
-
-
5.5.2 边界-中间值问题 BIVP
-
多段最小 snap 轨迹

- 经过多个航点,在航点的速度和加速度自动生成优化,保持光滑。
-
边界-中间值问题(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)min∫t0tMv(t)⊤Wv(t)dt,z(s)(t)=v(t),∀t∈[t0,tM],Boundary value z(s−1)(t0)=zˉo,z(s−1)(tM)=zˉf,Intermediate value z(di−1)(ti)=zˉi,1≤i≤M,ti−1<ti,1≤i≤M. -
核心思想:给定一系列航点 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 方法)
-
-
通过 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,T0≤t≤T1T1≤t≤T2TM−1≤t≤TM -
关键假设
- 每段是多项式
- 多项式阶数固定为 2 s − 1 2s-1 2s−1
- 每段的时间长度必须已知(时间长度未知时,需额外优化)
-
线性约束条件

-
导数约束(红色,在端点)
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)(Tj−1)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= F0E10⋮000F1E2⋮0000F2⋱00⋯⋯⋯⋱EM−1⋯000⋮FM−1DM⊤ b=(D0⊤D1⊤0m×dˉ1⋯DM−1⊤0m×dˉM−1DM⊤)⊤ -
关键性质
- M \mathbf{M} M 是带状矩阵 banded matrix
- 只要每段时间大于零, M \mathbf{M} M 非奇异
- 求解只需线性时间复杂度
-
最终轨迹

-
-
分层运动规划
-
通过 BIVP 的分层方法

将复杂的轨迹规划问题拆分成两个步骤
- 路径规划:在低维空间中找到一条无碰撞的路径
- 轨迹生成:在已知路径上,插值出平滑、动力学可行的轨迹
图解说明
- 左图:已知路点(waypoints) → 我们知道如何用BIVP拟合多项式轨迹
- 右图:如何获得这些无碰撞的路点? → 这就是路径规划的任务
-
分层方法的安全性问题

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

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

流程
- RRT* 在配置空间中搜索无碰撞路径(灰色树状结构)
- 提取路径上的关键点(蓝线)
- 用BIVP生成光滑轨迹(红蓝曲线)
优势
- RRT* 找到全局无碰撞路径
- BIVP 生成动力学可行、平滑的轨迹
- 结合两者实现“安全 + 平滑 + 高效”
-
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)