ev3 方程式賽車:競速機器人 -...

11
141 12-1EV3 方程式賽車 12 EV3 方程式賽車:競速機器人 你已經知道如何寫程式控制 EV3 的馬達與感測 器,現在可以開始製作一些比較不那麼簡單的機器 人,像是具有自主能力的自動汽車、動物型機器人、 或是其他更複雜的機器。本章將帶你做出如圖 12-1 所示的 EV3 方程式賽車。 這部賽車與你之前做過的 EXPLOR3R 不同,它 用到了三個馬達。兩個放在後方的大型馬達主要負責 車輛的驅動,而中型馬達則是負責前輪的轉向動作。 你可以把後面的兩個馬達視為車子的引擎,而前面的 馬達則是控制車子的方向盤。 組裝好這部賽車之後,你就可以建立幾個自訂指 令塊,使這部車控制驅動與轉向的程式,變得更容易 設計。然後再將這些自訂指令塊整合到一個程式中, 進一步搭配遙控器使用,接著再寫另一個程式,讓這 部賽車自己到處亂逛,還會自動避開障礙物。最後, 本書會向你提出一些挑戰,請你試著為它添加更多的 功能,並運用齒輪組讓它跑得更快一些。

Upload: others

Post on 06-Sep-2019

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: EV3 方程式賽車:競速機器人 - epaper.gotop.com.twepaper.gotop.com.tw/PDFSample/AEH002800.pdf · 141 圖12-1:ev3 方程式賽車 12 ev3 方程式賽車:競速機器人

141

圖 12-1:EV3方程式賽車

12EV3方程式賽車:競速機器人

你已經知道如何寫程式控制 EV3的馬達與感測器,現在可以開始製作一些比較不那麼簡單的機器

人,像是具有自主能力的自動汽車、動物型機器人、

或是其他更複雜的機器。本章將帶你做出如圖 12-1所示的 EV3方程式賽車。

這部賽車與你之前做過的 EXPLOR3R不同,它用到了三個馬達。兩個放在後方的大型馬達主要負責

車輛的驅動,而中型馬達則是負責前輪的轉向動作。

你可以把後面的兩個馬達視為車子的引擎,而前面的

馬達則是控制車子的方向盤。

組裝好這部賽車之後,你就可以建立幾個自訂指

令塊,使這部車控制驅動與轉向的程式,變得更容易

設計。然後再將這些自訂指令塊整合到一個程式中,

進一步搭配遙控器使用,接著再寫另一個程式,讓這

部賽車自己到處亂逛,還會自動避開障礙物。最後,

本書會向你提出一些挑戰,請你試著為它添加更多的

功能,並運用齒輪組讓它跑得更快一些。

Page 2: EV3 方程式賽車:競速機器人 - epaper.gotop.com.twepaper.gotop.com.tw/PDFSample/AEH002800.pdf · 141 圖12-1:ev3 方程式賽車 12 ev3 方程式賽車:競速機器人

171

圖 13-1:ANTY

13ANTY:機器螞蟻

到目前為止,你對配備有輪子的各式機器人模

型,應該已經有一定的掌握能力了。另一種十分有

趣、但有點挑戰性的機器人類型,就是用腳取代輪

子移動的動物型機器人。本章我們將帶領你組裝出

ANTY(參見圖 13-1)這部機器人,並進行相關的程式設計工作。ANTY是一部有六條腿、長得很像昆蟲的機器人。它行走的方式,以及對環境所做出的反

應,雖然同樣是以感測器為基礎,但卻展現出完全不

同的行為模式。

紅外線感測器是 ANTY的雙眼,這雙眼睛可以讓 ANTY偵測環境並找到食物。ANTY尾部的顏色感測器,則能讓它偵測到環境的變化。在不同的環境

下(換句話說,偵測到不同顏色的物體時),ANTY就會表現出不同的行為。比如綠色的物體會讓 ANTY有一種安全感,代表它可以睡個小覺。紅色物體則表

示危險,此時 ANTY會很積極地做出擺動,看看能不能嚇跑敵人。藍色物體會讓 ANTY感到害怕,使它一看到就會立刻逃離。最後,黃色物體會讓 ANTY感到飢餓,促使它開始進行覓食的行為。

Page 3: EV3 方程式賽車:競速機器人 - epaper.gotop.com.twepaper.gotop.com.tw/PDFSample/AEH002800.pdf · 141 圖12-1:ev3 方程式賽車 12 ev3 方程式賽車:競速機器人

253

圖 17-1:在 SK3TCHBOT上玩

個類似塗鴉板的遊戲

抬筆 橡皮擦

