STEM強化學習方法

工程教育領域有許多優秀的課程,但圍繞這些課程構建的課程往往存在一個嚴重缺陷——各個主題之間缺乏良好的連貫性。 有人可能會反對:這怎麼可能?

在製定培訓計劃時,每門課程都會註明先決條件和必須學習的明確順序。 例如,為了建造和編程一個原始的移動機器人,您需要了解一點力學來創建其物理結構; 歐姆/基爾霍夫定律層面的電學基礎、數位和類比訊號的表示; 使用向量和矩陣進行運算,以描述機器人在空間中的座標系和運動; 資料表示、簡單演算法和控制傳輸結構等方面的程式設計基礎知識來描述行為。

所有這些都包含在大學課程中嗎? 當然有。 然而,透過歐姆/基爾霍夫定律,我們得到了熱力學和場論; 除了矩陣和向量的運算之外,還必須處理約旦形式; 在程式設計中,研究多態性 - 解決簡單的實際問題並不總是需要的主題。

大學教育是廣泛的——學生走得很寬泛,往往看不到他所接受的知識的意義和實際意義。 我們決定轉變大學教育的 STEM(科學、技術、工程、數學)範式,創建一個基於知識連貫性的課程,以提高未來的完整性,也就是說,意味著對科目的深入掌握。

學習一個新的學科領域可以比喻為探索一個當地區域。 這裡有兩個選擇:要么我們有一張非常詳細的地圖,其中有大量需要研究的細節(這需要大量時間),以便了解主要地標在哪裡以及它們之間的關係; 或者您可以使用原始計劃,其中僅標明要點及其相對位置 - 這樣的地圖足以立即開始朝著正確的方向前進,並在您前進時澄清細節。

我們在冬季學校測試了強化 STEM 學習方法,該學校是我們與麻省理工學院的學生在以下機構的支持下共同舉辦的: JetBrains 研究。

材料準備


學校課程的第一部分是為期一周的主要領域課程,包括代數、電路、電腦架構、Python 程式設計和 ROS(機器人作業系統)簡介。

這些方向的選擇並非偶然:它們相互補充,旨在幫助學生乍看之下看似不同的事物(數學、電子和程式設計)之間的聯繫。

當然,主要目標不是進行大量講座,而是讓學生有機會在實踐中應用新學到的知識。

在代數部分,學生可以練習矩陣運算和解方程組,這對於研究電路很有用。 在了解了晶體管的結構以及在此基礎上構建的邏輯元件後,學生可以看到它們在處理器設備中的使用,並且在學習了Python語言的基礎知識後,可以用它為真正的機器人編寫程式。

STEM強化學習方法

達基敦


學校的目標之一是盡可能減少模擬器的工作。 因此,準備了大量的電子電路,學生必須用真實的元件將其組裝在麵包板上並在實踐中進行測試,並選擇 Duckietown 作為專案的基地。

Duckietown 是一個開源項目,涉及名為 Duckiebots 的小型自主機器人及其行駛的道路網絡。 Duckiebot 是一個配備 Raspberry Pi 微型電腦和單一攝影機的輪式平台。

在此基礎上,我們準備了一系列可能的任務,例如建立路線圖、搜尋物體並停在物體旁邊等等。 學生還可以提出自己的問題,不僅編寫程式來解決它,還可以立即在真實的機器人上運行它。

教學


在講座期間,教師使用預先準備的簡報來展示材料。 有些課程被錄製成視頻,以便學生可以在家中觀看。 上課時,學生在電腦上使用材料、提出問題、一起或獨立解決問題,有時甚至在黑板上。 根據作業結果,分別計算每位學生在不同科目的評分。

STEM強化學習方法

讓我們更詳細地考慮每個科目的課堂教學。 第一門課是線性代數。 學生花了一天學習向量和矩陣、線性方程組等。 實踐任務是互動式建構的:提出的問題單獨解決,老師和其他學生提供評論和提示。

STEM強化學習方法

第二科目是電和簡單電路。 學生學習電動力學的基礎:電壓、電流、電阻、歐姆定律和基爾霍夫定律。 實際任務部分是在模擬器中完成或在電路板上完成,但更多的時間花在建立真實電路,例如邏輯電路、振盪電路等。

STEM強化學習方法

下一個主題是電腦體系結構——從某種意義上說,是連接物理和程式設計的橋樑。 學生學習基礎知識,其意義較多是理論意義大於實踐意義。 作為練習,學生在模擬器中獨立設計算術和邏輯電路,並完成任務以獲得積分。

