程式設計複雜性
機器人可以被設計來執行各種各樣的任務。 其中一些任務非常簡單,例如打開自動門。 其他的可能要複雜得多,例如在城市環境中行駛的自動駕駛汽車。 無論任務多麼複雜,都可以分解為更簡單的任務。 這些任務稱為行為,是機器人程式設計的建構塊。
行為是機器人的一種行為方式,其複雜程度取決於機器人的建造或程式設計方式。 像 VEX V5 Speedbot 這樣的簡單移動機器人只有兩個電機,而 Clawbot 有四個電機,包括兩個用於手臂和爪子的額外電機。 兩個機器人的行為都將涉及轉動這些馬達來實現設定的目標。 透過更多的設計和編程,你可以從這個簡單的行為開始,做更複雜的行為。
以下是 Speedbot 和 Clawbot 的機器人行為列表,從簡單到複雜。 在括號中,您可以看到組成每個行為的更簡單的行為。
-
旋轉分配給特定端口的電機
-
向前行駛(使用傳動系統旋轉左右馬達)
-
行駛5公尺(向前行駛,然後停止)
-
抓取遠處物體(行進2米,旋轉爪馬達抓取)
-
取回一個物體並將其放在高架上(抓住遠處的物體,轉身,行進2米,使用手臂和爪電機抬起並釋放物體)
您可以看到如何將任何更複雜的行為解構為更簡單的行為。 這些成為任何複雜任務的建構塊。
老師提示
-
指導學生將複雜的機器人行為分解為更小、更簡單的步驟。 這個過程稱為分解。
-
向學生解釋,將複雜的行為分解(分解)為更簡單的任務是規劃和程式設計的重要組成部分。
-
如果有足夠的課堂時間,允許學生自主進行專案。
擴展你的學習
為了將此活動與計算思維和分解聯繫起來,請學生繪製或列出機器人為完成以下活動而執行的行為步驟:
-
活動一:移動1米,回到起始點。
-
活動二:翻轉機器人前方 60 公分處的一個箱子。
-
活動三:拿起一個物體,搖晃它,移動30厘米,將物體放在地上,然後回到起點。
激發討論
學生應該分享他們為上面「擴展你的學習」中的活動列出的行為步驟。 在任何或所有活動之後都可以提出以下每個問題。
問: 每組列出了哪些步驟或行為來成功完成這項活動?
A: 除了列出完成活動或任務所需的簡單機器人行為(向前行駛、倒車、左轉)外,學生還需要考慮機器人必須行進的長度以及手臂的運動和速度。 。 學生應該創建他們的行為列表,以便每一步都體現出來。
問: 此活動的解決方案(步驟清單)之間有何異同?
A: 學生將根據他們的解決方案進行比較。 維恩圖可能是組織學生共享步驟的好方法。 如果大多數學生說出了某個特定步驟,請將其添加到圓圈重疊的中心。 如果只有一個或幾個學生說出某一特定步驟,請將其加到一個或另一個圓圈中。 完成後,中心的步驟應該非常簡單,並且無法進一步分解,而僅在一個圓圈中列出的步驟可能並不那麼簡單。 然而,這種模式可能會逆轉,這取決於班級將複雜行為分解為最簡單步驟的經驗。
問: 與成功的解決方案有相似之處嗎? 如果有的話,它們是什麼?
A: 最成功的解決方案是包含最詳細和最具體的解決方案。 機器人是用一種具有非常特定行為的語言進行編程的,這些行為已被分解為最小的組件。 例如,通常會說機器人“行駛 1 米並返回起始點”,但在編程時這種高級描述並不容易翻譯。 你還要進一步分解:向前行駛1米,轉彎180度,再向前行駛1米。 但即使這樣也可能不夠精確,您需要這種級別的詳細資訊才能進行編程:將驅動和轉向速度設置為 40%,向前行駛 1 米,等待 3 秒,左轉 180 度,等待 1 秒,並向前行駛1米。 我們越深入分解複雜的行為,使它們成為可供編程的機器人行為,我們就越能更好地完成專案。