最新消息:

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

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

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

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

上一节课写完后,收到很多朋友的问题。统一的说法都是,之前也看过一些教程,也看过一些别人的程序,但都理解不了。

然后归结到没学过高数,或者没学过编程上。

其实不然,经过交流后,我发现,大家共同的问题,其实是方向性”的。

 

理解方向出现偏差,自然会造成后续理解不了的最终结果啦!

PID巡线,也叫比例巡线。

我们其实在网上也能搜到一些跟PID巡线有关的教程或者程序。

但这些程序编写方法上,其实是有本质区别的。

核心,就在“比例”这两个字上。

所有巡线最终都基于电机的“动作”上,这个明确吗?

换言之,无论你怎么编写和处理数据,最终都要落地在动作的参数上,去完成你最终的目的。对不对?


我们会发现,关于“动作”,在之前的课程中,我就给大家分析过,有两种移动模块。

一种叫做“移动转向”

一种叫做“移动槽”

具体的区别请看我之前的课程去了解一下。

这边总结一下:

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

移动转向,最大的特点是,可以输入转向参数,来完成直行、转向要求。

移动槽,最大的特点是,可以分别控制两个电机的功率,从而完成各种直行、转向要求。

那你有么有发现?

转向参数本身就可以用“比例”直接控制

两个电机之间的功率差,也可以用比例来控制。

你以前看到的比例巡线,到底是控制转向比例?还是控制电机功率差比例?

这是两种不同的PID控制法。

所以我们学东西不能学死,对吧,要动脑子啊!(话糙点,请别见怪。)

我知道要讲PID巡线,其实挺麻烦的。要解释很多东西,所以这注定不是一、两节课可以讲完的。而且我的理解也不一定全对,毕竟我不是正统理工科人。

但至少这个程序是我用的比较熟悉的,算是给大家的经验分享吧。


当然,无论你是用哪种方法实现PID巡线,其实归根结底,都是在控制电机速度差

只是移动转向模块,自己本身可以通过脚本去控制一部分误差,所以用起来可能会更方便,但效果没有移动槽好

我们继续回到PID的讲解。

为了方便大家理解,那么我们先讲看着简单些的。

用“移动转向”模块实现的PID巡线

P,(proportion的首字母),意思就是比例。

这个比例指的是什么?

这个比例指的是,输入和输出量之间的比例关系。

 

输入,在我们现在的这个话题下,当然就是指颜色传感器提供的值

输出,指的就是电机的转向值,注意不是功率值!

使用移动转向模块的巡线,我们控制的是移动转向模块的转向功能。控制速度有啥用?在这个模块下,很多时候,功率是一个常量,对不对?

颜色传感器提供的光线反射值和由“移动转向”模块提供的可输入的转向值,它们两者的取值范围是不同的。当然,就需要用一个特殊的比例系数去控制啦。

我们把它起名字叫Kp吧。

起这个名字是有道理的。K在数学公式中一般作为系数的代号,而用X、Y这种代表各种变量。比如:y=kx+b,k是常数且不等于0,b是常数,这里面k就叫做比例系数。我们初高中学的代数,函数都会遇到。

(虽然老丁读书的时候是文科生,初高中数学极差无比,但陈曦老师你会不会现在很欣慰?)

 

我们再设置一个参数,叫做E(起这个名字是因为,Execution value 执行值)

这个值顾名思义,我们最终会直接用作执行转向的数据。

先把这两个变量给创建出来。

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

我们在编程中,使用一个正确的名字,是非常好的习惯,这有利于整理自己、或者学生的思路。

这两个数据将会构成整个PID巡线的根本。也就是负责提供转向数据!


在任何PID控制原理的程序或者技术中。P是无可取代的地位。

原因很简单,你要炒一碗蛋炒饭,什么材料,火候,盐放多少,都可以理解为是参数吧。但最重要的是啥?

是要“炒”这个动作啊。

你光有一堆食材和炒菜技术,但不炒,有啥用?

就像你天天在上数学课,题目不做,有啥用?

看老丁的课,不动手研究,不点赞,有啥用?

P、I、D是有独立作用的三个部分,我们在比例控制技术(PID)的原理下,可以根据实际需求来搭配使用。

可以只使用比例控制(也就是P),也可以PI、PD,最后PID。

但无论怎么样,都要有P,对吧?

不然你后面整了一堆参数,有啥用?

总结下:

变量E是最终的计算值,用来控制转向。

变量Kp是比例系数,用来计算出E。调整Kp,就可以让E的值更加稳定。

明白了?


 

那么如何编写呢?很简单。

在PID巡线的场景中,跟我们单色感巡线一样。无非就是这三类情况。如图:

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

颜色传感器探测到的反射值,从左到右逐渐降低

而动作的要求也是,左边右转,中间直行,右边左转

我们假设一下理想化状态,中间直行的那个数据是50好了,左边是100,右边就是0。

(这个现实操作时需要自己测量一下实际情况)

那么当E的值是0的时候,我们需要直行。(即,上图的中间,反射值是50,那么如果要直行,则由E提供的转向值就是0)

 

这部分程序就可以用差值公式(减法),直接写出来。

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

这样一来,你的P就完成了。

今天先到这里吧,大家消化一下。

你可以先试试看直接运行这个程序,调整Kp的值,感受下是一个什么情况?

下次我们继续。可以拍照留言,跟我交流。

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