第四天是程式設計的第一天。 選擇 Python 2 作為程式語言是因為它是 ROS 程式設計中使用的語言。 這一天的結構如下:教師介紹材料,給出解決問題的例子,而學生則坐在電腦前聽,並重複老師在黑板或幻燈片上寫的內容。 然後學生自己解決類似的問題,然後由老師對解決方案進行評估。

第五天專門討論 ROS:這些人學習了機器人程式設計。 整個上課時間,學生坐在電腦前,執行老師講的程式碼。 他們能夠獨立運行基本的 ROS 單元,並且還被介紹到 Duckietown 專案。 這一天結束時,學生們已經準備好開始學校的專案部分——解決實際問題。

STEM強化學習方法

所選項目目的描述

學生被要求組成三人小組並選擇一個專案主題。 結果,通過了以下項目:

1. 顏色校準。 Duckiebot需要在光照條件變化時對相機進行校準,因此存在自動校準任務。 問題是顏色範圍對光非常敏感。 參與者實作了一個實用程序,可以突出顯示框架中所需的顏色(紅色、白色和黃色),並以 HSV 格式為每種顏色建立範圍。

2.鴨子出租車。 這個項目的想法是 Duckiebot 可以停在一個物體附近,撿起它並沿著特定的路線行駛。 選擇一隻亮黃色的鴨子作為物件。

STEM強化學習方法

3. 建構路線圖。 有一項任務是建構道路和交叉路口圖。 該專案的目標是在不向 Duckiebot 提供先驗環境資料的情況下,僅依靠攝影機資料來建立路線圖。

4.巡邏車。 這個專案是學生自己發明的。 他們建議教一個 Duckiebot(「巡邏者」)去追趕另一個「Duckiebot」(「違規者」)。 為此,使用了使用 ArUco 標記的目標識別機制。 一旦識別完成,就會向“入侵者”發送信號以完成工作。

STEM強化學習方法

顏色校準

顏色校準專案的目標是調整可識別標記顏色的範圍以適應新的照明條件。 如果沒有這樣的調整,停車線、車道分隔線和道路邊界的識別就會變得不正確。 參與者提出了一種基於預處理標記顏色模式的解決方案:紅色、黃色和白色。

這些顏色中的每一種都有預設的 HSV 或 RGB 值範圍。 使用此範圍,找到包含合適顏色的畫面的所有區域,並選擇最大的區域。 該區域作為需要記住的顏色。 然後使用計算平均值和標準差等統計公式來估計新的顏色範圍。

這個範圍記錄在Duckiebot的相機設定檔中,以供日後使用。 所描述的方法適用於所有三種顏色,最終形成每種標記顏色的範圍。

測試顯示,標記線幾乎可以完美識別,但標記材料使用光面膠帶的情況除外,這種膠帶反射光源的強度如此之大,以至於從相機的視角來看,標記顯示為白色,無論其原始顏色如何。

STEM強化學習方法

鴨子計程車

鴨子計程車計畫涉及建立一種演算法來搜尋城市中的鴨子乘客,然後將其運送到所需地點。 參與者將這個問題分為兩個:偵測和沿著圖表移動。

學生們透過假設鴨子是框架中任何可以被識別為黃色的區域來進行鴨子檢測,鴨子上有一個紅色三角形(喙)。 一旦在下一幀中檢測到這樣的區域,機器人就應該接近它,然後停止幾秒鐘,模擬乘客的著陸。

然後,將整個鴨子鎮的道路圖和機器人的位置預先儲存在記憶體中,並接收目的地作為輸入,參與者建立一條從出發點到到達點的路徑,使用Dijkstra演算法在圖中尋找路徑。 輸出以一組命令的形式呈現 - 在以下每個交叉路口轉彎。

STEM強化學習方法

道路圖

該計畫的目標是建立一個圖表 - Duckietown 的道路網絡。 結果圖的節點是交叉點,弧線是道路。 為此,Duckiebot 必須探索城市並分析其路線。

在這個專案的工作過程中,曾考慮過創建加權圖的想法,但後來被放棄了,其中邊的成本由交叉點之間的距離(行進時間)決定。 事實證明,這個想法的實施過於勞力密集,而且學校內部沒有足夠的時間。

當 Duckiebot 到達下一個十字路口時,它會選擇從它尚未走過的十字路口出來的道路。 當所有交叉口的所有道路都通過後,產生的交叉口鄰接清單將保留在機器人的記憶體中,並使用 Graphviz 函式庫將其轉換為影像。

