當前位置:
首頁 > 最新 > 編程機器人怎麼入門?怎麼參賽?理工爸在美國的帶隊經驗幫你省下幾萬元!

編程機器人怎麼入門?怎麼參賽?理工爸在美國的帶隊經驗幫你省下幾萬元!

編程機器人是現在的大熱門,怎麼帶娃玩?從哪兒入門?怎麼入門?逃爸帶逃逃和幾位小夥伴組成的團隊玩了小半年,今天請他來給大家分享下經驗心得。稍微需要提醒下大家的是,理工爸爸寫怎麼玩編程機器人,文章幹得有那麼一點點噎。不過,如果你正在陪娃玩,或者在不久的將來打算開始帶娃玩,是蠻值得參考的一篇技術帖。

***

帶著六位小朋友經過半年的準備,終於在上個月試水了第一次FLL,也就是俗稱的樂高機器人編程比賽。這篇文章趁熱打鐵,聊聊針對孩子的機器人編程。

我們參加的FLL,是First Lego League(中國官網翻譯成「工程挑戰賽」)的簡稱。這是一個針對9~14歲孩子團隊合作的全球性競賽,主要考察3個項目,機器人比賽是其中之一。這個項目需要使用樂高的MINDSTORMS EV3組件,製作出機器人,並完成若干個指定任務。這是最低級別的機器人編程比賽,面向的孩子年齡最小,要完成的任務也最簡單。(其實還有一個面向6~10歲小朋友的FIRST Lego League Junior,FIRST樂高聯賽兒童賽。不過這個比賽和機器人沒多大關係,孩子只需要為一定的目標用樂高設計和搭建好場景,並通過製作海報來向評委展示自己的作品就好。)在FLL之上的級別叫FTC(First Tech Challenge科技挑戰賽),針對12~18歲,再往上叫FRC(First Robotics Competition機器人挑戰賽), 針對14~18歲。當然再往上還有針對成年人的機器人俱樂部,那就更專業了。

聽一位行內的師姐說,這三五年參加FLL的隊伍呈井噴式增長。就我們所在的達拉斯地區,三年前的比賽就百來個隊,只需要比一天。而今年這次比賽有400多個隊伍,3000多個隊員,需要連續比三個周末才能比完。而且除了上面提到的First系列,還有很多其他的針對孩子的機器人比賽。 比如世界教育機器人大賽WER, VEX機器人大賽等等,這幾年增長都挺快。我還納悶為什麼機器人編程突然這麼火,不過想想也是情有可原。人工智慧眼看就要秒殺人類,機器人進入千家萬戶的時代是呼之欲出。讓孩子們從小就熟悉機器人是怎麼創造出來的,就是和時代接軌。 以後當人類被機器人統治的時候,也算是知已知彼,不會太不習慣^_^。

《紐約客》去年一期的封面漫畫:人類向機器人乞討

下面是我理解的孩子的機器人編程,看看他們該怎麼和時代接軌,迎接未來。


什麼是機器人編程

首先,什麼是「機器人」? 這個概念其實挺模糊。第一感覺,「機器人」不就是機器做的人。可除了電影里的變形金剛還算夠格,那些生活里的掃地機器人,聊天機器人,和流水線上的裝配機器人,哪裡有「人」的影子?想想「機器人」就是翻譯界的通假字吧,是Robot這個詞一開始就翻譯錯了,只不過將錯就錯下去,直到大家見怪不怪,直到在「機器人」的展台上放只機器豬大家也不覺得有任何違和感。 所以,為了避免歧義,這裡有必要先把本文中的「機器人」究竟是什麼明確一下。

本文提到的「機器人」是指可以通過重構改變硬體,通過編程改變軟體的可編程機器人。它包含的部分如下:


1. 基本組件。就好像我們常見的樂高玩具,包含各種形狀的小組件,可以拼成不同的形狀。 這會是機器人的身體。

