前言

在学习无人机轨迹规划时,经常会看到一句话:四旋翼无人机是微分平坦系统

这句话听起来很理论,但它对工程实现非常关键。因为很多规划器并不会直接优化四个电机转速,也不会直接优化滚转角、俯仰角和力矩,而是优先优化三维空间中的位置轨迹。这样做背后的原因,就是四旋翼的状态和控制输入可以由位置、偏航角及其有限阶导数恢复出来。

这篇文章先整理微分平坦性的判断标准,再通过质点、小车和四旋翼三个例子说明它到底是什么意思,最后结合 EGO-Planner、MINCO、minimum-snap 这类轨迹规划方法理解它的实际意义。

一、微分平坦性到底在判断什么?

考虑一个一般的动力系统:

x˙=f(x,u)\dot{x}=f(x,u)

其中:

  • xx 是系统状态,例如位置、速度、姿态和角速度;
  • uu 是控制输入,例如推力、力矩或加速度指令。

如果系统有 mm 个独立控制输入,要证明它具有微分平坦性,通常需要找到 mm 个相互独立的输出:

y=[y1y2ym]Ty = \begin{bmatrix} y_1 & y_2 & \cdots & y_m \end{bmatrix}^{T}

使得系统的所有状态和控制输入都能表示成:

x=Φ(y,y˙,y¨,,y(r))x=\Phi(y,\dot{y},\ddot{y},\cdots,y^{(r)})

u=Ψ(y,y˙,y¨,,y(s))u=\Psi(y,\dot{y},\ddot{y},\cdots,y^{(s)})

其中 rrss 是有限整数。

这组输出 yy 就叫做平坦输出。微分平坦理论的核心可以概括成一句话:

如果能用一组平坦输出及其有限阶导数参数化系统的全部状态和控制输入,那么这个系统就是微分平坦系统。

注意这里的关键不是“系统是不是线性的”,也不是“系统是不是完全驱动的”,而是能不能找到这样一组平坦输出。

二、什么叫由平坦输出直接恢复?

所谓“直接恢复”,指的是只需要做有限次:

  • 代数运算;
  • 三角函数运算;
  • 求导;
  • 代入动力学方程。

不应该再需要:

  • 对未知变量积分;
  • 求解新的微分方程;
  • 依赖系统过去的完整运动历史。

举个反例,如果选择某个变量 y(t)y(t) 作为候选平坦输出,但恢复状态时出现:

x(t)=x(0)+0ty(τ)dτx(t)=x(0)+\int_0^t y(\tau)\,d\tau

那么仅靠当前时刻的 y,y˙,y¨y,\dot{y},\ddot{y} 等有限阶导数,并不能确定 x(t)x(t)。还必须知道初始值和历史积分。因此,这样的 yy 通常不能作为平坦输出。

这一区别很重要。微分平坦性强调的是当前轨迹点附近的有限阶导数信息足够恢复系统状态和输入,而不是“只要知道整条历史轨迹就能算出来”。

三、最简单的例子:一维质点

考虑一个一维质点模型:

x˙=v\dot{x}=v

v˙=u\dot{v}=u

其中:

  • xx 是位置;
  • vv 是速度;
  • uu 是加速度控制输入。

选择位置作为平坦输出:

y=xy=x

那么:

x=yx=y

v=y˙v=\dot{y}

u=y¨u=\ddot{y}

只要规划一条足够光滑的位置曲线 y(t)y(t),就能直接得到速度和控制输入。因此,这个系统是微分平坦的。

这也解释了为什么很多轨迹规划算法喜欢用多项式、B 样条或 MINCO 这类参数化曲线描述位置轨迹:位置曲线一旦确定,速度、加速度以及更高阶导数都可以直接算出来。

四、非完整约束系统也可能微分平坦

微分平坦性并不要求系统能够直接向任意方向运动。

例如一辆非完整约束小车只能前进、后退和转向,不能像全向轮机器人一样横向平移。它的简化模型可以写成:

x˙=vcosθ\dot{x}=v\cos\theta

y˙=vsinθ\dot{y}=v\sin\theta

θ˙=ω\dot{\theta}=\omega

其中:

  • x,yx,y 是车辆位置;
  • θ\theta 是车头朝向;
  • vv 是前进速度;
  • ω\omega 是转向角速度。

虽然车辆不能直接横移,但可以选择平面位置作为平坦输出:

yf=[xy]Ty_f = \begin{bmatrix} x & y \end{bmatrix}^{T}

由位置轨迹的一阶导数可以恢复车头朝向:

θ=atan2(y˙,x˙)\theta=\mathrm{atan2}(\dot{y},\dot{x})

