高明華 黎強 葉子恒 張寒儒 王珍 許麗金
關鍵詞: Arduino; Processing; 懸掛畫圖機器人; 機械運動; 程序設計; 本體結構
中圖分類號: TN830.1?34; TP193 ? ? ? ? ? ? ? ? 文獻標識碼: A ? ? ? ? ? ? ? ? ?文章編號: 1004?373X(2018)24?0153?04
Design of a hang?drawing robot based on Arduino and Processing
GAO Minghua, LI Qiang, YE Ziheng, ZHANG Hanru, WANG Zhen, XU Lijin
(School of Information Engineering, East China Jiaotong University, Nanchang 330013, China)
Abstract: In allusion to the problems of high prices, complex structures, implementation difficulty and limited function extensions of the current drawing robot, a hang?drawing robot based on the Arduino and Processing is designed. The hardware and software selection, program design, and body structure of the robot are described in detail. The robot does regular mechanical movements by controlling a hanging pen to draw a picture loaded to the upper computer by users. The robot can draw on various vertical planes, and the drawing scope can be adjusted according to the users′ requirements. The results of several experiment verifications show that the robot can draw a complete picture, run stably, and has a certain application prospect.
Keywords: Arduino; Processing; hang?drawing robot; mechanical movement; program design; body structure
機器人是一種綜合類的高新技術產品,結合了多學科的先進技術,如電子、機械、計算機、藝術、機構學等。機器人的普及和應用很大程度地提高了人們的生活水平,改善了人們的生活質量。
人類最初發明的機器人被稱為“機械手”,目的是用其代替人勞動,從事一些高危、艱苦、單調的工作,改善人們的勞動條件。隨著電子信息技術的不斷進步,更多種類的機器人被研發出來,適應人們的各種需求,并在越來越多的領域“嶄露頭角”。如今市面上出現各式各樣的機器人開始進軍藝術領域,設計者們將藝術與電子科學技術相結合,碰撞出了激烈火花。
目前,許多不同類型的繪畫機器人已被研制出來,如通過神經網絡不斷學習并模仿人類動作繪制人類肖像畫的機械手臂,可在任何表面進行繪畫的mDrawBot機器人,做成智能小車可在平滑地面作畫的3D打印機器人,還有像街頭藝術家能“主觀”地進行繪畫并實現不同畫風的智能繪畫機器人等。但這些機器人都存在一定的缺憾,如價格高,結構復雜難以實現,功能擴展有限等。為此,本文設計的繪畫機器人在很多方面具有優勢:整個系統成本低廉;繪圖完整,可根據用戶所提供的圖片,完整繪制出來,并且根據繪圖像素調整畫風,增大像素比例可以達到素描的效果;可在許多垂直平面上繪畫,如在黑板、墻壁、玻璃等垂直表面作畫;機器部件少,組裝相對簡單;重量輕,移動便捷。
1.1 ?Arduino Uno板
本設計所使用的控制板為Arduino Uno板(下文簡稱Uno板)。它是一塊基于開放原始代碼的Simple I/O 平臺,該平臺由兩部分組成:硬件(包括微處理器、電路板等)和軟件(編程接口和語言)。本設計選擇Uno板的主要原因如下:
1) 開源的軟硬件平臺,模塊化,便于進行二次開發。
2) 使用廉價的微處理控制器。
3) 支持ISP線上燒錄,可以通過串口或USB轉RS 232線更新固件。可采用USB 接口供電,不外接電源,也可以使用外部DC 9 V輸入。
4) 支持多樣的互動程序,如Processing,FLASH,C,VVVV等。
1.2 ?Processing
本設計使用Processing軟件搭建的界面作為上位機。Processing是 Java 語言的延伸,并支持許多現有的 Java 語言架構,不過Processing將Java在語法 (syntax) 上簡化,但同樣可以完整地完成Java程序語言編程,具有許多貼心及人性化的設計。其源代碼是開放的,用戶可依照自己的需要自由裁剪出最合適的使用模式。
Processing可使用戶直接專注于圖形和交互的程序,比如建立類的路徑和編譯參數,或者建立串口和圖形環境這樣輔助性的圖形環境,非常適合無太多編程經驗的設計師和藝術家使用。
1.3 ?總體方案設計
Processing的上位機界面的控制窗口主要包含以下部分:圖片信息、參數配置、軌跡追蹤、命令存儲。通過上位機載入一張圖片,選取圖片的畫圖區域,設定好相應的參數后加載到Uno板上。
然后,從串口傳輸過來的參數,由Uno板分析處理后,通過數據輸出接口發送至L293D步進電機驅動模塊的數據接收接口。由驅動板驅動電機轉動,通過轉動電機帶動卷簾機械結構的懸臂進行規律的運動。所謂的規律的運動就是讓筆畫波形,畫的波形密度越大表示像素點越高。
繪畫前,要先將機器人的貢多拉裝置(即用來固定畫筆的裝置)手動移到實際的畫圖零點,也可通過軟件控制筆移動到畫圖零點,但當設定的參數與實際機器人大小存在誤差時,則可能造成畫圖偏離。
最后,由上位機來控制機器人繪畫的開始、暫停和結束。總體系統功能框圖如圖1所示。
本系統的機器人實體結構主要由四部分組成:畫板、卷簾機械結構、貢多拉裝置和畫筆。下面分別介紹各部分的材料選取、結構設計以及功能。
2.1 ?畫 ?板
本設計采用實木畫板,畫板材料的選定可為多樣性,可以是白板、磁板甚至墻壁。畫板的每邊應比畫紙多出90 mm的長度,為此,對于畫板需要做兩點:測量尺寸、找到零點。畫板示意圖如圖2所示。
根據畫板示意圖,在畫板上標記相應的線。為了測量精確,在測量時讓水平線盡可能水平,垂直線盡可能垂直。若標記不準確,畫圖時將會出現筆畫偏移、線條扭曲或圖片拉伸等情況。
畫板的寬度是畫紙理想中的最大寬度,繪畫的大小取決于畫板的寬度,同時也取決于在軟件中設置的畫紙的大小。
2.2 ?卷簾機械結構
卷簾機械結構相當于機器人的手臂,是整個系統結構的關鍵所在。
首先,將步進電機用電機支架固定在畫板上,使其中心軸盡可能靠近畫板表面,并且保證在同一水平線上。其次,將適配卷珠簾拉繩的鏈輪齒推入步進電機的5 mm直徑軸上。
卷珠簾拉繩的長度選取決定了畫圖的范圍,拉繩兩頭分別綁定貢多拉裝置和平衡重物。使用砝碼作為平衡重物,每邊砝碼150 g。實際上重物的重量并無嚴格限制,該機器不需要絕對的平衡,只要能拉穩貢多拉裝置即可,重物的作用只是讓貢多拉在機器畫圖區域的頂上方中間自然懸掛。
2.3 ?貢多拉裝置
貢多拉裝置相當于機器人的手掌,是一種用來固定筆的裝置。該裝置使用3個6003Z的軸承堆疊在一起,通過圓筒連接,使畫筆可準確地保持在兩根卷珠簾拉繩聚合處,并且保證開合角可隨位置的改變而變化。貢多拉的圓筒握筆一定要穩,且在繪畫時只露出一點筆徑,保證貢多拉裝置平衡,避免抖動。
2.4 ?畫 ?筆
本設計對畫筆的選擇無硬性要求,但需要注意的是,筆徑的大小決定了一個像素由多少波形組成。如果像素是20 mm2,而筆徑是1 mm,那么該像素內最大只能容納20條線。筆徑設置的越細,一個像素填充的線條越多。如果開始部分筆徑大小被設置成0.6 mm,結尾部分是2.0 mm,增量是0.1 mm,那么機器以0.6 mm寬度畫出第一個像素,每次增長0.1 mm,一直增加到2 mm。機器會基于設定的筆徑大小,盡可能地以最大密度去作畫。
3.1 ?Arduino程序設計
3.1.1 ?主程序Polargraph_Server_a1
主程序主要進行全局變量的定義以及變量初始化。包含步進電機對象、E2PORM地址、畫板大小、提筆隨動系統、繪圖方向、像素大小、電機轉速以及定義串口的波特率為57 600 bit/s。
3.1.2 ?控制筆移動PenLift
機器人會核對全局布爾變量“IsPenUp”的值(“true”或“fault”)來決定筆的移動方向,如果為“true”,那么機器認為筆已經向上移動,再向機器發送“Pen Up”或“Pen Lift”的筆移動命令 (“C14,END”)也將無效。如果正確的“PenUp”命令被接收,在這條命令中包含筆的位置信息,如(“C14,150,END”),然后全局“Up”位置的變量被更新,并且貢多拉運動到該位置,即使它已經是“Up”狀態。自然而然的,如果向上的位置發生變化,即使它之前已經產生了向上的動作,也會繼續向上。控制畫筆移動流程圖如圖3所示。
3.1.3 ?畫圖像素設定Pixel
這是polargraph服務器程序的核心文件之一,包含生成和繪制方波,以及涂鴉像素風格的重要例程。像素用密度來表示,定義為“BRIGHTNESS”,其中0為黑色,255是白色,密度可在0~255范圍內調整。如將密度設置為“DARKNESS”,則此時的0表示白色,而隨著數值增大則變暗。
由于紙是白色的,而且油墨是深色的,該密度值被用于控制一個像素內能繪制多少波形。因此,0表示無油墨,用直線代替該處的像素,灰度值低;100意味著像素不為零,所以用一定頻率的方波表示該點的像素,顏色較深,灰度值高。編程時還必須定義繪制波形的方式。繪制方波設定了4個筆移動方向:東南方向、西北方向、西南方向、東北方向;涂鴉像素風格設定為在一定范圍內隨機繪制線條。畫圖像素設定流程圖如圖4所示。
3.1.4 ?執行文件Exec
在該文件中包含一些最通用的畫圖命令,但只有直接調用的方法,復雜結構或轉換的例程不包括在內。如直接調用控制筆移動的方法、像素描述的方法、電機轉速以及筆位置判斷的方法。同時,讀取E2PORM中畫板的規格,若當前值與存儲器中的值不一致,則將值重新寫入E2PORM中。
3.2 ?Processing程序設計
上位機的設計是為了實現對畫圖機器人的實時控制,控制鍵是參數化、可調的,分為兩類:一類是只與控制軟件相關,比如圖片加載;另一類會發送命令到機器上。
Processing流程圖如圖5所示。
Uno板與上位機正常通信后,在上位機中根據實際畫板大小設定相應參數并保存,然后加載圖片,選定畫圖區域,調整像素亮度和比例,設置變頻等幅值方波的畫圖波形以及從右上角開始作畫的方式,傳送命令。對于機器人本體采用A3紙張,0.8 mm的馬克筆。機器畫圖過程中工作正常,運行穩定,圖6為機器人畫圖與原圖的對比,兩者比例一致,圖像輪廓清晰,內容還原度高。
懸掛畫圖機器人是一個結構相對簡單的系統,主要涉及硬件設計、跨界軟件編程、機械結構設計三個方面。該設計的意義在于將一門邊緣的藝術注入現代的科技元素,呈現出一幅具有工業4.0氣息的美術作品,并且該機器人的出現也為市場帶來新的機遇和挑戰,具有較大的應用價值。
參考文獻
[1] 蔡睿妍.Arduino的原理及應用[J].電子設計工程,2012,20(16):155?157.
CAI Ruiyan. Principle and application of Arduino [J]. Electronic design engineering, 2012, 20(16): 155?157.
[2] 楊繼志,楊宇環.基于Arduino的網絡互動產品創新設計[J].機電產品開發與創新,2012,25(1):99?100.
YANG Jizhi, YANG Yuhuan. Arduino?based interactive product innovation [J]. Development & innovation of machinery & electrical products, 2012, 25(1): 99?100.
[3] BENDER P, KUSSMANN K. Arduino based projects in the computer science capstone course [J]. Journal of computing sciences in colleges, 2012, 27(5): 152?157.
[4] 李茂寧.數字繪畫與傳統繪畫比較研究[J].藝術教育,2012(11):119?120.
LI Maoning. Comparative study of digital painting and traditional painting [J]. Art education, 2012(11): 119?120.
[5] 李路希.電子時代下的繪畫藝術發展[J].大眾文藝,2014(3):53.
LI Luxi. The development of painting art in the electronic age [J]. Art and design, 2014(3): 53.
[6] 鄧知輝.基于Arduino控制平臺的家居機器人設計與實現[J].信息通信,2015(10):64?66.
DENG Zhihui. Design and implementation of furniture robot based on Arduino control platform [J]. Information & communications, 2015(10): 64?66.
[7] 劉南君,毛培宏.基于Arduino Mega2560單片機的簡易智能割草機器人的設計與實現[J].安徽農業科學,2012,40(36):17899?17901.
LIU Nanjun, MAO Peihong. Design of simple intelligent grass?cutting robot based on Arduino Mega2560 [J]. Journal of Anhui agricultural sciences, 2012,40(36): 17899?17901.
[8] 于強,許強,楊為民,等.基于Arduino的兩輪自平衡機器人設計與實現[J].電腦知識與技術,2014,10(34):8332?8334.
YU Qiang, XU Qiang, YANG Weimin, et al. Design and implementation of self?balancing two?wheeled robot based on Arduino [J]. Computer knowledge and technology, 2014, 10(34): 8332?8334.
[9] OXER J, BLEMINGS H. Practical Arduino: cool projects for open source hardware [M]. New York: Apress, 2009.
[10] 孔晶晶.基于Processing的互動媒體設計研究[D].無錫:江南大學,2009.
KONG Jingjing. Research on interactive media design based on Processing [D]. Wuxi: Jiangnan University, 2009.