2. 感測器。這是機器人的眼睛和耳朵,用於獲取外界信息。常用的有獲取旋轉角度和速度的陀螺儀,獲取顏色或反光度的光線感測器,獲取外界觸碰的觸碰感測器等等。聽上去很高大上,其實最便宜的智能手機里都有。

3. 馬達。這是機器人的手和腳,肌肉和關節。所有的位置改變都靠它。

4. 控制器。這是機器人的大腦,決定機器人的行為。 通過和感測器連接獲取輸入,通過和馬達連接控制輸出, 通過和電腦連接將程序注入。 此外控制器可以接收遙控輸入,還可以有圖像或者聲音的輸出。

下圖是樂高EV3系列中的觸碰感測器,馬達和控制器。感測器和馬達不止一個,這裡只是取了一個舉例子 。


一段程序,在電腦或Pad上編寫,拷入控制器後執行。執行的程序可以獲取感測器的輸入數據,也可以控制輸出。程序本身用的是可視化的編程語言,極易上手。

機器人編程,就是用硬體構造一個身體,用程序給它一套邏輯,利用它的感測器和馬達,完成一系列的任務。

針對孩子的機器人編程組件,市場上已經有很多。這些組件都包含上面的軟硬體要素,讓孩子從零開始,實現初步的機器人編程。最流行的編程組件估計是樂高的Mindstorm EV3,和國產的能力風暴Abilix。兩個國際性的機器人編程大賽(FLL和WER)分別是以它們為基礎。他們其實很相似,要說區別,我覺得主要是下面幾點。

1. Abilix的組件要比樂高的大一圈,可能因此覺得樂高的要精緻些。

2. 樂高里的組件都是標準化的,也就是說樂高海量模型里的組件與EV3是兼容的。而Abilix專業做編程機器人,只有針對機器人的模型,其組件的選擇肯定要少些。

3. Abilix的組件大多是兩維可連接,而樂高只有一維。應該是材料學的進步,讓兩邊開口還能保持一定的強度。下圖可以看出,同樣的一個L型組件,樂高(白色)一邊開口,Abilix(黑色)兩邊開口,這讓搭建的選擇會更多些。

4. 都是可視化編程語言,但設計不同。Abilix用的是業內標準的Scratch兒童編程語言,而樂高是自己的設計。倒是都挺好用。

如果想讓孩子嘗試機器人編程,我建議如果不差錢懶得挑,就選樂高的EV3。如果走性價比,就選Abilix。如果想讓孩子參加某個競賽,那就看人家指定的是哪種。


機器人編程啟蒙

第一次做機器人的孩子大都挺失望。他們本以為機器人就像童話里的陶瓷姑娘,給她撒上金粉,念段咒語,就可以開心的跳起舞來。可後來發現,自己搭出來的機器人即不美麗也不神秘,而即使這樣的機器,搭建是異常複雜,軟體實現也是相當困難,而且經常掉鏈子很不靠譜……哦,怎麼說呢,孩子們,歡迎來到真實的世界,歡迎換個視角來觀察問題。

用工程師的視角來看待問題,是做機器人給孩子的最大收穫。機器不通人情,不會因為你的努力而通融,不會因為你的才華而動心。和它打交道,就得按照它的方式來,沒有捷徑。孩子完全不缺想像力,缺的是想像力和現實世界的妥協,不知道心中炫酷的想法如何一步一步實現。我想說,在機器人面前,把藝術家的天馬行空暫時收起來,換用工程師的嚴格和腳踏實地來看看這個世界。

下面分別從硬體、軟體和設計三方面來說說如何指導孩子做機器人編程。


就樂高機器人的搭建來說,以前那些按照說明書搭建起來的樂高模型,都是浮雲。逃逃和我以前搭過幾十套模型,想想也算業內資深人士,可扔掉說明書開始搭建機器人的那一刻,完全抓瞎,一些基本的需求以為很簡單,可自己就是沒法實現。那幾十套的搭建經驗,遠不如一個早上系統學習的收穫大。 下面是我覺得需要系統學習的兩點:

