學習目標

Download Report

Transcript 學習目標

機器人設計與應用專題

國立豐原高中 郭再興

學習目標

•了解機器人設計的基本原理 •能瞭解流程圖概念,以及如何應用於解決 問題。 •藉由圖控式程式發展環境,以及控制機器 人解決循跡問題,了解演算法流程控制的 基本輸入、處理步驟、輸出等基本概念

學習目標

•學習迴圈結構以及控制燈泡物件 •學習選擇結構以及按鈕感應器物件 •學習邏輯判斷物件(AND、OR、NOT、XOR) •練習分析問題,包括輸入、輸出、資料處 理方式。

學習目標

•學習如何使用光感應器製作循跡機器人 •學習使用超音波感應器製作巡邏機器人 •以解決機器人克服難關問題為例,介紹如 何解決各種機器人挑戰關卡,並從中應用 解題概念,做為問題解決的基本核心策略 。

電腦解題教學工具

Game Maker ( http://www.yoyogames.com/make ) Scratch ( http://scratch.mit.edu/ ) Alice ( http://www.alice.org

) 可程式化機器人系統 益智遊戲

可程式化機器人

LEGO Mindstorms NXT

樂高機器人 NXT 9797

•電機控制元件 –控制器 –伺服馬達 –感測器 •圖控式程式發展 環境 •積木元件 8

9

電機控制元件

• 包含NXT 控制器、伺 服馬達、感應器组成 • NXT控制器就像人的大 腦,伺服馬達好比人 的肌肉,提供動力, 感應器就像人的五官 ,偵測外界環境並轉 換成數位資料,再傳 送回NXT控制器,驅動 伺服馬達做出反應 • 基本運算模式 輸入->處理->輸出 • 圖控式程式發展環境

開 始 選擇結構 : 若按下按鈕 責執行上半側的指令, 反之則走下半側 迴圈結構 物件 屬性

•程式虛擬碼 while(true) { if (touch_sensor_is_pressed) { beep(); show_picture_on_screen() } } •感測器若被壓下,則由喇叭播放音效,螢幕也會 顯示笑臉畫面,學生在此可學到基本程式撰寫方 法,以及三種基本流程

閃黃燈程式

•挑戰題目--製作閃黃燈程式 •展示事先錄製的閃黃燈影片 •依照建構圖,將零件組合完畢

範例程式說明

紅綠燈程式

•挑戰題目--製作紅綠燈程式 •展示事先錄製的紅綠燈影片 •依照建構圖,將零件組合完畢

程式說明

程式執行原理,與之前的閃黃燈程式相同,依序是: • 點亮連接PortA的綠燈->等3秒鐘->熄滅PortA綠燈 • 點亮連接PortB的黃燈->等1秒鐘->熄滅PortB的黃燈 • 點亮連接PortC的紅燈->等4秒鐘->熄滅PortC的紅燈

閃黃燈變換紅綠燈

•使用感測器控制閃黃燈切換紅綠燈 •展示事先錄製的影片 •依照建構圖,將零件組合完畢

選擇結構

•說明選擇結構概念 •設定各種感測器條件 •討論並實作

程式說明

•選擇結構(switch)最簡單的用法,就是判斷感測 器輸入的資料是否符合預期,例如上圖中就是判 斷接在Port1的按鈕感測器是否被壓下,若條件成 立則程式走上半部,反之則走下半部。

其他感測器設定

• 下圖為光感應器偵測到光線亮度大於50%時,條件為真 • 下圖為超音波感應器偵測到物體距離小於15cm時,條件為真

• 下圖為光感應器偵測到光線亮度大於50%時,條件為真

延伸討論

•程式編輯的技巧(copy-paste、捲動程式) •將程式改成超音波感測,這樣有路人站立 在路口時,不用按鈕也能自動感應,控制 燈號進入紅綠燈狀態 •將條件設定改成聲控的話,那麼路人站在 路口時,就可以用聲音的方式啟動控制 •也請同學們想想看還有哪些變化,可以擴 充控制的方式

電子搶答機

•引起動機--益智類型電視節目搶答 •問題說明--電子搶答機 •依照建構圖,將零件組合完畢 •說明使用邏輯物件控制迴圈 –下圖程式若按下Port1或Port2所接的按鍵(也就是按下 任何一個按鍵),無窮迴圈就會被中斷