速度为:

v=x˙2+y˙2v=\sqrt{\dot{x}^2+\dot{y}^2}

角速度可以由轨迹的一阶、二阶导数恢复:

ω=x˙y¨y˙x¨x˙2+y˙2\omega=\frac{\dot{x}\ddot{y}-\dot{y}\ddot{x}}{\dot{x}^2+\dot{y}^2}

所以,只要给出车辆在平面内的运动轨迹,就可以反推出车头方向和控制输入。

这个例子说明:系统有运动约束,甚至是欠驱动系统,并不代表它一定不是微分平坦系统。

五、四旋翼为什么是微分平坦系统?

理想四旋翼模型通常可以选择:

yf=[xyzψ]Ty_f = \begin{bmatrix} x & y & z & \psi \end{bmatrix}^{T}

作为平坦输出,其中:

  • x,y,zx,y,z 是无人机质心位置;
  • ψ\psi 是偏航角,也可以理解为机头朝向。

四旋翼看起来很复杂,因为它包含位置、速度、姿态、角速度、总推力、力矩和四个电机转速。但在常见模型下,这些量都可以通过位置、偏航角及其有限阶导数恢复出来。

1. 四旋翼只有四个独立控制输入

四旋翼有四个电机。通过调节四个旋翼转速,可以形成:

u=[fτxτyτz]Tu= \begin{bmatrix} f & \tau_x & \tau_y & \tau_z \end{bmatrix}^{T}

其中:

  • ff 是总推力;
  • τx\tau_x 是滚转力矩;
  • τy\tau_y 是俯仰力矩;
  • τz\tau_z 是偏航力矩。

也就是说,虽然四旋翼在三维空间中具有六个自由度:

x,y,z,ϕ,θ,ψx,y,z,\phi,\theta,\psi

但它只有四个独立控制输入,是典型的欠驱动系统。

微分平坦性的特殊之处就在于:即使四旋翼是欠驱动系统,仍然可以用四个平坦输出描述完整运动。

2. 由位置轨迹恢复推力方向

为了简化表达,假设:

  • 世界坐标系的竖直向上方向为 e3=[0,0,1]Te_3=[0,0,1]^T
  • 重力方向向下;
  • 无人机总推力沿机体坐标系的 zz 轴方向;
  • 暂时忽略空气阻力和电机动态。

四旋翼的平移动力学方程可以写成:

mp¨=mge3+fb3m\ddot{p}=-mg e_3+f b_3

其中:

  • p=[x,y,z]Tp=[x,y,z]^T 是无人机位置;
  • mm 是无人机质量;
  • ff 是总推力;
  • b3b_3 是机体 zz 轴在世界坐标系下的方向。

整理后得到:

fb3=m(p¨+ge3)f b_3=m(\ddot{p}+g e_3)

这条公式非常关键。只要给定位置轨迹 p(t)p(t),就可以计算加速度 p¨(t)\ddot{p}(t),进而得到总推力大小:

f=mp¨+ge3f=m\left\|\ddot{p}+g e_3\right\|

以及无人机机体 zz 轴方向:

b3=p¨+ge3p¨+ge3b_3=\frac{\ddot{p}+g e_3}{\left\|\ddot{p}+g e_3\right\|}

因此,位置轨迹的二阶导数决定了无人机需要朝哪个方向倾斜,以及需要产生多大的总推力。

几个直观例子:

  • 如果无人机悬停,则 p¨=0\ddot{p}=0,机体 zz 轴竖直向上;
  • 如果无人机需要向前加速,就必须向前倾斜;
  • 如果无人机需要快速爬升,总推力必须大于重力。

3. 为什么还需要偏航角?

由位置加速度只能确定机体 zz 轴方向 b3b_3,也就是确定无人机应该怎样倾斜。但是,无人机仍然可以绕自身 zz 轴旋转。

可以想象一架正在悬停的无人机:它保持高度不变,但机头仍然可以朝东、朝西或缓慢转圈。

因此,仅使用 x(t),y(t),z(t)x(t),y(t),z(t) 还不足以唯一确定完整姿态,还需要补充偏航角 ψ(t)\psi(t)

先根据偏航角定义一个期望水平朝向:

b1c=[cosψsinψ0]b_{1c}= \begin{bmatrix} \cos\psi \\ \sin\psi \\ 0 \end{bmatrix}

再结合 b3b_3 构造机体坐标系的另外两个轴:

b2=b3×b1cb3×b1cb_2=\frac{b_3\times b_{1c}}{\left\|b_3\times b_{1c}\right\|}

b1=b2×b3b_1=b_2\times b_3