1、熟悉基本組件和基本技巧

知道你擁有什麼,才知道你可能做出什麼。對基本的組件非常熟悉,做的時候才能得心應手。以樂高里最常用的兩個單位長度的連接件為例。長度一般模樣類似, 為什麼會有不同的顏色,僅僅是為了讓做出的東西更多彩嗎?其實,不同的顏色後面是不同的功能:黑色的連接是圓口有摩擦的,白色的是圓口沒有摩擦的,藍色的是一邊十字口一邊圓口有摩擦的,紅色的是兩邊十字口的。 熟悉這些連接件,才能知道你可能做出怎樣的擴展, 才能輕鬆的找到那個你需要的。

除了基本的組件,還需要知道搭建的基本技巧。比如說我們經常需要將兩條長梁或平行連接, 或垂直連接。每種需求可以用哪些連接件以怎麼的組合實現?不同的方式有何不同,又有何優劣? 這些技巧給你實現需求的最好的方式,讓你事半功倍。這裡推薦一本書《The Lego Mindstorms EV3 Discovery book》,主要講的是EV3的軟體編程,其中有兩章講了硬體基礎,不長,很實在。有興趣的朋友歡迎看看。

2、熟悉齒輪

機器人的動力系統,是搭建在電機和齒輪之上。 電機提供動力,而齒輪可以改變旋轉的速度,方向和力矩,也可以改變力的形態,將動力以不同的形式傳遞出去。電機和齒輪一起,構成了機器人的動力基礎。

電機的應用很直接。要麼連著輪軸直接旋轉,用么連上齒輪將力轉化或傳遞出去。 而齒輪是有點難的,要用到一點點數學,了解一點點槓桿,最好還需要明白力和力矩的概念。不過下點功夫去理解齒輪,也就能了解真實世界裡很多機械背後的原理,逃逃就趁著這個機會學習了汽車裡的變速箱,這可是很划算的。

樂高里的齒輪大體分正面齒輪,側面齒輪和蠕蟲輪。組合起來的用法很多,建議多做些簡單的練習,打好基本功,熟能生巧,到時候信手拈來。 下面是逃逃和我做的幾個例子(基於EV3).

· 招財手

GIF

· 打樁機

GIF

· 正面齒輪傳動。最右邊的齒輪帶動左邊兩個黑色齒輪轉動,它們方向相反。

GIF

· 側面齒輪傳動。黃色齒輪帶動兩個黑色齒輪以相反方向轉動

GIF

· 蠕蟲齒輪

GIF

· 簡單的變速箱

GIF

硬體有了,再說說怎麼去做軟體。


編程無外乎就是收集信息,做出反應。那麼機器人的輸入和輸出是什麼,它可以收集哪些信息,做出什麼樣的反應,又能實現什麼樣的邏輯呢?

1. 輸入設備:感測器

機器人通過感測器來收集信息。 了解感測器,就是了解機器人觸碰世界的能力。常用的感測器比如檢測顏色和反光度的光線感測器;探測離障礙物距離的超聲波和紅外線感測器,測量旋轉角度和速度的陀螺儀,等等。軟體裡面有專門的模塊去獲取感測器的數據,很簡單。

2. 輸出設備:電機

機器人通過電機做出反應。再複雜的動作,都是通過對電機實現,無外乎就是轉的快一點,慢一點;正著轉或者反著轉。 有些機器人還能顯示圖像,聲音,也算是對外界的輸出吧。

3. 編寫程序

和很多面向孩子的編程軟體一樣,機器人編程平台提供的編程模塊很豐富,操作起來也很簡單。全程用滑鼠拖拽,再改幾個屬性即可,很適合孩子上手。 軟體里眾多的要素,比如循環,函數,條件判斷,邏輯計算,甚至很高級的數組,多線程等等,它都支持,而這足以支撐起一個複雜的程序,實現複雜的編程思想。機器人編程這個主題可是夠寫幾本書,開一門課,或者設一個專業,建一個博士後流動點什麼的。這裡就不細說了。