使用邏輯物件控制迴圈

• 迴圈物件,可以設定為無窮迴圈(forever),下圖是設定 成當邏輯輸入為true時迴圈中止 • 迴圈內的前兩個物件,負責偵測Port1按鈕、Port2按鈕是 否被按下

• 若按鈕被按下,|則綠色的線會送出true的訊號,由迴圈 內的第三個物件(邏輯物件)匯整後作出判斷(本例為OR)

常用的邏輯判斷

AND 運算: 只有兩個輸入值都為“真”時結果才為 “真”;其他情況輸出結果都為“假” OR 運算: 兩個輸入值至少一個為“真",輸出結 果則為“真";否則輸出結果為“假" XOR 運算: 兩個輸入值相同則輸出為 ” 假 ” ,兩個輸 入值相異則輸出為 ” 真”,可以用簡單口 訣幫助記憶 ” 同性相斥、異性相吸 ” NOT 運算:取相反值 若輸入“真",則輸出 ” 假 ” , 若輸入“假",則輸出 ” 真 ”

程式解說

• 先暫停程式2秒鐘,點亮PortB燈 • 接著進入迴圈,若Port1按鈕或 Port2按鈕被按下,則迴圈中止 • 緊接著立刻判斷是哪一個按鈕被按下 – 若是Port1按鈕被按下,則點亮PortA燈 – 若是Port1按鈕未被按下,接著再判斷若Port2按鈕被按下,則點亮PortC燈

延伸討論

•問題1: 先判斷Port1按鈕,接著才判斷 Port2按鈕,是否不公平? •問題2: 是否會出現誤判?

•是否有別的程式寫法 ?

三輪自走車

自走車

組合基本車身 前進後退 控制馬達前近 一小段距離 控制馬達後退 一小段距離 無窮迴圈

單光感循跡

挑戰問題:如何讓機器人使用一個光感應器, 控制兩個馬達,依循地上黑線前進 ?

單光感循跡演算法

演算法說明 step 1 光感應偵測地面亮度 step 2 若偵測到亮-左馬達出力 step 3 若偵測到暗-右馬達出力 不斷重複上面步驟,即可循跡前進

光感測到亮,則走上 半側路徑控制馬達左 轉;反之則走下半側 控制馬達右轉

參考程式

右馬達停止 左馬達運轉 無窮迴圈

虛擬碼

while(true) { if (LightSensor_detect_white) { motorB_stop ( ); motorC_run( ); } else { motorC_stop ( ); motorB_run( ); } } • • • 討論單光感循跡演算法的特性,優缺點分析 演算法的特性--有限性、明確性 準備難度較高的圖形再試試看,並且討論失敗 的原因,歸納出演算法的缺點

進階挑戰地圖

雙光感循跡

•控制機器人以雙光感測 器循跡前進,且行經到 底線時能自動停止 •請同學思考如何利用二 個光感應器來循跡,同 時還能判斷是否到達底 線

範例程式

無窮迴圈 左光感遇亮控 制左馬達前進 遇暗則停止 右光感遇亮控 制右馬達前進 遇暗則停止

•虛擬碼 while(true) { if (left_LightSensor_detect_white) motorC_run( ); else motorC_stop ( ); if (right_LightSensor_detect_white) motorB_run( ); else motorB_stop ( ) } • 自走車大致讓黑線在兩個光感中間車身前進 • 若不小心靠左偏離路線,在右光感感應到黑線時,就會造成右馬達停止 ,讓車子偏右修正回正常路線 • 若是車子不小心靠右偏離路線,也能修正回來 • 兩個光感都感應到黑線時,兩個馬達就會靜止,達到停車的效果

機器人學習套件

Basic Stamp BoeBot ( http://www.parallax.com

) Basic Commander ( http://innovati.com.tw

) 科學魔法車 ( http://www.me.tnu.edu.tw/~me017/welcome ) Lego Mindstorms ( http://mindstorms.lego.com

) Arduino ( http://www.arduino.cc

) Microsoft Robotics Developer Studio (MSRDS) RobotBasic (http://www.robotbasic.org)