总体的参数整定原则是:

1、先P后D,如果电机响应慢(比如减速级很多的电机),再调I,如果PD效果足够好的话则不需要I。

2、单一变量法,即调整一个参数的时候其他参数都固定不变

先定量级再定数值,比如调整P的时候,先从0.0001开始,查看小车反应,没有效果的话改为0.001,以此类推,直到确定一个合适的数量级,然后才开始在这个数量级里微调,这样其实就已经把调整的范围缩小到很小了。

3、先超调再减小,即所有参数都先尽量加大,直到系统震荡,然后再取这个值的小一点的值作为最合适参数。

4、调试过程中尽量让车处于自然状态没有额外的力作用,即尽量用无线调试,有线的话找根软一些的线。
2.jpg
那么调节过程中小车什么表现才算是“好”呢?

在角度环中,当P逐渐增大,小车会开始有恢复力作用,也就是当手扶着往前倒的时候小车也能大概跟着往前走,但是还是走的很“软”,再逐渐增大参数,恢复力越来越大,直到大到一定程度,小车开始前后自主剧烈抖动,电机性能好一点的小车即使手不扶着也能大概站立了。

稍微减小刚刚震荡的参数,作为P值固定在程序里,开始调节D值,依然是确定量级之后逐渐增大,在增大的过程中会发现小车的震荡频率逐渐降低了,增大到一定程度小车基本不再震荡,这个值就是需要的D值了

也会有一部分情况下由于电机性能原因上面PD的调整过程中始终无法达到很好的效果,那么此时需要加入I,在调完P值之后,D值置0,增加 I值,直到小车的恢复力变得比较“硬”,然后稍微减小P值,直到出现比较理想的直立效果;最后再加D,视效果增加到震荡为止,再减小到70%左右,这样角度环PID所有参数就整定完成了。

角度环调好了,小车可以稳定平衡了,可是为啥它一直往一边跑呢?

因为角度环的任务就是维持小车的角度,除此之外就是它能力范围之外了,角度环是不关心小车是静止着平衡的,还是边跑边平衡的。如果恰好目标平衡点和小车重心平衡点重合,那么小车可以大概静止,而如果不是,那小车就会在平衡中不断加速,直到轮子的速度超出了电机所能提供的转速,于是小车还是会倒下。

所以我们需要添加一个速度环,用编码器测量速度来作为反馈。

先给一个比较小的P值(因为I是P的累加,如果P为0的话I也就没有意义了),随着I值逐渐增大,用手轻推小车,小车会前进之后慢慢后退,就说明参数起作用了。此时你可以决定到底给一个更大的 I值还是小的 I值,越大的 I 值对应了更快的恢复速度,在偏离之后会更剧烈地后退,在更短的距离内回到原点,但是当然这样也会降低小车的稳定性,而小的参数则于此相反,需要在前进更长的距离之后才会慢慢回到原点,但是也使得抗干扰能力增强,也就是不会被轻易推倒。

只用 I 值的话小车的回复会是往复的,逐渐逼近原点,加上P值则可以消除这种来回震荡,与角度环调节D值的过程一样,逐渐增加直到推了之后可以在前后各摆动一次就回复到原点静止,此时这个P值便是对应于那个 I值的最合适参数。

PID参数的调整过程大概如此,总之这是一项既需要细心调整,但自由度也很大的工作,所谓“大胆假设,小心求证”,在多尝试几种参数组合之后,你会找到适合你的小车的magic point的~

本文转自网络。