1. 牛顿-欧拉方程 —— 动力学模型的基石

这是描述刚体运动最根本的物理定律。它把运动分成了两部分:

牛顿第二定律(平动)

F=m⋅a F = m \cdot a F=ma

  • F:作用在四旋翼质心上所有外力的合力矢量(重力 + 四个旋翼的总升力)。
  • m:四旋翼的质量。
  • a:质心运动的加速度矢量。

它回答了“飞机会怎么移动”。

欧拉方程(转动)

M=I⋅α+ω×(I⋅ω) M = I \cdot \alpha + \omega \times (I \cdot \omega) M=Iα+ω×(Iω)

  • M:作用在四旋翼上的所有外力矩的合力矩矢量(由四个旋翼升力差异产生)。
  • I:四旋翼的惯性张量(一个 3x3 矩阵,可以简单理解为描述物体绕各个轴转动难易程度的“转动质量”)。

    为什么是 3x3 矩阵?(详细解释)

    在三维空间中,物体不仅可以绕 X、Y、Z 轴(主轴)旋转,还可能因为质量分布不均匀,在绕 X 轴旋转时产生试图让物体绕 Y 轴或 Z 轴偏转的力矩(惯性积)。

    惯性张量 III 的完整形式如下:
    I=[Ixx−Ixy−Ixz−IyxIyy−Iyz−Izx−IzyIzz] I = \begin{bmatrix} I_{xx} & -I_{xy} & -I_{xz} \\ -I_{yx} & I_{yy} & -I_{yz} \\ -I_{zx} & -I_{zy} & I_{zz} \end{bmatrix} I= IxxIyxIzxIxyIyyIzyIxzIyzIzz

    • 对角线元素 (Ixx,Iyy,IzzI_{xx}, I_{yy}, I_{zz}Ixx,Iyy,Izz):转动惯量。表示绕 X、Y、Z 轴旋转的难易程度。例如,IxxI_{xx}Ixx 越大,绕 X 轴加速旋转越费力。
    • 非对角线元素 (Ixy,Ixz,…I_{xy}, I_{xz}, \dotsIxy,Ixz,):惯性积。表示质量分布的不对称性。

    举个例子
    假设一个理想的四旋翼,它的质量完全对称地分布在 X 和 Y 轴上(像一个完美的“十”字),且重心在几何中心。那么所有的惯性积(非对角项)都为 0,惯性张量简化为对角矩阵:
    Iideal=[Ixx000Iyy000Izz] I_{ideal} = \begin{bmatrix} I_{xx} & 0 & 0 \\ 0 & I_{yy} & 0 \\ 0 & 0 & I_{zz} \end{bmatrix} Iideal= Ixx000Iyy000Izz
    这时候,绕 X 轴的力矩只会产生绕 X 轴的角加速度,不会“串台”影响到 Y 轴或 Z 轴,控制起来最简单。但实际无人机可能挂载了不对称的相机或电池,导致非对角项不为 0,产生耦合效应。

  • α:角加速度矢量。
  • ω:角速度矢量。
  • ω × (I * ω):哥氏项/离心项。这是旋转坐标系特有的项,就像旋转的陀螺会进动一样。

    详解:XY 平面旋转(偏航 ωz\omega_zωz)的影响

    很多初学者会问:哥氏项中 XY 平面的旋转(即绕 Z 轴旋转)会影响绕 X 和 Y 的力矩吗?答案是肯定的。

    如果我们将 ω×(I⋅ω)\omega \times (I \cdot \omega)ω×(Iω) 展开(假设 III 为对角矩阵),会得到:
    Mcor=[ωyωz(Izz−Iyy)ωxωz(Ixx−Izz)ωxωy(Iyy−Ixx)] M_{cor} = \begin{bmatrix} \omega_y \omega_z (I_{zz} - I_{yy}) \\ \omega_x \omega_z (I_{xx} - I_{zz}) \\ \omega_x \omega_y (I_{yy} - I_{xx}) \end{bmatrix} Mcor= ωyωz(IzzIyy)ωxωz(IxxIzz)ωxωy(IyyIxx)

    • X 轴力矩:包含 ωz\omega_zωz。当飞机同时进行俯仰(ωy\omega_yωy)和偏航(ωz\omega_zωz)时,会产生绕 X 轴的哥氏力矩。
    • Y 轴力矩:包含 ωz\omega_zωz。当飞机同时进行滚转(ωx\omega_xωx)和偏航(ωz\omega_zωz)时,会产生绕 Y 轴的哥氏力矩。

    所以,XY 平面内的旋转(ωz\omega_zωz)不仅影响 Z 轴力矩,还会通过耦合作用显著影响 X 和 Y 轴的力矩,这是高机动飞行控制中必须考虑的因素。

它回答了“飞机会怎么转动”。


小结:牛顿-欧拉方程直接写出了力/力矩与运动(加速度)的关系,构成了原始的非线性动力学模型。

常用四旋翼动力学方程组

在忽略空气阻力、假设机体对称且重心位于几何中心(惯性张量 III 为对角阵)的理想情况下,四旋翼的非线性动力学模型通常写作以下形式(ENU 坐标系):

1. 位置动力学(牛顿方程)