參與者提出的演算法並不適合隨機的 Duckietown,但對於學校內使用的四個十字路口的小鎮效果很好。 這個想法是向每個交叉路口添加一個 ArUco 標記,其中包含交叉路口標識符,以追蹤交叉路口的行駛順序。
參與者開發的演算法圖如圖所示。

STEM強化學習方法

巡邏車

該計畫的目標是在 Duckietown 市搜索、追捕並拘留違規機器人。 巡邏機器人必須沿著城市道路的外環移動,尋找已知的入侵機器人。 偵測到入侵者後,巡邏機器人必須追蹤入侵者並迫使其停止。

這項工作始於尋找一種想法來偵測框架中的機器人並識別其中的入侵者。 團隊建議為城市中的每個機器人背面配備一個獨特的標記 - 就像真正的汽車有州登記號碼一樣。 為此選擇 ArUco 標記。 它們之前已在 duckietown 中使用過,因為它們易於使用,並且允許您確定標記在空間中的方向以及到它的距離。

其次,要確保巡邏機器人嚴格在外圈內移動,不要在路口停留。 預設情況下,Duckiebot 在車道上移動並停在停車線。 然後,借助路標,確定路口的佈局,並選擇路口的通行方向。 對於所描述的每個階段,機器人有限狀態機的一個狀態負責。 為了擺脫路口的停車,團隊改變了狀態機,當接近停車線時,機器人立即切換到直行通過路口的狀態。

下一步是解決阻止入侵機器人的問題。 該團隊假設巡邏機器人可以透過 SSH 存取城市中的每個機器人,也就是說,擁有一些有關每個機器人的授權資料和 ID 的資訊。 因此,在偵測到入侵者後,巡邏機器人開始透過 SSH 連接到入侵者機器人並關閉其係統。

確認關機指令完成後,巡邏機器人也停止了動作。
巡邏機器人的運作演算法可以表示為下圖:

STEM強化學習方法

從事專案工作

工作的組織方式與 Scrum 類似:每天早上,學生們規劃當天的任務,晚上報告已完成的工作。

在第一天和最後一天,學生們準備了描述任務以及如何解決它的演示。 為了幫助學生遵循他們選擇的計劃,來自俄羅斯和美國的老師經常出現在進行專案工作的房間裡,回答問題。 交流主要用英語進行。

結果及其演示

這些項目的工作持續了一個星期,之後學生們展示了他們的成果。 每個人都準備了演講,談論他們在這所學校學到的東西,他們學到的最重要的課程是什麼,他們喜歡或不喜歡什麼。 隨後,各團隊展示了自己的專案。 所有團隊都完成了任務。

實施顏色校準的團隊比其他團隊更快地完成了項目,因此他們也有時間為他們的程序準備文件。 即使在專案演示前的最後一天,研究路線圖的團隊也試圖完善和修正他們的演算法。

STEM強化學習方法

結論

完成學業後,我們要求學生評估過去的活動,並回答有關學校滿足他們期望的程度、他們獲得了哪些技能等問題。 所有學生都表示,他們學會了團隊合作、分配任務和規劃時間。

學生還被要求對他們所修課程的有用性和難度進行評分。 這裡形成了兩組評估:對於某些課程來說,課程沒有太大難度,而有些則認為課程非常困難。

這意味著學校採取了正確的立場,既向特定領域的初學者開放,也為有經驗的學生提供重複和鞏固的材料。 應該指出的是,幾乎每個人都認為程式設計課程(Python)簡單但有用。 據學生反映,最難的課程是「電腦體系結構」。

當學生被問及學校的優勢和劣勢時,許多人回答說他們喜歡所選的教學方式,即教師提供及時的個人幫助並回答問題。

學生們還指出,他們喜歡以每日計劃任務並設定自己的截止日期的方式工作。 作為缺點,學生指出缺乏使用機器人時所需的知識:連結時,了解其操作的基礎知識和原則。

幾乎所有學生都表示學校超出了他們的預期,這表明學校的辦學方向是正確的。 因此,在組織下一所學校時,應保持一般原則,考慮並在可能的情況下消除學生和教師指出的缺點,也許改變課程清單或教學時間。

文章作者:團隊 移動機器人演算法實驗室 в JetBrains 研究。

PS 我們的企業部落格有了新名稱。 現在它將致力於 JetBrains 的教育計畫。

來源: www.habr.com

添加評論