PID非常好的光感巡线思路
为止。我们称这时的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步,重复整个过程, 不断地重复,直到机器人的表现是可以接受的。 Ziegler–Nichols方法给出的K值 控制类型 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 静态误差 Kp 减少 加 变化小 减少 Ki 减少 增加 增加 消除 Kd 不确定(小的增加或减小) 减少 减少 无 “响应时间”是指机器人确定误差的时间,在我们的例子中,是指机器人在离线以后,需要多少时间能回到线的边缘。响应时间主要由Kp控制。Kp值变大,机器人返回线的速度变快,响应时间就减少。Kp过大,会造成机器人超调。
(循环时间恒定并等于dT)
equilibrium
“超调”是指机器人在响应误差时,会越过线的边缘多远。例如,如果超调较小,当机器人想回到线的左边时,就不会摆动到线的右边去。如果超调较大,机器人在纠正误差时,就会摆动过大,超过线的边缘。超调受Kd影响最大,但Ki和Kp对它的影响也颇强。通常情况下,纠正很大的超调,你需要增大Kd值。还记得我们第一个非常简单的巡线机器人吗,除了左转和右转,它不会做任何事,这个巡线机器人就会产生非常大的超调现象。
“稳定时间”是指机器人在发生一个大的变化时,需要多长时间才能稳定下来。在我们巡线的例子中,机器人遇到一个转弯就会发生较大的变化。当机器人对曲线做出响应,它会纠正误差,并产生一些超调,然后机器人会以另一个方向的超调来纠正当前的超调,然后再纠正这个超调......你明白了吧。当机器人对误差进行响应时,它会围绕期望位置进行摆动。“稳定时间”就是这个摆动被抑制到0的时间。Ki和Kd都对稳定时间有很强的影响,Ki越大,稳定时间越长;Kd越大,稳定时间越短。
“静态误差”是指系统在不受干扰的情况下运行所保持的误差。对于我们的巡线机器人来说,当机器人走了很长一段直线后,这个误差会被抵消掉。P控制器和PD控制器经常会被这种误差搞垮。增加Kp值会降低它的影响,但会加大机器人的摆动。P控制器和PD控制器在平衡状态下会有一个恒定的误差,因此经常会在其中增加I控制,和加大Ki的值。(这是假定,当机器人巡线时,你更关注小的系统误差。这就意味着,机器人会稍微向一边或另一边偏移)
PID光感巡 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)