最新消息:

【 EV3基础应用 】课题四:差速巡线的场景延伸和编程完善

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

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

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

上周的课程可以说是一个说明。

双色感由两个色感探测值之间的差,来控制两个电机的转速差。可以叫差值巡线,也可以叫差速巡线

很多朋友问我一个问题,移动槽和移动转向模块有什么区别?

 

【 EV3基础应用 】课题四:差速巡线的场景延伸和编程完善


两个移动模块的区别

从本质上来说,两个模块非常相似,都是可以达到同时控制两个电机转动的目的。

但移动转向模块内嵌了一个“脚本”,关于脚本是什么东西,我在之前基础编程课程里面有过一些说明。大家可以去看一下。

【 EV3基础应用 】课题四:差速巡线的场景延伸和编程完善

这个脚本在我们使用模块的时候是看不到的,在它的代码层面。这是用来控制两个电机转动的实际速度误差的。

简单说,就是在设定完转动的要求后,当发现一个电机的转速比另一个快了或者慢了,就以设定的具体项为标准,自动加快一点或减慢一点,补充电机的转速误差,使两个电机的速度保持稳定,从而让运行结果不出大误差。

我们都知道,通常我们会使用两个电机分别带动两个轮子的转动,而两个轮子不同的转速变化使得我们的移动方式发生了各种改变

移动转向模块中的脚本,可以在两个电机转动时,通过电机反馈的转动情况,来计算和调整其中的误差,以使得真正的移动效果更佳稳定。

当我们需要使用直线前进、后退的时候,因为电机和电机之间有误差,使用这个模块,可以让“直线”行为变得更稳定。同理,“弧线”也是一样。

所以在这些情况下,使用移动转向模块是非常合适的。

【 EV3基础应用 】课题四:差速巡线的场景延伸和编程完善

而移动槽模块,其本质是独立控制。但它可以实现一个电机顺时针,一个电机逆时针的反向转动,以完成旋转等等动作。俗称“坦克式移动”

【 EV3基础应用 】课题四:差速巡线的场景延伸和编程完善

说这些原因,其实我是想说明,移动,其本质就是控制电机。通过控制两个电机之间的速度差和转动方向,我们可以实现各种动作。而巡线的本质也一样。

即,通过外部条件数据,控制两个电机带动的轮子速度差,来完成巡线动作

了解完动作之后,那么我们更多的想法就是处理数据了。

前面两周,无论是我们通过动作特点来完成的单色感摆动巡线、通过数据差来控制速度差的双色感差值(差速)巡线。

根本上的区别,是处理数据的方式决定的

这就需要我们对各种情况下的数据处理有自己的分析和理解。


那么现在进一步看一下差速巡线这个题目,在很多情况下,光是会巡线程序了,没用。

实际任务场地,不太会简单到只要套上个程序就能完成任务的地步。

So,举个例子,像我们碰到下面这个场地。

【 EV3基础应用 】课题四:差速巡线的场景延伸和编程完善

中间有线段缺失的部分,同时要求在终点停下。

这个时候,在中间段和重点,差速会失效。原因是两个传感器相减得出的值,在两边都是白色,和两边都是黑色时是相同的。

【 EV3基础应用 】课题四:差速巡线的场景延伸和编程完善

按照之前的程序,两边值相减等于零的话,机器会始终保持直线前进。

那么这个时候,该怎么办?

往往很多“死记硬背”的学生,这时候就碰到大困难了。

其实我们只需要根据要求,补充条件就可以了。


通过观察,会发现,中间的线段断开,本身对程序没有影响。机器两遍传感器的数据仍然保持相等,所以机器会直行,直到再次碰到黑线。

问题是在终点。两边纯白和纯黑,差值都是0。我们当然无法通过这一个条件来实现程序停止的控制要求。

【 EV3基础应用 】课题四:差速巡线的场景延伸和编程完善

 

之前有在课程中说过,我们要善于利用变量的创建和读取,来简化程序步骤,使得程序更加干净。

所以,我们把色感的差值,创建为变量,独立出来,作为一个数据。

【 EV3基础应用 】课题四:差速巡线的场景延伸和编程完善

而用另一个主循环,控制具体的动作要求。

【 EV3基础应用 】课题四:差速巡线的场景延伸和编程完善

因为终点是两边黑线的情况,所以我们可以把这个条件合并在控制动作的主循环内,以完成循环结束的要求。

这样一来,

整个程序的数据获取和处理,是一个循环。

动作的开始、停止要求,也是一个独立的循环。

我们就可以完成这个需求。可以看一下下面这个视频,来调整一下自己的实际数据参数,让程序变得更稳定。

(视频来源于网络) 

下一周,我们可以讲一下比较“高深”的,PID巡线法

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