下面是個小例子,程序通過光線感測器檢查地面的反光度得到顏色,根據地面是白色還是黑色控制兩邊的電機讓機器人左偏或右偏,以實現機器人沿黑線走的功能。這是最後的效果,截了一小段,大家看個意思。

GIF

4. 機器人編程和純軟體編程的區別是什麼?

純軟體是個虛擬的世界,簡單而完美。而真實世界太複雜了,並且總有意外。 因此就需要更健壯的軟體去化解這些複雜,處理這些意外。

舉個例子來說明下硬體編程有多複雜。假設我們已經搭建好了一個通過兩個電機做輪子驅動的機器人,我們看看如何編程讓他實現「直行一米」這個在軟體里一行代碼就可以搞定的事。可能聽上去會有些專業,但沒辦法,這是最簡單的機器人編程都需要考慮的問題。

第一,因為著地點摩擦力不均以及電機微小的偏角誤差,走直線的命令在實際中會產生偏差。走的越遠,偏差越大。因此走直線需要通過陀螺儀校準,因為它可以記錄機器人偏轉的角度。在出發前將陀螺儀清零,在行進時根據偏轉的角度不斷進行調整。 調整的角度需要和偏轉的角度相關,偏的越少,調整的也越少,這樣可以儘快調正方向,又可避免矯枉過正走成之字形。

第二,程序上寫的1米,可機器人並不會真的走1米,肯定會有誤差。機器人停下後要檢測輪子實際行進的距離, 多退少補再做微調。如果調整後陀螺儀顯示方向有偏,再做調整確保機器人無偏, 調整的距離就是無法消除的誤差。

第三,電池的電量會影響電機的準確度,進而影響行進的距離,速度以及偏角。 要想每次運行的結果完全一樣,要麼保證運行時的電量不能差別太大,要麼根據電量的多少對行為進行補償。我們測試時發現機器人在運行兩三個小時後行為就開始出現偏差,就得充電了。

第四,機器人會偶爾出現死機,讀數不準等硬體錯誤。比如我們發現EV3的陀螺儀有時候會突然出錯,在靜止狀態下讀數也會改變,必須重啟機器人才能恢復。控制器本身可能會死機,也必須重啟才能恢復。

做軟體測試,一次通過次次通過 。而機器人,前5次都成功了,第6次還是需要祈禱才行。 複雜的世界,需要複雜的程序讓他去實現簡單的事。我想這也是機器人編程教給孩子很重要的一點。


軟硬體都打了點基礎,現在有資格說說機器人的設計要注意什麼。

1. 專註於需要完成的任務。沒有規定機器人一定需要做成什麼樣子,得具備什麼樣的功能。不管黑機器白機器,能完成任務的就是好機器。機器人的設計只為這個目標服務,其他都不用考慮。

2. 盡量簡單。和所有事一樣,越簡單越不容易出錯,每一個部件都應該是有用的為目標服務的,否則就把它扔掉。孩子們喜歡給機器人加許多花哨的裝飾,想像力應該用在怎麼樣做的更簡單,每一個裝飾都是有代價的。

3. 他山之石可以攻玉,網上資源很多,看看其他人是怎麼做的。

對於一個有10多年編程經驗的理科生來說,熟悉最初步的機器人編程都需要時間,何況一個孩子。所以機器人編程必須要有大人的引導,希望你也有興趣,能帶著孩子一起用工程師的視角去看看這個世界。能想像十年之後我們身邊會有多少機器人嗎?今天孩子們完成的那個簡單的任務,也許就是一個偉大的開始。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 東西兒童教育 的精彩文章:

TAG:東西兒童教育 |