机器人PID控制算法研究与实现

   2019-06-11 51
核心提示:[db:简介]
引言

PID控制技术广泛应用于工业控制各个领域,其控制结构简单,参数定义明确,易于实现,其中P(Proportional)是比例项,I(Integral)是积分项,D(Derivative)是微分项。当被控对象变化随机性较大,不能精确建立控制模型时,PID控制器能够很好地发挥控制作用。在实际应用中可以采用P、PI、PD或PID等控制形式,也可以加入人工智能模糊控制手段,具体要根据被控制对象系统响应变化特点进行选择与调整。PID调节器是在系统运行过程中将设定值r(t)与输出值c(t)进行比较构成控制偏差e(t)=r(t)-c(t),通过线性组合将其按比例、积分、微分运算后生成控制量,实现实时自适应控制。PID系统典型控制结构如图1所示,PID调节器的数学模型如公式(1)所示。

其中,u(t)为输出项;KP为比例放大系数;TI为积分时间;TD为微分时间;e(t)为误差值;u0为控制量基准值。


比例放大系数KP能加快系统响应速度,但容易产生超调现象,在机器人巡线行走过程中会出现左右搬动现象;积分时间参数TI主要作用是消除系统的稳态误差;微分时间参数TD作用是改善系统的动态性能,对误差趋势能够进行提前干预。


1 双轮巡线机器人行走结构设计

文中控制的机器人依靠平台上两个直流电机(图2中A、B所示)驱动轮子行走,在机器人平台前后安装有两根巡线传感器(图2中C、D所示),每根传感器由16路采集点组成,为保证机器人平台的稳定,在机器人前后安装有万向轮(图2中E所示)。机器人在行走过程中通过巡线传感器读取场地中的引导白线完成行走动作。驱动机器人的两个直流电机特性存在差异,给两个轮子电机加上相同的PWM也不能保证沿着直线行走,必须引入一定控制算法,保证机器人在不偏离引导线的前提下快速行进。文中采用PID控制算法,通过反复实验整合调优PID算法中的参数,使之能够顺畅自如地以直线或曲线巡线行走。机器人平台结构如图2所示。

2 数字化PID控制算法设计

文中机器人行走控制处理芯片为80C51单片机,在实现算法设计过程中首先要将理论上的PID算法进行数字化处理,其次要根据机器人行走特性做好PID算法中比例、积分、微分因子的选取和采样处理。下面首先从影响PID算法最大的比例项设计入手开始进行PID方程构建分析。

(1)比例项的设计。

在PID控制算法中,比例因子是关键所在。首先要确定控制模型中的比例采样方法,构建比例方程。在机器人运行过程中,前后两根16路传感器不断将扫描信号传递给CUP,通过前后两根16路传感器信息能实时判定车身的位置状态,根据传感器位置与中心线的偏差e(t),再找出适当的比例因子就可以构建PID控制系统中的比例控制项。图3列出了机器人在行进过程中的四种状态类型,在图中将16路巡线传感器中心定位为刻度零,前排16路传感器在X轴方向规定为左+右-,后排16路传感器在X轴方向规定为左-右+,通过程序扫描可以得到瞬时机器人前后两根16路传感器的采集位置b1,b2值(取值范围1~16),z1,z2代表前后巡线传感器同时扫描到白线的采集点个数。通过公式(2)能够准确计算出引导白线中心点在前后16路传感器上对应点的位置信息。

其中,N1为前16路传感器在引导白线中心位置信息;N2为后16路传感器在引导白线中心位置信息。当N1,N2结果都为零时,表示引导白线刚好位于机器人中心线上。

根据N1,N2的位置信息,可以构建出PID算法中的比例方程,方程中选用了不同的比例因子,前排传感器在巡线过程中起到关键作用,因此前排的比例系数x1略大于后排传感器的比例系数x2。比例因子选取要根据机器人现场具体调试决定,构建的方程如公式(3)所示。式中,根据机器人的偏差信息,能够生成控制驱动机器人电机的PWM值,根据机器人车身的状态将这个值分别影响到机器人的左右电机上。

针对P控制算法,程序算法设计如下所示。在程序中PWM电机驱动占空比最大值定义为200,motor为驱动电机转动函数,参数l,r代表驱动左右侧电机;f,b代表向前向后,其中的SB代表电机驱动的基础值,根据算出的PWM程序自动调节机器人的行走方向。

for(p=0;p<16;p++){>

a1=xin_xi&08000;//xin_xi代表前排传感器数据信息

a2=xin_xi2&08000;//xin_xi2代表后排传感器数据信息

if((a1>0)&&(b1<0))b1=p;>

if(a1>0)z1++;//累计前排传感器在白线上个数

if((a2>0)&&(b2<0))b2=p;>

if(a2>0)z2++;//累计后排传感器在白线上个数

xin_xi=xin_xi<<1;>

xin_xi2=xin_xi2<<1;>

}

