1.PID简介
PID是一种不依赖系统模型的控制算法,由于其算法简单,鲁棒性好和可靠性高,被广泛应用于工业过程控制。在工程实际中,当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,这时应用PID控制器最为方便。PID控制器就是根据系统的误差,利用比例、积分、微分计算出控制量进行控制的。
连续控制系统的理想PID控制规律为:
线性控制规律为:
其中:
Kp为比例增益
Ti为积分时间常数
Td为微分时间常数
u(t)为PID控制器的输出信号
e(t)为给定值与测量值的偏差
具体的流程图可表示为:
2.PID基本原理
(1)比例环节P
成比例地反映控制系统的偏差信号,偏差一旦产生,立即产生控制作用以减小偏差。比例控制器的输出u(t)与输入偏差e(t)成正比,能迅速反映偏差,从而减小偏差,但不能消除静态偏差。
静态偏差是指系统控制过程趋于稳定时,给定值与输出量的实测值之差。偏差存在,才能使控制器维持一定的控制量输出,因此比例控制器必然存在着静差。由偏差理论可知,增大P虽然可以减小偏差,但不能彻底消除偏差。
比例控制作用的大小除与偏差e(t)有关之外,还取决于比例系数Kp的大小。比例系数Kp越小,控制作用越小,系统响应越慢;反之,比例系数Kp越大,控制作用也越强,则系统响应越快。但是,Kp过大会使系统产生较大的超调和振荡,导致系统的稳定性能变差。因此,不能将Kp选取过大,应根据被控对象的特性来折中选取Kp,使系统的静差控制在允许的范围内,同时又具有较快的响应速度。由下图可知,太大的Kp导致系统产生较大的震荡。
(2)积分环节
积分环节的作用,主要用于消除稳态误差,提高系统的无差度。积分作用的强弱,取决于积分时间常数Ti,Ti越大积分作用越弱,反之则越强。积分控制作用的存在与偏差e(t)的存在时间有关,只要系统存在着偏差,积分环节就会不断起作用,对输入偏差进行积分,使控制器的输出及执行器的开度不断变化,产生控制作用以减小偏差。在积分时间足够的情况下,可以完全消除稳态误差,这时积分控制作用将维持不变。Ti越小,积分速度越快,积分作用越强。积分作用太强会使系统超调加大,甚至使系统出现振荡。
(3)微分环节D
微分环节的作用能反映偏差信号的变化趋势(变化速率),并能在偏差信号的值变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减小调节时间。积分控制作用的引入虽然可以消除静差,但是降低了系统的响应速度,特别是对于具有较大惯性的被控对象,用PI控制器很难得到很好的动态调节品质,系统会产生较大的超调和振荡,这时可以引入微分作用。
在偏差刚出现或变化的瞬间,不仅根据偏差量作出及时反应(即比例控制作用),还可以根据偏差量的变化趋势(速度)提前给出较大的控制作用(即微分控制作用),将偏差消灭在萌芽状态,这样可以大大减小系统的动态偏差和调节时间,使系统的动态调节品质得以改善。
微分环节有助于系统减小超调,克服振荡,加快系统的响应速度,减小调节时间,从而改善了系统的动态性能,但微分时间常数过大,会使系统出现不稳定。微分控制作用一个很大的缺陷是容易引入高频噪声,所以在干扰信号比较严重的流量控制系统中不宜引入微分控制作用。
微分控制作用的阶跃响应特性对于一个恒定的偏差量,不管其数值有多大,微分控制作用均为零。因此,微分作用不能消除静差,单独使用意义不大,一般需要与比例、积分控制作用配合使用,构成PD或PID控制。
对于PID控制,在控制偏差输入为阶跃信号时,立即产生比例和微分控制中作用。由于在偏差输入的瞬时,变化率非常大,微分控制作用很强,此后微分控制作用迅速衰减,但积分作用越来越大,直至最终消除静差。PID控制综合了比例、积分、微分3种作用,既能加快系统响应速度、减小振荡、克服超调,亦能有效消除静差,系统的静态和动态品质得到很大改善,因而PID控制器在工业控制中得到了最为广泛的应用。
3.常用的PID控制方法
(1)位置型PID(离散型)
位置型PID主要是对偏差的PID控制,可表示为:
对于位置型算法,可以选择的功能有:
-
遇限削弱积分法
一旦控制变量进入饱和区,将只执行削弱积分项的运算而停止进行增大积分项的运算。具体地说,在计算u(i)时,将判断上一个时刻的控制量u(i-1)是否已经超出限制范围,如果已经超出,那么将根据偏差的符号,判断系统是否在超调区域,由此决定是否将相应偏差计入积分项。
-
积分分离法(类似模糊控制,将I项系数置零)
在基本PID控制中,当有较大幅度的扰动或大幅度改变给定值时,由于此时有较大的偏差,以及系统有惯性和滞后,故在积分项的作用下,往往会产生较大的超调量和长时间的波动。特别是对于温度、成份等变化缓慢的过程,这一现象将更严重。为此可以采用积分分离措施,即偏差较大时,取消积分作用;当偏差较小时才将积分作用投入。
-
有效偏差法(限制控制量上下限)
当根据PID位置算法算出的控制量超出限制范围时,控制量实际上只能取边际值U=Umax,或U=Umin,有效偏差法是将相应的这一控制量的偏差值作为有效偏差值计入积分累计而不是将实际的偏差计入积分累计。因为按实际偏差计算出的控制量并没有执行。
-
微分先行PID算法
当控制系统的给定值发生阶跃时,微分作用将导致输出值大幅度变化,这样不利于生产的稳定操作。因此在微分项中不考虑给定值,只对被控量(控制器输入值)进行微分。微分先行PID算法又叫测量值微分PID算法。
(2)增量型PID
增量型PID是在对本周期控制量和上周期控制量进行差值计算再进行控制,可表示为:
增量式PID控制的主要优点为:
-
算式中不需要累加。控制增量Δu(k)的确定仅与最近3次的采样值有关,容易通过加权处理获得比较好的控制效果;
-
计算机每次只输出控制增量,即对应执行机构位置的变化量,故机器发生故障时影响范围小、不会严重影响生产过程;
-
手动—自动切换时冲击小。当控制从手动向自动切换时,可以作到无扰动切换 ,由于增量式需要对控制量进行记忆,所以对于不带记忆装置的系统,只能使用位置式PID控制方式进行控制。
对于增量式算法,可以选择的功能有:
-
滤波的选择
可以对输入加一个前置滤波器,使得进入控制算法的给定值不突变,而是有一定惯性延迟的缓变量。
-
PID增量算法的饱和作用及其抑制
在PID增量算法中,由于执行元件本身是机械或物理的积分储存单元,如果给定值发 生 突 变时,由算法的比例部分和微分部分计算出的控制增量可能比较大,如果该值超过了执 行元件所允许的最大限度,那么实际上执行的控制增量将时受到限制时的值,多余的部分将丢 失,将使系统的动态过程变长,因此,需要采取一定的措施改善这种情况。
4.智能驾驶中常见的PID横向控制算法
智能驾驶中常用的控制算法为位置型PID,已知车道线方程可表示为三次多项式:
对于零阶导,即原三次函数在起点x=0处的函数值为系数a0,代表截距。
对于一阶导,其导函数在起点x=0处的函数值为系数a1,代表在起点处的斜率,根据斜率定义可知当斜率值较小时,斜率值约等于切线与x轴的夹角,即车身相对于车道中心线的航向角:
y'(0) = a1 = tan(θ) ≈ θ
对于二阶导,其导函数在起点x=0处的函数值为2a2,由于一阶导数值远小于1,故车道中心线处的曲率可近似处理为:
对于三阶导,其数值可粗略视为曲率变化率。
对于智能驾驶中横向控制的pid算法,通常通过控制目标轨迹与自车轨迹的偏差将车辆控制在车道中央行驶,如下图所示:
红色虚线为车道中心线,即为控制的目标轨迹,绿色线为通过yawrate算出的自车轨迹(关于自车轨迹的算法可参考智能驾驶中自车轨迹的计算-CSDN博客),通过预瞄距离可算出在预瞄点处自车距离目标轨迹的横向距离dytarget,自车距离自车轨迹的横向距离dyego。
则预瞄点处,控制轨迹到自车轨迹的横向偏差为dytarget - dyego,则可求出自车与目标轨迹的航向角为:
当航向角θ接近0时,说明此时自车轨迹逐渐接近目标轨迹,车辆保持居中行驶,航向角的变化速率为:
对于PID的各项系数来说,我们可以设计一个基础的系数Kpbase,Kibase,Kdbase,同时也可以根据其他的影响因素,比如车速,半径,航向角θ的偏差大小,航向角θrate变化率的大小等查表获得一个增益系数,可以对不同的工况得到一个合适的输出,提高系统的稳定性,则:
则系统最终的输出TargetControl为:
已知车身坐标系通常为左正右负,当车辆偏右时,算出的航向角偏差为正值,总的输出是一个向左的力,此时航向角将会不断减小,车辆开始居中,为了增强车辆的过弯能力,通常需要通过弯道半径引入一个前馈模块,已知二自由度微分方程推出的稳态横摆角增益为(关于稳态增益的推导可参考智能驾驶中自车轨迹的计算-CSDN博客):
所以,可得前轮转角为:
由此,在一定速度的情况下,可根据不同的曲率半径,估算出一个过此弯时合适的方向盘转角。
假设车辆轴距L=2.8 , 特征车速24,传动比R=15,可得方向盘转角SteerAngle = δ * R * 57.3,可推导出不同速度下各曲率半径合适的方向盘角度如下表所示:
由此可知,不同速度不同半径下的前馈角度ForwardAngle基本为一个定值,所以,PID最终的输出为: