PID及其衍生算法,是目前工业应用最为广泛的算法之一,是当之无愧的万能算法!
对于研发人员来讲,熟练掌握了PID算法的设计与实现过程,就足够应对一般的研发问题了。
PID概念
PID是比例(Proportional)、积分(Integral)、微分(Derivative)的缩写,将偏差的比例、积分、微分通过线性组合构成控制量,用这一控制量对被控对象进行控制。
PID的控制流程简单到不能再简单,如图1所示:
图1:PID控制流程
通过这张流程图,我们可以看到PID也是反馈控制,在PID控制中:
1.
第一步
根据反馈值和期望值求出误差,比如轨迹跟踪控制中,这个误差就是车辆当前位置和期望路径之间的距离;
2.
第二步
求出误差之后,再根据这个误差值进行比例、积分和微分三项的计算,其中K p ,Ki和Kd分别是这三项的系数,表示这三项对输出控制量的影响的比重。
3.
第三步
最后将计算出来的比例、积分和微分三项进行求和,就得到最后输出的控制量了。
PID的结构是可以灵活改变的,因为根据实际情况,比例、积分、微分三项并不是都需要发挥作用的,所以PID控制器又往往可以变成P控制器和PD控制器。
接下来我们以轨迹跟踪为例来分别讨论:比例、积分、微分这三项的意义。
P概念
考虑一个简单的情况,假设我们希望自动驾驶小车沿着图中的路线行驶,但小车在如图2所示的位置,那么需要转多少度呢?
图2:小车初始位置
如果我们给其输入一个固定的值来转向,那么小车的轨迹将会图3中所示:小车会沿着车道中心线走蛇形曲线。
图3:固定值转向的小车行驶轨迹
显然,如果我们坐在这样的车上,一定会非常不舒服,因此驾驶技术娴熟的老司机在变道或是转向时,会一直调整方向盘,偏差大的时候转动更多的角度,偏差小的时候,则转角少一点。
PI中的P控制,也称为比例控制,就是根据不同的偏差输出不同的控制信号。控制器的输出和输入成正比,只要偏差出现,就能及时地产生与它成比例的控制信号,如下图所示。
图4:比例控制
在轨迹跟踪控制的这个例子中可以用这个式子来表达:
steering=K p .e(t)
其中的e(t)就是期望值和反馈值的偏差,在这里指的是 车辆偏离期望路径的距离 ,Kp就是比例控制的系数,通常称为 比例参数 。
我们可以这样理解: 方向盘应该转动的角度是车辆偏离当前车道的距离的倍数,这个倍数就是Kp 。
在P控制中系数Kp会直接影响实际的控制效果。在合理的数值范围内,Kp越大控制的效果越好,小车会越快的回到期望路径附近,对比如图5所示。
图5:不同Kp时小车行驶轨迹
但是,如果小车本身的位置距离期望路径很远,并且Kp又比较大的时候,就会出现车辆失控的情况,如图6所示:
图6:Kp过大时车辆失控
如果单纯地使用比例控制,小车可能会不停的穿越期望路径,并且来回调整,并不能稳稳地按照车道中心线行驶。在控制领域中,称这种现象为“ 超调 ”。
PD概念
这样看来PD控制好像已经能够实现较好的控制效果了,但这只是对于正常的情况,当环境存在扰动的时候。
比如说路面不平,车辆在受到外力作用下发生轻微偏移之后,由于比例控制倾向于向车道中心线方向运动,而微分控制则希望抵消这种倾向,这时候就可能造成车辆行驶路线与期望路径之间有一个持续的偏差(如图7所示),从而使得车辆始终无法沿着期望路径行驶,这种偏差我们称作“ 稳态误差 ”。
图7:小车受扰动后产生偏移后的轨迹
为了消除稳态误差,我们需要再引入一项—— 积分项 。我们同样把偏差的积分乘以一个系数K i ,加入到比例微分控制的表达式中去:
那么现在的控制输出就变成了比例项、积分项和微分项的和的形式,现在控制器就由PD控制器变成了PID控制器,也就是比例、积分、微分控制器。
积分控制其实很好理解,稳态误差持续一段时间后,车辆的真实轨迹跟期望路径会形成一个长条形的区域。这个区域可以称之为累积误差****。
这个累积误差,实际上是长条形区域的面积,而这个区域的面积就可以用偏差的积分来表示。
加入积分项以后,控制函数会尽可能使车辆实际运行轨迹的积分尽可能小(也就是使车辆实际运行轨迹和期望路径之间形成的形状的面积尽可能小),那么也就能够实现消除稳态误差了。
现在我们需要调节的系数变成三个了,同样的,这里的积分项系数Ki的大小也会影响整个控制系统的稳定性,如图8所示:
图8:图不同Ki时小车行驶轨迹
如果Ki过大,控制器会变得不稳定,因为正常的控制器波动会被夸大。
如果Ki太小,又会使控制的车辆脱离稳态误差需要较长的时间,这在某些情况下势必会使车辆处于一个危险的境况。
只有当Ki恰到好处时,车辆才能快速接近理想轨迹
总结
我们同时考虑了车辆的偏离程度、向期望路径靠拢快慢、持续偏离误差三个因素来控制车辆实现轨迹跟踪,这就是比例-积分-微分控制(PID)。
这是用车辆轨迹跟踪的案例来进行解释的,我们再总结PID的每一个环节:
比例控制的作用是根据偏差的大小,使控制量向减少偏差的方向变化,控制作用的强弱取决于比例系数K p ,Kp越大控制越强,但是过大的Kp会导致系统震荡,产生“超调”,破坏系统稳定性。
微分控制的作用是根据偏差的变化速率,阻止偏差的变化。有助于减小超调量,克服震荡,使系统趋于稳定。
而积分控制能够消除系统的稳态误差,同时也能够促进控制量向减少偏差的方向变化。
选择合适的K p ,Kd和Ki是使用PID控制器的关键,而三个参数的值需要通过不断尝试、调整并结合实际工作经验进行确定。