APP下载

一种适用于中小学机器人竞赛的巡线技术模型

2020-02-26罗斐刘志勤

中国教育信息化·高教职教 2020年1期
关键词:PID算法

罗斐 刘志勤

摘   要:机器人教育作为一门交叉学科,是STEAM教育理念应用于实践的优秀载体。目前国内的中小学机器人教育主要以竞赛为主,巡线任务是大多数机器人竞赛中的基础任务之一。文章构建了一种适用于中小学机器人竞赛的巡线技术模型,包括基于PID控制的巡线算法、路口选择算法和边路传感器的转向辅助功能三个部分。文章通过阐述模型,并以LEGO MINDSTORMS编程为例进行展示,让更多学生掌握并应用于中小学机器人竞赛的巡线部分,提高学生的竞赛水平。

关键词:中小学机器人竞赛;巡线技术;PID算法;路口选择

中图分类号:TP242 文献标志码:A 文章编号:1673-8454(2020)01-0050-05

一、引言

几乎任何层次、任何主题的机器人竞赛都避免不了巡线这个最基础的任务,机器人能够按照既定的路线行进,是在竞赛中取得优异成绩最基础和最重要的条件之一,因此让学生掌握一种高效的巡线技术十分必要。目前国内中小学机器人竞赛存在师资水平参差不齐且教学能力普遍不高等问题,大部分学生参加竞赛过于依靠教练,本身并没有掌握一种良好的技术。构建一种适用于中小学机器人竞赛的巡线技术模型并让学生掌握,可以很好地解决这些问题。

二、国内外中小学机器人竞赛概述

国外的主流机器人竞赛有VEX机器人大赛、RoboRAVE和FIRST体系赛事,VEX机器人大赛根据难度涵盖的年龄段很广泛,包含8岁孩子到18岁以上的大学生,是含金量较高、综合性较强的机器人比赛,同时也是世界上规模最大的机器人比赛。RoboRAVE是由美国Intel公司主要赞助和支持的国际机器人竞赛,按竞赛年龄组队,可分为小学、初中和高中,作为国际大赛,同样能够让参赛学生得到很好的锻炼,开拓视野。FIRST体系赛事,包含少儿创意赛(FLL Jr)、工程挑战赛(FLL)、科技挑战赛(FTC)和机器人挑战赛(FRC),是全球主流的机器人竞赛,同时也是国内认可度较高的机器人竞赛,只要在FIRST各类赛事获奖,都会进入STEM人才库,对申请世界名校很有帮助。

国内的主流机器人竞赛有“全国青少年科技创新大赛”和“中国青少年机器人竞赛”,其中“中国青少年机器人竞赛”综合计算机编程、工程设计、动手制作与技术构建,是一项专业的机器人类赛事。该竞赛分为机器人综合技能比赛、FLL机器人工程挑战赛、VEX机器人工程挑战赛、机器人创意比赛和教育机器人工程挑战赛。

三、国内外中小学机器人竞赛开展现状

国外的机器人教育开展较早且热度一直很高,早在1994年美国麻省理工学院就开设了LEGO机器人相关课程,让学生自行设计机器人并亲自动手制作,提高学生对机器人知识的了解和对机器人制作、操纵的水平。LEGO的第一个MINDSTORMS(可編程传感器模具)零件于1998年上市,同年和FIRST机构组成FLL联盟,并在每年9月向全球参赛队伍公布年度竞赛项目。大量的资源和天然的优势使国外的机器人教育发展水平较国内优势巨大,优质的师资以及较高的普及程度使国外的机器人竞赛开展火热,参加竞赛的学生由于从小受到高水平的机器人教育,在竞赛中能力突出,参与度很高。

我国机器人教育起步较晚,将机器人教育引入课堂的学校到现在仍是凤毛麟角。没有独立的课程支撑,大多数只是以兴趣小组和课外培训机构的形式存在。校内受到资源、场地、时间等因素的制约,只有很少部分的学生能够接触到机器人教育且师资匮乏,学生更是学而不精。校外的培训机构教学模式各异,师资水平参差不齐且大都以盈利为主要目的,教学目标不明确,教学模式陈旧,没有系统的教学设计,学生所掌握的知识大都浮于表面。参加竞赛时过于依靠教练,学生参与度不高,没能得到应有的锻炼和提升。

四、国内外中小学机器人竞赛巡线技术模型概述

