大道至简,精于心,简于行

    邵宗敏

    

    

    

    摘 要:文章聚焦于光感巡线的设计与优化,对EV3光感巡线中存在的误区进行了梳理甄别,对光感巡线中的常见方法进行了概念化的概括,对所总结出的“最值法”“均值法”及“差值法”等方法的设计与优化逻辑进行了梳理。通过分析推导、追根溯源和抽丝剥茧式的追问,力求打通横亘在学生心中的脉络误区,让学生在“大道至简,精于心”的内化引导下,做到在实操中“简于行”的目的。

    关键词:光感巡线;EV3编程;设计;优化

    中图分类号:G431? ? ? 文献标志码:B? ? ? ? ? 文章编号:1673-8454(2020)24-0037-06

    一、问题的提出

    光感巡线是机器人学习的基础,是青少年机器人培训的必修课。在青少年机器人竞赛活动中,光感巡线作为任务单列虽然罕见,但它是完成相关任务不可或缺的重要手段。PID巡线是公认的较为稳定的巡线方法。但要用好PID巡线技术,需要具有一定的高等数学和控制技术基础,对于中小学生来讲,并不是一件容易的事。要让中小学生真正弄懂光感巡线的相关理论知识,也是不现实的。正因为如此,在青少年机器人培训中,让学生“模仿”教师的范式来完成相关学习任务成为教学中的常见现象。若任由这种“模仿”盛行,将与培养青少年的动手实践能力和创新精神的初心相去甚远。事实上,在培训中,指导学生通过分析,激发学生对科学技术和机器人的兴趣,远比让学生通过“模仿”在竞赛中取得“优异”成绩重要得多。对于学生来说,在自己理解的基础上做出来的东西,学到的就不仅仅是内容,还有思维的锻炼和方法的扩展。

    那么,我们能不能把光感巡线的方法、原理用一种基于学生现有的知识或经验,用一种通俗易懂的语言告诉他们?答案是肯定的。老子云:“万物之始,大道至简,衍化至繁”。虽然世事纷繁复杂,但其中的基本原理、方法和规律其实是很简单的,甚至简单到一两句话就能说明白。让光感巡线回归学生日常经验和现有知识,是本文致力解决的问题。

    二、问题的界定

    在EV3机器人中,颜色传感器作为一种数字传感器,可以检测到进入传感器检测范围内的颜色或光强度,是机器人数据获取的重要设备,巡线是其获取数据的一种重要方法。EV3颜色传感器设有颜色模式、反射光强度模式和环境光强度模式三种检测模式。在巡线中,我们通常用的是颜色检测模式(以下简称色感模式)和反射光强度模式(以下简称光感模式),而环境光强度模式是通过检测外环境光的亮度和外光源照射到传感器的时间,用于设定动作的启停等功能。

    1.色感模式

    在色感模式中,颜色传感器可识别黑、蓝、绿、黄、红、白、棕7种颜色及无颜色(见图1)。在光感模式中,颜色传感器可以测量从发光灯反射回来的光强度,其测量范围在0(极暗)到100(极亮)之间(见图2)。应该说,色感和光感这两种模式,都能满足巡线的要求,并且很多时候需要色感、光感两种模式配合才能高效、顺利地完成巡线任务,达到快速、准确巡线的要求。

    对于初学者来说,色感模式巡线因只需要判断出7种颜色即达到巡线的要求,简单、直观,很容易上手。但随着学习的深入和实际场地的复杂化,我们就会发现,仅仅依靠色感模式巡线,往往无法完成巡线的要求,必须要光感模式配合才行。主要原因有两点:一是场地颜色往往不止7种;二是在实场中,相近、相似的颜色很多,颜色归类是一件十分不易的事情。

    2.光感模式

    在光感模式中,颜色传感器并不关心颜色的差異,而是通过检测发光灯照射场地反射回来的光强度(以下称为反射光)达到巡线的目的。理想状态下,极暗(黑色)返回值为0,极亮(白色)返回值为100。由此我们可以看出,光感模式实际上是把千差万别的场地颜色进行了灰度化,并根据反射光的强度在[0,100]间赋值,在极黑到极白变化的过程中,灰度逐渐变化,数值逐渐增加(见图3)。所以,光感模式因没有颜色的差异,只有数值的大小,操作起来反而更简单,适应性更强。这是光感巡线模式的优势所在,也是本文采用光感巡线进行讨论的主要目的。

    巡线中,我们可以使用的光感1—4个不等,但主要还是以“单感巡线”和“双感巡线”两种为主。这两种巡线模式也是我们探讨的主要内容。

    三、误区与甄别

    1.光感巡线中的“巡线”是要“循线前进”吗?

    受习惯性思维的影响,在我们的认知范式中,往往会无意识地把“巡线”理解为“压着线前进”,即把“巡线”等同于“循线”。表述为条件与任务的关系,就是以下三种(见图4):

    光感在线左→机器人右转;

    光感在线右→机器人左转;

    光感在线上→机器人压线前进。

    且不说“双感巡线”存在是让左感压线还是右感压线的双难问题,在单感巡线中,要让机器人执行上述的条件与任务也是比较困难的。在图4中,光感能检测得到的值其实是有限的:一是光感在线上,反射光的值最小,理想状态为0;二是光感在线左或线右,反射光的值相等且最大,理想状态为100。我们知道,机器人的反应(任务)与变量(条件)只有一一对应,程序才能够有效执行。即同一条件下,机器人只能做出一种反应。让机器人在同一反射值下完成左转或右转两个任务,同样是双难问题。

    在百度汉语中,“巡”释义为“往来查看”;而“循”才具有“遵守、依照、沿袭”的意思。所以说在光感巡线中的“巡线”,要求的并不是“压线前进”,而是“不断地来回、反复寻找线的位置,作为前进的参考”。这是我们需要厘清的第一个误区。

    2.“巡线前进”是否需要“直线前进”?

    说到“前进”时,我们的第一反应往往是“直线前进”。据此,图4中条件与任务的表述为:

    条件:无线?有线?

    任务:左转!右转!前进!

    根据条件与任务一一对应的要求,让机器人在两个条件下执行三个任务,是无法完成的。

    实质上,“前进”并不总意味着要“直线前进”。直线前进,只是两点间的最短距离而已,但并不是唯一方法。例如,汽车从山脚到山顶,总是通过盘山公路不断地“左转前进”或“右转前进”而到达山顶的(见图5)。

    所以巡线的重点在于“巡到线后→前进”,并没有要求“直线前进”。像盘山公路一样,左转前进或右转前进,同样是前进中的方法。由此,图4中的条件与任务表述就变成了一一对应的关系:

    条件:无线?有线?

    任务:左转前进!右转前进!

    实质上在巡线中,“直线前进”不仅在方法上无法判断,在实际操作中也是不可取的。在实际场地中,需要使用巡线方法的往往不会是直线。这是我们需要厘清的第二个误区。

    3.“巡线”状态下的最大转向是否就是“直角转向”?

    我们知道,EV3机器人转向的取值范围为[-100,100]。在非巡线状态下,负值向左转向,正值向右转向,±50表示直角右转或左转,±100则分别表示向右或向左调头。据此,我们会固化地认为,±50同样是巡线状态下的最大转向值,而大于或小于这个值时机器人就会走“回头路”,这实际上是对巡线转向的另外一种误解。

    事实上通过实操,我们就会发现巡线中设置的角度就算是超过±50,甚至是设值为±100,只要电机功率适当都能完成巡线任务,并不会“回头”。这是什么原因? 通过探究分析,我们不难发现巡线中的条件与任务,实质上是一种“循环性任务”。上例巡线中的条件与任务,译成执行程式就是:如果“有线”执行的任务是“左转前进”,那么“无线”执行的任务则是“右转前进”,并如此循环……反之亦然。

    这就是为什么只要电机功率适当,设置的值无论大小,均能完成巡线任务的原因所在。实质上,值的大小反应的是转向的响应速度和效率。例如,转向值为-100或100时,表示的其实是需要让机器人以最大的转向速度向目标靠近,这是在巡线中我们需要厘清的另外一个问题。

    四、光感巡线的常见方法

    1.光感巡线入门——最值法

    (1)单感“最值法”

    结合变量与反应一一对应要求,图4示例条件与任务的关系,可转化为实质相同的左、右两种巡线模式(见图6),在此我们以左巡线模式进一步说明:如果“无线”执行的任务是“右转前进”,则“有线”执行的任务就是“左转前进”,在这里我们把这种巡线方法称为“左巡线模式”。

    这样,接下来的编程也就瓜熟蒂落、水到渠成(见图7)。下列程序中,反射值是一个实测参数,可以是最大值(左巡线模式),也可以是最小值(右巡线模式)。两种模式逻辑相同,没有实质的差别,在实操中可以根据自己的习惯选用。在这里我们不妨把这种通过测最大值或最小值作为执行条件的方法称为单感“最值法”,简称“最值法”。

    (2)双感“最值法”

    光感是供机器人获取数据的主要设备,“双感”相对于“单感”来讲,意味着可以获取更多的数据条件,从而让机器人执行巡线的方法变得更加多样。

    需要说明的是,为了让“双感巡线”能获得可供比较和执行的有效数据,双感的安装建议采用平行安装方式,且要间距适当,略大于“线”宽。间距过大,转进幅度就会很大;距离过小,双感反射光就会同时“巡到线上”,获取的數据就没有参考价值。根据条件与任务一一对应要求,不难得出“双感巡线”的以下执行关系(见图8):

    ①右光感碰到线→向右转进!

    ②左光感碰到线→向左转进!

    ③左右光感都没碰到线→直行!

    这样,接下来的编程也就变得十分简单(见图9)。

    事实上,这里的双感巡线方法仍然是通过检测“最值”作为执行条件,其原理和方法与单感“最值法”是一样的,也可称为“最值法”。区别在于其最值源于双光感,由左右光感各提供了一个“最值”。如果需要与单感“最值法”相区分,不妨把其称为“双感最值法”或“双最值法”。

    2.光感巡线进阶——均值法和差值法

    “最值法”的原理是通过探测最值和不断地向左转进或向右转进,以达到巡线之目的。利用“最值法”巡线,能实现简单的巡线任务,但在实操中的最大问题是摆动幅度特别大,巡线稳定性差。特别是“双最值法”,并没能因获取数据的增加而让机器人变得更加平稳,从而失去了增加光感的意义。那么有没有一种方法,在现有获取数据条件不变的情况下,通过最大化地利用现有数据,让机器变得更加平稳?答案是肯定的。

    (1)单感“均值法”

    如果我们对单感“最值法”进一步剖析就会发现,其“光”与“线”的位置关系,无外乎有以下5种情况(见图10):

    ①反射光在线左;

    ②反射光在线上且偏左;

    ③反射光在线上且居中;

    ④反射光在线上且偏右;

    ⑤反射光在线右。

    那么,这5种位置关系在巡线中,谁需要转向的角度最大?谁需要的最小?根据最值法中“极值转进”的原理,我们不难得出①、③、⑤需要转向的角度最大,②、④需要转向的角度最小,甚至不需要转向的判断。因为①、③、⑤是巡线中的“极值”位置,是转向的条件,②和④则分居于左巡线和右巡线的条件正中,是最理想的前进位置,是不需要转向的(见图11)。

    根据光感巡线中灰度在极值间渐变的原理,不难推断出②、④灰度值即为最大、最小两个极值之均值的结论。由此,可推导出以下转向关系式:

    转向值=光感实测值

    这样,完成实测数据的编程也就顺理成章(见图12)。在这里,我们把这种利用实测数据获取均值,达到减小机器人摆动幅度,增加巡线平稳性的方法叫做“单感均值法”,简称“均值法”。

    (2)双感“差值法”

    前面说过,双感“最值法”不能因光感的增加而使巡线更加稳定是一大憾事。事实上,双感获取到的数据与单感相比其实是翻倍的,只是没有被很好地利用而已。下面我们以理想状态为例,分析图8中不同光感位置所获取数据、执行动作及转向值间的关系,如表1所示。

    我们发现了什么规律?就是左右光感数据的差值、转向值与执行动作其实是相互对应的。而这种对应关系,即使在非理想状态下同样成立。所以不难推导出以下转向公式:

    转向值=左感实测值-右转实测值

    把该公式换成机器人能执行的程序,就如图13所示。在这里,我们把这种通过计算左右光感实测值的差值来确定转向的方法称之为“双感差值法”,简称“差值法”。

    五、光感巡线优化——影响因素探讨及控制

    1.光感巡线的影响因素探讨

    为方便表述,我们把以上所探讨的方法分别称为“最值法”“均值法”和“差值法”。其中“最值法”是通过“最值转进”的原理和方式来达到巡线的目的,为单、双感巡线通用,是光感巡线中的基础方法。其优点是原理简单、便于理解,缺點是平稳性差。

    “均值法”和“差值法”分别是单、双感巡线的常用方法。这两种方法因能根据实测数据实时修正转向系数并及时转进,增加了机器人的稳定性。从理论上讲,这两种方法已经解决了最值法存在的问题,提高了巡线的平稳性。但通过实测就会发现,两种方法在巡线中均存在效率性问题,很难满足实际的训练和比赛要求,并不具有适用性。其实,在“均值法”和“差值法”的编程中,电机功率都是设置得很小的。换句话说,就是机器人的稳定性是通过牺牲巡线的速度来实现的。

    如果我们把电机功率加大,会出现什么样的情况? 通过实测,我们就会发现无论是哪种方法,只要功率稍微增大,机器人就会“脱线”,甚至在功率不变的情况下,只要线的曲度较大时,同样也会发生“脱线”现象,根本无法达到巡线的要求。这是什么原因?回答此问题之前,让我们先来回顾一下物理中“运动小车受力分析”的经典案例:在水平道路上运动的小车,在水平方向会受到牵引力和摩擦力的作用。当牵引力大于摩擦力,小车作加速运动;当牵引力等于摩擦力,小车作匀速运动;当牵引力小于摩擦力,小车作减速运动。此案例之所以经典,不仅因为这是最简单的物体运动受力分析的例子,更在于该案例知识均是基于我们日常的生活。在这里,我们并不探讨速度与力或各种力间的相互关系,仅仅是为了说明物体在水平运动中都是有摩擦力存在的。

    另外,我们还有这样的经验,在百米赛跑时,冲到终点后往往还要继续往前跑一段距离,若突然拐弯或立刻停下来,跑步的人往往会摔倒,这是为什么?这是因为有惯性的存在。简单来讲,惯性就是物体保持静止状态或匀速直线运动状态的一种性质,是物体对其运动状态改变的一种阻抗。惯性是物体的一种固有属性,其大小与物体质量相关。当我们了解了运动中的物体其实都会受到摩擦力、惯性等因素影响时,回过头再来看在“均值法”和“差值法”中机器人“脱线”的原因,答案就不言而喻了。

    首先,受光线、色差等环境因素的影响,实际巡线场地基本都无法达到理想状态,即反射光的最大值无法达到100,最小值也不可能为0。因此,实际的转向最值并不能达到理想转向值。其次,引进“均值法”和“差值法”的目的,本身就是要让机器人稍有偏移就能及时转向,从而达到使机器人平稳前进的目的。所以在实际的应用中,实际转向值通常会非常小。最后,由于机器人自身惯性和摩擦力的存在,机器人在转进时会由于惯性和摩擦力共同产生一个转向阻力,抵消了部分转向牵引值,当转向值小于或等于阻力值时,机器人就会发生“脱线”前进的情况。

    2.光感巡线影响因素的控制——转向系数

    那么,如何解决“脱线”的问题?答案是增大转向值,让转向的实际牵引值始终大于转向阻力值,即让机器人的牵引值在抵消阻力值后,让实际转向值还具有牵引力,这样就能真正达到转向的目的。那么,如何增大转向值呢?加入比例系数是一种不错的方法。因为在实地操作中,光感实测值会随位移、时间的变化而实时变化,转向值也需要根据偏离的大小实时进行调整。加入系数后,就能让转向值根据光感实测值进行同比例实时变化。

    接下来,要研究的问题就是要加入多大的转向系数才合适?这是一个难点,因为在实际应用和实地操作中,适合的转向值需要根据功率大小、巡线的曲直度及平稳性等要求作出相应的调整,才能满足实操的要求。例如,要让机器人平稳些,转弯值就不能过大,系数也相应的要小,但如果功率较大或巡线的弯曲度较大,就需要较大的转弯值才能完成巡线要求,相应的系数也要增大。

    当然,转向系数的设置虽然会受多种因素的影响,但还是可以根据光感值和转向值的关系,快速、准确地计算出一个具有实操意义的参考值。那么,如何计算转向系数的参考值?在前面“均值法”和“差值法”的案例中,我们知道在理想状态下,即当光感值为100(最大值)或0(最小值)时,机器人的极值转向值分别为±50和±100,即机器人分别以应以±50或±100转向速度向目标靠近。虽然在非理想状态下,光感的最大值或最小值无法达到100或0,但这并不意味着我们不能通过比例系数把转向值设为±100。所以,我们不防设在任何状态下,与光感最大值和最小值相匹配的转向的“最值”均为±100。这样,转向值的计算也就迎刃而解了。

    (1)均值法的设计与优化——均值系数法

    在均值法中,因为

    转向值=光感实测值

    加入转向系数后,则变为

    转向值=(光感实测值-)×转向系数

    我们不防设实测光感最大时转向值为100,则有

    (最大值-)×转向系数=100

    所以

    转向系数=

    故图12所示均值法的执行程序,加入转向系数后,可进一步优化为图14中的执行程序。在这里,为了与前面的均值法相区别,我们不防把这种加入了转向系数,进行了设计与优化的方法称为“均值系数法”。

    (2)差值法的设计与优化——差值系数法

    在差值法中,因為

    转向值=左感实测值-右感实测值

    加入转向系数后则变为

    转向值=(左感实测值-右感实测值)×转向系数

    我们不防设实测光感差值最大时,转向值为100,则有

    (左感实测值-右感实测值)×转向系数=100

    所以

    转向系数=

    故图13所示的差值法的执行程序,加入转向系数后,可进一步优化为图15中的执行程序。

    为了与前面说的差值法相区别,我们不防把这种加入了转向系数,进行了设计与优化的方法称为“差值系数法”。需要说明的是,上述公式中的转向系数仅仅是参考系数,在实操中需要结合场地实际进行相应的微调。

    六、结束语

    本文通过聚焦于光感巡线的设计与优化,对EV3光感巡线中存在的误区进行了梳理甄别,对光感巡线中的常见方法进行了概念化的概括,提出了“最值法”“均值法”和“差值法”等概念。理论上讲,光感巡线的原理极其简单,并不需要花费如此精力进行探讨。

    本文进行相关探讨的真正目的,意在通过对我们“熟视无睹”的常用方法进行总结提炼的同时,更加关注几种方法的设计与优化逻辑,通过持续的分析推导、追根溯源,运用抽丝剥茧式的追问,打通横亘在学生心中的脉络误区,深化学生对相关知识的理解和内化。

    古语云:纸上得来终觉浅,绝知此事要躬行。引用在本文中,是否可以理解为实眼看到的外化应用,并不代表我们真正理解了相关应用的逻辑与原理。若要真正理解,并达到烂熟于胸和操纵自如,就必须进一步躬身深究和探索。这也许就是国家大力倡导探究性学习的真正意义所在。

    (编辑:李晓萍)