羅斐 劉志勤
摘? ?要:機(jī)器人教育作為一門交叉學(xué)科,是STEAM教育理念應(yīng)用于實(shí)踐的優(yōu)秀載體。目前國(guó)內(nèi)的中小學(xué)機(jī)器人教育主要以競(jìng)賽為主,巡線任務(wù)是大多數(shù)機(jī)器人競(jìng)賽中的基礎(chǔ)任務(wù)之一。文章構(gòu)建了一種適用于中小學(xué)機(jī)器人競(jìng)賽的巡線技術(shù)模型,包括基于PID控制的巡線算法、路口選擇算法和邊路傳感器的轉(zhuǎn)向輔助功能三個(gè)部分。文章通過(guò)闡述模型,并以LEGO MINDSTORMS編程為例進(jìn)行展示,讓更多學(xué)生掌握并應(yīng)用于中小學(xué)機(jī)器人競(jìng)賽的巡線部分,提高學(xué)生的競(jìng)賽水平。
關(guān)鍵詞:中小學(xué)機(jī)器人競(jìng)賽;巡線技術(shù);PID算法;路口選擇
中圖分類號(hào):TP242 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1673-8454(2020)01-0050-05
一、引言
幾乎任何層次、任何主題的機(jī)器人競(jìng)賽都避免不了巡線這個(gè)最基礎(chǔ)的任務(wù),機(jī)器人能夠按照既定的路線行進(jìn),是在競(jìng)賽中取得優(yōu)異成績(jī)最基礎(chǔ)和最重要的條件之一,因此讓學(xué)生掌握一種高效的巡線技術(shù)十分必要。目前國(guó)內(nèi)中小學(xué)機(jī)器人競(jìng)賽存在師資水平參差不齊且教學(xué)能力普遍不高等問(wèn)題,大部分學(xué)生參加競(jìng)賽過(guò)于依靠教練,本身并沒(méi)有掌握一種良好的技術(shù)。構(gòu)建一種適用于中小學(xué)機(jī)器人競(jìng)賽的巡線技術(shù)模型并讓學(xué)生掌握,可以很好地解決這些問(wèn)題。
二、國(guó)內(nèi)外中小學(xué)機(jī)器人競(jìng)賽概述
國(guó)外的主流機(jī)器人競(jìng)賽有VEX機(jī)器人大賽、RoboRAVE和FIRST體系賽事,VEX機(jī)器人大賽根據(jù)難度涵蓋的年齡段很廣泛,包含8歲孩子到18歲以上的大學(xué)生,是含金量較高、綜合性較強(qiáng)的機(jī)器人比賽,同時(shí)也是世界上規(guī)模最大的機(jī)器人比賽。RoboRAVE是由美國(guó)Intel公司主要贊助和支持的國(guó)際機(jī)器人競(jìng)賽,按競(jìng)賽年齡組隊(duì),可分為小學(xué)、初中和高中,作為國(guó)際大賽,同樣能夠讓參賽學(xué)生得到很好的鍛煉,開(kāi)拓視野。FIRST體系賽事,包含少兒創(chuàng)意賽(FLL Jr)、工程挑戰(zhàn)賽(FLL)、科技挑戰(zhàn)賽(FTC)和機(jī)器人挑戰(zhàn)賽(FRC),是全球主流的機(jī)器人競(jìng)賽,同時(shí)也是國(guó)內(nèi)認(rèn)可度較高的機(jī)器人競(jìng)賽,只要在FIRST各類賽事獲獎(jiǎng),都會(huì)進(jìn)入STEM人才庫(kù),對(duì)申請(qǐng)世界名校很有幫助。
國(guó)內(nèi)的主流機(jī)器人競(jìng)賽有“全國(guó)青少年科技創(chuàng)新大賽”和“中國(guó)青少年機(jī)器人競(jìng)賽”,其中“中國(guó)青少年機(jī)器人競(jìng)賽”綜合計(jì)算機(jī)編程、工程設(shè)計(jì)、動(dòng)手制作與技術(shù)構(gòu)建,是一項(xiàng)專業(yè)的機(jī)器人類賽事。該競(jìng)賽分為機(jī)器人綜合技能比賽、FLL機(jī)器人工程挑戰(zhàn)賽、VEX機(jī)器人工程挑戰(zhàn)賽、機(jī)器人創(chuàng)意比賽和教育機(jī)器人工程挑戰(zhàn)賽。
三、國(guó)內(nèi)外中小學(xué)機(jī)器人競(jìng)賽開(kāi)展現(xiàn)狀
國(guó)外的機(jī)器人教育開(kāi)展較早且熱度一直很高,早在1994年美國(guó)麻省理工學(xué)院就開(kāi)設(shè)了LEGO機(jī)器人相關(guān)課程,讓學(xué)生自行設(shè)計(jì)機(jī)器人并親自動(dòng)手制作,提高學(xué)生對(duì)機(jī)器人知識(shí)的了解和對(duì)機(jī)器人制作、操縱的水平。LEGO的第一個(gè)MINDSTORMS(可編程傳感器模具)零件于1998年上市,同年和FIRST機(jī)構(gòu)組成FLL聯(lián)盟,并在每年9月向全球參賽隊(duì)伍公布年度競(jìng)賽項(xiàng)目。大量的資源和天然的優(yōu)勢(shì)使國(guó)外的機(jī)器人教育發(fā)展水平較國(guó)內(nèi)優(yōu)勢(shì)巨大,優(yōu)質(zhì)的師資以及較高的普及程度使國(guó)外的機(jī)器人競(jìng)賽開(kāi)展火熱,參加競(jìng)賽的學(xué)生由于從小受到高水平的機(jī)器人教育,在競(jìng)賽中能力突出,參與度很高。
我國(guó)機(jī)器人教育起步較晚,將機(jī)器人教育引入課堂的學(xué)校到現(xiàn)在仍是鳳毛麟角。沒(méi)有獨(dú)立的課程支撐,大多數(shù)只是以興趣小組和課外培訓(xùn)機(jī)構(gòu)的形式存在。校內(nèi)受到資源、場(chǎng)地、時(shí)間等因素的制約,只有很少部分的學(xué)生能夠接觸到機(jī)器人教育且?guī)熧Y匱乏,學(xué)生更是學(xué)而不精。校外的培訓(xùn)機(jī)構(gòu)教學(xué)模式各異,師資水平參差不齊且大都以盈利為主要目的,教學(xué)目標(biāo)不明確,教學(xué)模式陳舊,沒(méi)有系統(tǒng)的教學(xué)設(shè)計(jì),學(xué)生所掌握的知識(shí)大都浮于表面。參加競(jìng)賽時(shí)過(guò)于依靠教練,學(xué)生參與度不高,沒(méi)能得到應(yīng)有的鍛煉和提升。
四、國(guó)內(nèi)外中小學(xué)機(jī)器人競(jìng)賽巡線技術(shù)模型概述
構(gòu)建的中小學(xué)機(jī)器人競(jìng)賽巡線技術(shù)模型包含三個(gè)部分,分別為基于PID控制的巡線算法、路口選擇算法和邊路傳感器的轉(zhuǎn)向輔助功能。雖然傳感器的數(shù)量越多,機(jī)器人的巡線效果會(huì)越好、越精確,但國(guó)內(nèi)外的中小學(xué)機(jī)器人競(jìng)賽對(duì)傳感器使用的數(shù)量都有嚴(yán)格的限制,一般要求不超過(guò)4個(gè)。因此,模型在基于PID控制的巡線算法部分采用單傳感器巡線。路口選擇算法部分采用兩個(gè)邊路傳感器來(lái)達(dá)到路口計(jì)數(shù)的功能,用于確認(rèn)機(jī)器人所處的位置,讓機(jī)器人能夠按照人為設(shè)定的方向行進(jìn)。邊路傳感器的轉(zhuǎn)向輔助功能用于面對(duì)彎度較大、較復(fù)雜的地圖時(shí)輔助機(jī)器人轉(zhuǎn)向,防止機(jī)器人因轉(zhuǎn)向不及時(shí)而導(dǎo)致“飛線”。
五、基于PID控制的巡線算法
PID控制器常用于工業(yè)領(lǐng)域,能實(shí)現(xiàn)對(duì)多種機(jī)械裝置的精確控制。PID的數(shù)學(xué)模型經(jīng)過(guò)一系列的化簡(jiǎn)之后可以表示為:
UK=KP·EK+Ki·■Ei+Kd·(Ek-Ek-1)
其中Uk為第k次采樣輸出值,Kp為比例系數(shù),Ek為第k次采樣時(shí)與輸出的偏差,Ki為積分系數(shù),Kd為微分系數(shù)。
將PID算法應(yīng)用于巡線機(jī)器人,能夠高效地控制機(jī)器人完成巡線任務(wù)。其中P(Proportion)是比例項(xiàng),是巡線機(jī)器人中的關(guān)鍵部分,用于控制轉(zhuǎn)向的幅度。I(Integration)是積分項(xiàng),可以理解為機(jī)器人巡線過(guò)程中產(chǎn)生誤差的累積,用于消除穩(wěn)態(tài)誤差。D(Differentiation)是微分項(xiàng),也可以叫導(dǎo)數(shù)項(xiàng),中學(xué)數(shù)學(xué)里定義一個(gè)函數(shù)在某一點(diǎn)的導(dǎo)數(shù)描述了這個(gè)函數(shù)在這一點(diǎn)附近的變化率,可以理解為機(jī)器人巡線過(guò)程中兩個(gè)連續(xù)誤差之間的差,用于預(yù)測(cè)機(jī)器人未來(lái)可能產(chǎn)生的誤差,提高機(jī)器人的轉(zhuǎn)向速率。
1.案例類比PID模型
為了幫助學(xué)生理解PID模型,首先設(shè)計(jì)了一個(gè)生活中可見(jiàn)的案例——如何精確控制一個(gè)水缸中的水位。
有一個(gè)水缸,在不斷往外流水,需要人為不斷往里注水,讓水缸里的水位一直保持在一個(gè)刻度上。
這個(gè)時(shí)候需要選擇一個(gè)合適的容器,一次一次地往里面加水,讓水位保持原來(lái)的刻度,這樣的一個(gè)容器,就是PID中的比例。
但存在的問(wèn)題是很難找到一個(gè)合適的容器,讓每一次加的水都剛剛好,總會(huì)存在一些誤差,要么多一點(diǎn),要么少一點(diǎn),這個(gè)時(shí)候就需要再找一個(gè)新的容器,能夠進(jìn)一步縮小這個(gè)誤差,于是找來(lái)了一個(gè)漏斗,通過(guò)不斷實(shí)驗(yàn),終于找到了一個(gè)大小合適的漏斗,水通過(guò)漏斗進(jìn)來(lái)剛好可以保持原來(lái)的刻度,這個(gè)漏斗,就是積分。
最后一個(gè)問(wèn)題,不能確定這個(gè)水是一直保持勻速往外流,有時(shí)候它會(huì)流得快,有時(shí)候會(huì)流得慢,這就導(dǎo)致水位還是會(huì)有波動(dòng),這個(gè)時(shí)候額外再準(zhǔn)備一盆備用水,流得快了就直接往里倒,如果倒多了怎么辦?在水位刻度上方再打一個(gè)洞,當(dāng)水位漫過(guò)刻度,就讓水流出來(lái)。這相當(dāng)于有了預(yù)見(jiàn)性,這就是微分。
總結(jié)一下,比例就是調(diào)節(jié)尺度的大小,對(duì)應(yīng)的是每次舀水的容器;積分就是將每次直接舀水的誤差進(jìn)行細(xì)分,增大或者減小進(jìn)水速度,對(duì)應(yīng)的是漏斗;微分就是對(duì)水位刻度做一個(gè)預(yù)判,高了就放水,低了就加水。
2.PID巡線算法剖析
首先要清楚巡線小車是如何巡線的。在單傳感器的情況下,小車應(yīng)沿著黑線邊緣走。不可以壓著黑線走的原因是一旦小車發(fā)生偏離,顏色傳感器的反射光強(qiáng)度讀數(shù)發(fā)生了較大的變化,小車將不知道自己的位置究竟是往哪個(gè)方向偏移了,因?yàn)樽笥覂蓚?cè)都不是黑線,小車無(wú)法確定糾正方向。如果沿著黑線邊緣走,當(dāng)小車發(fā)生偏移壓在黑線上,顏色傳感器反射光強(qiáng)度讀數(shù)變小,說(shuō)明小車該向線的隨機(jī)一側(cè)糾正方向;當(dāng)小車發(fā)生偏移遠(yuǎn)離黑線,顏色傳感器反射光強(qiáng)度讀數(shù)變大,說(shuō)明小車該向靠近黑線一側(cè)糾正方向。
(1)比例調(diào)節(jié)
清楚了巡線方式之后,要明白如何來(lái)調(diào)節(jié)小車轉(zhuǎn)向幅度,轉(zhuǎn)向幅度用T表示。在機(jī)器人巡線的過(guò)程中,總是希望機(jī)器人可以一直沿著線走,當(dāng)線發(fā)生較大彎曲時(shí),機(jī)器人有較大轉(zhuǎn)向,當(dāng)線發(fā)生較小彎曲時(shí),機(jī)器人有較小轉(zhuǎn)向。收集顏色傳感器反射光強(qiáng)度,用R表示。根據(jù)程序采集得到的數(shù)據(jù),當(dāng)機(jī)器人完全離開(kāi)黑線時(shí),顏色傳感器測(cè)量的反射光強(qiáng)度有最大值,當(dāng)機(jī)器人完全壓在黑線上時(shí),顏色傳感器測(cè)量的反射光強(qiáng)度有最小值,取兩個(gè)極限值的中間數(shù),給它取個(gè)名字叫標(biāo)準(zhǔn)量,用S表示。期望的效果就是機(jī)器人在走直線的時(shí)候,傳感器的讀數(shù)一直都是S。如果遇到轉(zhuǎn)彎的時(shí)候,用傳感器測(cè)量到的值減去標(biāo)準(zhǔn)量會(huì)產(chǎn)生一個(gè)誤差量,用E表示,數(shù)學(xué)表達(dá)式如下:
E=R-S
誤差量可以用來(lái)表示糾正小車轉(zhuǎn)向的幅度。因?yàn)檗D(zhuǎn)向幅度越大,產(chǎn)生的誤差量也會(huì)越大,所以可以看成轉(zhuǎn)向幅度與誤差量成比例關(guān)系,數(shù)學(xué)表達(dá)式如下:
T=KP·E
在實(shí)際操作中,用兩個(gè)電機(jī),即A電機(jī)和B電機(jī),作為巡線機(jī)器人的驅(qū)動(dòng)系統(tǒng)?,F(xiàn)在給定兩個(gè)電機(jī)一樣的初始功率P,當(dāng)誤差量E不為零的時(shí)候,給其中一個(gè)電機(jī)的功率值加上轉(zhuǎn)向幅度,給另外一個(gè)電機(jī)的功率值減去轉(zhuǎn)向幅度,即可達(dá)到實(shí)際轉(zhuǎn)向的效果,數(shù)學(xué)表達(dá)式如下:
PowerA=PA+T
PowerB=PB+T
完成比例控制器后,機(jī)器人基本上已經(jīng)可以完成巡線任務(wù)了,很簡(jiǎn)單,但并不高效。
(2)積分調(diào)節(jié)
觀察發(fā)現(xiàn),機(jī)器人在沿著直線前進(jìn)的時(shí)候仍然會(huì)產(chǎn)生一定程度的擺動(dòng),產(chǎn)生擺動(dòng)就意味著在同樣速度的情況下會(huì)花費(fèi)更長(zhǎng)的時(shí)間去完成巡線,這并不高效。結(jié)合之前的實(shí)例分析,為什么機(jī)器人在巡直線的時(shí)候會(huì)產(chǎn)生這樣的擺動(dòng)。
在給水缸注水的時(shí)候,無(wú)論找什么樣的容器,總是會(huì)存在多一點(diǎn)或者少一點(diǎn)的問(wèn)題,現(xiàn)在機(jī)器人巡線也是這樣,無(wú)論比例怎么調(diào)節(jié),轉(zhuǎn)向總會(huì)存在多一點(diǎn)或者少一點(diǎn)的問(wèn)題,這就是機(jī)器人產(chǎn)生擺動(dòng)的原因。所以,比例調(diào)節(jié)存在一個(gè)缺陷,它不能完全消除誤差,當(dāng)誤差保持恒定的時(shí)候,同時(shí)整個(gè)系統(tǒng)也維持恒定了,這種誤差叫穩(wěn)態(tài)誤差。這個(gè)時(shí)候要想辦法消除這種穩(wěn)態(tài)誤差,就要引入積分項(xiàng)。
這里可以把積分理解為對(duì)誤差的累加,即:
I=■Ei
雖然之前比例調(diào)節(jié)導(dǎo)致每一次都會(huì)產(chǎn)生一個(gè)小的誤差,但是積分過(guò)后,小的誤差會(huì)變大,幾個(gè)連續(xù)小的誤差積分會(huì)完全改變機(jī)器人的運(yùn)行軌跡。隨著時(shí)間的推移,機(jī)器人產(chǎn)生的誤差會(huì)越來(lái)越小,理論上會(huì)達(dá)到完全消除的狀態(tài),即積分項(xiàng)為0。
還存在一個(gè)問(wèn)題,由于誤差有正有負(fù),所以積分項(xiàng)通常不會(huì)趨于無(wú)窮,但是如果機(jī)器人長(zhǎng)期處于線的一側(cè),尤其在轉(zhuǎn)彎的時(shí)候,那么積分項(xiàng)很快就會(huì)趨于無(wú)窮,產(chǎn)生一個(gè)非常大的轉(zhuǎn)向值,這會(huì)導(dǎo)致機(jī)器人“飛線”,即完全偏離軌跡,這時(shí)通常的處理方式是在每一次積分結(jié)束時(shí)都將積分項(xiàng)乘以一個(gè)小于1的常數(shù)來(lái)抑制積分。
此時(shí),轉(zhuǎn)向幅度T可以表示為:
T=KP·E+Ki·I
積分調(diào)節(jié)可以看成是對(duì)過(guò)去誤差的糾正,可以讓機(jī)器人在巡線的過(guò)程中逐漸減小擺動(dòng)的幅度,使巡線效果逐漸趨于完善。
(3)微分調(diào)節(jié)
機(jī)器人能夠糾正過(guò)去的誤差還不夠,還希望機(jī)器人可以預(yù)測(cè)未來(lái)的誤差。比如當(dāng)機(jī)器人面臨一個(gè)很大的轉(zhuǎn)向的時(shí)候,可能比例加積分的調(diào)節(jié)方式不足以讓它完成轉(zhuǎn)向,因?yàn)檫@個(gè)彎的幅度太大且來(lái)得太突然了,要是可以提前預(yù)測(cè)就好了。微分,就是用來(lái)實(shí)現(xiàn)這個(gè)功能的。
這里的微分可以看成導(dǎo)數(shù),是對(duì)兩個(gè)連續(xù)誤差之間的變化量的描述,即:
D=CurrentE(error)-LastE(lastError)
那么預(yù)測(cè)的下一個(gè)誤差可以表示為:
NextE(nextError)=D+CurrentE(error)
此時(shí),轉(zhuǎn)向幅度T可以表示為:
T=KP·E+Ki·I+Kd·D
預(yù)測(cè)下一次誤差有什么作用呢?假如下一次的誤差比之前一次更小,那么導(dǎo)數(shù)項(xiàng)的值也很小,對(duì)系統(tǒng)幾乎不起任何作用。但是要是下一次的誤差比當(dāng)前誤差大,而且大很多,這個(gè)時(shí)候系統(tǒng)就會(huì)去糾正這個(gè)誤差,因?yàn)閷?dǎo)數(shù)項(xiàng)會(huì)產(chǎn)生一個(gè)很大的值,糾正轉(zhuǎn)向,這一點(diǎn)在機(jī)器人面臨轉(zhuǎn)向的時(shí)候非常有用,可以有效地提高機(jī)器人的轉(zhuǎn)向速率,避免轉(zhuǎn)向不及時(shí)而產(chǎn)生“飛線”的現(xiàn)象。
對(duì)應(yīng)的LEGO MINDSTORMS程序如圖1所示。
(4)PID巡線算法總結(jié)
實(shí)踐中,比例調(diào)節(jié)是機(jī)器人完成巡線任務(wù)的關(guān)鍵。當(dāng)?shù)貓D比較簡(jiǎn)單、轉(zhuǎn)向幅度較小時(shí),可以適當(dāng)將電機(jī)功率調(diào)大,將Kp值調(diào)小,這樣可以讓機(jī)器人盡快地完成巡線操作且擺動(dòng)幅度較小。如果情況相反,則應(yīng)該限制電機(jī)的功率。積分調(diào)節(jié)可以將比例調(diào)節(jié)中產(chǎn)生的誤差降得更低,即減少機(jī)器人在巡線過(guò)程中產(chǎn)生的震蕩。微分控制可以讓機(jī)器人“預(yù)測(cè)”未來(lái)可能產(chǎn)生的誤差,使機(jī)器人在遇到幅度較大的轉(zhuǎn)向時(shí)反應(yīng)更加靈敏。
六、路口選擇算法
在機(jī)器人競(jìng)賽中,地圖一般都不會(huì)是一條單一的黑線,往往會(huì)存在很多路口,如十字路口和丁字路口。在遇到這些路口的時(shí)候,要求機(jī)器人能夠按照期望的方向行進(jìn),即學(xué)會(huì)在路口處做出選擇而不是隨機(jī)轉(zhuǎn)彎。這里采用兩個(gè)邊路傳感器同時(shí)檢測(cè)到黑線的時(shí)候就將路口數(shù)做一次遞加,當(dāng)需要機(jī)器人在某一個(gè)路口向某一個(gè)方向轉(zhuǎn)彎時(shí),設(shè)定對(duì)應(yīng)的路口數(shù)字,單獨(dú)做一次轉(zhuǎn)彎子程序,轉(zhuǎn)彎后再跳出該轉(zhuǎn)彎子程序繼續(xù)巡線。
1.路口計(jì)數(shù)功能實(shí)現(xiàn)
首先設(shè)定路口初始數(shù)量為0。根據(jù)實(shí)時(shí)檢測(cè)到的兩個(gè)邊路傳感器的反射光線強(qiáng)度R1和R2,設(shè)定一個(gè)臨界值C,臨界值C表示傳感器探測(cè)到黑線時(shí)的值,如當(dāng)傳感器完全接觸黑線時(shí)有最小值M,經(jīng)過(guò)之前的計(jì)算有標(biāo)準(zhǔn)量S,臨界值應(yīng)當(dāng)介于S和M之間。當(dāng)R1和R2同時(shí)小于臨界值,即左右的兩個(gè)邊路傳感器同時(shí)檢測(cè)到了黑線,就將路口數(shù)量做一次遞加。
這里還存在一個(gè)問(wèn)題,計(jì)算機(jī)的運(yùn)算速度很快,黑線又有一定的寬度,當(dāng)機(jī)器人掃到黑線直到完全越過(guò)黑線需要一定的時(shí)間,在這一段時(shí)間里兩個(gè)邊路傳感器一直處于檢測(cè)到黑線的狀態(tài),路口計(jì)數(shù)會(huì)持續(xù)遞加,這會(huì)導(dǎo)致一個(gè)錯(cuò)誤結(jié)果。解決的辦法是在路口計(jì)數(shù)的子程序里面放一個(gè)等待模塊,起到延時(shí)的效果,即限定程序跑完一次所花費(fèi)的時(shí)間。
對(duì)應(yīng)的LEGO MINDSTORMS程序如圖2所示。
2.特定路口轉(zhuǎn)彎功能實(shí)現(xiàn)
做路口計(jì)數(shù)的目的就是為了機(jī)器人能夠在特定的路口向設(shè)定的方向轉(zhuǎn)彎。如需要機(jī)器人在第一個(gè)路口向左轉(zhuǎn)彎,在第二個(gè)路口向右轉(zhuǎn)彎,在完成路口計(jì)數(shù)的功能后,需要單獨(dú)對(duì)機(jī)器人做轉(zhuǎn)彎操作。轉(zhuǎn)彎操作本身很簡(jiǎn)單,只需要調(diào)整好參數(shù)即可,但存在的問(wèn)題是,當(dāng)機(jī)器人完成轉(zhuǎn)彎過(guò)后依然會(huì)檢測(cè)到路口數(shù)為要求轉(zhuǎn)彎的路口,這會(huì)導(dǎo)致機(jī)器人陷入一個(gè)循環(huán),即一直轉(zhuǎn)彎而不繼續(xù)巡線。
解決這個(gè)問(wèn)題的辦法就是要讓機(jī)器人在完成當(dāng)前轉(zhuǎn)彎操作之后就跳出轉(zhuǎn)彎的子程序,具體的做法是每完成一次轉(zhuǎn)彎,就給路口數(shù)再加一個(gè)小數(shù),這個(gè)小數(shù)相當(dāng)于對(duì)此次轉(zhuǎn)彎做了一個(gè)標(biāo)記,當(dāng)此次轉(zhuǎn)彎完成,就不需要轉(zhuǎn)彎了。對(duì)計(jì)算機(jī)而言,由于路口數(shù)在完成轉(zhuǎn)彎之后加上一個(gè)小數(shù),和轉(zhuǎn)彎之前的路口數(shù)不等了,就會(huì)跳出當(dāng)前循環(huán),繼續(xù)執(zhí)行巡線。
對(duì)應(yīng)的LEGO MINDSTORMS程序如圖3所示。
3.路口選擇算法總結(jié)
本套算法的邏輯簡(jiǎn)潔明了,有利于數(shù)學(xué)基礎(chǔ)薄弱的中小學(xué)生理解。在實(shí)踐中,應(yīng)合理設(shè)置臨界值C和路口計(jì)數(shù)時(shí)的等待時(shí)間。若臨界值C的值過(guò)大或過(guò)小,都會(huì)導(dǎo)致路口計(jì)數(shù)功能上的缺失,使機(jī)器人不能正確地記錄經(jīng)過(guò)的路口數(shù)。若路口計(jì)數(shù)時(shí)的等待時(shí)間過(guò)長(zhǎng),會(huì)導(dǎo)致連續(xù)相近的兩個(gè)路口出現(xiàn)計(jì)數(shù)不及時(shí)的情況;若路口計(jì)數(shù)時(shí)的等待時(shí)間過(guò)短,會(huì)導(dǎo)致機(jī)器人因還未完全駛出路口而出現(xiàn)重復(fù)計(jì)數(shù)的情況。對(duì)特定路口轉(zhuǎn)彎子程序所做的小數(shù)標(biāo)記是為了避免程序陷入錯(cuò)誤循環(huán)所做的跳出操作。
七、邊路傳感器的轉(zhuǎn)向輔助功能概述與實(shí)現(xiàn)
在一些比賽地圖較復(fù)雜的競(jìng)賽中,會(huì)出現(xiàn)大量的銳角轉(zhuǎn)彎以及連續(xù)的S型路線,此時(shí)應(yīng)在保證機(jī)器人不“飛線”的前提下盡可能提高機(jī)器人的巡線速度。由于前面采用的單傳感器PID巡線方式,機(jī)器人巡線速度稍快就容易出現(xiàn)“飛線”的情況,此時(shí),兩個(gè)邊路傳感器的轉(zhuǎn)向輔助功能就顯得尤為重要。
具體的做法是:同樣以子程序的方式,當(dāng)某一邊的傳感器檢測(cè)到了黑線,就讓機(jī)器人向該方向發(fā)生偏轉(zhuǎn),偏轉(zhuǎn)的角度為中路傳感器再次檢測(cè)到黑線為止,即使黑線重新處于機(jī)器人的中間位置。此時(shí)跳出該子程序,繼續(xù)執(zhí)行巡線。
對(duì)應(yīng)的LEGO MINDSTORMS程序如圖4所示。
八、結(jié)束語(yǔ)
本文構(gòu)建的適用于中小學(xué)機(jī)器人競(jìng)賽的巡線技術(shù)模型能夠讓更多的學(xué)生掌握一種應(yīng)用于競(jìng)賽的巡線技術(shù),提高學(xué)生在競(jìng)賽中的參與度和真實(shí)水平,取得更好的成績(jī)。但該模型還存在部分尚需深入研究的問(wèn)題,如PID巡線算法中每個(gè)部分的參數(shù)該如何確定,盡管已有不少文獻(xiàn)闡述了該如何確定參數(shù)部分的值,但煩瑣的推導(dǎo)過(guò)程仍舊不能為廣大中小學(xué)生所接受,后續(xù)還需要深入研究和探討。展示所用的LEGO MINDSTORMS程序并非適用于所有的中小學(xué)機(jī)器人競(jìng)賽,這里只做模型思路的其中一個(gè)具體應(yīng)用,不同的競(jìng)賽有不同的器材和編程環(huán)境要求,應(yīng)結(jié)合實(shí)際做具體的分析和實(shí)踐。
參考文獻(xiàn):
[1]上菲菲,劉鳳娟.欠發(fā)達(dá)地區(qū)中小學(xué)機(jī)器人教育研究——以漢中市為例[J].中國(guó)現(xiàn)代教育裝備,2018(16):63-66.
[2]蒙慶華,藍(lán)日海,戴海清.機(jī)器人教育校本課程開(kāi)發(fā)探究[J].教學(xué)與管理,2019(15):90-92.
[3]才奕.PID控制器在樂(lè)高EV3巡線程序中的應(yīng)用[J].內(nèi)蒙古科技與經(jīng)濟(jì),2018(1):97-98,100.
[4]任翠平,左毅鵬,盧軍.基于PID算法的巡線小車的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)與軟件工程,2016(12):251-252.
[5]黃芹,陶云王,玉金等.中小學(xué)模塊化機(jī)器人教育探究[J].中國(guó)電化教育,2018(7):113-119.
[6]張劍平,王益.機(jī)器人教育:現(xiàn)狀、問(wèn)題與推進(jìn)策略[J].中國(guó)電化教育,2006(12):65-68.
(編輯:王天鵬)