陳玉敏,謝 瑋,孟憲民,楊東岳
(1.哈爾濱工業(yè)大學(xué)(威海)信息與電氣工程學(xué)院,山東 威海 264209;2.山東卡爾電氣股份有限公司,山東 威海 264209)
?
智能寫(xiě)字機(jī)器人設(shè)計(jì)
陳玉敏1,謝瑋1,孟憲民2,楊東岳1
(1.哈爾濱工業(yè)大學(xué)(威海)信息與電氣工程學(xué)院,山東 威海264209;2.山東卡爾電氣股份有限公司,山東 威海264209)
設(shè)計(jì)了一種兩自由度寫(xiě)字機(jī)器人,可以很方便地完成在平面上的書(shū)寫(xiě)繪畫(huà)任務(wù);可以把在計(jì)算機(jī)輸入的文字通過(guò)控制算法和硬件電路用步進(jìn)電機(jī)帶動(dòng)寫(xiě)字筆在紙面自動(dòng)地描寫(xiě)出來(lái);上位機(jī)選用計(jì)算機(jī)作為主機(jī),采用Arduino系統(tǒng)作為從機(jī);在計(jì)算機(jī)上將輸入的文字轉(zhuǎn)換成坐標(biāo)形式的G代碼,在通過(guò)串口發(fā)送給下位機(jī)控制器,下位機(jī)控制器采用直線插補(bǔ)和圓弧形插補(bǔ)算法,輸出控制脈沖和方向電平控制步進(jìn)電機(jī)前進(jìn)或者后退;步進(jìn)電機(jī)是由脈沖控制的,每發(fā)來(lái)一個(gè)脈沖就前進(jìn)一步,實(shí)現(xiàn)了對(duì)距離的精確控制;還可以拓展一軸,加入Z軸理論上可以實(shí)現(xiàn)3D打印功能,把寫(xiě)字筆換成雕刻刀或者是激光頭可以雕刻立體作品,拓展功能豐富。
寫(xiě)字機(jī)器人;Arduino系統(tǒng);插補(bǔ)算法;精確控制
機(jī)器人方向作為高科技的重要研究領(lǐng)域,已經(jīng)成為科技進(jìn)步中不可缺少的重要裝備。各智能機(jī)器人已應(yīng)用到實(shí)際生活中,相關(guān)研究日益深入[1-2]。隨著機(jī)器人技術(shù)廣泛應(yīng)用,各高校陸續(xù)開(kāi)展了機(jī)器人課程的教學(xué),設(shè)計(jì)一種可以在平面書(shū)寫(xiě)繪畫(huà)的機(jī)器人應(yīng)用于教學(xué)與科研中。
寫(xiě)字機(jī)器人整體控制系統(tǒng)由計(jì)算機(jī),控制器,電機(jī)驅(qū)動(dòng)電路和電機(jī)四部分組成。計(jì)算機(jī)作為輔助控制器,主控制器由Arduino系統(tǒng)構(gòu)成,執(zhí)行環(huán)節(jié)則由電機(jī)組成。
計(jì)算機(jī)作為上位機(jī)主要將輸入的文本信息轉(zhuǎn)化為G代碼,軟件為Inkscape,轉(zhuǎn)化后文件為.nc文件,用記事本方式打開(kāi)看到n組坐標(biāo),也就是文本信息的坐標(biāo)值。然后使用上位機(jī)軟件Grbl Controller與下位機(jī)通信,將生成的G代碼通過(guò)串口發(fā)送給單片機(jī),使之執(zhí)行目標(biāo)文本的坐標(biāo)信息。Grbl Controller不僅能將G代碼發(fā)送給單片機(jī),還能在可視化界面上模擬當(dāng)前機(jī)器人寫(xiě)字進(jìn)程。
下位機(jī)中單片機(jī)系統(tǒng)通過(guò)串口接收上位機(jī)發(fā)送的G代碼,通過(guò)內(nèi)部程序?qū)代碼識(shí)別轉(zhuǎn)換,再經(jīng)逐點(diǎn)比較法的直線插補(bǔ)和圓弧插補(bǔ)程序及電機(jī)控制程序控制電機(jī)狀態(tài)。電機(jī)是機(jī)器人動(dòng)力部分,由控制器來(lái)控制電機(jī)正或反轉(zhuǎn)實(shí)現(xiàn)機(jī)器人末端寫(xiě)字筆的左右或者前后平移和轉(zhuǎn)動(dòng),實(shí)踐中控制每輸出一個(gè)控制脈沖,步進(jìn)電機(jī)就前進(jìn)或后退一步。
寫(xiě)字機(jī)器人的執(zhí)行器選用步進(jìn)電機(jī)加絲杠組合實(shí)現(xiàn)對(duì)行走距離的精確把握??刂破鬏敵隹刂泼}沖使步進(jìn)電機(jī)動(dòng)作,步進(jìn)電機(jī)通過(guò)聯(lián)軸器連絲杠,給步進(jìn)電機(jī)53個(gè)脈沖時(shí),絲杠前進(jìn)1 cm,如此可精確地控制絲杠前進(jìn)的距離。當(dāng)步進(jìn)電機(jī)轉(zhuǎn)過(guò)一個(gè)步距角時(shí),絲杠前進(jìn)或者后退一小段位移,所以只需要計(jì)算好輸出脈沖即可實(shí)現(xiàn)對(duì)距離的精確控制。
下位機(jī)采用Arduino UNO作為控制器。使用的AVR微控制器有20個(gè)I/O引腳且性價(jià)比高。主Arduino使用標(biāo)準(zhǔn)的USB數(shù)據(jù)線連接到計(jì)算機(jī)上,不僅提供到PC的串行連接,還包括操作所需的5 V電源[3]。UNO處理器核心是ATmega328,Arduino通過(guò)6路PWM引腳輸出PWM方波,通過(guò)6路數(shù)字引腳輸出數(shù)字電平或數(shù)字式脈沖信號(hào)。開(kāi)發(fā)環(huán)境為Arduino IDE[4]。
步進(jìn)電機(jī)運(yùn)行要把具有足夠功率和頻率的電脈沖按選定的順序加給各控制繞組。脈沖分配器接收控制脈沖信號(hào)和方向電平,并按步進(jìn)電機(jī)的分配方式要求的狀態(tài)順序產(chǎn)生各相控制繞組信號(hào),脈沖分配器輸出信號(hào)數(shù)目與電機(jī)相數(shù)相同。每來(lái)一個(gè)控制脈沖,脈沖分配器的輸出信號(hào)中至少有一個(gè)變化,輸出狀態(tài)就轉(zhuǎn)換一次,步進(jìn)電機(jī)轉(zhuǎn)速的高低、升降、起停完全取決于控制脈沖狀態(tài)??刂泼}沖發(fā)生器在Arduino的IDE里編寫(xiě)程序,使Arduino產(chǎn)生控制脈沖信號(hào)和方向電平。步進(jìn)電機(jī)驅(qū)動(dòng)模塊采用A4988。A4988是一款帶過(guò)流保護(hù)和轉(zhuǎn)換器的DMOS微步驅(qū)動(dòng)器,在“步進(jìn)”中輸入一個(gè)脈沖,即可驅(qū)動(dòng)電動(dòng)機(jī)產(chǎn)生微步。只要控制STEP和DIR就可以了,STEP是控制脈沖輸入端,DIR是方向電平輸入端;3個(gè)模式選擇端MS1、MS2、MS3全部接地也就是步進(jìn)電機(jī)的全步進(jìn)模式,如果要求更高的精度,可通過(guò)選其他模式,如選擇1/4步進(jìn)模式,電機(jī)轉(zhuǎn)一圈就要送800個(gè)微步才能完成。控制脈沖發(fā)生器和驅(qū)動(dòng)器的結(jié)構(gòu)示意圖如圖1所示。
圖1 控制脈沖發(fā)生器和驅(qū)動(dòng)器的結(jié)構(gòu)
CDS5500舵機(jī)控制電路中采用異步串行通信方式,通過(guò)UART異步串行接口進(jìn)行統(tǒng)一控制,對(duì)舵機(jī)控制可采用計(jì)算機(jī)—控制板—舵機(jī)的控制形式。在計(jì)算機(jī)上將處理好的目標(biāo)坐標(biāo)通過(guò)串口發(fā)送到控制板中的AVR單片機(jī)上,再通過(guò)UART異步串行接口向舵機(jī)發(fā)送控制指令,使舵機(jī)根據(jù)要求執(zhí)行動(dòng)作。其中UART異步串行接口部分中,CDS5500兼Robotis Dynamixel通訊協(xié)議,單片機(jī)使用RS232通信協(xié)議,通過(guò)接口部分實(shí)現(xiàn)通信協(xié)議轉(zhuǎn)換。采用控制程序?qū)ART異步串行接口進(jìn)行時(shí)序控制,實(shí)現(xiàn)半雙工串行總線通訊。
寫(xiě)字機(jī)器人執(zhí)行機(jī)構(gòu)中步進(jìn)電機(jī)使用脈沖控制,設(shè)置控制脈沖與步進(jìn)電機(jī)前進(jìn)距離的對(duì)應(yīng)方式。當(dāng)給出一條直線起點(diǎn)和終點(diǎn)的坐標(biāo)時(shí),通過(guò)直線插補(bǔ)算法控制器輸出控制脈沖可以使步進(jìn)電機(jī)帶動(dòng)負(fù)載輕松地完成直線的繪制任務(wù)。
計(jì)算機(jī)上先將文本文字轉(zhuǎn)換成坐標(biāo),首先使用矢量化圖形處理軟件Inkscape,在其位圖臨摹算法中首先讀取輸入文字編輯框中的字符區(qū)不同位置上像素顏色信息,如果讀取出來(lái)信息不是背景默認(rèn)白色,則在顯示點(diǎn)陣編輯框中相應(yīng)的位置點(diǎn)劃出一個(gè)實(shí)心圓;如果讀取信息為白色,則繼續(xù)掃描下一個(gè)位置,不斷執(zhí)行,在顯示點(diǎn)陣的編輯中輸出相應(yīng)字符的點(diǎn)陣圖。在Inkscape中首先設(shè)置圖形尺寸單位使用毫米,然后輸入文字,對(duì)象轉(zhuǎn)化成路徑,提取位圖輪廓,最后就可以導(dǎo)出.nc的坐標(biāo)文件。利用這個(gè)坐標(biāo)文件指導(dǎo)控制器輸出控制脈沖控制步進(jìn)電機(jī)。像素掃描算法流程圖2所示。
圖2 像素掃描算法流程圖
機(jī)器人直線插補(bǔ)算法中采用逐點(diǎn)比較法。直線是構(gòu)成字體的基本要素,機(jī)器人末端負(fù)載畫(huà)筆不能嚴(yán)格沿著直線運(yùn)動(dòng),只能使用折線軌跡進(jìn)行逼近。插補(bǔ)就是根據(jù)寫(xiě)字要求在軌跡的起點(diǎn)和終點(diǎn)計(jì)算出若干個(gè)中間點(diǎn)坐標(biāo),插補(bǔ)中間點(diǎn)精度直接影響控制速度。逐點(diǎn)比較法中每一步都要將當(dāng)前瞬時(shí)坐標(biāo)同規(guī)定的圖形軌跡相比較,然后判斷其偏差,再?zèng)Q定下一步,如果當(dāng)前點(diǎn)走到規(guī)定圖形外面,那下一步就要往里面走;如果當(dāng)前點(diǎn)在圖形里面,那么下一步就要往外面走,縮小偏差得出一個(gè)十分近似指定圖形的軌跡,最大偏差不超過(guò)一個(gè)脈沖當(dāng)量[5-6]。
逐點(diǎn)比較法應(yīng)用在直線插補(bǔ)過(guò)程中,步進(jìn)電機(jī)每步都要進(jìn)行偏差判別、坐標(biāo)進(jìn)給、新偏差計(jì)算和終點(diǎn)比較4個(gè)步驟。第一步判別,根據(jù)偏差值確定寫(xiě)字筆位置是在直線的上方(或線上),還是在直線的下方;第二步進(jìn)給,根據(jù)判別的結(jié)果,決定控制器控制哪個(gè)坐標(biāo)(x或y)移動(dòng)一步;第三步運(yùn)算,計(jì)算出筆移動(dòng)后的新偏差,提供給下一步作判別依據(jù),遞推下去,當(dāng)開(kāi)始加工時(shí),將寫(xiě)字筆移到加工起點(diǎn),設(shè)開(kāi)始加工點(diǎn)的;第四步比較,在計(jì)算偏差同時(shí),還要進(jìn)行一次終點(diǎn)比較,以用來(lái)確定是否到達(dá)了終點(diǎn)。如果已經(jīng)到達(dá),就不再進(jìn)行運(yùn)算,并發(fā)出停機(jī)或轉(zhuǎn)換新程序段的信號(hào)。其中,遞推次數(shù)由計(jì)數(shù)變量,決定,每完成一次插補(bǔ)計(jì)算,E自減1,當(dāng)計(jì)數(shù)變量E減為0時(shí),完成插補(bǔ)程序,程序結(jié)束跳出,等待進(jìn)行下一次插補(bǔ)計(jì)算。對(duì)于不同象限,不同走向的直線其插補(bǔ)計(jì)算公式和控制器發(fā)出的控制方向都是不同的,需要將坐標(biāo)和進(jìn)行方向根據(jù)象限等的不同而進(jìn)行變換。遞推直線插補(bǔ)算法如圖3所示。
圖3 直線插補(bǔ)過(guò)程
機(jī)器人利用圓弧插補(bǔ)算法解決文字書(shū)寫(xiě)中撇和捺的曲線。寫(xiě)出一段圓弧,把寫(xiě)字點(diǎn)到圓心的距離和該圓的名義半徑相比計(jì)算偏差。假設(shè)一段圓弧位于第一象限時(shí)的情況,圓弧起點(diǎn)為E,終點(diǎn)為A。選計(jì)算偏差為Fi,j= xi2-x02+ (yj2-y02)利用偏差判別式,即獲得近似圓弧。若點(diǎn)P在圓弧外或圓弧上,即步進(jìn)電機(jī)帶動(dòng)寫(xiě)字筆向圓內(nèi)走一步;如果位于圓弧內(nèi)側(cè),則步進(jìn)電機(jī)帶動(dòng)寫(xiě)字筆向圓弧外走一步。采取遞推法推算下一步新的計(jì)算偏差,這樣用近似折線代替了圓弧[7-8]。其中,遞推次數(shù)變量,為起點(diǎn)坐標(biāo),為終點(diǎn)坐標(biāo)。圓弧形插補(bǔ)算法的算法流程如圖4所示。
圖4 圓弧形插補(bǔ)過(guò)程
機(jī)器人控制系統(tǒng)一般分為組織級(jí)和實(shí)時(shí)控制級(jí),分為位置控制、力控制和混合控制[9]。寫(xiě)字機(jī)器人的執(zhí)行機(jī)構(gòu)設(shè)計(jì)中步進(jìn)電機(jī)和絲杠是理想的對(duì)距離有精確要求的機(jī)械機(jī)構(gòu),選用X-Y平移機(jī)構(gòu),一個(gè)平面平移結(jié)構(gòu)需要有X,Y兩軸絲杠,導(dǎo)軌和兩個(gè)步進(jìn)電機(jī)及其他一些支架和固定零件。步進(jìn)電機(jī)有4個(gè)排線,排線從左到右為1,2,3,4。引出排線直接插到步進(jìn)電機(jī)驅(qū)動(dòng)模塊的A4988上的插座上。利用兩個(gè)步進(jìn)電機(jī)組件相互垂直擺放就可以構(gòu)成X-Y兩個(gè)自由度。裝配中需要注意的是:將X方向的黑色滑塊和Y方向的黑色滑塊分別移動(dòng)
到它們的滑軌中點(diǎn)處,此時(shí)筆尖應(yīng)當(dāng)位于水平方向的工作平臺(tái)的幾何中心處。
機(jī)器人寫(xiě)字操作時(shí),首先將兩組步進(jìn)電機(jī)的排線接頭插到上圖紅色的步進(jìn)電機(jī)驅(qū)動(dòng)模塊上,然后將步進(jìn)電機(jī)模塊插到Arduino控制板上,將Arduino控制板與計(jì)算機(jī)連接。在計(jì)算機(jī)中打開(kāi)Grbl軟件, 在選擇好正確的COM口之后,設(shè)置傳輸波特率為9600,檢查連線與電源接線準(zhǔn)確無(wú)誤后,點(diǎn)擊OPEN鍵,選擇之前制作好的G代碼文件,點(diǎn)擊Begin鍵開(kāi)始發(fā)送,然后觀察寫(xiě)字結(jié)果。寫(xiě)字結(jié)果演示如圖5所示。
圖5機(jī)器人寫(xiě)出“哈”字
寫(xiě)字機(jī)器人能精確完成寫(xiě)字任務(wù),在計(jì)算機(jī)上將制作好的路徑文件通過(guò)Grbl發(fā)送給下位機(jī),Arduino執(zhí)行翻譯路徑文件和直線、曲線插補(bǔ)程序,控制器輸出脈沖控制兩個(gè)步進(jìn)電機(jī)完成末端寫(xiě)字筆的寫(xiě)字任務(wù)。寫(xiě)字機(jī)器人可以用來(lái)作為3D打印機(jī)的原型,再加入一個(gè)Z軸自由度將寫(xiě)字筆換成微型鉆頭可以雕刻立體圖案,同時(shí)將寫(xiě)字筆換成激光頭也可以作為微型雕刻機(jī)來(lái)雕刻圖形、徽章等藝術(shù)品。
[1]郭清達(dá),萬(wàn)傳恒,史步海.基于遺傳算法的工業(yè)機(jī)器人時(shí)間最優(yōu)軌跡規(guī)劃及仿真研究[J].計(jì)算機(jī)測(cè)量與控制,2014,22(4):1240-1242.
[2]王文憑,李天培,馮根生.一種智能搬運(yùn)機(jī)器人的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)測(cè)量與控制,2011,19(2):395-398.
[3]John-David,Warren Josh Adams. Harald Molle. Arduino robotics[M].北京:電子工業(yè)出版社,2014.
[4]陳呂洲.Arduino程序設(shè)計(jì)基礎(chǔ)[M].北京:北京航空航天大學(xué),2014.
[5]趙燕偉,朱雙勝,盧東,等.基于直線插補(bǔ)的字體邊緣識(shí)別技術(shù)[J]. 機(jī)電工程,2009,26(5):52-54.
[6]李進(jìn)文,何素梅,吳海彬.一種直線插補(bǔ)算法及其在機(jī)器人中的應(yīng)用研究[J].機(jī)電工程,2015,32(7):966-970.
[7]孔逸敏,凌秀澤,徐寅林.基于符號(hào)判別法的逐點(diǎn)比較法圓弧插補(bǔ)算法的研究[J].南京師范大學(xué)學(xué)報(bào)(工程技術(shù)版),2012,12(2):64-68.
[8]范希營(yíng),郭永環(huán).數(shù)控系統(tǒng)差值比較法圓弧插補(bǔ)算法的研究[J].機(jī)械科學(xué)與技術(shù),2011,30(5):789- 792.
[9]類延超.五自由度寫(xiě)字機(jī)器人系統(tǒng)研究[D].濟(jì)南:山東大學(xué),2012.
Design of Intelligent Writing Robot
Chen Yumin1, Xie Wei1, Meng Xianmin2,Yang Dongyue1
(1.Harbin Institute of Technology (WeiHai) ,Weihai264209, China;2. Shandong Kaer Electric Co.Ltd., Weihai264209, China)
Design two degrees of freedom to writing robot which can easily complete the task of writing drawing on a plane. You can put in the text entered by computer control algorithms and hardware circuit and the stepping motor drive styluses automatically describe it on paper. PC is chosen as the host computer, the system of Arduino as a slave. The text will be entered into a computer coordinates the G code, the next crew to the controller, the next bit machine controller uses serial port to send by linear interpolation and rounded interpolation algorithm, control pulse and direction output level control step stepping motor forward or backward. Stepper motor is controlled by a pulse, a pulse is sent to each step forward, allowing for precise control of the distance. It can be extended a shaft to join the Z-axis can theoretically achieve 3D printing capabilities, the writing pen or chisel into the laser head can be carved three-dimensional works, expansion of feature-rich.
writing robot; arduino system; interpolation algorithm; precise control
2015-08-24;
2015-09-26。
哈爾濱工業(yè)大學(xué)研究生教育教學(xué)改革研究項(xiàng)目(WH2015002)
陳寶偉(1989-),男,福建漳州人,碩士研究生,主要從事傳感器與自動(dòng)化檢測(cè)方向的研究。
1671-4598(2016)01-0266-03
10.16526/j.cnki.11-4762/tp.2016.01.074
TB114.3
B