
國立中山大學電機工程學系 碩士論文 Department of Electrical Engineering National Sun Yat-sen University Master Thesis 機械手臂控操圖形化介面 A Visual Programming Editor for Industrial Robots 研究生: 張文綺 Wen-Chi Chang 指導教授: 黃國勝 博士 Dr. Kao- Shing Hwang 中華民國 106 年 7 月 July 2017 論文審定書 i 摘要 圖形式程式設計語言與一般程式語言相比可以使得初學者在學習上的障礙 大幅減少,Blockly 是以積木為導向的程式語言,在編輯過程中是用拖拉積木方 塊的方式來完成程序編輯,完全不需要手寫程式,使對程式語法熟悉度不夠的使 用者在程序編輯上不會有很大的困難度,這樣的方式可以讓使用者輕易上手且較 快速地適應。Lua 是一個可嵌入的擴展式腳本語言,Lua 是所有腳本語言體積最 小且速度最快的,因此 Lua 最適合拿來嵌入在應用程序中。本論文透過 Google 的 Blockly 圖形化介面、Lua、與業者所生產的機械手臂控制語言軟體相結合, 使用者可以通過提供的積木拖拽組合成程式碼,使用網路通訊將資料傳送給機械 手臂控制軟體,在機械手臂控制軟體中展示出該程序的運動效果。 關鍵字:Blockly、圖形化介面、積木導向、Lua、腳本語言 ii Abstract A graphical programming language can significantly relax the effort in learning programming languages for the beginners, compared with the normal programming language. Blockly is a building-block oriented programming language so as that learners drag the building blocks to complete programs in the editing process, instead of hand coding. It can reduce a lot of difficulties for users not familiar with program syntax and allow them to get started easily and quickly. Lua is an embeddable extended scripting language. It is the smallest and fastest one in all scripting languages, hence it is best for embedding in programs of the applications. In this thesis, through the combination of Google's Blockly modules, Lua, and robot control language software produced by ITRI , a user can drag and place building blocks to complete programming codes in terms of graphic user interface. The interpreted codes send commands and data to a robot controller to manipulate the robot/via the internet. Experiments have been conducted to impose the proposed application on a six degree-of-freedom industrial robot manufactured by a research institute. Keywords: Blcokly, Graphical user interface, Block-oriented, Lua, Script language iii 目錄 論文審定書 .................................................................................................................... i 摘要................................................................................................................................ ii Abstract ....................................................................................................................... iii 目錄............................................................................................................................... iv 圖次................................................................................................................................ v . 導論 .......................................................................................................................... 1 動機 ................................................................................................................ 1 論文架構 ........................................................................................................ 2 . 背景介紹 ................................................................................................................ 3 2.1 MIT Scratch ...................................................................................................... 3 2.2 Google Blockly .................................................................................................. 4 2.3 腳本語言 ........................................................................................................ 5 2.3.1 Lua 腳本語言 ....................................................................................... 6 . 設計方法 ............................................................................................................... 8 3.1 Blockly 積木方塊設計 ..................................................................................... 8 3.1.1 Blockly 積木方塊創建 ......................................................................... 8 3.1.2 導入 Blockly 圖形化介面 ................................................................. 13 3.2 Lua 與 C++整合應用 ...................................................................................... 14 3.2.1 Lua 嵌入應用程序 ............................................................................. 14 3.2.2 Lua 與 C++交互 ................................................................................. 15 實驗結果 ............................................................................................................... 20 4.1 Blockly 圖形化程式設計的實現 ................................................................... 20 4.2 實作結果 ...................................................................................................... 23 結論與未來展望 ..................................................................................................... 32 5.1 結論 ............................................................................................................... 32 5.2 未來展望 ....................................................................................................... 32 參考文獻 ..................................................................................................................... 33 iv 圖次 圖 2.1 Scratch 操作畫面................................................................................................ 3 圖 2.2 Google Blockly 通過拖動積木方塊搭建程式 .................................................. 5 圖 2.3 把積木方塊搭建的程式轉譯成 Lua 程式碼 ................................................... 5 圖 3.2 Blockly 創建機械手臂控制語言類型的積木圖形程式碼 ............................... 9 圖 3.3 積木方塊圖形為圖 3.1 的程式碼所生成的................................................... 10 圖 3.4 生成積木方塊 Lua 語言的程式碼 ................................................................. 11 圖 3.6 透過 Block Facktory 網站創建積木方塊 ....................................................... 12 圖 3.7 按下鏈結鍵後,會出現存取積木圖形網址的對話框.................................. 12 圖 3.8 添加新創建的積木方塊到左方列表中.......................................................... 14 圖 3.9 Lua 與 C++之間的通信方式 ........................................................................... 16 圖 3.10 C++函數被調用時的處理流程 ..................................................................... 17 圖 3.11 Lua 外部解釋器執行流程 ............................................................................. 18 圖 4.1 車子移動函式的積木方塊.............................................................................. 21 圖 4.2 使用者可以選擇繁體中文語言...................................................................... 21 圖 4.3 車子運動的簡單程序示例.............................................................................. 22 圖 4.4 車子運動的簡單程序中文示例...................................................................... 22 圖 4.5 車子運動程序的 Lua 程式碼 ......................................................................... 23 圖 4.6 機械手臂函式的積木方塊............................................................................... 24 圖 4.7 使用者可以把介面更改為繁體中文............................................................... 2 5 圖 4.8 機械手臂運動程序示例................................................................................... 26 圖 4.9 機械手臂運動程序中文示例........................................................................... 27 圖 4.10 機械手臂運動程序的 Lua 程式碼 ............................................................... 28 圖 4.11 使用者傳送指令流程 .................................................................................... 29 v 圖 4.12 Server 端與 Client 端未連線時的狀態 ......................................................... 30 圖 4.13 Server 端與 Client 端連線後的狀態 ............................................................. 30 圖 4.14 機械手臂移動過程........................................................................................ 31 vi . 導論 動機 對於完全沒有程式相關背景的使用者來說傳統程式語言的設計並沒有那麼 的親切,所以使用圖形化程式語言,由各式各樣的圖形組合來建構出一個運動程 序,可以使得初學者能夠快速上手、學習速度加快,也讓使用者在使用上操作方 便,藉由拖拽模組並連接起來以實現自己想要的動作。近年來很多軟體都為使用 者開放了指令碼介面,使得指令碼語言不只是用在開發上,同時還可以讓使用者 配置和定義個性化的應用和服務,而開發者也不需要再為每次增加新功能而重新 編譯。腳本語言相對於 C、C++、J AVA 等語言來說是一種簡便、敏捷且方便使 用的解釋型語言,目的是使得前端開發者能夠迅速地完成程序撰寫。腳本語言的 特點:程式碼的編寫比較簡單;容易學習;容易著手;不需要編譯,由解釋器解 釋運行,獨立於任何其他的應用程序執行。動態腳本語言目前在工商產業領域有 很多都得到廣泛應用,其中以 JavaScript、Python、Lua 的應用範圍最廣。本研究 是採用 Lua 腳本語言,Lua 是當前執行速度最快的嵌入式動態腳本語言,Lua 的 設計主旨是為了很容易嵌入到其他應用程序中。本研究使用 Google 研發的 Blockly 開源視覺化程式設計技術結合 Lua 嵌入式動態腳本語言以生產廠商所界 定機械手臂控制軟體函式庫為底層,通過 Blockly 圖形化程式設計介面產生 Lua 程式碼,並藉由 Socket 通訊傳送指令給機械手臂控制軟體函式,實現 Blockly 中 1 構建的運動效果。 論文架構 這篇論文共分為五個章節,第二章節為背景介紹,簡短的介紹 MIT 發布的 Scratch、Google 開發的Blockly和 Lua 腳本語言。第三章節為介紹本論文在 Blockly 圖形化介面上的積木方塊是如何設計及如何使 Lua 與 C++結合。第四章節為介紹 Blockly 的應用與實作結果。最後,第五章節為結論與未來展望。 2 . 背景介紹 2.1 MIT Scratch Scratch [1] [2] 是由美國麻省理工學院於 2007 年公開的一套圖形化程式語言 設計軟體,可以直接在線上編寫程式,也可以免費下載到電腦上編寫,最新推出 的版本為 2.0 版。Scratch 是具教育性質的圖形化機器人程式語言編輯工具,它的 特點是將難理解的程式語言指令透過積木方塊堆疊的方式呈現。在程序設計的過 程中,完全不需要寫程式碼,只要利用滑鼠拖曳,將積木區塊中的積木方塊拖拉 到程式編輯區塊中堆疊起來,即可完成程式的撰寫工作,還可以從執行結果區塊 中觀看程式的執行狀況,如圖 2.1 所示。這樣簡單的操作介面能夠讓完全沒有程 式背景的初學者輕易上手,進而提高程式語言的學習動力。 執行結果區塊 程式編輯區塊 積木 角色區塊 區塊 圖 2.1 Scratch 操作畫面 3 Scratch 在積木區塊部分有 8 種不同類型的積木,使用者在操作過程中可以 進行邏輯思維、流程控制及事件驅動等訓練,提升程式設計的能力。Scratch 可 以讓使用者透過這些不同類型的積木來設計音樂、動畫、遊戲等。 本研究是使用類似於 Scratch 的 Google Blockly,Google Blockly 跟 Scratch 一樣都是用積木方塊拖拉的方式來搭建程序,Google Blockly 優於 Scratch 之處 主要有下列三個: 一、Google Blockly 可以把積木方塊搭建的程序轉換成多種程式語言,因此 可以把積木方塊搭建的程序與其它程式語言做對照,讓使用者可以拿來學習與使 用,而 Scratch 沒有這個功能,只能學習如何用積木方塊搭建程序。 二、Google Blockly 在開發環境上比 Scratch 來得有彈性,Google Blockly 可 以讓開發者針對需求自行創建個性化的積木。 三、Scratch 所儲存的檔案格式為.sb2,當要開啟此檔案時,只能藉由 Scratch 才能開啟儲存的檔案,而且 Google Blockly 可以將編輯好的程序以 XML 或 Lua 的檔案格式儲存到本機端,因此檔案不只可以在 Google Blockly 介面上開啟,也 可以在別處直接開啟,提升檔案儲存及修改的彈性。 2.2 Google Blockly Google 開發的 Blockly [3] [4] 是以圖形化積木方塊為介面,類似美國麻省理 工學院發布的 Scratch,於 2012 年 5 月公開。Blockly 是由 HTML、CSS 和 Javascript 組合而成的,以可視化積木方塊拖拉的方式來進行程序編寫的工作,使學習者大 4 幅減低了入門學習的門檻。使用者可以在 Blockly 網頁上透過拖動積木方塊將圖 形物件拼貼起來創建出特定功能的運動程序,在編寫過程中不需要顧慮語法和結 構的嚴苛要求,讓使用者可以把精力專注在實現設計目標上。Blockly 可以將使 用者拖拉圖形元件拼貼起來搭建的程式轉換成 JavaScript、Python、Dart、PHP、 Lua 和 xml。本研究只將 Blockly 用圖形元件搭建的程式轉換成 Lua 腳本語言。 如圖
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages40 Page
-
File Size-