PID and laplace transform

1 minute read

PID Control

  • 最常见的形式
  • $u(t)=K_pe(t)+K_i\int_0^te(\tau)d\tau+K_d\frac{d}{dt}e(t)$
  • 其中
    • $K_p$为比例(proportional)增益
    • $K_i$为积分(integral)增益
    • $K_d$为微分(derivative)增益
    • $e=SP-PV$为误差,设定值(setpoint)$SP$与过程值(process variable)$PV$的差
    • $t$为时间
    • $\tau$积分变数,因为是历史状态的积分,因此要与$t$区分开来

比较常见的解释和应用

  • 通过控制水箱的流入速度,使得水箱内的高度或体积保持不变的一种过程
  • 汽车定速巡航,遇到上坡如何设计动力
  • 无人机的悬停和应激相应(推一下回到原来的位置,或者前往目标点)
  • 解决电路问题

PID

  • 通常学习PID控制时,往往不太懂得3个变量的实际作用,又有计算机作为辅助进行模拟,那么就会导致盲目调参,而书中提到的调参方法又只讲参数含义,将调参性质描述一遍,这样完全不得法门,最后只能得到一个差不多的结果
  • 历史上
    • 惠更斯17世纪改造了风车,使得磨盘转速和磨盘间隙可以根据谷物数量变化
      • Power From the Wind , Cambridge University Press
    • 瓦特使用圆锥摆以解决蒸汽机的速度输出
    • 1868年,为了更好的保持鱼雷的深度,引入了微分控制
    • 直到1922年,才有了完整的3项控制率
  • 因此,大多数书籍往往会根据每项变量引入时发挥的作用加以解释,但是又与纯PI控制,PD控制,甚至单纯的P控制应用相违背,除了硬件或成本上的限制,更需要思考的是,每一项为整个系统的稳定性到底提供了多大的好处

PID调参

  • 为了获得更好的参数,有如下几种方法

理论分析

Laplace Transform[拉普拉斯变换]

$$ L(s) = \int_0^{\infty}f(t)e^{-st}dt $$
  • 其中$s$是个复数
  • 为了更好的理解Laplace Transform, 回想一下Fourier transform[傅里叶变换]
    • $F(\omega) = \int_{-\infty}^{\infty}f(t)e^{-i\omega t}dt$, $i$是虚数单位
    • 同时它也有另外一种表示
    • $F(\omega) = \int_{-\infty}^{\infty}f(t)*\sin(\omega t)dt$
    • 这是因为欧拉公式可以建立起复数和三角函数之间的关系
  • 傅里叶变换和拉普拉斯变换的主要区别
    • 傅里叶变换的积分域为$(-\infty,+\infty)$, 而拉普拉斯变换的积分区间为$(0, +\infty)$
      • 由于傅里叶变换主要关心函数的周期性,频率性质,而这些性质需要假设函数拥有周期或者周期无限长,对于一些01信号也需要利用周期函数的性质再将其进行延拓
      • 而拉普拉斯变换主要解决应用问题,$t$常常作为时间表示,而时间没有负值,因此拉普拉斯变换常常不考虑负值的情况,不过依然存在双边拉普拉斯变换的情形bilateral Laplace transform
      • Why does Laplace transform take the integral with limit beginning at zero - Quora
    • 傅里叶变换使用纯虚数,而拉普拉斯变换将其扩大到了整个复数域
      • 这里有三种理解方式
        • 将$s$分离成实数和虚数两个部分
          • $L(s)=\int_0^{\infty}f(t)e^{-i\omega t}e^{-\sigma t}dt$
          • 其中$\omega, \sigma$都为实数
          • 这样拉普拉斯变换就只是在傅里叶的基础上乘了$e^{-\sigma t}$
          • 这样就解决了一些非周期的以及$f\to\infty$区域无穷的函数利用傅里叶不可积的问题
          • 当然如果存在$f$比$e^{\sigma t}$的增长速度还要快的函数,那么拉普拉斯变换也依然存在不可积的问题
        • 将这两种变换理解为函数值之间的内积或者卷积
          • 为了得到一些频率的信号量,我们选择一组正交基,比如一些三角函数,我们用$f(t)·e^{-i\omega t}$(它是傅里叶变换的内积形式),找到在该周期内最大的响应,然后依次求出各个周期的信号大小,这就是傅里叶级数的求法
          • 同时,为了解决傅里叶级数需要周期无限长的问题,也有Wavelet transform[小波变换], 等
          • 如果不考虑基的正交性,你还可以自己设计一个新的函数
          • 例如在图像领域的Box-Filter[盒子滤波器], 它仅仅是二维高斯函数的离散化点阵而已,用以加快计算速度,或者其他CNN中所用的filter,也是同样的作用
          • 那么这时,拉普拉斯变换中$e^{-i\omega t}e^{-\sigma t}$就变成了一个幅度不断增长或下降的三角函数,我们通过它就可以知道一个函数的指数收敛性,或者发散速度
        • 第三种将其理解为一种在复数空间中的投影
      • Reference
  • 计算例子
    • $$ \begin{aligned} L(s)=\mathcal{L\{f(t)\}} &= \int_{0^{-}}^\infty f(t)e^{-st}dt\\ &=\left[\frac{f(t)e^{-st}}{-s}\right]_{0^{-}}^\infty-\int_{0^{-}}^\infty\frac{e^{-st}}{-s}f'(t)dt&(1)\\ &=\left[0-\frac{f(0^{-})}{-s}\right] + \frac{1}{s}\mathcal{L\{f'(t)\}}\\ \mathcal{L\{f'(t)\}}&=s\mathcal{L\{f(t)\}}-f'(0^{-})\\ \mathcal{L\{f'(t)\}}&=sL(s)-f'(0^{-})\\ \end{aligned} $$
      • 其中
        • $(1)$使用了分部积分法,同时使用了隐含条件$\lim\limits_{t\to \infty} f(x)e^{-st} = 0$, 即前文提到的,$f(t)$的增长速度没有$e^{st}$快,因此作为分母时才可以使得$f(x)e^{-st} _{t=\infty}=0$
        • $0^{-}$的解释
        • Wikipedia 这个极限强调任何位于 0 的质点都被拉普拉斯变换完全捕获。虽然在使用勒贝格积分时,我们没有必要取这个极限,但它让我们更自然地与拉普拉斯–斯蒂尔吉斯变换建立联系。

  • 比较常用的其他例子

Categories:

Updated: