新闻中心

EEPW首页>嵌入式系统>设计应用> PID非常好的光感巡线思路

PID非常好的光感巡线思路

作者: 时间:2016-11-30 来源:网络 收藏
调整PID控制器,不使用复杂的数学方法
(但是我们还是要做一些计算)
在本文中,我使用了其他人总结出来的PID控制器调整的方法,测量几个系统参数就可以让你非常好地计算出Kp,Ki和Kd的值。有几种技术可用于计算Ks,其中之一就叫做 "Ziegler–Nichols方法" 。通过谷歌搜索可以找到很多讲述这种技术的网页。我所使用的版本几乎是直接使用了维基网页——PID控制器中的内容(在很多其他的地方也可以找到相同的内容),我只做了一点小小的改动,包括下表中所示计算过程中的循环时间。
按以下步骤调整PID控制器:
将Ki和Kd的值置为0,即关闭控制器中的这些部分,将控制器作为一个简单的比例控制器。
把Tp(目标功率值)设置的小一点。对于我们使用的马达来说,可以设为25.
将Kp设置为一个“合理”的值,什么是合理的?
1)用我们想让马达功率达到的最大值(100)除以能使用的最大误差值。对于我们的巡线机器人,我们假定这个最大误差是5,所以推测出Kp值为 100/5=20。当误差为+5,,马达的功率将达到100,。当误差为0,马达的功率会在Tp(目标功率值)上。
2)或者,将Kp值设为 1 (或100),看看会发生什么。
3)如果你要把 Ks的值乘以100,在这里,1就要记成100,20记成2000,100记成10000.
运行机器人,观察运行状态。如果它不能巡线,从线上脱离开,就提高Kp值;如果它剧烈摆动,就降低Kp 值。调整Kp值,直到机器人能够巡线,并且没有明显的摆动为止。我们称这时的Kp值为"Kc" (在PID文献中,被称为临界值)
使用Kc值作为Kp,运行机器人,试着找出机器人运行时的“振荡周期”是多少。这个测试不需要非常准确。振荡周期(Pc)是指机器人从线的一侧开始,摆动到另一侧,再回到开始点的时间长短。对于典型的乐高机器人来说,Pc大约是在0.5秒到1或2秒之间。
你还需要知道,机器人控制系统的循环周期是多少。我将循环设置为一个固定的次数(如10,000),测量机器人完成全部循环次数的总时间(从开始到结束的时间,或机器人显示出结果的时间),每个循环的周期是测量时间除以循环次数。对于一个完整的PID控制器来说,使用NXT-G编程(在程序中不要使用发声、显示等模块,这些模块的使用会占用程序运行时间,影响测试结果),dT值应该在每个循环0.015秒到0.020秒之间。
使用下表计算Kp,Ki, 和Kc的值。如果你只想要一个P控制器,使用表中标注了P的那一行来计算Kp(Ki和Kd均为0)。如果你想要一个PI控制器,就使用第二行来计算。如果你想要一个完整的PID控制器,就使用最后一行来计算。
在实际操作时,那些K值都要用100乘以它们实际的值,但是在计算中你不需要考虑这个问题。这个因数100 ,在确定Kp=Kc 临界值时,就已经考虑在内了。
运行机器人,看看它的表现。
你可以调整Kp,Ki和Kd的值直到获得最佳的性能。你可以从相当大的调整开始,如30%,然后尝试较小的调整,以获得最佳的(或者至少是可以接受的)效果。
一旦你确定了一组好的K值,提高TP值,提高机器人的直线速度。
对于新的TP值,要重新的调整K值,也许甚至要回到第1步,重复整个过程,
不断地重复,直到机器人的表现是可以接受的。