改變畫筆粗細 清除畫面

17用 EV3玩個遊戲

現在我們要來寫個程式,將你在本書中所學到的

許多程式設計技巧做個結合。我在之前都是用很短的

範例,來介紹每個程式設計的技巧與相應的指令塊,

但你現在將會看到,如何將這些技巧結合起來,製作

出一個更大、更聰明的程式。

我們在本章將會製作出一個程式,可以讓你在

EV3主機上玩一個類似塗鴉板的遊戲。你可以在 EV3主機上畫圖,其中會使用到大型馬達做為輸入裝置,

而觸控感測器與顏色感測器則可提供額外的輸入控制

(參見圖 17-1)。

Page 4: EV3 方程式賽車:競速機器人 - epaper.gotop.com.twepaper.gotop.com.tw/PDFSample/AEH002800.pdf · 141 圖12-1:ev3 方程式賽車 12 ev3 方程式賽車:競速機器人

263

圖 18-1:SNATCH3R可以同時抓取並抬高一些比較輕的物體(例

如空的寶特瓶)。

18SNATCH3R:

具有自主能力的機器手臂閱讀過之前的章節後,你對 EV3機器人的程式

設計技巧應該已經駕輕就熟了吧。在本書的最後一個

單元中,我們將製作出更精巧而複雜的機器人,並詳

細說明相關組裝與程式設計的技巧。首先在本章我們

將說明 SNATCH3R的組裝與程式;這部機械手臂可以找到物體的位置,並將它抓起來,如圖 18-1所示。

一開始我們會先寫個程式,利用遙控的方式控制

這部機器,對結構功能先進行一些測試,然後再寫個

程式,讓它能自動找到紅外線遙控器的位置,並將它

抓起來。程式會使用到資料線和變數,讓機器人可掃

描環境並找出兩公尺(約六英呎)以內的遙控器,而

且就算遙控器在機器人後方也沒問題。

本章的「探索」任務可協助你瞭解整個程式的原

理,並且讓你進一步擴展程式的功能。舉例來說,有

個探索任務會請你想個辦法,讓機器人能利用顏色感

測器循線前進,並抓起擋在路線上物體。

瞭解抓取器 (grabber)

SNATCH3R使用了兩個大型馬達,控制一組履帶做出移動,但這部機器人最酷的地方,就是它的多

功能抓取器。一般來說,抓取與抬高物體需要用到兩

個馬達,一個負責抓取物體,另一個則負責把物體舉

高起來。但 SNATCH3R只用了一個中型馬達,就完成了這兩項工作,因為我們利用樂高的長桿、十字軸

與齒輪零件,製作了一個很特別的結構。為了更進一

步瞭解整個結構設計的工作原理,請依照下一頁的指

示,將一個簡化過的樣品結構先組裝起來。

Page 5: EV3 方程式賽車:競速機器人 - epaper.gotop.com.twepaper.gotop.com.tw/PDFSample/AEH002800.pdf · 141 圖12-1:ev3 方程式賽車 12 ev3 方程式賽車:競速機器人

311

圖 19-1:LAVA R3X用兩隻腳到處走動,同時擺動它的頭部與手臂;當你

要與它握手時,它也會向你做出打招呼的回應。

圖 19-2:腳上的馬達每旋轉完整的一圈,腳就會做出前後跨步動作,而踝關節也會同時做出左右傾斜的動作。

19LAVA R3X:會走路、會講話的

仿人型機器人本書到目前為止已經組裝過車輛、動物、機器,但我

們還沒使用 EV3套件組裝過真正具有人形,可以用兩隻腳走路的超酷機器人。我們在本章將會組裝出一部叫做 LAVA R3X的機器人,如圖 19-1所示,並且為它寫出相應的程式。LAVA R3X會走路的兩隻腳是由兩個大型馬達所控制,

而它會移動的頭部與手臂,則是由中型馬達

來控制。

等你讓這部機器人學會走路之後,就要

接受下一個挑戰,利用你在本書中所學過的

技巧,對程式進行擴展與改造,讓這部機器

人具有互動的能力,表現出更加栩栩如生的 行為。

LAVA R3X可以不斷將重心從其中一隻腳移動到另外一隻腳上,然後抬腳往前跨步,

做出兩隻腳行走的效果。每隻腳的機械結構,

都會將馬達的旋轉動作,轉換成腳的前後跨

步動作,以及左右兩邊踝關節傾斜的動作(參

見圖 19-2)。

Page 6: EV3 方程式賽車:競速機器人 - epaper.gotop.com.twepaper.gotop.com.tw/PDFSample/AEH002800.pdf · 141 圖12-1:ev3 方程式賽車 12 ev3 方程式賽車:競速機器人

