在做这两个平衡系统的过程中,pid算法是不可或缺的一部分,相信单环pid大家都很容易理解,无非是关于kp,ki,kd三个系数,但串级pid理解起来就较为复杂,下面我围绕着平衡车和滚球系统这两个项目来说说我对这两个串级pid的看法(这两个也可用并级pid,但是串级调参比较方便)
首先来说一下滚球系统pid,我是采用的摄像头追踪小球,传给单片机坐标,这样的话就可以采用位置速度串级pid,内环为速度环,外环为位置环,速度环是采用两次坐标的差值,然后将位置环的输出作为速度环的输入,这句话不太容易理解,说白了就是如果小球不到目标位置,位置环就会输出一个期待的速度,这个速度作为速度环的目标,直到小球到达目标位置,此时小球的位置环输出为零,速度环目标值为零,直至达到速度也为零,从而达到位置和速度两个目标量的闭环控制。
再来说一下平衡车的串级pid,这个项目大多数均采用直立环和速度环控制,也可以采用串级pid,在这个出串级pid中,直立环为内环,速度环为外环,所以就是速度环的输出作为直立环的输入,这个很难理解,为什么呢?我说说我的理解,首先根据串级pid的原理,速度环的输出是在系数的控制下转化为了一个期望角度,然后传给了直立环作为目标角度,想象一下一个平衡车匀速倾斜前进时的场景,此时的角度应该和轮子的转速有着线性关系,因而可以实现量纲的转化,直至到角度为零,速度也为零,这样也就达到了控制效果。
总结来说,为什么外环输出可以做为内环的输入呢?就是因为串级pid实现了具有线性关系的量纲转化,还应当注意的是,串级结构必须先调节内环参数,内环一般是易控量,可以达到快速控制,改变内环的期待目标,从而实现外环控制。这就是我对串级pid的浅显理解,有误请大家指正。