生活中的一些小电器,无人机的飞行姿态和飞行速度控制等等,都应用到 PID——PID 控制在自动控制原理中是一套比较经典的算法。
我们常见到这类设备,只不过没有留心或者发现了没有深入探究以及主动搜索一下其中的原理而已。
为什么说产品经理需要保持强烈的好奇心?发现生活、身边的美,探究一下为我所用。
比如我们家里的恒温热水器、小米的平衡车,我们常常说的自动驾驶、无人机、扫地机、大火的服务机器人等等产品上有广泛的应用。
不管你学没学过控制理论,只要涉及到机电一体化系统,一定会接触到 PID 控制算法。
为什么需要 PID 控制器呢?
你一定用过恒温热水壶,你想让热水壶的水保持在一个恒定的温度,回到家拿起来就喝,不需要慢慢等水烧开再等到水冷却到适合咕咚咕咚喝的温度。
这时候就需要一种算法先将水温加热到目标位置附近,能够“预见”这个水温的变化趋势,然后还能根据各种环境影响因素造成误差去调节以维持设定目标。
当然,热水壶不需要那么高的精确度,可能只用 PD 就搞定了。
那,比如自动驾驶中控制汽车维持在某个设定的速度行驶,或将汽车保持在一个固定车道内行驶,这就需要非常精准。
这下你知道 PID 到底是个什么东东了吧!
接下来,我们了解一下他的原理。
一、什么是 PID及其原理
1. 什么是 PID
PID,即比例 Proportion、积分 Integral 和微分 Derivative 三个单词的缩写;比例积分微分控制,简称PID控制。
简单讲,根据给定值和实际输出值构成控制偏差,将偏差按比例、积分和微分通过线性组合构成控制量,对被控对象进行控制。
常规 PID 控制器作为一种线性控制器。
2. PID 原理
常规的 PID 控制原理图:
系统由 PID 控制器和被控对象(常常是执行机构,如电机等)组成。
现在知道了 PID 控制器是怎么工作的,那么为什么需要比例、积分、微分三个环节呢?具体有什么作用呢?
- 比例环节:当被控制对象现状与目标有差距的时候,控制器就产生一个控制使得被控制对象向目标靠近。所以这是根据目标差距进行一个有比例的调节。
- 微分环节:当被控制对象越来越接近目标的时候,当然不能按照比例调节的给定量去执行。所以引入一个对未来趋势的判断给定量。
- 积分环节:当比例和微分环节控制达到预设目标时,对一段时间内的静态误差进行纠偏。
从时间的角度讲,比例作用是针对系统当前误差进行控制,积分作用则针对系统误差的历史,而微分作用则反映了系统误差的变化趋势,这三者的组合是“过去、现在、未来”的完美结合。
引述百度的标准解释:
- 比例环节:即时成比例地反应控制系统的偏差信号e(t),偏差一旦产生,控制器立即产生控制作用以减小误差。当偏差e=0时,控制作用也为0;因此,比例控制是基于偏差进行调节的,即有差调节。
- 积分环节:能对误差进行记忆,主要用于消除静态差,提高系统的无差度,积分作用的强弱取决于积分时间常数Ti,Ti越大,积分作用越弱,反之则越强。
- 微分环节:能反映偏差信号的变化趋势(变化速率),并能在偏差信号值变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减小调节时间。
例子稍微极端一点儿,假设你在高速公路上想跟着你前面的车 100 米的距离跑,并且假设你前面的车是自动驾驶的定速巡航。
这时,你把三个环节想象成你自己=比例,你另外的两个兄弟,一个是微分,一个是积分。
现在你们俩的车相距 300m,你一脚油门下去,车子急加速开始逼近目标。
你的车慢慢靠近 100m 这个目标。
这时,你的兄弟「微分」说:“兄弟,慢点慢点!!快要接近了”。这就是微分的作用,对未来的判断和控制。
你肯定不会一次性就将这个跟车距离调整好了。可能你一会儿小于 100m ,一会儿你又大于 100m 跟踪距离。
就这样你跟你兄弟这样来来回回的调整,终于将跟车距离调整在 100m 左右这样的距离(比较极端哈,人为是不可能做到的)。
可是路上有坑洼呀、有风阻、还有上坡这样的环境干扰因素。
这时,你那个好久没说话的兄弟「积分」起作用了,他一直在监视你这段平稳驾驶(100m 跟车的稳定状态)状态的误差,然后进行计算,告诉你给多少油门。
至此,我想应该对 PID 有了初步的认识。
接下来通过一个稍微详细点儿的例子了解一下 PID 三个环节是如何工作的。
二、PID 三个环节如何工作
我们就用比较火热的自动驾驶来简单举例,那自动驾驶很直观的就有两个应用,一个是保持固定的车道行驶,一个就是保持固定的速度行驶。
保持固定的车道就是控制方向盘,保持固定速度就是控制油门;这两个都比较直观,我们就用固定速度(定速巡航)来简单举例。
定速巡航也是非常成熟的技术了,在很多中低端车型上已经成了标配。
1. 我们先讲 P——比例调节
现在我们想让我们的车在高速公路上保持 100km/h 的速度行驶,当前速度是 40km/h。
想要到达 100km/h 有三种执行方式:
- 猛踩油门,车速快速提升,以最快的速度接近 100km/h;
- 温和的踩油门,车速中等,以温和的速度接近 100km/h;
- 缓慢的踩油门,车速较慢,以较慢的速度接近 100km/h。
分别对应的 P 值是:较大、中等、较小。
直观的反应对比如图:
从图中可以看出:
- 当 P 值较大时,车辆以更快的速度和最短的时间达到 100km/h;
- 当 P 值中等时,车辆相对于 P 值较大时,反应相对慢点儿,也就是以相对较慢和更长一点儿的时间到达 100km/h;
- 当 P 值较小时,车辆的反应速度就更慢,到达 100km/h 所耗费的时间也更长。
说到这儿你可能就明白了。
车辆的反应速度和耗费时间的长短取决于 P 值的大小——也就是 P 值越大,车辆反应越快,耗时越短。
P 值大,虽然反应快,但是反应剧烈,类似于猛加速,坐在汽车里有强烈的推背感;相应的当靠近目标的时候,由于惯性容易冲过头,并且为了抑制过大冲过头就需要猛烈的踩刹车,乘坐的人就身体向前倾。
另外由于惯性比较大的原因,车辆需要更长的时间才能调整到恒定 100km/h 的速度,因为车辆需要较长的时间来调整震荡。
这样的乘坐体验就不是很好,这就需要我们设置一个合理的 P 值,车辆的反应不那么剧烈,反应时间你也能够接受。
类似于你开汽车,你用 S 档(有的叫运动档,有的叫超车档)超车,较大的功率输出,较快的提速,然后切换到 D 档(行车档)维持;你可以感受一下,同样的油门,S 档与 D 档的反应不一样,P 值设置不一样。
好了,既然有了 P 为什么还需要 D 呢?
人类的欲望是无止尽的,总希望越多越好,越快越好(前提是付出的越少越好)。
这时就引入一个 D ,反应速度再快一点儿,但是反应又不那么剧烈;也就是在中等的 P 值前提下,比只有 P 的情况下更快的到达 100 的速度(用时更少),但是车辆又不剧烈的震荡(比没有 D 的时候更温和)。
2. D——微分调节
为了不让车辆速度冲过头,我们再给他一个反向的减速度。就是让车辆在越接近 100 的时候,车速解决 100 的速度越慢;与 100km/h 差距越大的时候,接近速度越快。
注意,这个速度不是车辆的行驶速度,是达到目标速度 100 的时间长短。
这点儿可能不太容易理解,这个相当于你车速已经到了 90km/h,为了防止过冲,这时候你开始松油门,松的比较快;当到达 95km/h 的时候,你油门松的就比较慢。
D 值的设置也有三种情况:
- D 值较大,到达目标速度的时间就比较长;
- D 值较小,会产生震荡,车速会在 100 上下波动,缓慢的进入 100 的车速维持;
- D 值合适,车速较快达到 100,并且不会震动。
直观的反应对比图:
P 值不变的前提下 D 值影响的变化表现。
D 值太大了,减速度就大了,也可以理解为靠近目标速度 100 的阻力大。那这样达到目标耗费的时间就较长。
D 值太小了,虽然能够较快的达到目标,但是 D 值对 P 的影响力不够,容易过冲,并且需要经过多次调整才能进入稳定状态。
在 P 和 D 的相互作用,调节控制下,最终得到的理想状态是这样的。
既能在较快时间内达到目标,又不会使得反应剧烈造成不适感。
有了 P 和 D 是不是很完美了呢?貌似很完美,但是我们希望更加完美就需要引入一个 I 进入。
3. I——积分调节
有了 P 和 D 貌似已经很完美了,但是这个世界是不稳定的,没有一直保持不变的状态,正如那句话“一切都不在变化,唯一不变的只有变化”。
你终于将你的车辆稳定在 100km/h 之后,但是依然有来个方面的影响因素,内在和外在。
内在的是,你车辆的燃油效率是在变化的,外在的是风阻、路面状态(比如摩擦比、平整度、微小的坡度等)都在变化,这些干扰因素都在影响你车辆的恒定目标速度。
所以,I (积分)就介入检测过去一段时间内车速状态,然后进行积分,适当的帮助 P 一把。
I 值设置也有三种情况:
- I 值过大,调整的力度太大了,容易造成过冲,需要几次调整才能让车速回归正常,车辆会振荡;
- I 值过小,调整的力度太小了,帮助 P 的作用不大,所以需要较长时间才能回到正常;
- I 值合适,给一个合适的力来帮助 P ,让车速在一个合适的时间内回到目标值。
直观的反应对比图:
以上就是 PID 三环节的调节,使得被控制对象能够达到一个稳定平衡的运行系统。
最后,用一个动图,看看三者之间的关系。
三、PID 应用
其实我们在在日常生活中能看到很多产品都有 PID 的运用,但并不是都会将 PID 三个调节都用上。
不同的产品根据不同的使用环境,做相应的调整;P 是一定要用的,I 和 D 就是看系统响应速度,输入震荡程度等情况,根据实现效果和控制精度等进行相应的取舍。
当然,也有工程师工程技术能力的因素,以及怎么设计的问题。
比如,很早以前,我用过一个某大牌的三轴手持云台,我在没有装载手机的情况下开机,三轴开始乱转,这就是设计的问题;在开机的时候,目标与现状差距很大,这时候工程师让 I 介入了,造成过冲,其实只要将 I 进行分离设计就好。
再比如,平衡车很多的时候,很多厂家不明所以的就进入这个市场;最后进入市场的产品,一开机,平衡车前后剧烈振荡,半天才进入平衡状态,有的甚至一直不能进入平衡状态,直到你强行扶着站上去才勉强能用。
这项技术虽然是已经发展几十年的技术了,在工业和日常生活的小产品上有广泛的应用。
产品经理虽然不需要深入的去了解技术,但是需要充分详尽的了解使用场景,使用体验,竞争的目前状况,帮助工程师进行产品设计。也需要根据实际情况做相应的取舍,因为成本也许需要考虑的重要因素。