串级pid疑问——为什么外环输出是内环的期望?

前言:最近在梳理px4串级pid时,发现在位置控制中不用串级pid也可以实现位置控制,但是会存在一个现象:在做长距离移动时,接近目标位置会出现超调现象,而采用串级pid这种现象就会减缓,很平滑地接近目标位置。


针对上面的问题,于是我仔细去学习了串级pid,得到以下几点体会:

  • pid控制器并不决定你的控制量(参考值),比如同样的pid,同样的控制对象,你的参考输入是位置,就控制位置,你的参考输入为姿态,就控制姿态。
  • 参考输入应与反馈的值是相同的类型,并且单位也要一致
  • 如果位置控制时只有一个位置环,那么由于执行器直接产生的是加速度,加速度影响速度,速度最后才影响位置,因此如果你只对位置作用pid,那么意味着你只对位置有期望,而你对加速度,速度没有期望,也就意味着加速度,速度是什么都无所谓。所以实际效果变成什么呢?你会以一个你无所谓的加速度,和速度,到达你的期望位置。这时候奇怪的事情发生了,到达你的期望位置时有加速度和速度,那这个就不是到达期望位置了,这叫 经过期望位置。你会发现你的对象在期望位置附近“反复横跳”,超过后,又退回去,退过了,又超过去。这时候你才想起来,原来你期望的是停在期望位置上。什么叫停在期望位置上?就是到达期望位置的同时加速度与速度都为0。

在单级pid里面,最好是期望值(反馈值)是能够直接被执行器改变的,比如加速度。而速度和位移是由执行器间接改变的,所以就需要串级pid。

在位置控制pid中这时候我们就需要引进速度变化曲线,什么是「合适的速度变化曲线」呢,首先当到达期望位置的时候,速度应该为0。其次当没有到达期望位置的时候,期望速度是可以减小位置误差的。总结一下:「期望速度必须能减小位置误差,且位置误差为0时,期望速度为0。」

什么意思呢?如果前方为正方向,当期望位置在我们前方时,即target-current>0,那我们就希望能有个向前的正速度,去缩小这个误差,当误差为0时,我们希望速度为0。满足这样的过程的速度变化曲线,就是「合适的速度变化曲线」。

怎么去构造合适的速度变化曲线就是要怎么由位置差产生期望速度。??

显然外环用pid是可以的,但是微分会影响相应速度,积分又会引起噪声,而只用P又简单又有效,何乐而不为呢?所以最常用的外环控制器就是p控制器,除此之外还有开方控制器,就是对位置差开发产生期望速度。这两种的速度曲线就是:

在这里插入图片描述显然这两种速度曲线都满足要求,即位置有误差时产生期望速度,位置没有误差时就没有期望速度。但这两者适用对象有细小差别,下次我们再来细谈。