高艷
在機(jī)器人比賽中,比較常見的有循跡賽,為保證學(xué)生學(xué)習(xí)的連貫性,同時(shí)又能科學(xué)地學(xué)習(xí)機(jī)器人的原理,筆者選擇在圖形化編程軟件中研究巡線小車如何沿著指定路徑進(jìn)行運(yùn)動,用圖形化的語言解決小車巡線編程問題。考慮到對于機(jī)器人的學(xué)習(xí),所教學(xué)生大部分基礎(chǔ)為零,筆者將這一內(nèi)容設(shè)計(jì)為以智能傳感為主題的圖形化編程單元,單元具體內(nèi)容設(shè)計(jì)如下表。
從實(shí)物到虛擬,在圖形化編程中模擬傳感器的作用
1.通過講授,初步認(rèn)識傳感器
考慮到學(xué)生的基礎(chǔ),首先讓學(xué)生認(rèn)識生活中的傳感器,如感應(yīng)垃圾桶、智能抽水馬桶等,通過對傳感器的學(xué)習(xí),學(xué)生認(rèn)識到傳感器是用來偵測獲取數(shù)據(jù)的。
2.通過繪制色塊,創(chuàng)設(shè)虛擬傳感器位置
傳感器安裝的位置關(guān)系到程序的完成情況,但在圖形化編程中不用考慮傳感器如何安裝到小車上,可以通過圖像繪制的方式直接將傳感器繪制到小車上。前期,學(xué)生會繪制出各種形狀和顏色的傳感器,這可能會導(dǎo)致最后的程序運(yùn)行結(jié)果發(fā)生錯誤,但在圖形化編程中造型切換非常便捷,如果發(fā)現(xiàn)傳感器數(shù)量或者位置不對,可在造型中隨時(shí)切換已繪制好的巡線小車或進(jìn)行重新繪制,因此教師應(yīng)盡可能鼓勵學(xué)生發(fā)揮想象力,大膽設(shè)計(jì)。
3.通過可視化編程語言,實(shí)現(xiàn)傳感器的作用
在圖形化編程軟件中繪制的傳感器只是一個圖案,并不具備傳感器應(yīng)有的功能,需要可視化程序語言來實(shí)現(xiàn)最后的結(jié)果。教師可提供賽車游戲程序供學(xué)生體驗(yàn)。
借力流程圖,架構(gòu)自然語言與程序語言的橋梁
在機(jī)器人循跡賽中,地圖往往比較復(fù)雜,如果直接給學(xué)生復(fù)雜的軌跡圖,容易使其產(chǎn)生畏懼心理,所以,可以把軌跡分為直線、曲線、直角轉(zhuǎn)彎、十字交叉口、斷線等幾種情況繪制在不同的舞臺背景中,降低機(jī)器人學(xué)習(xí)的門檻,并讓學(xué)生體會利用流程圖,完成自然語言到程序語言的轉(zhuǎn)換,步驟如下:①讓學(xué)生用自然語言將需要完成的任務(wù)描述出來。②繪制流程圖,架構(gòu)自然語言與程序語言的橋梁,要求學(xué)生將直線巡線任務(wù)用流程圖繪制出來。③分析小車巡線的流程圖,找出流程圖中各部分在圖形化編程軟件中的語言模塊,并組合起來。④嘗試運(yùn)行程序,并進(jìn)行調(diào)整。
循序漸進(jìn),探索不同數(shù)量傳感器及不同巡線方法
1.遷移生活經(jīng)驗(yàn),把復(fù)雜情況簡單化
對于初學(xué)者來說,多傳感器巡線難以理解,因此可從單個傳感器開始學(xué)習(xí)小車巡線編程。學(xué)生大都在生活中觀察過其他人開車,開車時(shí)如果方向偏了,就把方向盤向相反方向轉(zhuǎn)動。單傳感器巡線法也類似,但行進(jìn)路線卻是弧線,因?yàn)樾≤囆枰粩嗟嘏袛嗍欠衿x路線,這種判斷方法也被稱作弧線法。
例如,在上頁圖1中,將巡線小車放在黑線的左側(cè),一般情況下小車會判斷行進(jìn)方向是正確的,通過判斷傳感器色塊與軌跡色塊是否相遇的偵測命令,模擬傳感器的感應(yīng)和判斷,因此當(dāng)色塊右側(cè)邊緣觸碰到黑線時(shí),會被認(rèn)作方向出現(xiàn)了偏差,需要修正方向。學(xué)生的疑惑往往在應(yīng)該向哪個方向轉(zhuǎn),而利用生活情境,學(xué)生能快速準(zhǔn)確地判斷轉(zhuǎn)向。在左弧線法中,小車向右行駛,當(dāng)色塊觸碰到白色區(qū)域時(shí)又向左行駛。反之,也可將小車放在右側(cè)巡線。但這種方法即使走直線,小車也不夠平滑。遇到角度較大的彎道,小車做出修正方向的判斷,就會導(dǎo)致轉(zhuǎn)彎角度過大而跑偏。
2.嵌套分支結(jié)構(gòu),把復(fù)雜問題簡單化
要想讓小車能識別各種路線,就需要增加傳感器。增加傳感器意味著算法更加復(fù)雜,這種左右傳感器夾住一根線巡線的方法也可稱為夾線法,它更加接近于生活中的駕車經(jīng)驗(yàn),左偏右轉(zhuǎn),右偏左轉(zhuǎn),比弧線法更加平滑,但操作中學(xué)生通過試錯,會發(fā)現(xiàn)如果左右兩側(cè)色塊繪制得太過接近或者使用同色,可能會導(dǎo)致最后的失敗(如圖2)。
從流程圖(如圖3)中可以看出兩個傳感器的判斷可以看作是一個修正方向,尋找黑線的分支結(jié)構(gòu),把一個簡單的分支結(jié)構(gòu)嵌入到另一個分支結(jié)構(gòu)中,一步步分解開來按一定的順序逐一調(diào)試,有助于理清思路。
3.通過表格記錄,把復(fù)雜規(guī)律簡單化
多傳感器巡線小車程序中會嵌套多層分支結(jié)構(gòu),如三傳感器巡線小車的三個傳感器遇到黑線的情況可以分解成三種“如果……那么……否則……”的情況,每個否則中都嵌套了一個“如果……那么……否則……”語句,這樣的情況很難用自然語言描述清楚,而如果借助表格結(jié)合圖示,則能一目了然,利于理解。
在小車上分別繪制左、中、右三種色塊,始終保持中間色塊在黑線??梢园讶齻鞲衅骺醋魇球T線法的升級版,如果中間傳感器檢測到黑線,意味著小車沒有跑偏,就不需要再進(jìn)行左、右傳感器的偵測,即使遇到斷線,也可以平滑地走過。需要注意的是,隨著傳感器的增多,偵測時(shí)間會增長,小車行走速度也會變慢。
從單個傳感器到多個傳感器,利用圖形化編程解決小車巡線編程問題直觀、快捷,既節(jié)約了組裝真實(shí)機(jī)器人的時(shí)間和費(fèi)用,也方便對算法進(jìn)行檢查,同時(shí),讓學(xué)生體驗(yàn)到了機(jī)器人活動的樂趣。