本文引用地址: //m.amcfsurvey.com/article/201611/323721.htm
Ziegler–Nichols方法给出的K值
(循环时间恒定并等于dT)
控制类型
Kp
Ki
Kd
P
0.50Kc
0
0
PI
0.45Kc
1.2KpdT/Pc
0
PID
0.60Kc
2KpdT /Pc
KpPc/ (8dT)
Ki和Kd上的符号只是要提醒你——Ki 和 Kd已经考虑了时间的因素,即ki= ki*dt,kd’=kd/dt (假定dT为恒定值)。
这里有一个我自己做机器人测试的测量数据。Kc为300,当Kp=Kc时,机器人的摆动周期大约为0.8秒,因此Pc为0.8。我测量Pc的方法是,每当机器人摆动到一个特定的方向,就大声数出来。循环时间dT为0.014秒/每个循环,用程序运行10,000次循环时,NXT上显示的程序运行时间和循环次数相除所获得。使用上表中PID控制器的各计算公式,我们得到:
Kp= (0.60)(Kc) =(0.60)(300) = 180
Ki= 2(Kp)(dT) / (Pc) =2(180)(0.014) / (0.8) = 6.3 (which is rounded to 6)(四舍五入为6)
Kd= (Kp)(Pc) / ((8)(dT)) =(180)(0.8) / ((8)(0.014)) = 1286
在进一步的反复试验后,最终的Kp,Ki和Kd值分别为220,7 和500。别忘了所有这些K值均已乘以100,因此,它们的实际值为 2.2 ,0.07和5 。

改变Kp, Ki, 和 Kd的值对机器人运行情况的影响
在优化PID的过程中,上面说明的方法和表格是一个好的开始。有时,了解一下增加(或降低)三个K值中的一个会有怎样的结果,也是非常有帮助的。下表在很多网页上都能找到,这个版本来源于wiki——PID控制器的网页。

增加参数值的影响
Parameter
参数
Risetime
响应时间
Overshoot
超调
Settlingtime
稳定时间
Errorat
equilibrium
静态误差
Kp
减少
变化小
减少
Ki
减少
增加
增加
消除
Kd
不确定(小的增加或减小)
减少
减少

“响应时间”是指机器人确定误差的时间,在我们的例子中,是指机器人在离线以后,需要多少时间能回到线的边缘。响应时间主要由Kp控制。Kp值变大,机器人返回线的速度变快,响应时间就减少。Kp过大,会造成机器人超调。
“超调”是指机器人在响应误差时,会越过线的边缘多远。例如,如果超调较小,当机器人想回到线的左边时,就不会摆动到线的右边去。如果超调较大,机器人在纠正误差时,就会摆动过大,超过线的边缘。超调受Kd影响最大,但Ki和Kp对它的影响也颇强。通常情况下,纠正很大的超调,你需要增大Kd值。还记得我们第一个非常简单的巡线机器人吗,除了左转和右转,它不会做任何事,这个巡线机器人就会产生非常大的超调现象。
“稳定时间”是指机器人在发生一个大的变化时,需要多长时间才能稳定下来。在我们巡线的例子中,机器人遇到一个转弯就会发生较大的变化。当机器人对曲线做出响应,它会纠正误差,并产生一些超调,然后机器人会以另一个方向的超调来纠正当前的超调,然后再纠正这个超调......你明白了吧。当机器人对误差进行响应时,它会围绕期望位置进行摆动。“稳定时间”就是这个摆动被抑制到0的时间。Ki和Kd都对稳定时间有很强的影响,Ki越大,稳定时间越长;Kd越大,稳定时间越短。
“静态误差”是指系统在不受干扰的情况下运行所保持的误差。对于我们的巡线机器人来说,当机器人走了很长一段直线后,这个误差会被抵消掉。P控制器和PD控制器经常会被这种误差搞垮。增加Kp值会降低它的影响,但会加大机器人的摆动。P控制器和PD控制器在平衡状态下会有一个恒定的误差,因此经常会在其中增加I控制,和加大Ki的值。(这是假定,当机器人巡线时,你更关注小的系统误差。这就意味着,机器人会稍微向一边或另一边偏移)
运行情况怎样?
光电传感器距离巡线测试纸的高度大约为1/2英寸,Tp(功率目标值)设置为70%。机器人的平均速度为每秒钟8英寸。机器人沿着椭圆型黑线的内侧,采用左手法则巡线,沿着内侧巡线要比沿着外侧巡线稍微难一点。
在整个过程中,巡线机器人似乎表现相当不错。如果你仔细观看视频,就会发现,机器人在离开转弯的地方有一点“摇尾巴”。那是PID有一点振荡。当机器人向镜头方向运行时,你可以看到机器人光电传感器的LED在场地垫上照射出的红点,看上去在追踪线的边缘方面,做的非常好。
基本PID控制器可以适用于不同的控制难题(当然也可以用P控制器或者PI控制器代替PID控制器),你无需提出一个新的“误差”定义,但是针对特定的任务,要重新调整PID。
上一页 1 2 3 下一页

关键词:PID光感巡

评论


技术专区

关闭