构建的中小学机器人竞赛巡线技术模型包含三个部分,分别为基于PID控制的巡线算法、路口选择算法和边路传感器的转向辅助功能。虽然传感器的数量越多,机器人的巡线效果会越好、越精确,但国内外的中小学机器人竞赛对传感器使用的数量都有严格的限制,一般要求不超过4个。因此,模型在基于PID控制的巡线算法部分采用单传感器巡线。路口选择算法部分采用两个边路传感器来达到路口计数的功能,用于确认机器人所处的位置,让机器人能够按照人为设定的方向行进。边路传感器的转向辅助功能用于面对弯度较大、较复杂的地图时辅助机器人转向,防止机器人因转向不及时而导致“飞线”。

五、基于PID控制的巡线算法

PID控制器常用于工业领域,能实现对多种机械装置的精确控制。PID的数学模型经过一系列的化简之后可以表示为:

UK=KP·EK+Ki·■Ei+Kd·(Ek-Ek-1)

其中Uk为第k次采样输出值,Kp为比例系数,Ek为第k次采样时与输出的偏差,Ki为积分系数,Kd为微分系数。

将PID算法应用于巡线机器人,能够高效地控制机器人完成巡线任务。其中P(Proportion)是比例项,是巡线机器人中的关键部分,用于控制转向的幅度。I(Integration)是积分项,可以理解为机器人巡线过程中产生误差的累积,用于消除稳态误差。D(Differentiation)是微分项,也可以叫导数项,中学数学里定义一个函数在某一点的导数描述了这个函数在这一点附近的变化率,可以理解为机器人巡线过程中两个连续误差之间的差,用于预测机器人未来可能产生的误差,提高机器人的转向速率。

1.案例类比PID模型

为了帮助学生理解PID模型,首先设计了一个生活中可见的案例——如何精确控制一个水缸中的水位。

有一个水缸,在不断往外流水,需要人为不断往里注水,让水缸里的水位一直保持在一个刻度上。

这个时候需要选择一个合适的容器,一次一次地往里面加水,让水位保持原来的刻度,这样的一个容器,就是PID中的比例。

但存在的问题是很难找到一个合适的容器,让每一次加的水都刚刚好,总会存在一些误差,要么多一点,要么少一点,这个时候就需要再找一个新的容器,能够进一步缩小这个误差,于是找来了一个漏斗,通过不断实验,终于找到了一个大小合适的漏斗,水通过漏斗进来刚好可以保持原来的刻度,这个漏斗,就是积分。

最后一个问题,不能确定这个水是一直保持匀速往外流,有时候它会流得快,有时候会流得慢,这就导致水位还是会有波动,这个时候额外再准备一盆备用水,流得快了就直接往里倒,如果倒多了怎么办?在水位刻度上方再打一个洞,当水位漫过刻度,就让水流出来。这相当于有了预见性,这就是微分。

总结一下,比例就是调节尺度的大小,对应的是每次舀水的容器;积分就是将每次直接舀水的误差进行细分,增大或者减小进水速度,对应的是漏斗;微分就是对水位刻度做一个预判,高了就放水,低了就加水。

2.PID巡线算法剖析

首先要清楚巡线小车是如何巡线的。在单传感器的情况下,小车应沿着黑线边缘走。不可以压着黑线走的原因是一旦小车发生偏离,颜色传感器的反射光强度读数发生了较大的变化,小车将不知道自己的位置究竟是往哪个方向偏移了,因为左右两侧都不是黑线,小车无法确定纠正方向。如果沿着黑线边缘走,当小车发生偏移压在黑线上,颜色传感器反射光强度读数变小,说明小车该向线的随机一侧纠正方向;当小车发生偏移远离黑线,颜色传感器反射光强度读数变大,说明小车该向靠近黑线一侧纠正方向。

(1)比例调节

清楚了巡线方式之后,要明白如何来调节小车转向幅度,转向幅度用T表示。在机器人巡线的过程中,总是希望机器人可以一直沿着线走,当线发生较大弯曲时,机器人有较大转向,当线发生较小弯曲时,机器人有较小转向。收集颜色传感器反射光强度,用R表示。根据程序采集得到的数据,当机器人完全离开黑线时,颜色传感器测量的反射光强度有最大值,当机器人完全压在黑线上时,颜色传感器测量的反射光强度有最小值,取两个极限值的中间数,给它取个名字叫标准量,用S表示。期望的效果就是机器人在走直线的时候,传感器的读数一直都是S。如果遇到转弯的时候,用传感器测量到的值减去标准量会产生一个误差量,用E表示,数学表达式如下:

E=R-S

误差量可以用来表示纠正小车转向的幅度。因为转向幅度越大,产生的误差量也会越大,所以可以看成转向幅度与误差量成比例关系,数学表达式如下:

T=KP·E