描述四旋翼在惯性系下的平动:
{x¨=U1m(cos⁡ϕsin⁡θcos⁡ψ+sin⁡ϕsin⁡ψ)y¨=U1m(cos⁡ϕsin⁡θsin⁡ψ−sin⁡ϕcos⁡ψ)z¨=U1m(cos⁡ϕcos⁡θ)−g \left\{ \begin{aligned} \ddot{x} &= \frac{U_1}{m} (\cos\phi \sin\theta \cos\psi + \sin\phi \sin\psi) \\ \ddot{y} &= \frac{U_1}{m} (\cos\phi \sin\theta \sin\psi - \sin\phi \cos\psi) \\ \ddot{z} &= \frac{U_1}{m} (\cos\phi \cos\theta) - g \end{aligned} \right. x¨y¨z¨=mU1(cosϕsinθcosψ+sinϕsinψ)=mU1(cosϕsinθsinψsinϕcosψ)=mU1(cosϕcosθ)g

  • x,y,zx, y, zx,y,z:惯性系下的位置。
  • ϕ,θ,ψ\phi, \theta, \psiϕ,θ,ψ:欧拉角(滚转、俯仰、偏航)。
  • U1U_1U1:总升力(垂直于机体平面向上)。

2. 姿态动力学(欧拉方程)

描述四旋翼在机体系下的转动:
{p˙=1Ixx[U2+(Iyy−Izz)qr]q˙=1Iyy[U3+(Izz−Ixx)pr]r˙=1Izz[U4+(Ixx−Iyy)pq] \left\{ \begin{aligned} \dot{p} &= \frac{1}{I_{xx}} [U_2 + (I_{yy} - I_{zz}) q r] \\ \dot{q} &= \frac{1}{I_{yy}} [U_3 + (I_{zz} - I_{xx}) p r] \\ \dot{r} &= \frac{1}{I_{zz}} [U_4 + (I_{xx} - I_{yy}) p q] \end{aligned} \right. p˙q˙r˙=Ixx1[U2+(IyyIzz)qr]=Iyy1[U3+(IzzIxx)pr]=Izz1[U4+(IxxIyy)pq]

  • p,q,rp, q, rp,q,r:机体坐标系下的角速度。
  • U2,U3,U4U_2, U_3, U_4U2,U3,U4:分别为绕机体 X、Y、Z 轴的控制力矩。

2. 线性化模型基础 —— 从非线性到线性的桥梁

四旋翼的原始动力学模型是非线性的(包含 sin⁡,cos⁡\sin, \cossin,cos 和角速度耦合项),难以直接用于设计线性控制器(如 PID)。因此,我们需要将其线性化

2.1 小扰动理论与线性化 —— “化曲为直”的数学魔法

这是处理非线性系统的核心思想,也是将复杂动力学模型转化为简单PID控制器能够处理形式的关键一步。

核心思想:在平衡点附近,一切皆线性

  • 它是什么:小扰动理论假设系统在一个稳定的平衡点(Equilibrium Point,例如完美悬停)附近工作。在此状态下,所有的变量(如角度、角速度、控制输入)都只在它们的平衡值附近做微小的波动。
  • 为什么用它:原始的动力学方程充满了 sin, cos 和变量相乘的项,这些是非线性的,难以直接设计稳定、可预测的控制器。但在一个极小的局部范围内,任何平滑的曲线都可以被它的切线很好地近似。线性化就是找到并使用这条“切线方程”来替代原始的“曲线方程”。
  • 关键近似(小角度假设):当飞机接近悬停时,姿态角 ϕ\phiϕ (滚转) 和 θ\thetaθ (俯仰) 都非常小(接近0)。在数学上,当角度 xxx 以弧度为单位且非常小时:
    • sin⁡(x)≈x\sin(x) \approx xsin(x)x
    • cos⁡(x)≈1\cos(x) \approx 1cos(x)1
    • x⋅y≈0x \cdot y \approx 0xy0 (如果x和y都是小量,它们的乘积是二阶小量,可以忽略)

实战:四旋翼悬停模型的线性化推导

让我们以四旋翼在空中完美悬停为场景,一步步看这些近似如何简化我们的非线性方程。

1. 定义平衡状态

  • 状态量 (x0x_0x0): 姿态水平 (ϕ=0,θ=0\phi=0, \theta=0ϕ=0,θ=0),无旋转运动 (p=q=r=0p=q=r=0p=q=r=0)。
  • 控制量 (u0u_0u0): 各个轴向的控制力矩为零 (U2=0,U3=0,U4=0U_2=0, U_3=0, U_4=0U2=0,U3=0,U4=0),总升力 U1U_1U1 刚好抵消重力,即 U1=mgU_1 = mgU1=mg

2. 引入扰动
现在,我们考虑飞机在平衡点附近的一个微小偏移。任何变量都可以写成“平衡值 + 扰动量”的形式:

  • ϕ=0+Δϕ\phi = 0 + \Delta\phiϕ=0+Δϕ
  • θ=0+Δθ\theta = 0 + \Delta\thetaθ=0+Δθ
  • U1=mg+ΔU1U_1 = mg + \Delta U_1U1=mg+ΔU1
  • U2=0+ΔU2U_2 = 0 + \Delta U_2U2=0+ΔU2
  • …等等

3. 将扰动代入非线性方程并简化

案例 1:高度通道 (Z轴)

原始方程:
z¨=U1m(cos⁡ϕcos⁡θ)−g \ddot{z} = \frac{U_1}{m} (\cos\phi \cos\theta) - g z¨=mU1(cosϕcosθ)g
U1=mg+ΔU1,ϕ=Δϕ,θ=ΔθU_1 = mg + \Delta U_1, \phi=\Delta\phi, \theta=\Delta\thetaU1=mg+ΔU1,ϕ=Δϕ,θ=Δθ 代入:
z¨=mg+ΔU1m(cos⁡(Δϕ)cos⁡(Δθ))−g \ddot{z} = \frac{mg + \Delta U_1}{m} (\cos(\Delta\phi) \cos(\Delta\theta)) - g z¨=mmg+ΔU1(cos(Δϕ)cos(Δθ))g
应用小角度近似 cos⁡(Δϕ)≈1\cos(\Delta\phi) \approx 1cos(Δϕ)1cos⁡(Δθ)≈1\cos(\Delta\theta) \approx 1cos(Δθ)1:
z¨≈(mgm+ΔU1m)⋅1⋅1−g \ddot{z} \approx (\frac{mg}{m} + \frac{\Delta U_1}{m}) \cdot 1 \cdot 1 - g z¨(mmg+mΔU1)11g
z¨≈g+ΔU1m−g \ddot{z} \approx g + \frac{\Delta U_1}{m} - g z¨g+mΔU1g
最终得到线性化模型:
z¨=1mΔU1 \ddot{z} = \frac{1}{m} \Delta U_1 z¨=m1ΔU1
结论:在悬停附近,垂直加速度 z¨\ddot{z}z¨总升力的变化量 ΔU1\Delta U_1ΔU1 成正比。这完美符合牛顿第二定律 F=maF=maF=ma 的直觉,形式简单,极易控制。

案例 2:水平位置通道 (X轴)

原始方程(为简化,设偏航角 ψ=0\psi=0ψ=0):
x¨=U1m(cos⁡ϕsin⁡θcos⁡ψ+sin⁡ϕsin⁡ψ)→ψ=0U1mcos⁡ϕsin⁡θ \ddot{x} = \frac{U_1}{m} (\cos\phi \sin\theta \cos\psi + \sin\phi \sin\psi) \xrightarrow{\psi=0} \frac{U_1}{m} \cos\phi \sin\theta x¨=mU1(cosϕsinθcosψ+sinϕsinψ)ψ=0 mU1cosϕsinθ
代入扰动量:
x¨=mg+ΔU1mcos⁡(Δϕ)sin⁡(Δθ) \ddot{x} = \frac{mg + \Delta U_1}{m} \cos(\Delta\phi) \sin(\Delta\theta) x¨=mmg+ΔU1cos(Δϕ)sin(Δθ)
应用小角度近似 cos⁡(Δϕ)≈1\cos(\Delta\phi) \approx 1cos(Δϕ)1, sin⁡(Δθ)≈Δθ\sin(\Delta\theta) \approx \Delta\thetasin(Δθ)ΔθΔU1⋅Δθ≈0\Delta U_1 \cdot \Delta\theta \approx 0ΔU1Δθ0 (二阶小量忽略不计):
x¨≈(mgm+ΔU1m)⋅1⋅Δθ \ddot{x} \approx (\frac{mg}{m} + \frac{\Delta U_1}{m}) \cdot 1 \cdot \Delta\theta x¨(mmg+mΔU1)1Δθ
x¨≈(g+ΔU1m)Δθ≈g⋅Δθ+ΔU1mΔθ \ddot{x} \approx (g + \frac{\Delta U_1}{m}) \Delta\theta \approx g \cdot \Delta\theta + \frac{\Delta U_1}{m}\Delta\theta x¨(g+mΔU1)ΔθgΔθ+mΔU1Δθ
再次忽略二阶小量 (ΔU1⋅Δθ)(\Delta U_1 \cdot \Delta\theta)(ΔU1Δθ):
x¨≈g⋅θ \ddot{x} \approx g \cdot \theta x¨gθ
结论:在悬停附近,水平加速度 x¨\ddot{x}x¨ 近似与俯仰角 θ\thetaθ 成正比。这同样非常符合直觉:飞机想往前飞,就需要向前低头。这个关系是串级PID中,位置环的输出(期望角度)能够控制飞机位置的根本原因。

案例 3:姿态通道(滚转 Roll)

原始方程:
p˙=1Ixx[U2+(Iyy−Izz)qr] \dot{p} = \frac{1}{I_{xx}} [U_2 + (I_{yy} - I_{zz}) q r] p˙=Ixx1[U2+(IyyIzz)qr]
在小扰动下, p,q,rp, q, rp,q,r 都是小量,它们的乘积 q⋅rq \cdot rqr 是二阶小量,可以直接忽略。U2U_2U2 本身就是扰动输入 ΔU2\Delta U_2ΔU2。同时,在小角度下,机体角速度的变化率 p˙\dot{p}p˙ 等于欧拉角加速度 ϕ¨\ddot{\phi}ϕ¨
ϕ¨≈1Ixx[U2+0] \ddot{\phi} \approx \frac{1}{I_{xx}} [U_2 + 0] ϕ¨Ixx1[U2+0]
最终得到线性化模型:
ϕ¨=1IxxU2 \ddot{\phi} = \frac{1}{I_{xx}} U_2 ϕ¨=Ixx1U2
结论滚转角加速度 ϕ¨\ddot{\phi}ϕ¨滚转力矩 U2U_2U2 成正比。这等价于旋转运动中的 M=IαM = I \alphaM=Iα。同样,俯仰和偏航也有类似结论:

  • θ¨=1IyyU3\ddot{\theta} = \frac{1}{I_{yy}} U_3θ¨=Iyy1U3
  • r¨=1IzzU4\ddot{r} = \frac{1}{I_{zz}} U_4r¨=Izz1U4

通过线性化,我们把一组复杂的非线性耦合方程,解耦成了几个可以独立控制的、简单的二阶线性系统。这就为后续设计简单高效的PID控制器铺平了道路。


3. 从线性模型到 PID 控制 —— 控制器的自然演化

我们已经有了四旋翼的线性化模型。现在,让我们看看 PID 是如何自然而然地从这些公式中“长”出来的。

3.1 比例控制 § —— 引入“虚拟弹簧”

姿态控制为例。我们的线性模型是 ϕ¨=1IxxU2\ddot{\phi} = \frac{1}{I_{xx}} U_2ϕ¨=Ixx1U2
为了方便理解,令 b=1/Ixxb = 1/I_{xx}b=1/Ixx,则方程为 ϕ¨=b⋅U2\ddot{\phi} = b \cdot U_2ϕ¨=bU2

目标:无论飞机歪到什么角度 ϕ\phiϕ,都要把它拉回水平 (ϕ=0\phi=0ϕ=0)。
控制律:我们施加一个与角度成正比的反向力矩。
U2=−Kp⋅ϕ U_2 = -K_p \cdot \phi U2=Kpϕ

代入方程:
ϕ¨=b(−Kpϕ)  ⟹  ϕ¨+(bKp)ϕ=0 \ddot{\phi} = b(-K_p \phi) \implies \ddot{\phi} + (b K_p) \phi = 0 ϕ¨=b(Kpϕ)ϕ¨+(bKp)ϕ=0

物理意义
这是一个标准的简谐振动方程(类似于弹簧振子 x¨+kx=0\ddot{x} + kx = 0x¨+kx=0)。

  • KpK_pKp 实际上是在给四旋翼装上一个虚拟弹簧,刚度为 bKpb K_pbKp
  • 现象:如果你推一下飞机,它会围绕水平面左右摇摆,永远停不下来(无阻尼振荡)。

3.2 微分控制 (D) —— 引入“虚拟阻尼”

目标:消除 P 控制带来的振荡,让飞机稳稳停住。
控制律:增加一项与角速度 ϕ˙\dot{\phi}ϕ˙ 成正比的反向力矩(阻尼)。
U2=−Kpϕ−Kdϕ˙ U_2 = -K_p \phi - K_d \dot{\phi} U2=KpϕKdϕ˙

代入方程:
ϕ¨=b(−Kpϕ−Kdϕ˙)  ⟹  ϕ¨+(bKd)ϕ˙+(bKp)ϕ=0 \ddot{\phi} = b(-K_p \phi - K_d \dot{\phi}) \implies \ddot{\phi} + (b K_d) \dot{\phi} + (b K_p) \phi = 0 ϕ¨=b(KpϕKdϕ˙)ϕ¨+(bKd)ϕ˙+(bKp)ϕ=0

物理意义
这是一个阻尼振动方程

  • KdK_dKd 实际上是在给四旋翼装上一个虚拟空气阻尼
  • 现象:振荡能量被 D 项消耗,飞机在受到扰动后能迅速回到水平并静止。
  • 结论:这就是 PD 控制器。对于四旋翼的姿态环,这通常就够了。

3.3 积分控制 (I) —— 消除“稳态误差”

高度控制为例。线性模型为 Δz¨=1mΔU1\Delta \ddot{z} = \frac{1}{m} \Delta U_1Δz¨=m1ΔU1
注意:这里的 ΔU1\Delta U_1ΔU1 是相对于悬停油门 (mgmgmg) 的增量

场景:假设我们要飞到高度 ztargetz_{target}ztarget
如果我们只用 PD 控制:U1=mg+Kp(ztarget−z)−Kdz˙U_1 = mg + K_p(z_{target} - z) - K_d \dot{z}U1=mg+Kp(ztargetz)Kdz˙
但如果电池电压下降了,或者我们估算的重量 mmm 不准(比实际轻了),那么 mgmgmg 这个前馈量就不够了。
飞机为了维持悬停,必须产生额外的升力,这就需要 ztarget−zz_{target} - zztargetz 保持一个非零的误差(稳态误差)来提供这部分升力。

控制律
ΔU1=Kpe+Kde˙+Ki∫edt \Delta U_1 = K_p e + K_d \dot{e} + K_i \int e dt ΔU1=Kpe+Kde˙+Kiedt

物理意义

  • 只要高度有误差,积分项 ∫edt\int e dtedt 就会不断积累。
  • 最终,积分项会自动“学习”出电池电压下降或重量增加带来的偏差,并产生一个恒定的补偿力。
  • 此时误差 eee 可以回到 0。

总结

  • P (比例):提供虚拟刚度,决定回正的快慢。
  • D (微分):提供虚拟阻尼,决定稳定性。
  • I (积分):提供误差记忆,自动修正模型偏差(如重量估算错误)。

3.5 深入理解闭环系统与根轨迹分析

上一节我们通过求解特征方程的根(极点)来判断系统的收敛性。本节将进一步阐释闭环传递函数的意义,并引入一种更强大的图形化工具——根轨迹法,来直观地理解控制器参数如何影响系统的稳定性。

3.5.1 闭环传递函数的再认识

在3.4节中,我们推导了系统的闭环传递函数为:
H(s)=Y(s)R(s)=C(s)G(s)1+C(s)G(s) H(s) = \frac{Y(s)}{R(s)} = \frac{C(s)G(s)}{1+C(s)G(s)} H(s)=R(s)Y(s)=1+C(s)G(s)C(s)G(s)

  • 它是什么?
    闭环传递函数是整个反馈控制系统的总输入-输出模型。它将我们最关心的两个量——“我们期望的目标” R(s)R(s)R(s) (Reference) 和“系统实际的输出” Y(s)Y(s)Y(s) (Output) 直接关联起来。它是一个高度浓缩的数学表达式,内部已经包含了控制器 C(s)C(s)C(s)、被控对象 G(s)G(s)G(s) 以及反馈回路本身的所有动态特性。

  • 它的意义是什么?
    闭环传递函数 H(s)H(s)H(s) 是分析和设计控制系统的核心,因为它能告诉我们关于系统性能的一切:

    1. 稳定性(收敛性):如前所述,其分母的根(极点)的位置决定了系统在受到扰动后,其自身响应是衰减、发散还是振荡。
    2. 动态性能:它描述了系统从一个状态过渡到另一个状态的“过程”好坏。例如,当目标值突然改变时(阶跃响应),系统输出是响应迅速还是迟缓?会产生多大的超调?需要多长时间才能稳定下来?这些性能指标(上升时间、超调量、调节时间)都与闭环传递函数的极点和零点(分子多项式的根)位置密切相关。
    3. 稳态性能:它描述了系统在过渡过程结束后,能否精确地达到期望值。通过对闭环传递函数应用终值定理,我们可以计算出系统的稳态误差,即 lim(t->∞) e(t)。这能回答“控制器最终能否完全消除误差?”这个问题,对于需要高精度控制的系统(如无人机定点悬停)至关重要。

3.5.2 使用根轨迹法 (Root Locus) 分析收敛性

根轨迹法是一种绝妙的图形化分析工具。它清晰地展示了当一个控制器参数(通常是增益 KKK)从0变化到无穷大时,系统的闭环极点在复平面上是如何移动的。这使得我们无需反复求解不同增益下的特征方程,就能直观地看到增益对系统稳定性和动态性能的影响。

基本原理:根轨迹绘制的是满足特征方程 1+K⋅L(s)=01 + K \cdot L(s) = 01+KL(s)=0 的所有根 sss 的集合,其中 L(s)L(s)L(s) 是系统的开环传递函数,K是可变增益。

案例分析1:P控制器的根轨迹
  • 特征方程: s2+bKp=0  ⟹  1+Kp⋅bs2=0s^2 + bK_p = 0 \implies 1 + K_p \cdot \frac{b}{s^2} = 0s2+bKp=01+Kps2b=0
  • 开环传递函数: L(s)=b/s2L(s) = b/s^2L(s)=b/s2。它在原点有两个重合的开环极点。
  • 根轨迹图分析:
    • 轨迹的起点是开环极点(Kp=0K_p=0Kp=0时)。这里是原点的两个极点。
    • 随着增益 KpK_pKp 从0开始增大,这两个闭环极点从原点分离,一个向上,一个向下,并始终沿着虚轴移动
  • 结论:
    根轨迹图直观地显示,无论比例增益 KpK_pKp 取何值(只要大于0),闭环极点永远停留在虚轴上,实部永远为0。这再次证明,纯P控制器无法使系统稳定收敛,只能产生持续振荡。
案例分析2:PD控制器的根轨迹
  • 特征方程: s2+bKds+bKp=0s^2 + bK_d s + bK_p = 0s2+bKds+bKp=0。为了使用根轨迹法,我们必须选择一个参数作为可变增益 KKK,并固定其他参数。这里我们固定 KdK_dKd,将 KpK_pKp 作为可变增益。
  • 方程变形: s2+bKds+bKp=0  ⟹  1+Kp⋅bs2+bKds=0s^2 + bK_d s + bK_p = 0 \implies 1 + K_p \cdot \frac{b}{s^2 + bK_d s} = 0s2+bKds+bKp=01+Kps2+bKdsb=0
  • 开环传递函数: L(s)=bs(s+bKd)L(s) = \frac{b}{s(s + bK_d)}L(s)=s(s+bKd)b。它有一个开环极点在原点 s=0s=0s=0,另一个在 s=−bKds=-bK_ds=bKd
  • 根轨迹图分析:
    • 轨迹的起点是 s=0s=0s=0s=−bKds=-bK_ds=bKd
    • 随着增益 KpK_pKp 从0开始增大,两个闭环极点分别从这两个开环极点出发,沿着实轴相向移动。
    • 它们在实轴上的某一点(分离点,具体为 s=−bKd/2s = -bK_d/2s=bKd/2)相遇,然后分离。
    • 分离后,一个极点向上进入左上半平面,另一个极点向下进入左下半平面,最终趋近于垂直于实轴的渐近线。
  • 结论:
    这次的根轨迹图告诉我们一个至关重要的信息:只要 Kd>0K_d > 0Kd>0,使得一个开环极点被“挪”到了左半平面,那么无论比例增益 KpK_pKp 如何从0开始增大,所有的根轨迹都始终位于复平面的左半部分。这从图形上强有力地证明了,D项的引入从根本上保证了系统的稳定性。我们还可以看出,随着 KpK_pKp 的增大(极点在轨迹上移动),极点的虚部会变大,说明系统的振荡性会增强,但它始终是收敛的。

3.4 闭环系统收敛性分析(传递函数法)

为了严谨地分析系统为何在PD控制下能够收敛,而在纯P控制下不能,我们引入控制理论中的传递函数法。我们以滚转通道(ϕ\phiϕ)为例。

为什么极点位置决定收敛性?

这个问题的核心在于拉普拉斯反变换,它将频域中的传递函数转换回时域中的系统响应。

  1. 传递函数与极点:一个线性系统的闭环传递函数 H(s)H(s)H(s) 可以通过部分分式展开,分解为一系列基本项的和。对于一个单极点 p1p_1p1,其在传递函数中的形式为 A1s−p1\frac{A_1}{s - p_1}sp1A1
    H(s)=分子多项式分母多项式=分子多项式(s−p1)(s−p2)⋯=A1s−p1+A2s−p2+⋯ H(s) = \frac{\text{分子多项式}}{\text{分母多项式}} = \frac{\text{分子多项式}}{(s-p_1)(s-p_2)\cdots} = \frac{A_1}{s - p_1} + \frac{A_2}{s - p_2} + \cdots H(s)=分母多项式分子多项式=(sp1)(sp2)分子多项式=sp1A1+sp2A2+
    这里的 p1,p2,…p_1, p_2, \ldotsp1,p2, 就是系统的极点

  2. 从极点到时域响应:拉普拉斯反变换的关键规则是:
    L−1{As−p}=Aept \mathcal{L}^{-1}\left\{ \frac{A}{s - p} \right\} = A e^{pt} L1{spA}=Aept
    这意味着系统的总响应(对于一个脉冲输入的自由响应)是每个极点对应的指数函数之和:
    y(t)=A1ep1t+A2ep2t+⋯ y(t) = A_1 e^{p_1 t} + A_2 e^{p_2 t} + \cdots y(t)=A1ep1t+A2ep2t+

  3. 极点实部与系统趋势:现在,我们将极点写成复数形式 p=σ+jωp = \sigma + j\omegap=σ+,其中 σ\sigmaσ实部ω\omegaω虚部

    • 对应的时域项为 Ae(σ+jω)t=AeσtejωtA e^{(\sigma + j\omega)t} = A e^{\sigma t} e^{j\omega t}Ae(σ+)t=Aeσtet
    • 根据欧拉公式 ejωt=cos⁡(ωt)+jsin⁡(ωt)e^{j\omega t} = \cos(\omega t) + j\sin(\omega t)et=cos(ωt)+jsin(ωt),虚部 jωj\omega 决定了响应的振荡部分
    • 而实部 σ\sigmaσ 决定了 eσte^{\sigma t}eσt 这一项,它作为整个响应的包络线,直接决定了系统的长期趋势:
      • σ<0\sigma < 0σ<0 (极点在左半平面): eσte^{\sigma t}eσt 是一个衰减的指数函数(如 e−2te^{-2t}e2t)。系统的自由响应会随时间趋近于零。系统收敛,是稳定的。
      • σ>0\sigma > 0σ>0 (极点在右半平面): eσte^{\sigma t}eσt 是一个增长的指数函数(如 e2te^{2t}e2t)。系统的自由响应会无限增大。系统发散,是不稳定的。
      • σ=0\sigma = 0σ=0 (极点在虚轴上): eσt=1e^{\sigma t} = 1eσt=1。系统的自由响应是一个幅值不变的持续振荡(如 cos⁡(ωt)\cos(\omega t)cos(ωt))。系统既不收敛也不发散,是临界稳定的。

结论:一个系统的动态响应由其所有极点共同决定。只要所有极点的实部都为负,系统的每一个响应分量都会衰减,从而保证系统最终能够稳定下来。因此,分析系统收敛性的关键,就在于求解其闭环传递函数的极点,并检查它们是否全部位于复平面的左半部分。


前提

  • 被控对象(Plant): 从线性化模型可知,滚转力矩 U2U_2U2 与角加速度 ϕ¨\ddot{\phi}ϕ¨ 的关系为 ϕ¨=bU2\ddot{\phi} = b U_2ϕ¨=bU2(其中 b=1/Ixxb=1/I_{xx}b=1/Ixx)。通过拉普拉斯变换(sss为复频率),其传递函数为:
    G(s)=Φ(s)U2(s)=bs2 G(s) = \frac{\Phi(s)}{U_2(s)} = \frac{b}{s^2} G(s)=U2(s)Φ(s)=s2b
  • 控制器(Controller): 控制器根据期望角度 ϕdes\phi_{des}ϕdes 和当前角度 ϕ\phiϕ 的误差 e=ϕdes−ϕe = \phi_{des} - \phie=ϕdesϕ 来计算输出 U2U_2U2
  • 闭环系统: 控制器和被控对象组成一个负反馈系统。根据上面的讨论,我们要做的就是分析其闭环极点的位置。

案例分析1:纯比例(P)控制器 (对应3.1节)

  1. 控制器传递函数 C(s)C(s)C(s)
    P控制器的控制律是 输出 = Kp * 误差,即 U2(t)=Kp⋅e(t)U_2(t) = K_p \cdot e(t)U2(t)=Kpe(t)。对这个式子进行拉普拉斯变换,我们得到 U2(s)=Kp⋅E(s)U_2(s) = K_p \cdot E(s)U2(s)=KpE(s)
    传递函数的定义是输出与输入的比值,因此:
    C(s)=U2(s)E(s)=Kp C(s) = \frac{U_2(s)}{E(s)} = K_p C(s)=E(s)U2(s)=Kp

  2. 闭环特征方程 1+C(s)G(s)=01 + C(s)G(s) = 01+C(s)G(s)=0
    在一个标准的负反馈控制环中,误差 E(s)E(s)E(s) 是目标值 R(s)R(s)R(s) (期望角度 ϕdes\phi_{des}ϕdes) 与实际值 Y(s)Y(s)Y(s) (实际角度 ϕ\phiϕ) 的差,即 E(s)=R(s)−Y(s)E(s) = R(s) - Y(s)E(s)=R(s)Y(s)
    而实际值 Y(s)Y(s)Y(s) 是由误差 E(s)E(s)E(s) 经过控制器 C(s)C(s)C(s) 和被控对象 G(s)G(s)G(s) 共同作用产生的:Y(s)=E(s)⋅C(s)⋅G(s)Y(s) = E(s) \cdot C(s) \cdot G(s)Y(s)=E(s)C(s)G(s)
    将两者合并:Y(s)=(R(s)−Y(s))⋅C(s)G(s)Y(s) = (R(s) - Y(s)) \cdot C(s)G(s)Y(s)=(R(s)Y(s))C(s)G(s)
    整理可得:Y(s)(1+C(s)G(s))=R(s)C(s)G(s)Y(s)(1 + C(s)G(s)) = R(s)C(s)G(s)Y(s)(1+C(s)G(s))=R(s)C(s)G(s)
    系统的闭环传递函数为 Y(s)R(s)=C(s)G(s)1+C(s)G(s)\frac{Y(s)}{R(s)} = \frac{C(s)G(s)}{1+C(s)G(s)}R(s)Y(s)=1+C(s)G(s)C(s)G(s)
    我们看到,分母 1+C(s)G(s)1+C(s)G(s)1+C(s)G(s) 决定了系统响应的固有模式。令分母为零,得到的方程即为特征方程,它的根就是系统的极点
    1+Kp⋅bs2=0  ⟹  s2+bKp=0 1 + K_p \cdot \frac{b}{s^2} = 0 \implies s^2 + bK_p = 0 1+Kps2b=0s2+bKp=0

  3. 极点位置
    s=±jbKp s = \pm j\sqrt{bK_p} s=±jbKp

  4. 收敛性分析
    系统的两个极点实部为0,纯粹位于虚轴上。根据我们的理论,这意味着系统处于临界稳定状态。当受到一个扰动后,它会以角频率 ω=bKp\omega = \sqrt{bK_p}ω=bKp 进行永不衰减的正弦振荡。系统并不会收敛到目标值,这与3.1节的直观物理分析完全吻合。

案例分析2:比例微分(PD)控制器 (对应3.2节)

  1. 控制器传递函数 C(s)C(s)C(s)
    PD控制器的控制律是 U2(t)=Kpe(t)+Kdde(t)dtU_2(t) = K_p e(t) + K_d \frac{de(t)}{dt}U2(t)=Kpe(t)+Kddtde(t)
    利用拉普拉斯变换中“时域的微分等于频域乘以s”的性质,我们得到 U2(s)=KpE(s)+KdsE(s)=(Kp+Kds)E(s)U_2(s) = K_p E(s) + K_d s E(s) = (K_p + K_d s)E(s)U2(s)=KpE(s)+KdsE(s)=(Kp+Kds)E(s)
    因此,PD控制器的传递函数为:
    C(s)=U2(s)E(s)=Kp+Kds C(s) = \frac{U_2(s)}{E(s)} = K_p + K_d s C(s)=E(s)U2(s)=Kp+Kds

  2. 闭环特征方程1+C(s)G(s)=01 + C(s)G(s) = 01+C(s)G(s)=0
    1+(Kp+Kds)⋅bs2=0  ⟹  s2+bKds+bKp=0 1 + (K_p + K_d s) \cdot \frac{b}{s^2} = 0 \implies s^2 + bK_d s + bK_p = 0 1+(Kp+Kds)s2b=0s2+bKds+bKp=0

  3. 收敛性分析
    这是一个标准的二阶系统特征方程,其通用形式为 s2+2ζωns+ωn2=0s^2 + 2\zeta\omega_n s + \omega_n^2 = 0s2+2ζωns+ωn2=0

    • 自然频率: ωn=bKp\omega_n = \sqrt{bK_p}ωn=bKp ,它决定了系统响应的“快慢”。
    • 阻尼比: 2ζωn=bKd  ⟹  ζ=bKd2ωn=bKd2bKp=Kd2bKp2\zeta\omega_n = bK_d \implies \zeta = \frac{bK_d}{2\omega_n} = \frac{bK_d}{2\sqrt{bK_p}} = \frac{K_d}{2}\sqrt{\frac{b}{K_p}}2ζωn=bKdζ=2ωnbKd=2bKp bKd=2KdKpb ,它决定了系统的“稳定性”和“超调”。
  4. 极点位置由求根公式给出:
    s=−ζωn±ωnζ2−1 s = -\zeta\omega_n \pm \omega_n\sqrt{\zeta^2-1} s=ζωn±ωnζ21
    只要我们选择 Kp>0K_p > 0Kp>0Kd>0K_d > 0Kd>0,那么 b,ωn,ζb, \omega_n, \zetab,ωn,ζ 都是正数。因此,极点的实部 −ζωn-\zeta\omega_nζωn 永远是负数

    • 结论: 只要PD增益为正,系统的极点就一定在复平面的左半部分。根据我们的理论,这保证了系统是稳定且收敛的。
    • 收敛形式
      • ζ>1\zeta > 1ζ>1 (D项很强),为过阻尼,系统缓慢收敛无超调。
      • ζ=1\zeta = 1ζ=1 (D项恰到好处),为临界阻尼,系统最快收敛且无超调。
      • 0<ζ<10 < \zeta < 10<ζ<1 (P项占优),为欠阻尼,系统在振荡中收敛,会有一定超调。这是实际调参中最常见的情况。

通过传递函数法,我们从数学上证明了D项的引入,相当于在系统特征方程中增加了一次项 sss,从而将极点从虚轴“拉”到了左半平面,确保了系统的收焉性。

4. 四旋翼控制架构 —— 串级 PID

在实际四旋翼中,我们不直接用 PID 控制位置,而是采用串级结构(Cascade Control)

4.1 为什么要分层?

位置的变化不是直接发生的。

  • 想让飞机向前飞(位置变化),必须先让飞机低头(姿态变化)。
  • 姿态的变化比位置的变化快得多(电机响应只需几十毫秒,而飞出去几米需要几秒)。
  • 时间尺度的分离使得分层控制成为最佳选择。

4.2 控制流图与公式详解

串级PID的本质是将控制任务分解为“快环”和“慢环”,内环快,外环慢。

1. 外环(位置环):计算期望姿态

外环的目标是根据位置误差,计算出要让飞机飞到正确位置所期望的姿态

  • 运行频率: 较低 (e.g., 10Hz - 50Hz)
  • 控制器: 通常是 PID (或 PI, PD)
X-Y 平面位置控制 (以X轴为例)

首先,位置控制器计算出一个“期望的加速度” x¨des\ddot{x}_{des}x¨des 来消除位置误差。
x¨des=Kp,x(xdes−xcurr)+Ki,x∫(xdes−xcurr)dt+Kd,x(x˙des−x˙curr) \ddot{x}_{des} = K_{p,x}(x_{des} - x_{curr}) + K_{i,x}\int(x_{des} - x_{curr})dt + K_{d,x}(\dot{x}_{des} - \dot{x}_{curr}) x¨des=Kp,x(xdesxcurr)+Ki,x(xdesxcurr)dt+Kd,x(x˙desx˙curr)

  • 输入:
    • xdesx_{des}xdes: 期望的X轴位置 (来自遥控器或任务规划)
    • xcurrx_{curr}xcurr: 当前的X轴位置 (来自GPS或视觉定位)
    • x˙des\dot{x}_{des}x˙des: 期望的X轴速度 (通常为0)
    • x˙curr\dot{x}_{curr}x˙curr: 当前的X轴速度 (GPS或状态估计)
  • 输出:
    • x¨des\ddot{x}_{des}x¨des: 期望的X轴加速度

然后,利用在线性化部分得到的近似关系 x¨≈g⋅θ\ddot{x} \approx g \cdot \thetax¨gθ,将期望加速度转换成期望的俯仰角 θdes\theta_{des}θdes
θdes=x¨desg \theta_{des} = \frac{\ddot{x}_{des}}{g} θdes=gx¨des

  • 输入:
    • x¨des\ddot{x}_{des}x¨des: 期望的X轴加速度 (来自位置PID控制器)
  • 输出:
    • θdes\theta_{des}θdes: 期望的俯仰角 (将作为内环的输入)

Y轴的控制与X轴完全类似,通过计算 y¨des\ddot{y}_{des}y¨des 来得到期望的滚转角 ϕdes\phi_{des}ϕdes
ϕdes=−y¨desg \phi_{des} = -\frac{\ddot{y}_{des}}{g} ϕdes=gy¨des
(注意:这里的负号是因为,按照右手坐标系,正的滚转角 ϕ\phiϕ 产生负的Y轴方向加速度)

Z轴(高度)控制

高度控制器的输出是调节总升力 U1U_1U1
ΔU1=Kp,z(zdes−zcurr)+Ki,z∫(zdes−zcurr)dt+Kd,z(z˙des−z˙curr) \Delta U_1 = K_{p,z}(z_{des} - z_{curr}) + K_{i,z}\int(z_{des} - z_{curr})dt + K_{d,z}(\dot{z}_{des} - \dot{z}_{curr}) ΔU1=Kp,z(zdeszcurr)+Ki,z(zdeszcurr)dt+Kd,z(z˙desz˙curr)

  • 输入:
    • zdesz_{des}zdes: 期望高度
    • zcurrz_{curr}zcurr: 当前高度 (来自气压计或GPS)
    • z˙des\dot{z}_{des}z˙des: 期望垂直速度 (通常为0)
    • z˙curr\dot{z}_{curr}z˙curr: 当前垂直速度
  • 输出:
    • ΔU1\Delta U_1ΔU1: 升力调节量。最终的总升力指令是 U1=mg+ΔU1U_1 = mg + \Delta U_1U1=mg+ΔU1

2. 内环(姿态环):执行期望姿态

内环的目标是快速、精确地跟踪外环给出的期望姿态,并输出最终的电机力矩指令。

  • 运行频率: 很高 (e.g., 250Hz - 1kHz)
  • 控制器: 通常是 PD (或仅P)
姿态控制 (以俯仰角 θ\thetaθ 为例)

姿态控制器计算出力矩 U3U_3U3 来消除姿态角度误差。
U3=Kp,θ(θdes−θcurr)+Kd,θ(θ˙des−θ˙curr) U_3 = K_{p,\theta}(\theta_{des} - \theta_{curr}) + K_{d,\theta}(\dot{\theta}_{des} - \dot{\theta}_{curr}) U3=Kp,θ(θdesθcurr)+Kd,θ(θ˙desθ˙curr)

  • 输入:
    • θdes\theta_{des}θdes: 期望俯仰角 (来自外环)
    • θcurr\theta_{curr}θcurr: 当前俯仰角 (来自IMU)
    • θ˙des\dot{\theta}_{des}θ˙des: 期望俯仰角速度 (通常为0)
    • θ˙curr\dot{\theta}_{curr}θ˙curr: 当前俯仰角速度 qqq (来自IMU)
  • 输出:
    • U3U_3U3: 俯仰力矩指令 (将进入电机混控器分配到各个电机)

滚转角 ϕ\phiϕ 和偏航角 ψ\psiψ 的控制同理,分别输出滚转力矩 U2U_2U2 和偏航力矩 U4U_4U4


总结: 控制信号的流动路径

  1. 位置目标 (xdes,ydes,zdes)(x_{des}, y_{des}, z_{des})(xdes,ydes,zdes)
  2. -> 外环(位置PID)
  3. -> 期望姿态和升力 (ϕdes,θdes,U1)(\phi_{des}, \theta_{des}, U_1)(ϕdes,θdes,U1)
  4. -> 内环(姿态PD)
  5. -> 期望力矩 (U2,U3,U4)(U_2, U_3, U_4)(U2,U3,U4)
  6. -> 电机混控
  7. -> 各个电机的转速
  8. -> 物理世界: 四旋翼产生力和力矩,改变姿态和位置
  9. -> 传感器(IMU, GPS): 测量新的 (xcurr,ϕcurr,...)(x_{curr}, \phi_{curr}, ...)(xcurr,ϕcurr,...),形成闭环。

5. 实用指南:参数整定与实现

5.1 离散化 PID 代码示例

在单片机中,我们使用离散形式:

// 伪代码示例
float update_pid(float target, float current, float dt) {
    float error = target - current;
    
    // P项
    float p_term = Kp * error;
    
    // I项(需限幅,防止积分饱和)
    integral += error * dt;
    integral = constrain(integral, -MAX_I, MAX_I); 
    float i_term = Ki * integral;
    
    // D项(通常对测量值微分,避免设定值突变引起的冲击)
    // 并且通常需要低通滤波
    float derivative = (error - prev_error) / dt;
    float d_term = Kd * derivative;
    
    prev_error = error;
    
    return p_term + i_term + d_term;
}

5.2 调参口诀(经验法)

对于四旋翼这种快速系统,通常遵循 “先内后外,先P后D再I” 的原则:

  1. 内环(姿态)
    • 先把 I 和 D 设为 0,只加 P。
    • 增大 P 直到飞机开始高频振荡,然后回调一点(比如乘 0.6)。
    • 慢慢增加 D,直到振荡消失,飞机反应变得“跟手”且没有回弹。
    • 姿态环通常不需要 I,或者给很小的 I。
  2. 外环(位置)
    • 同样先调 P。
    • 增加 D 抑制过冲。
    • 最后增加 I,直到飞机能稳稳地定在原地,不受微风影响。

核心洞见
PID 参数的本质是对系统频域特性的整形。P 决定带宽(响应速度),D 增加相位裕度(稳定性),I 增强低频增益(稳态精度)。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