Transcript 控制模組
智慧型二足機器人專題製作 主講者: 國立彰化師大附工 機電科主任 楊昭德 [email protected] http://eschool.sivs.chc.edu.tw 1 單元摘要 單元摘要: 機器人專題製作---利基16軸智慧型機器人 Robotinno 利基應用科技十六軸全身機器人-Robotinno 2 學習目標 • • • • • • • • • 1. 瞭解機器人歷史簡介,使對機器人歷史產生興趣。 2. 瞭解機器人設計的基本原理,使產生對機器人設計興趣。 3. 能瞭解機器人流程圖概念以及如何應用於解決機器人組裝問題。 4. 引起學生學習機器人程式innoBASIC撰寫的興趣。 5. 培養學生使用機器人innoBASIC程式語言開發工具的基本能力。 6. 學習迴圈結構(FOR-NEXT)以及控制機器人零組件動作。 7. 練習分析問題,包括輸入、輸出、資料處理方式。 8. 學習如何使用servo Commander16控制器製作自動行走機器人。 9. 學習如何製作機器人專題製作,小組討論和養成團隊合作精神。 3 機器人歷史簡介 •1.生活處處有科學,生活時時用科學: •2.詞源:機器人是一種具有移動性、個體性、智 能性、通用性、半機械半人性、自動性、奴隸性 等7個特徵的柔性機器。」 •3.機器人是自動控制機器(Robot)的俗稱 日本HONDA機器人原型ASIMO 4 機器人歷史簡介(2) •4. 機器人的種類與演變 當代應用機器人: • 4.1工業機器人 • 4.2寵物、玩偶類機器人: • 4.3動漫、遊戲的機器人: • 4.4模擬和社交機器人: • 4.5醫學上機器人: • 4.6探險及危險工作機器人: 2005年日本世界博覽會愛知縣展出的女性模擬機器人 5 機器人的定義 機器人是靠 自身動力 和 控制能力 來實現各種功能的一種機器 聯合國標準化組織采納了美國機器人協會給機器人下的定義︰ “一種可編程和多功能的,用來搬運材料、零件、工具的操作機; 或是為了執行不同的任務而具有可改變和可編程動作的專門系統。” 6 機器人三大法則 • 艾西莫夫(Isaac Asimov, 1920-1992)二十世紀科幻文壇的超級大師, 也是舉世聞名的全能通俗作家。是公認的「現代機器人小說之父」。 他於一九四二年所創立的「機械人三大法則」: 第一法則 : 機器人不得傷害人類,或坐視人類受到傷害而袖手旁觀。 第二法則 : 除非違背第一法則,機器人必須服從人類的命令。 第三法則 : 在不違背第一法則及第二法則的情況下,機器人必須保護自己。 7 智慧型機器人類型 工業機器人 教育機器人 保全機器人 SeQ-1 (新光保全, Taiwan) R1 (利基, Taiwan) 智慧型機器人 娛樂機器人 醫療機器人 服務機器人 RIBA(東海橡膠, 日本) 瓦力 Roomba (iRobot, 丹麥) 8 機器人開發工具的考量(一) 軟體考量 (程式語言) 硬體考量(含週邊線路) 開發時間 工程專業 可靠度 9 機器人開發工具的考量(二) 單晶片 + 單晶片 控制板 單一主機板 + 單板電腦 模組 10 MSRDS Microsoft Robotics Developer Studio 2006年 6月- MSRDS 機器人模組化、平臺統一化的趨勢 台灣大學 土木工程學系 康仕仲 博士 11 BASIC Commander 系統介紹 12 個人單板電腦– PSBC (Personal Single Board Computer) USB • • • • 開發簡單化 產品個性化 開發極速化 效能極大化 ----- 非工程人員專用 非大量生產產品 快速完成產品原型 功能模組結合 13 利基之SBC-- BASIC Commander 利基應用科技研發之單板電腦 MTP Type MCU inside,可多次重複燒寫程式 USB 介面 On Board 可單獨使用輸出入腳 (16 or 24) 專有cmdBUS與周邊模組通訊 可搭配周邊模組使用(Up to 32個) 14 適用對象與用途 •初學者 -- 簡易級入門教材 •學 生 -- 各項專題實作 •教 師 -- 協助研究實驗 •嗜好者 -- 個人嗜好 DIY •設計工程師 -- 快速原型實現 15 BASIC Commander 系統架構圖 16 2x16 LCD Module Usage Peripheral myLCD As LCD2x16A @ 0 ‘module ID is 1 Sub Main() myLCD.Display(“HOW ARE YOU?”) End Sub cmdBUS ‘display message USB HOW ARE YOU? 17 Keypad Module Usage Peripheral myKeypad As KeypadA @ 1 ‘module ID is 1 Sub Main() Dim keyID As Byte Dim Keystatus As Byte Do keystatus=Mykeypad.GetKeyID(KeyID) If Keystatus = 1 Then Debug "Key ", KeyID, CR Loop End Sub cmdBUS USB 18 Sonar Module Usage Peripheral MySonar As SonarA @ 2 ‘module ID is 2 Sub main() Dim dis As Word Do MySonar.Ranging() ‘start the sonar Pause 100 ‘wait for reflection MySonar.GetDistance(1,dis) ‘read the distance Debug "Distance = ",dis," cm",CR Loop End Sub cmdBUS USB 19 Compass Module Usage Peripheral myComp As CompassA @ 3 Sub Main() Dim Ang As Word Do MyComp.GetAngle(Ang) Debug "Angle: ", Ang, CR Loop End Sub cmdBUS ‘module ID is 3 ‘declare variable ‘angle to the North ‘display angle USB 20 innoBASICTM Workshop Terminal Window File Manager Window Message Input/Output Window Program Editor Window 21 innoBASICTM Fundamental Commands • • • • • • • • • • • • • • DIM PERIPHERAL ENUM … END ENUM IF …THEN … ELSE DO… LOOP SELECT… CASE FOR… NEXT GOTO RETURN CALL SUB … END SUB FUNCTION…END FUNCTION EVENT … END EVENT ...etc. 22 innoBASICTM I/O Commands • • • • • • • • • • • • BUTTON OUTPUT CHECKMODULE COUNT PULSEIN DEBUG PULESOUT DEBUGIN PWM GETDIRPORT HIGH RCTIME • • • • • • • • • • • • IN READPORT INPUT RESETMODULE LCDCMD REVERSE LCDIN SETDIRPORT LCDOUT TOGGLE LOW WRITEPORT 23 innoBASICTM Math & Conversion Commands • • • • • • • • • • • • • PAUSE RANDOM ABS SGN CEIL FLOOR SQRT EXP EXP10 LOG LOG10 SIN COS • • • • • • • • • • • • • ASIN ACOS ATAN ATAN2 BYTE2FLOAT SHORT2FLOAT WORD2FLOAT INTEGER2FLOAT DWORD2FLOAT LONG2FLOAT STRING2FLOAT FLOAT2BYTE FLOAT2SHORT • • • • • • • • • • • • • FLOAT2WORD FLOAT2INTEGER FLOAT2DWORD FLOAT2LONG FLOAT2STRING FLOAT2REALSTRING LCASE UCASE RIGHT MID LEFT LEN STRREVERSE 24 周邊模組 (1) 鍵盤模組 直流馬達模組 (Dual 650mA) LCD顯示模組 直流馬達(1.5A) 控制模組 直流馬達(30A) 控制模組 25 周邊模組 (2) 計時模組 電子羅盤模組 I/O擴充模組 超音波測距模組 26 周邊模組 (3) 二軸搖桿模組 伺服馬達模組 三軸搖桿模組 機器人控制模組 27 應用範例 --- InnoBot 個人單板電腦 BASIC Commander 應用InnoBot機器人自走車,控制行走方向, 且應用程式來組合機器人自走車行動方向, 可以讓使用者自行設計程式來控制。 28 應用範例 --- 坦克 Peripheral MyMotor As MotorRunnerB @ 1 個人單板電腦 BASIC Commander Sub main() Do MyMotor.ForwardA(200) MyMotor.ForwardB(200) Pause 1000 MyMotor.BackwardA(200) MyMotor.BackwardB(200) Pause 1000 Loop 馬達控制模組 End Sub 這是應用遙控器控制組裝成坦克造型自走車的一種機器人, 可以快速驅動坦克車快速行走達到極速坦克車行走動作。 29 應用範例 --- 二足機器人 個人單板電腦 BASIC Commander 伺服機驅動模組 Servo Control Module 鋁材 伺服機 這是利用二足機器人,模仿機器人二足行走的的機器人, 學習如何控制機器人行走的動作,在應用到全人形機器人的行走控制。 30 應用範例 --- 六腳蜘蛛 個人單板電腦 BASIC Commander 伺服機控制模組 x 2 這是模仿蜘蛛六腳的行動,可以由設計程式來控制六隻腳的行走方向, 讓使用者知道蜘蛛行走的方向,可以應用在危險的探觸工作上。 31 應用範例---六腳蜘蛛+感測器 這是模擬六腳蜘蛛,在加上sensor感測器之機器人, 使機器人具有感測前方之障礙,並控制六隻腳做動作之機器人。 32 Wall-E瓦力 這是利用sensor感測器模擬瓦力機器人, 偵測前方之障礙物而帶動旅帶型輪子行走之機器人。 33 其他應用範例 超音波避障小蜘蛛 變形金剛 機械蛇 機器人足球賽 機器人格鬥賽 34 Education Board 介紹 35 電源輸入 •電源可以由三組電源接頭中擇一輸入,請 根據需求使用所需要的電源接頭,但請不 要同時使用兩個以上的電源輸入 變壓器電源輸入接頭,可以連接由市電轉直流的 變壓器,請注意接入電壓必須在6~12V之間 9V鈕扣電池輸入座,可以連接市售9V的電池, 請注意接入電壓必須在6~12V之間 直流電源輸入接頭,可以連接直流電源, 請注意接入電壓必須在6~12V之間 36 電源開關 電源開關,有三段 0: 關閉所有電源連接 1: 開啟伺服機線路以外的電源 2: 開啟所有電源 37 重置按鍵 重置按鍵,當壓下再放開,就會重新啟 動城市,請注意若壓著重置按鍵不放, 則系統將停留在重置狀態,不會做任何 動作 • 須要重新啟動應用設計動作時, 可以按下重置按鍵,BC1/BC2就 會由內建程式的第一個動作開始 ,再從頭執行 • 請注意重置按鍵按下後,所有現 行的動作都會被取消,參數值都 會回覆到初始狀態 38 cmdBUS腳座 Education Board上有四組cmdBUS腳座,如 果要連接應用模組,只要以cmdBUS直接連 接,請注意cmdBUS有方向性,連接時習慣 以紅線連接到VIN,可以在各腳位旁邊,看 到該腳位對應的名稱 如果需要連接超過四組應用模組,可以將 cmdBUS連接到麵包板,再由麵包板擴充所 需要的接腳 39 伺服機腳座 Education Board上有四組伺服機控制腳 座,如果要操作伺服機,只要將伺服機 的訊號線,連接到此腳座上,請注意伺 服機的訊號線有方向性,連接時習慣以 白(橘)線連接到W,可以在各腳位旁邊, 看到該對應英文字母 預設是使用P10與P11連接兩個伺服機, 10與11分別代表BASIC Commander的I/O 接腳,輸出做為伺服機的控制訊號 40 伺服機電源選擇 在伺服機腳座的最旁邊,可以看到由x5標示 的三個腳位,將最上面的兩個腳位短路,伺 服機的電源就會由VDD(5V)提供,若是將下兩 個腳位短路,伺服機的電源就會由VIN(6~12V) 提供 請用Jumper連接想要使用的腳位,預設為使 用VDD 41 BC腳座 BC腳座是用來安裝BASIC Commander,安裝時 請注意USB接頭的位置要朝外,而且各腳位要 由最內側對齊,如果要更換BASIC Commander, 建議使用細長的條狀物,由底端平均施力, 以免腳位折損或斷裂 42 I/O腳座 I/O腳座會對應到BASIC Commander的各個通 用I/O,連接時請注意,對應的腳位是紅色底 板上的白字,而不是麵包板上的數字 用漆包線連接I/O腳座與麵包板,就可以與得 BASIC Commander的I/O訊號,可以做輸出或 輸入的控制 43 麵包板 白色部分為麵包板,麵包板上的孔位,同一 個數字上有兩組孔位,分別為“a, b, c, d, e”為一組,“f, g, h, I, j”為另外一組, 在同一組的孔位上,量到的電壓都會是相同 的,請注意不要將VIN,VDD,VCC與GND等, 接到同一組的孔位中,以免燒毀線路 44 電源腳座 VCC接腳,提供由BASIC Commander轉換的5V電 壓源,最多可以提供250mA的電流值 VIN接腳,直接連接到輸入的電壓源,根據輸 入電壓源,提供6~12V的電壓值,電流值則是 根據輸入電源能提供的電量 VDD接腳,提供由Education Board轉換的5V電 壓,最多可提供1 A的電流值 45 實作練習 46 練習 : Debug Command Sub main() Dim Age As Byte Dim Name As String * 10 Debug “Hello, What’s your name?”, CR Debugin Name Debug “Hi “, Name, “ how old are you?” , CR Debugin Age Debug “Good! You are “, Age, “ years old.”, CR End Sub 47 練習 : LCD, Keypad Module 48 練習 : Sonar Module 49 練習 : 使用伺服機 1.5ms RC servo 5us x 200 = 1000 us = 1 ms 20ms 5us x 400 = 2000us = 2 ms 50 16軸機器人- Robotinno Robotinno兩足機器人35公分高 ,它可以直接使用動作編輯器 將動作以分鏡的方式儲存起來 ,稱之為frame。透過程式將這 些frame依指定順序執行,機器 人即可流暢連貫所有的動作。 51 RC Servos of Robotinno 電壓 12V 12V(typ) 10V(min) 扭力 12 kgf-cm 10 kgf-cm 速度 0.15 sec/60 0.18 sec/60 運動範圍 180 材質 金屬齒輪和塑膠本體 祥儀伺服機 SYS-214050 52 Principles of RC Servo Control 2.2 ms 0.8 ms 53 控制器- Servo Commander 16 功能 : 十六組伺服機輸出控制 。結合了BASIC Commander - BC1與一個Servo Runner A,使用者能大幅縮小模組所需要面積,減少連接線材,並完整保留 Servo Runner A的所有功能,可以一次控制十六個伺服機 。 實際配置 54 SC16 Servo Control Board 8 - 11號 伺服機 12 -15號 伺服機 4 - 7號 伺服機 0 - 3號 伺服機 結合了BASIC Commander (BC1)與一個Servo Runner A,使用者能 大幅縮小模組所需要面積。 55 Power Supply & Charging SC 16下載控制程式後,將圖中(A),(B)連 接起來,即可讓兩足機器人動作。其中: (A) 伺服機之電源輸入腳位,即下面右圖 之Vser處,(B) 電源供應器之電源線。 連接至充電電池 模組,須要注意 正負腳位 用Jumper接上, 可以讓VIN與Vser 用同一組電源 56 Servo Numbering 從背後看之後視圖 57 練習一: 機器人做體操 Frame 1 Frame2 Frame2 Frame3 58 Steps to design Frames Frame1建構過程 (a) 打開動作編輯器 (b) 動作編號及角度 (c) 上步驟之儲存檔案名稱 步驟(b)所設計的動作,需分別儲存至模組以便後續機器人開機後即可 使用該frame;或儲存至電腦以便轉寄他人使用或後續維護。重覆此動 作直至所有Frame皆設計完成。 59 Frame 2 Frame 3 60 控制程式 1 2 3 Peripheral myser1 As servorunnera @ 0 Sub Main () myser1.LoadFrame(1) 4 myser1.runallservo() 5 6 Pause 1000 myser1.LoadFrame(2) 7 8 9 myser1.runallservo() Pause 1000 myser1.LoadFrame(3) 10 11 myser1.runallservo() Pause 1000 12 13 14 myser1.LoadFrame(2) myser1.runallservo() Pause 1000 15 16 17 myser1.LoadFrame(1) myser1.runallservo() End Sub 61 練習二: 機器人前進 步態分析~ FRAME 0 (立正) 62 FRAME 41 (屈膝立正) 63 FRAME 42 (提左腳) 64 FRAME 43 (左腳向前提) 65 FRAME 44 (左腳著地) 66 FRAME 45 (提右腳-在後方) 67 FRAME 46 (右腳向前提) 68 FRAME 47 (右腳著地) 69 FRAME 48 (提左腳-在後方) 70 RoboTinno機器人控制程式的下載概略分為兩大步驟: (1) 先下載已事先存在Frame(或自行規劃新的Frame), (2) 然後下載innoBASIC程式 。 註:從事上述下載動作時,不要連接電池電源。完成上述下 載動作後,控制程式已在SC16記憶體上,可把USB傳輸線 從SC16拔開,再連接電池電源,機器人即可動作。 啟動動作編輯器前,請先確認 (1) 電腦與Servo Commander 16 ,SBC與伺服 機模組是否正確連接(電腦與SBC請以USB連 接,SBC與伺服機模組請以cmdBUS連接) 。 (2) 請確認伺服機模組提供的電壓,在伺服機所 能承受的電壓範圍內。 71 前進步行控制~ 步驟1:打開innoBasic,再打開動作編輯器。 p.s. 打開動作編輯器後,原先儲存的Frame會被清除。 72 步驟2:確認SC16沒有連接電池電源,且使用USB傳輸線將SC16與pc連接起來。 步驟3:此步驟是找到存於電腦中的FRAME之目錄所在位置。 (1) (2) (3) (4) 73 步驟4:此步驟是將檔案中的Frame下載到ServoCommander的記 憶體中。在動作檔案中、模組0中各點選一個Frame, 然後按下「>>」,此時下載後模組0中的Frame與延伸 檔會與動作檔案相同。 (1) (2) (3) (a) 下載Frame步驟 (b) 下載後模組0之Frame名稱 74 步驟5:重複步驟3,將所有動作檔案的FRAME下載至 ServoCommander記憶體中。 75 步驟6:將全部動作控制程式編譯、下載到ServoCommander 中。 步驟7:拔除 sc16的USB傳輸線後,接上伺服機電源後即可開始動作!! 76 Peripheral myser1 As servorunnera @ 0 Dim I As Byte Sub Main() '-----設定初始微調值----------myser1.SetPosOffset(0,0) myser1.SetPosOffset(1,0) myser1.SetPosOffset(2,0) myser1.SetPosOffset(3,0) myser1.SetPosOffset(4,0) myser1.SetPosOffset(5,0) myser1.SetPosOffset(6,0) myser1.SetPosOffset(7,0) myser1.SetPosOffset(8,0) myser1.SetPosOffset(9,0) myser1.SetPosOffset(10,0) myser1.SetPosOffset(11,0) myser1.SetPosOffset(12,0) myser1.SetPosOffset(13,0) myser1.SetPosOffset(14,0) myser1.SetPosOffset(15,0) '------------------------------RunFrame(0) '執行動作0 Pause 1000 GO_Forward(3) '執行前進3次(六步) End Sub 77 Sub GO_Forward(Byval X As Byte) RunFrame(41) Pause 800 RunFrame(42) Pause 250 For I = 0 To X RunFrame(43) Pause 180 RunFrame(44) Pause 180 RunFrame(45) Pause 180 RunFrame(46) Pause 180 RunFrame(47) Pause 180 RunFrame(48) Pause 180 Next RunFrame(42) Pause 250 RunFrame(41) Pause 700 End Sub 78 '======執行 "ID" 指定動作==== Sub RunFrame(Byval ID As Byte) myser1.LoadFrame(ID) '載入 "ID" 指定動作 myser1.runallservo() '執行動作 End Sub 79 教學活動 •組裝機器人過程與討論 • 由於組裝過程必須看組裝說明書及小組 集體討論,讓學生養成團隊合作精神。 • 在測試中,因為動作太過頻繁,以致於 伺服機燒壞掉好幾個,這是在購買時要特 別注意的伺服機的使用過熱問題,避免造 成不必要的損壞! --編輯完;待續! 80 Passion for Innovation 報告完畢,謝謝欣賞! 81