LAVA R3X:會走路、會講話的仿人型機器人 339

Page 7: EV3 方程式賽車:競速機器人 - epaper.gotop.com.twepaper.gotop.com.tw/PDFSample/AEH002800.pdf · 141 圖12-1:ev3 方程式賽車 12 ev3 方程式賽車:競速機器人

340 Chapter 19

Page 8: EV3 方程式賽車:競速機器人 - epaper.gotop.com.twepaper.gotop.com.tw/PDFSample/AEH002800.pdf · 141 圖12-1:ev3 方程式賽車 12 ev3 方程式賽車:競速機器人

LAVA R3X:會走路、會講話的仿人型機器人 341

Page 9: EV3 方程式賽車:競速機器人 - epaper.gotop.com.twepaper.gotop.com.tw/PDFSample/AEH002800.pdf · 141 圖12-1:ev3 方程式賽車 12 ev3 方程式賽車:競速機器人

342 Chapter 19

Page 10: EV3 方程式賽車:競速機器人 - epaper.gotop.com.twepaper.gotop.com.tw/PDFSample/AEH002800.pdf · 141 圖12-1:ev3 方程式賽車 12 ev3 方程式賽車:競速機器人

LAVA R3X:會走路、會講話的仿人型機器人 343

中線材(35 公分)

Page 11: EV3 方程式賽車:競速機器人 - epaper.gotop.com.twepaper.gotop.com.tw/PDFSample/AEH002800.pdf · 141 圖12-1:ev3 方程式賽車 12 ev3 方程式賽車:競速機器人

344 Chapter 19

圖 19-16:Head自訂指令塊中所有指令塊的設定值(左圖),以及這個自訂指令塊完成後的樣子

(右圖)。

控制頭部 與手臂

完成機器人的組裝之後,就可以準備開始寫程

式,讓機器人做出行走、移動頭部與手臂、對環境做

出反應等等行為了。

我們用中型馬達來控制手臂與頭部的移動:如果

馬達往前轉動,頭部與手臂就會移往右邊;馬達往後

倒轉,頭部與手臂就會移往左邊。

自訂指令塊 #5:Head(頭)

為了讓頭部與手臂移動的控制容易一點,我們建

立一個自訂指令塊,並將它放在行走主程式的另一個

平行執行程式中。

Head自訂指令塊首先會將中型馬達移動到一個已知的位置,這個位置對應的是頭部轉到最右邊的位

置。然後,它就會持續讓頭部左右轉動,如圖 19-16所示。這個動作可讓紅外線感測器除了看見正前方的

障礙物之外,也能看見左右兩邊的障礙物。

迴避障礙物、對握手做出反應

現在你已經將這個自訂指令塊做好了,接下來

要建立一個程式,讓機器人行走並對感測器有所反

應,相對來說也就容易多了。舉例來說,你可以修改

WalkTest程式內部的指令塊,讓機器人持續往前行走,直到紅外線感測器看到障礙物為止,以此動作來

取代往前行走 15秒鐘的行為。

最終版程式將可以讓機器人四處走動,也會迴避

障礙物,並且還會對握手的動作做出反應。如果你

去握機器人的右手,機器人就會停止走動,說一聲

「Hello,good morning!」(你好,早安!),然後繼續往前行進。如果機器人看到了障礙物,它就會說

「Detected」(偵測到了),然後往左邊轉個彎。

頭與手腳同時做動作

程式一開始會用 Reset自訂指令塊將兩隻腳放到相反的位置。然後它會執行一個迴圈,讓機器人行走

並對感測器做出反應。

機器人在行走的同時,它會利用另一個開始指令

塊,後面接著 Head自訂指令塊讓頭部左右轉動(參見圖 19-17)。這種做法可讓頭部與腳部獨立運作:你可以改變其中一段程式,而不會影響到另一段程式的

運行。你可以修改 Head自訂指令塊,改變頭部的行為;也可以修改迴圈指令塊中的指令塊,改變機器人

行走的行為。

請建立一個叫做 ObstacleAvoid的新程式,並如圖 19-17所示添加相應的指令塊。

一直行走,直到兩個感測器 其中一個被觸發為止

現在我們在主迴圈中添加一些指令塊,讓機器人

不斷往前行走,直到看見障礙物,或是偵測到握手的

動作為止(參見圖 19-18)。

機器人利用 OnSync自訂指令塊來轉動大型馬達,就可以做出往前行走的動作。這個指令塊被放在

迴圈中,因此馬達的速度會被持續調整,以維持住馬