最新消息:

【 EV3基础应用 】课题八:PID巡线的 D ,到底是什么?

乐高 少儿编程 3308浏览 0评论
EV3基础应用

如果需要学习本阶段课程,建议先学习本号内《基础硬件篇和基础编程篇》。

学习本篇请下载 LEGO Mindstorms 教育版软件

身体不适几天,发课慢了。久等了。

 

上两节课我们讲PID的P和I。

相信不难理解对吧。

 

很多东西我们不需要在使用时就做到太专业,而是通识即可。

 

拿老丁我来说,就是个典型的斜杠青年,即:老师/教研/项目管理/产品经理/商务拓展/演讲、培训师……反正我工作起来是没休息的……

 

很多东西我并不是专业的,而是理解一些后,自己通过研究,会用了,就可以了。

 

技术革新、专业深度,我认为这些词是有专门的有这方面能力的人才去完成的。

而当他们研究出新东西后,我们学会使用,并且了解一些理论即可。

知其然很多时候比知其所以然重要的多。

如果所有的事情都一定要知其所以然,那么行业和领域之间的隔阂,挺难跨越的。往往我们连知其然都做不到。

 

但我还是喜欢教书。

 


 

言归正传。

D,也就是微分(Differentiation)

 

微分是干嘛用的呢?

这样说吧,微分环节主要是用来起到“抑制”作用的看不懂这句话?这就对了。

 

怎么理解这个东西?我们和之前一样,举一个例子。

 


比如一个小孩子去荡秋千。

 

秋千如果没有人上去,那么基本上出来一个不动的状态,对吧?

我们理解为,这个时候,没有误差(E)。

 

【 EV3基础应用 】课题八:PID巡线的 D ,到底是什么?

有个小孩子上去了,秋千开始摆动。

这个时候,跟静止状态相比,秋千的摆动幅度就像是制造了一个误差。


1、

无论怎么摆动,摆动幅度多大,只要是不继续追加力量。

秋千总会停下来。回到静止状态。

 

这个是什么原因呢?

 

因为秋千的铰链上,有摩擦力,不断在消耗动能。

没有摩擦力的情况下,秋千会一直摇摆下去。

【 EV3基础应用 】课题八:PID巡线的 D ,到底是什么?

这个很容易理解对吧。这个摩擦力,我们理解为P

 


2、

 

上面那个小孩不想玩了,想要下来,在没有人帮助的情况下,怎么让秋千停的更快?

 

这就需要上面那个小孩在秋千荡起的反方向施加一个力,目标是尽量让秋千快点平稳下来。

 

这个力,我们理解为,是 

 


3、

那么小孩什么时候不想玩?我们如何控制他?

 

这就要靠D了。

D,就是这个小孩的家长。跟小孩说,你快点下来。

 

于是D帮助小孩,用一个“巧劲”,让小孩和秋千平稳下来。

 


 

简单总结一下上面的例子,你可以当做英语语法理解

 

P,就是现在时

控制秋千的摆动(误差),只要有了它,秋千总会停下来。

 

I,就是过去时

小孩知道上一次秋千荡起的高度,于是会配合一个力,让秋千更快停下来。但在秋千上控制力度,毕竟是困难的,只是能够尽量发力。

 

D,就是将来时

家长控制了一个未来要停止的时间,于是再给一个巧力,帮助他们更快速的停下来。

 

所以,PID实际上是这三种力为了让秋千停下来而叠加各种力的一种方式。

 

我们的例子中,

 

静止状态就类比是巡线中的直行状态

而从摇摆到静止的状态,就类比从机器左右晃动到直行的状态。

 


4、

 

所以也就是:

 

这一次的误差E减去上一次的误差LE(Last Error)得出两次累积的误差差值,

用来在下一次误差出现的时候,使上一个“巧劲”,帮助机器更快的减小误差所需要的速度(时间、次数)。

 

这边大家可以抽象的想象一下:

 

这一次误差减去上一次误差得到的值,提供给下一次的计算中。

 

这个值会在转向要求很大或者很小的时候,给到原来公式一个正或者负值来补充或者减少电机的转向误差,这样一来,达到平衡的状态就会加快。

 


所以,我们的程序加入下图这块内容:

(接上两节课的程序) 

【 EV3基础应用 】课题八:PID巡线的 D ,到底是什么?

然后乘以D的系数,KD,得出的值。

 

【 EV3基础应用 】课题八:PID巡线的 D ,到底是什么?

再去与之前两节课的程序相加,让这个值作为移动转向的控制值即可。

 

【 EV3基础应用 】课题八:PID巡线的 D ,到底是什么?

 

最后,把每一次程序运行的E值写入到LE。(这一次程序运行结束后,误差值在下一次运行时就是“上一次的误差值”)

【 EV3基础应用 】课题八:PID巡线的 D ,到底是什么?

我们的程序就大功告成啦!

 

最后让我们来看一下完成的程序吧!

(图片很大,点开看!)

【 EV3基础应用 】课题八:PID巡线的 D ,到底是什么?

 

在实际运行,调节KP,KI,KD参数的时候,请注意顺序。

 

1、先把KI,KD设为0。调节KP,理论上,KP调节完就可以独立巡线。

 

2、调节KI,会加速摆动,值很小。也就是加快整个程序达到稳定状态(直线)的功能。

(原来要10秒摆动10次,现在5秒摆动10次完成)

 

3、最后调节KD,让整个程序的调节过程缩短,达到稳定状态。

(原来5秒摆动10次,现在5秒摆动5次完成)

 

至此,这个使用移动转向模块的PID巡线程序讲解完毕!

 

希望能够帮到大家理解这项“高深”的技术。

感谢你们的长期支持与等待更新。

我会继续加油的!


 

特此感谢

【 EV3基础应用 】课题八:PID巡线的 D ,到底是什么? 

这位仁兄的程序分享。我们并不认识。

我算是借用这个程序作为一个讲解。

并且经过验证,我认为这个程序是可使用的。

 

讲解内容为老丁原创

 

参考各个网站的数十位工程师发表的文章。及借用一些解释。

 

再次谢鸣各位大拿

 


 

后记:

PID讲完了,这三节课涨了500粉。

压力挺大的,很多朋友留言希望看到一些设计类的课程

 

毕竟个人有工作,运营这样的号花的精力也很大,而很多时候分身乏术。

不过希望各位朋友长期关注吧。

 

待我有时间准备下,尽快为各位推出,感谢支持。

 

您必须 登录 才能发表评论!