在实际操作中,用两个电机,即A电机和B电机,作为巡线机器人的驱动系统。现在给定两个电机一样的初始功率P,当误差量E不为零的时候,给其中一个电机的功率值加上转向幅度,给另外一个电机的功率值减去转向幅度,即可达到实际转向的效果,数学表达式如下:

PowerA=PA+T

PowerB=PB+T

完成比例控制器后,机器人基本上已经可以完成巡线任务了,很简单,但并不高效。

(2)积分调节

观察发现,机器人在沿着直线前进的时候仍然会产生一定程度的摆动,产生摆动就意味着在同样速度的情况下会花费更长的时间去完成巡线,这并不高效。结合之前的实例分析,为什么机器人在巡直线的时候会产生这样的摆动。

在给水缸注水的时候,无论找什么样的容器,总是会存在多一点或者少一点的问题,现在机器人巡线也是这样,無论比例怎么调节,转向总会存在多一点或者少一点的问题,这就是机器人产生摆动的原因。所以,比例调节存在一个缺陷,它不能完全消除误差,当误差保持恒定的时候,同时整个系统也维持恒定了,这种误差叫稳态误差。这个时候要想办法消除这种稳态误差,就要引入积分项。

这里可以把积分理解为对误差的累加,即:

I=■Ei

虽然之前比例调节导致每一次都会产生一个小的误差,但是积分过后,小的误差会变大,几个连续小的误差积分会完全改变机器人的运行轨迹。随着时间的推移,机器人产生的误差会越来越小,理论上会达到完全消除的状态,即积分项为0。

还存在一个问题,由于误差有正有负,所以积分项通常不会趋于无穷,但是如果机器人长期处于线的一侧,尤其在转弯的时候,那么积分项很快就会趋于无穷,产生一个非常大的转向值,这会导致机器人“飞线”,即完全偏离轨迹,这时通常的处理方式是在每一次积分结束时都将积分项乘以一个小于1的常数来抑制积分。

此时,转向幅度T可以表示为:

T=KP·E+Ki·I

积分调节可以看成是对过去误差的纠正,可以让机器人在巡线的过程中逐渐减小摆动的幅度,使巡线效果逐渐趋于完善。

(3)微分调节

机器人能够纠正过去的误差还不够,还希望机器人可以预测未来的误差。比如当机器人面临一个很大的转向的时候,可能比例加积分的调节方式不足以让它完成转向,因为这个弯的幅度太大且来得太突然了,要是可以提前预测就好了。微分,就是用来实现这个功能的。

这里的微分可以看成导数,是对两个连续误差之间的变化量的描述,即:

D=CurrentE(error)-LastE(lastError)

那么预测的下一个误差可以表示为:

NextE(nextError)=D+CurrentE(error)

此时,转向幅度T可以表示为:

T=KP·E+Ki·I+Kd·D

预测下一次误差有什么作用呢?假如下一次的误差比之前一次更小,那么导数项的值也很小,对系统几乎不起任何作用。但是要是下一次的误差比当前误差大,而且大很多,这个时候系统就会去纠正这个误差,因为导数项会产生一个很大的值,纠正转向,这一点在机器人面临转向的时候非常有用,可以有效地提高机器人的转向速率,避免转向不及时而产生“飞线”的现象。

对应的LEGO MINDSTORMS程序如图1所示。

(4)PID巡线算法总结

实践中,比例调节是机器人完成巡线任务的关键。当地图比较简单、转向幅度较小时,可以适当将电机功率调大,将Kp值调小,这样可以让机器人尽快地完成巡线操作且摆动幅度较小。如果情况相反,则应该限制电机的功率。积分调节可以将比例调节中产生的误差降得更低,即减少机器人在巡线过程中产生的震荡。微分控制可以让机器人“预测”未来可能产生的误差,使机器人在遇到幅度较大的转向时反应更加灵敏。

六、路口选择算法

在机器人竞赛中,地图一般都不会是一条单一的黑线,往往会存在很多路口,如十字路口和丁字路口。在遇到这些路口的时候,要求机器人能够按照期望的方向行进,即学会在路口处做出选择而不是随机转弯。这里采用两个边路传感器同时检测到黑线的时候就将路口数做一次递加,当需要机器人在某一个路口向某一个方向转弯时,设定对应的路口数字,单独做一次转弯子程序,转弯后再跳出该转弯子程序继续巡线。

1.路口计数功能实现

首先设定路口初始数量为0。根据实时检测到的两个边路传感器的反射光线强度R1和R2,设定一个临界值C,临界值C表示传感器探测到黑线时的值,如当传感器完全接触黑线时有最小值M,经过之前的计算有标准量S,临界值应当介于S和M之间。当R1和R2同时小于临界值,即左右的两个边路传感器同时检测到了黑线,就将路口数量做一次递加。