N1=b1+z1/2-8;//计算出前排传感器在白线中心位置

N2=b2+z2/2-8;//计算出后排传感器在白线中心位置

PWM=N1*5+N2*3;//构建比例方程,计算出控制PWM值

if((S_B-PWM)>=200){//机器人整体偏右

motor(r,f,200);

motor(l,f,200+PWM*2);

} else if((S_B+PWM)>=200){//机器人整体偏左

motor(r,f,200-PWM*2);

motor(l,f,200);

}else{//自动调整

motor(r,f,S_B-PWM);

motor(l,f,S_B+PWM);

}

PID中比例项P的作用是提高系统响应速度,随着比例控制项系数的增大,系统响应时间缩短,系统调节精度提高。但是也存在一定问题,系统易产生超调现象,在机器人行走的具体过程中表现出沿着引导白线走"S"型巡线轨迹。为了解决巡线过程中的"S"问题,引进了PID算法中的D,即微分项,对可能出现的偏差进行预先干预。

(2)微分项的设计。

能否对系统的偏差有预先判断并处理呢?答案是肯定的。PID算法中比例项(P)是对系统当前偏差的调整,而微分项(D)是对系统偏差的预先处理。在数字化近似处理中将一定时间内的本次偏差e(k)与上一次偏差e(k-1)相减,得出的结果能够反映出偏差变化趋势,一阶导数采用公式(4)进行表达。在实际程序控制过程中dt(T)选择程序循环一次时间为最短时间单位,根据系统调整状况选择最短时间的整数倍数作为积分时间。

(3)积分项的设计。

要保证机器人巡线过程中走得非常直,偏差摆动很小,积分项也是另一个重要控制因素。积分项是将一段时间内机器人行走的误差累计作为调控依据,在数字化离散处理中使用公式(5)表达积分项。

将公式(4)、(5)带入到公式(1)中,得到离散状态下的PID控制近似值公式。

在编程控制过程中可以将T/TI用KI代替,将TD/T用KD代替,进一步简化为公式(7)。

u(k)=KP*偏差+KI*积分项+KD*微分项   (7)


3 算法调试与验证

文中算法调试过程采用Z-N(Ziegler-Nichols)实验方法进行调试,首先将积分项、微分项增益设为零,单独调试比例项,将比例增益从零开始逐渐增加,直到达到最佳效果为止,具体调试过程如下:

(1)设定KI、KD为零,屏蔽积分项、微分项;

(2)逐渐增大KP的值,达到一个比较合理的范围,使机器人能够沿着白线行走,同时左右摆动比较小。在调整过程中如果机器人不能巡线,可增大KP值;若能巡线,但左右摆动比较大可减小KP的值。当机器人在最稳定状态时,记录下这个KP值,命名为KS;

(3)当确定完KC值后,机器人基本处于稳定震荡状态,在这个状态下记录其震荡周期,记为PS;

(4)控制系统中dt的值以机器人完成一次程序循环的时间为基本单位,在该系统机器人行走过程中,机器人需要扫描前后16路传感器,执行处理语句与循环语句,时间近似于0.01到0.02s之间;

(5)通过反复实践,将非线性变化使用线性公式代替,归纳总结出了表1中相关控制项的计算公式,可以根据不同需要,选用P、PI或完全选用经典的PID全部控制参数实现系统控制。

文中算法多次应用在全国职业技能大赛机器人应用技术赛项中,其巡线稳定性与抗干扰性都比较强,图4为应用此算法参赛机器人在场地中的实物。

4结束语

(1)文中的控制算法是基于机器人的位置信息,采用数字化处理逼近PID算法理论公式,在很短的时间内,使用一阶差分代替一阶微分,使用累加和代替积分。

(2)一般而言,PID算法中比例是必须的,决定了控制的精度与结果。积分项能使系统偏差震荡趋于平缓;微分部分控制提前量,影响控制的反应速度。在实际应用中PID的比例、积分、微分并非总是同时使用,PI调节和PD调节使用较多。

(3)在调试步骤上,一般先确定比例增益P,调试中先令积分、微分项增益系数为零,单纯调试比例控制项。比例增益P确定后,再对积分、微分系统进行调试,直至满足要求。

(4)调试过程也有一定规律可循,但要根据具体系统特性,逐渐在实践中摸索总结,记录各个阶段的特征参数,最后综合平衡比例、积分和微分的权重。

 

 
举报收藏 0打赏 0
 
更多>同类数控技术
推荐图文
推荐数控技术
点击排行
网站首页  |  关于我们  |  升级会员  |  联系客服  |  广告合作  |  广告位图  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  RSS订阅  |  违规举报  |  蜀ICP备2021024440号