于是姿态矩阵可以写成:

R=[b1b2b3]R= \begin{bmatrix} b_1 & b_2 & b_3 \end{bmatrix}

也就是说:

位置加速度决定无人机如何倾斜,偏航角决定机头朝向。二者结合后,可以恢复完整姿态。

4. 更高阶导数恢复角速度和力矩

到目前为止,根据平坦输出 [x,y,z,ψ][x,y,z,\psi] 以及位置的二阶导数,已经得到了:

  • 位置 pp
  • 速度 p˙\dot{p}
  • 姿态 RR
  • 总推力 ff

但无人机控制还需要角速度和力矩。

姿态矩阵与角速度之间满足:

R˙=Rω^\dot{R}=R\hat{\omega}

因此:

ω^=RTR˙\hat{\omega}=R^T\dot{R}

其中 ω\omega 是机体角速度,ω^\hat{\omega} 是对应的反对称矩阵。

由于姿态 RR 是由 p¨\ddot{p}ψ\psi 构造出来的,所以对姿态继续求导后,角速度可以由位置三阶导数和偏航角一阶导数恢复:

p(3),ψ˙p^{(3)},\dot{\psi}

位置的三阶导数称为 jerk。

继续求导可以得到角加速度 ω˙\dot{\omega},它与位置四阶导数和偏航角二阶导数有关:

p(4),ψ¨p^{(4)},\ddot{\psi}

位置的四阶导数称为 snap。

最后,根据转动动力学方程:

τ=Jω˙+ω×(Jω)\tau=J\dot{\omega}+\omega\times(J\omega)

就可以计算出控制力矩:

τ=[τxτyτz]T\tau= \begin{bmatrix} \tau_x & \tau_y & \tau_z \end{bmatrix}^{T}

其中 JJ 是无人机的转动惯量矩阵。

六、四旋翼平坦输出的恢复链条

从四个平坦输出出发,恢复关系可以概括为:

平坦输出及其导数 可以恢复的物理量
pp 位置
p˙\dot{p} 速度
p¨\ddot{p} 推力大小、推力方向、滚转和俯仰
ψ\psi 偏航方向、完整姿态
p(3),ψ˙p^{(3)},\dot{\psi} 角速度
p(4),ψ¨p^{(4)},\ddot{\psi} 角加速度、控制力矩

再通过四旋翼的混控矩阵,可以把总推力和三个力矩转换成四个电机的目标推力:

[fτxτyτz]=A[f1f2f3f4]\begin{aligned} \begin{bmatrix} f \\ \tau_x \\ \tau_y \\ \tau_z \end{bmatrix} &= A \begin{bmatrix} f_1 \\ f_2 \\ f_3 \\ f_4 \end{bmatrix} \end{aligned}

只要混控矩阵 AA 可逆,就可以计算每个旋翼的推力。

完整链条可以写成:

1
2
3
4
[x, y, z, psi]
-> 位置、速度、姿态、角速度
-> 总推力、力矩
-> 四个旋翼的推力

整个过程中只涉及有限次求导和代数运算,不需要重新求解一组微分方程。这正是微分平坦性的定义。

七、为什么轨迹规划常常优化 snap?

这也解释了为什么经典四旋翼轨迹生成方法经常使用 minimum-snap trajectory,也就是最小化位置轨迹四阶导数的平方积分:

J=0Tp(4)(t)2dtJ=\int_0^T \left\|p^{(4)}(t)\right\|^2 dt

因为 snap 与无人机的角加速度和控制力矩密切相关。限制 snap 可以让:

  • 姿态变化更加平滑;
  • 控制力矩变化更加平缓;
  • 电机指令变化更加连续;
  • 轨迹更容易被真实无人机跟踪。

Mellinger 和 Kumar 的经典四旋翼轨迹规划工作,就是利用这一性质,在三维位置和偏航角空间中生成可跟踪轨迹。

八、微分平坦不等于任意轨迹都能飞

理论上,只要给定足够光滑的:

[x(t),y(t),z(t),ψ(t)][x(t),y(t),z(t),\psi(t)]

就可以计算出对应的状态和控制输入。

但这并不意味着任意轨迹都能被真实无人机执行。因为计算出来的控制量可能超过硬件能力,例如:

  • 总推力超过电机上限;
  • 需要过大的倾斜角;
  • 角速度过高;
  • 控制力矩过大;
  • 电机转速变化过快;
  • 轨迹本身穿过障碍物。

因此,轨迹规划仍然需要加入动力学约束和环境约束,例如:

p˙vmax\left\|\dot{p}\right\|\le v_{\max}

p¨amax\left\|\ddot{p}\right\|\le a_{\max}

以及推力、姿态角、角速度、走廊安全距离等限制。

微分平坦性解决的是:

如何从容易规划的位置轨迹恢复完整动力学状态和控制指令。

它并不会自动保证轨迹一定满足硬件约束、控制约束和避障约束。

九、工程上如何判断一个系统是否微分平坦?

对于一个具体系统,可以按下面的思路判断。

1. 写出明确的动力学模型

首先需要明确系统模型到底包含哪些状态和输入。例如四旋翼模型中,要说明是否考虑:

  • 空气阻力;
  • 电机动态;
  • 桨叶模型;
  • 负载;
  • 机械臂;
  • 柔性绳索;
  • 执行器饱和。

微分平坦性是针对特定数学模型而言的。同一架无人机,如果采用不同复杂程度的动力学模型,结论可能不同。

2. 寻找少量候选输出

通常优先考虑能直接反映运动目标的变量,例如:

系统 常见候选平坦输出
一维质点 位置
非完整约束小车 平面位置
四旋翼 三维位置 + 偏航角
机械臂 末端位姿或部分关节变量

平坦输出的数量通常与独立控制输入数量相同。

3. 逐层求导并代入动力学方程

观察能否从候选输出的导数逐步恢复:

  • 位置;
  • 速度;
  • 姿态;
  • 角速度;
  • 推力;
  • 力矩;
  • 其他状态和输入。

4. 检查是否引入积分或额外微分方程

如果所有变量都能通过有限次求导和代数计算得到,则系统在该模型下是微分平坦的。

如果必须依赖积分、初始条件或完整历史轨迹,说明当前候选输出不满足要求。此时可能需要:

  • 换一组候选平坦输出;
  • 引入输入的动态扩展;
  • 或者接受该系统在当前模型下不是微分平坦系统。

十、需要注意奇异状态

很多系统只在一定范围内具有良好的平坦参数化。

例如小车模型中:

θ=atan2(y˙,x˙)\theta=\mathrm{atan2}(\dot{y},\dot{x})

当车辆速度为零时:

x˙=y˙=0\dot{x}=\dot{y}=0

车头朝向无法根据位置轨迹的一阶导数确定,此时就会出现奇异性。

四旋翼也有类似问题。例如当:

p¨+ge3=0\ddot{p}+g e_3=0

时,推力方向 b3b_3 无法正常定义;当 b3b_3 与期望水平朝向 b1cb_{1c} 发生退化关系时,姿态构造也可能失效。

所以,更准确的说法通常是:

系统在避开某些奇异状态的局部区域内具有微分平坦性。

十一、对 EGO-Planner 等无人机规划器的意义

在 EGO-Planner、Fast-Planner、GCOPTER、MINCO 等无人机轨迹规划框架中,规划器通常不会直接优化:

  • 四个电机转速;
  • 每个时刻的控制力矩;
  • 完整姿态曲线;
  • 飞控底层的混控输入。

它们更常见的做法,是优化三维空间中的位置曲线 p(t)p(t),并约束速度、加速度、光滑性和障碍物距离。

原因就在于四旋翼的微分平坦性。规划器只需要生成一条足够光滑、满足约束的位置轨迹,轨迹跟踪控制器就可以根据期望位置、速度和加速度计算期望推力与姿态。更高性能的控制器还会使用 jerk 和 snap 构造前馈项,从而改善高速飞行时的跟踪效果。

可以把微分平坦性理解成一座桥:

1
2
3
容易规划的位置轨迹
-> 平坦输出及其有限阶导数
-> 复杂的无人机动力学状态和控制输入

这就是为什么在无人机轨迹规划里,很多方法都重点研究“如何生成一条光滑、无碰撞、满足动力学约束的位置轨迹”,而不是从电机转速层面直接做全量优化。

总结

一个系统具有微分平坦性的本质条件是:

存在一组平坦输出,使系统的全部状态和控制输入都能够由这些输出及其有限阶导数直接恢复,并且不需要积分或额外求解微分方程。

对于四旋翼无人机,常见平坦输出是:

[xyzψ]T\begin{bmatrix} x & y & z & \psi \end{bmatrix}^{T}

其中最关键的物理关系是:

fb3=m(p¨+ge3)f b_3=m(\ddot{p}+g e_3)

位置加速度决定推力方向和大小,偏航角补足机头朝向,更高阶导数进一步恢复角速度和力矩。

因此,四旋翼虽然是欠驱动系统,但在常用模型下仍然是微分平坦系统。这一性质正是四旋翼轨迹规划能够主要围绕位置曲线展开的理论基础。