这里还存在一个问题,计算机的运算速度很快,黑线又有一定的宽度,当机器人扫到黑线直到完全越过黑线需要一定的时间,在这一段时间里两个边路传感器一直处于检测到黑线的状态,路口计数会持续递加,这会导致一个错误结果。解决的办法是在路口计数的子程序里面放一个等待模块,起到延时的效果,即限定程序跑完一次所花费的时间。

对应的LEGO MINDSTORMS程序如图2所示。

2.特定路口转弯功能实现

做路口计数的目的就是为了机器人能够在特定的路口向设定的方向转弯。如需要机器人在第一个路口向左转弯,在第二个路口向右转弯,在完成路口计数的功能后,需要单独对机器人做转弯操作。转弯操作本身很简单,只需要调整好参数即可,但存在的问题是,当机器人完成转弯过后依然会检测到路口数为要求转弯的路口,这会导致机器人陷入一个循环,即一直转弯而不继续巡线。

解决这个问题的办法就是要让机器人在完成当前转弯操作之后就跳出转弯的子程序,具体的做法是每完成一次转弯,就给路口数再加一个小数,这个小数相当于对此次转弯做了一个标记,当此次转弯完成,就不需要转弯了。对计算机而言,由于路口数在完成转弯之后加上一个小数,和转弯之前的路口数不等了,就会跳出当前循环,继续执行巡线。

对应的LEGO MINDSTORMS程序如图3所示。

3.路口選择算法总结

本套算法的逻辑简洁明了,有利于数学基础薄弱的中小学生理解。在实践中,应合理设置临界值C和路口计数时的等待时间。若临界值C的值过大或过小,都会导致路口计数功能上的缺失,使机器人不能正确地记录经过的路口数。若路口计数时的等待时间过长,会导致连续相近的两个路口出现计数不及时的情况;若路口计数时的等待时间过短,会导致机器人因还未完全驶出路口而出现重复计数的情况。对特定路口转弯子程序所做的小数标记是为了避免程序陷入错误循环所做的跳出操作。

七、边路传感器的转向辅助功能概述与实现

在一些比赛地图较复杂的竞赛中,会出现大量的锐角转弯以及连续的S型路线,此时应在保证机器人不“飞线”的前提下尽可能提高机器人的巡线速度。由于前面采用的单传感器PID巡线方式,机器人巡线速度稍快就容易出现“飞线”的情况,此时,两个边路传感器的转向辅助功能就显得尤为重要。

具体的做法是:同样以子程序的方式,当某一边的传感器检测到了黑线,就让机器人向该方向发生偏转,偏转的角度为中路传感器再次检测到黑线为止,即使黑线重新处于机器人的中间位置。此时跳出该子程序,继续执行巡线。

对应的LEGO MINDSTORMS程序如图4所示。

八、结束语

本文构建的适用于中小学机器人竞赛的巡线技术模型能够让更多的学生掌握一种应用于竞赛的巡线技术,提高学生在竞赛中的参与度和真实水平,取得更好的成绩。但该模型还存在部分尚需深入研究的问题,如PID巡线算法中每个部分的参数该如何确定,尽管已有不少文献阐述了该如何确定参数部分的值,但烦琐的推导过程仍旧不能为广大中小学生所接受,后续还需要深入研究和探讨。展示所用的LEGO MINDSTORMS程序并非适用于所有的中小学机器人竞赛,这里只做模型思路的其中一个具体应用,不同的竞赛有不同的器材和编程环境要求,应结合实际做具体的分析和实践。

参考文献:

[1]上菲菲,刘凤娟.欠发达地区中小学机器人教育研究——以汉中市为例[J].中国现代教育装备,2018(16):63-66.

[2]蒙庆华,蓝日海,戴海清.机器人教育校本课程开发探究[J].教学与管理,2019(15):90-92.

[3]才奕.PID控制器在乐高EV3巡线程序中的应用[J].内蒙古科技与经济,2018(1):97-98,100.

[4]任翠平,左毅鹏,卢军.基于PID算法的巡线小车的设计与实现[J].电子技术与软件工程,2016(12):251-252.

[5]黄芹,陶云王,玉金等.中小学模块化机器人教育探究[J].中国电化教育,2018(7):113-119.

[6]张剑平,王益.机器人教育:现状、问题与推进策略[J].中国电化教育,2006(12):65-68.

(编辑:王天鹏)

猜你喜欢

PID算法
多轴电机同步运动控制器设计
基于AVR单片机的旋转倒立摆设计