Download presentation
Presentation is loading. Please wait.
1
機器人設計與應用專題 國立豐原高中 郭再興
2
學習目標 了解機器人設計的基本原理 能瞭解流程圖概念,以及如何應用於解決問題。
藉由圖控式程式發展環境,以及控制機器人解決循跡問題,了解演算法流程控制的基本輸入、處理步驟、輸出等基本概念
3
學習目標 學習迴圈結構以及控制燈泡物件 學習選擇結構以及按鈕感應器物件 學習邏輯判斷物件(AND、OR、NOT、XOR)
練習分析問題,包括輸入、輸出、資料處理方式。
4
學習目標 學習如何使用光感應器製作循跡機器人 學習使用超音波感應器製作巡邏機器人
以解決機器人克服難關問題為例,介紹如何解決各種機器人挑戰關卡,並從中應用解題概念,做為問題解決的基本核心策略。
5
電腦解題教學工具 Game Maker (http://www.yoyogames.com/make)
Scratch ( Alice ( 可程式化機器人系統 益智遊戲
6
可程式化機器人
7
LEGO Mindstorms NXT
8
樂高機器人 NXT 9797 電機控制元件 控制器 伺服馬達 感測器 圖控式程式發展環境 積木元件
10
電機控制元件 包含NXT 控制器、伺服馬達、感應器组成
NXT控制器就像人的大腦,伺服馬達好比人的肌肉,提供動力,感應器就像人的五官,偵測外界環境並轉換成數位資料,再傳送回NXT控制器,驅動伺服馬達做出反應 基本運算模式 輸入->處理->輸出 圖控式程式發展環境
11
選擇結構: 若按下按鈕責執行上半側的指令,反之則走下半側
迴圈結構 開始 物件屬性
12
程式虛擬碼 while(true) { if (touch_sensor_is_pressed) { beep();
show_picture_on_screen() } 感測器若被壓下,則由喇叭播放音效,螢幕也會顯示笑臉畫面,學生在此可學到基本程式撰寫方法,以及三種基本流程
13
閃黃燈程式 挑戰題目--製作閃黃燈程式 展示事先錄製的閃黃燈影片 依照建構圖,將零件組合完畢
14
範例程式說明
15
紅綠燈程式 挑戰題目--製作紅綠燈程式 展示事先錄製的紅綠燈影片 依照建構圖,將零件組合完畢
16
程式說明 程式執行原理,與之前的閃黃燈程式相同,依序是: 點亮連接PortA的綠燈->等3秒鐘->熄滅PortA綠燈
點亮連接PortB的黃燈->等1秒鐘->熄滅PortB的黃燈 點亮連接PortC的紅燈->等4秒鐘->熄滅PortC的紅燈
17
閃黃燈變換紅綠燈 使用感測器控制閃黃燈切換紅綠燈 展示事先錄製的影片 依照建構圖,將零件組合完畢
18
選擇結構 說明選擇結構概念 設定各種感測器條件 討論並實作
19
程式說明 選擇結構(switch)最簡單的用法,就是判斷感測器輸入的資料是否符合預期,例如上圖中就是判斷接在Port1的按鈕感測器是否被壓下,若條件成立則程式走上半部,反之則走下半部。
20
其他感測器設定 下圖為光感應器偵測到光線亮度大於50%時,條件為真 下圖為超音波感應器偵測到物體距離小於15cm時,條件為真
21
下圖為光感應器偵測到光線亮度大於50%時,條件為真
22
延伸討論 程式編輯的技巧(copy-paste、捲動程式)
將程式改成超音波感測,這樣有路人站立在路口時,不用按鈕也能自動感應,控制燈號進入紅綠燈狀態 將條件設定改成聲控的話,那麼路人站在路口時,就可以用聲音的方式啟動控制 也請同學們想想看還有哪些變化,可以擴充控制的方式
23
電子搶答機 引起動機--益智類型電視節目搶答 問題說明--電子搶答機 依照建構圖,將零件組合完畢 說明使用邏輯物件控制迴圈
下圖程式若按下Port1或Port2所接的按鍵(也就是按下任何一個按鍵),無窮迴圈就會被中斷
24
使用邏輯物件控制迴圈 迴圈物件,可以設定為無窮迴圈(forever),下圖是設定成當邏輯輸入為true時迴圈中止
迴圈內的前兩個物件,負責偵測Port1按鈕、Port2按鈕是否被按下
25
若按鈕被按下,|則綠色的線會送出true的訊號,由迴圈內的第三個物件(邏輯物件)匯整後作出判斷(本例為OR)
26
常用的邏輯判斷 AND運算: 只有兩個輸入值都為“真”時結果才為“真”;其他情況輸出結果都為“假” OR運算:
兩個輸入值至少一個為“真",輸出結果則為“真";否則輸出結果為“假" XOR運算: 兩個輸入值相同則輸出為”假”,兩個輸入值相異則輸出為”真”,可以用簡單口訣幫助記憶”同性相斥、異性相吸” NOT運算:取相反值 若輸入“真",則輸出”假”, 若輸入“假",則輸出” 真”
27
程式解說 先暫停程式2秒鐘,點亮PortB燈 接著進入迴圈,若Port1按鈕或 Port2按鈕被按下,則迴圈中止
緊接著立刻判斷是哪一個按鈕被按下 若是Port1按鈕被按下,則點亮PortA燈 若是Port1按鈕未被按下,接著再判斷若Port2按鈕被按下,則點亮PortC燈
28
延伸討論 問題1: 先判斷Port1按鈕,接著才判斷Port2按鈕,是否不公平? 問題2: 是否會出現誤判? 是否有別的程式寫法 ?
29
三輪自走車
30
自走車 組合基本車身 前進後退 控制馬達後退一小段距離 控制馬達前近一小段距離 無窮迴圈
31
單光感循跡 挑戰問題:如何讓機器人使用一個光感應器, 控制兩個馬達,依循地上黑線前進 ?
32
單光感循跡演算法 演算法說明 step 1 光感應偵測地面亮度 step 2 若偵測到亮-左馬達出力 step 3 若偵測到暗-右馬達出力
不斷重複上面步驟,即可循跡前進
33
參考程式 右馬達停止 左馬達運轉 光感測到亮,則走上半側路徑控制馬達左轉;反之則走下半側控制馬達右轉 無窮迴圈
34
虛擬碼 討論單光感循跡演算法的特性,優缺點分析 演算法的特性--有限性、明確性
while(true) { if (LightSensor_detect_white) { motorB_stop ( ); motorC_run( ); } else { motorC_stop ( ); motorB_run( ); } 討論單光感循跡演算法的特性,優缺點分析 演算法的特性--有限性、明確性 準備難度較高的圖形再試試看,並且討論失敗的原因,歸納出演算法的缺點
35
進階挑戰地圖
36
雙光感循跡 控制機器人以雙光感測器循跡前進,且行經到底線時能自動停止 請同學思考如何利用二個光感應器來循跡,同時還能判斷是否到達底線
37
範例程式 無窮迴圈 左光感遇亮控制左馬達前進遇暗則停止 右光感遇亮控制右馬達前進遇暗則停止
38
虛擬碼 自走車大致讓黑線在兩個光感中間車身前進 若不小心靠左偏離路線,在右光感感應到黑線時,就會造成右馬達停止,讓車子偏右修正回正常路線
while(true) { if (left_LightSensor_detect_white) motorC_run( ); else motorC_stop ( ); if (right_LightSensor_detect_white) motorB_run( ); motorB_stop ( ) } 自走車大致讓黑線在兩個光感中間車身前進 若不小心靠左偏離路線,在右光感感應到黑線時,就會造成右馬達停止,讓車子偏右修正回正常路線 若是車子不小心靠右偏離路線,也能修正回來 兩個光感都感應到黑線時,兩個馬達就會靜止,達到停車的效果
39
機器人學習套件 Basic Stamp BoeBot (http://www.parallax.com)
Basic Commander ( 科學魔法車 ( Lego Mindstorms ( Arduino ( Microsoft Robotics Developer Studio (MSRDS) RobotBasic (
Similar presentations