今天提到的“機器人”是指通過重構(gòu)改變硬件,通過編程改變軟件的可編程機器人。它一般由以下幾個部分組成:
2.傳感器。傳感器就像機器人的眼睛和耳朵,用于獲取外界信息。常用的有獲取速度的超聲波傳感器,獲取顏色或反光度的光線傳感器,獲取外界觸碰的觸碰傳感器等等。
3.馬達。這是機器人的手和腳,肌肉和關(guān)節(jié)。所有的位置改變都靠它。
4.控制器。這是機器人的大腦,決定機器人的行為。通過和傳感器連接獲取輸入,通過和馬達連接控制輸出,通過和電腦連接將程序注入。此外控制器可以接收遙控輸入,還可以有圖像或者聲音的輸出。
綜上所述,機器人編程,就是用硬件構(gòu)造一個身體,用程序給它一套邏輯,利用它的傳感器和馬達,完成一系列的任務(wù)。
孩子機器人編程啟蒙
首先,告訴大家現(xiàn)實中機器人的編程搭建,并不像孩子想象中的那樣——給它撒上金粉,念段咒語,就可以開心的跳起舞來。他們會慢慢發(fā)現(xiàn),自己搭出來的機器人既不那么美麗也不神秘,而即使這樣的機器,它的搭建過程也是非常復(fù)雜的,軟件編程也需要無數(shù)次的修改調(diào)整,就這樣它還經(jīng)常會掉鏈子……嗯~~我想說,孩子們,歡迎來到真實的世界,歡迎換個視角來觀察問題。
用工程師的視角來看待問題,是做機器人給孩子的收獲。機器不通人情,不會因為你的努力而通融,不會因為你的才華而動心。和它打交道,就得按照它的方式來,沒有捷徑。
孩子不缺想象力,缺的是想象力和現(xiàn)實世界的妥協(xié),不知道心中炫酷的想法如何一步一步實現(xiàn)。我想說,在機器人面前,可以先把把藝術(shù)家的天馬行空暫時收收一收,換用工程師的嚴格和腳踏實地來看看這個世界。
下面分別從硬件、軟件和設(shè)計三方面來說說,在奧蘭熊,老師是如何指導(dǎo)孩子做機器人編程,想要在家教育孩子編程的,可以借鑒使用哦~
熟悉基本組件和基本技巧
知道你擁有什么,才知道你可能做出什么。對基本的組件非常熟悉,做的時候才能得心應(yīng)手。以樂高里最常用的兩個單位長度的連接件為例。長度一般模樣類似,為什么會有不同的顏色,僅僅是為了讓做出的東西更多彩嗎?
其實,不同的顏色后面是不同的功能:黑色的連接是圓口有摩擦的,白色的是圓口沒有摩擦的,藍色的是一邊十字口一邊圓口有摩擦的,紅色的是兩邊十字口的。熟悉這些連接件,才能知道你可能做出怎樣的擴展,才能輕松的找到那個你需要的。
除了基本的組件,還需要知道搭建的基本技巧。比如說我們經(jīng)常需要將兩條長梁或平行連接,或垂直連接。每種需求可以用哪些連接件以怎么的組合實現(xiàn)?不同的方式有何不同,又有何優(yōu)劣?
機器人的動力系統(tǒng),是搭建在電機和齒輪之上。電機提供動力,而齒輪可以改變旋轉(zhuǎn)的速度,方向和力矩,也可以改變力的形態(tài),將動力以不同的形式傳遞出去。電機和齒輪一起,構(gòu)成了機器人的動力基礎(chǔ)。
電機的應(yīng)用很直接。要么連著輪軸直接旋轉(zhuǎn),要么連上齒輪將力轉(zhuǎn)化或傳遞出去。而齒輪是有點難的,要用到一點點數(shù)學(xué),了解一點點杠桿,還需要明白力和力矩的概念。不過下點功夫去理解齒輪,也就能了解真實世界里很多機械背后的原理,對孩子來說,也是非常有意義的。
樂高里的齒輪大體分正面齒輪,側(cè)面齒輪和蠕蟲輪。組合起來的用法很多,建議多做些簡單的練習(xí),打好基本功,熟能生巧,到時候信手拈來。
機器人通過傳感器來收集信息。了解傳感器,就是了解機器人觸碰世界的能力。常用的傳感器比如檢測顏色和反光度的光線傳感器;探測離障礙物距離的超聲波和紅外線傳感器,測量旋轉(zhuǎn)角度和速度的陀螺儀,等等。軟件里面有專門的模塊去獲取傳感器的數(shù)據(jù),很簡單。
機器人通過電機做出反應(yīng)。再復(fù)雜的動作,都是通過對電機實現(xiàn),轉(zhuǎn)速快一點,慢一點;正著轉(zhuǎn)或者反著轉(zhuǎn)。有些機器人還能顯示圖像,聲音,也算是對外界的輸出吧。
和很多面向孩子的編程軟件一樣,機器人編程平臺提供的編程模塊很豐富,操作起來也很簡單,很適合孩子上手。
軟件里眾多的要素,比如循環(huán),函數(shù),條件判斷,邏輯計算,甚至很高級的數(shù)組,多線程等等,它都支持,而這足以支撐起一個復(fù)雜的程序,實現(xiàn)復(fù)雜的編程思想。
下面是個小例子,程序通過光線傳感器檢查地面的反光度得到顏色,根據(jù)地面是白色還是黑色控制兩邊的電機讓機器人左偏或右偏,以實現(xiàn)機器人沿黑線走的功能。
舉個例子,就以孩子們非常喜歡的挖土機來說明下硬件編程有多復(fù)雜。假設(shè)我們已經(jīng)搭建好了一個挖土機,需要讓它從A點挖土,然后行駛到B點倒土,在純軟件編程里,我們只要一行代碼就可以搞定,但在機器人編程中卻沒有這么簡單。
,因為從A→B,地面情況不同,摩擦力不均以及電機微小的偏角誤差,編程中讓它走直線的這個命令,在實際中會產(chǎn)生偏差,而且走的越遠,偏差越大。因此,孩子們在出現(xiàn)這種情況后,需要及時通過陀螺儀校準調(diào)整。
第二,程序中A→B之間的距離我們假設(shè)設(shè)置的是1米,可挖土機實際上并不會真的走1米,肯定會有誤差。機器人停下后要檢測輪子實際行進的距離,多退少補再做微調(diào)。
第三,電池的電量也會影響電機的準確度,進而影響行進的距離,速度以及偏角。要想每次運行的結(jié)果完全一樣,要么運行時的電量不能差別太大,要么根據(jù)電量的多少對行為進行補償。
第四,機器人會偶爾出現(xiàn)死機,讀數(shù)不準等硬件錯誤。比如我們發(fā)現(xiàn)EV3的陀螺儀有時候會突然出錯,在靜止狀態(tài)下讀數(shù)也會改變,必須重啟機器人才能恢復(fù)。控制器本身可能會死機,也必須重啟才能恢復(fù)。
做軟件測試,次次通過。而機器人,前5次都成功了,第6次還是需要祈禱才行。復(fù)雜的世界,需要復(fù)雜的程序讓他去實現(xiàn)簡單的事。我想這也是機器人編程教給孩子很重要的一點。
機器人編程,對于有些編程經(jīng)驗的理科生來說,起初都需要花費一定的時間和精力摸索,何況一個孩子,所以孩子學(xué)習(xí)機器人編程,我建議一定要有大人的正確引導(dǎo),這樣才能帶著孩子一起用工程師的視角去看看這個世界。