一種沙畫表演機器人及其圖像處理和運動控制方法
【專利摘要】一種沙畫表演機器人及其圖像處理和運動控制方法,其屬于圖像處理和運動控制【技術(shù)領(lǐng)域】。其中圖像處理模塊對用戶提供的二值圖像進行預(yù)處理并生成繪圖軌跡。生成繪圖軌跡之后,圖像處理模塊與下位機相互通信,交互繪圖軌跡數(shù)據(jù)與控制信息。下位機根據(jù)圖像處理模塊發(fā)送的繪圖軌跡數(shù)據(jù),通過向步進電機驅(qū)動器發(fā)送PWM脈沖和方向信號來控制步進電機,步進電機負責(zé)驅(qū)動X、Y、Z三軸的滑塊移動到指定位置。下位機還需要根據(jù)圖像處理模塊發(fā)送的沙漏控制信息,控制漏沙裝置的開關(guān)狀態(tài)。X、Y、Z三軸的步進電機閉環(huán)控制使用編碼器實現(xiàn)。安全控制模塊使用光電限位開關(guān)實現(xiàn)。本發(fā)明能夠流暢、安全、自主地跟據(jù)用戶提供的圖片繪制出相應(yīng)的沙畫作品。
【專利說明】一種沙畫表演機器人及其圖像處理和運動控制方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種沙畫表演機器人及其圖像處理和運動控制方法,其屬于圖像處理和運動控制【技術(shù)領(lǐng)域】。
【背景技術(shù)】
[0002]沙畫是一種前衛(wèi)的藝術(shù)形式。沙畫的創(chuàng)作過程通常為把細小的沙子灑在一個底部可照亮的白色或透明的硬膠板上,用手指在上面繪畫。這種藝術(shù)表現(xiàn)形式因其獨特的藝術(shù)表現(xiàn)魅力而深受人們喜愛。
[0003]經(jīng)過對現(xiàn)有技術(shù)的檢索發(fā)現(xiàn),中國專利文獻號CN103264611A,
【公開日】期2013-06-08,記載了一種沙畫的制作方法及沙畫用沙,該專利使用特制的沙畫原料在經(jīng)過高溫處理的玻璃板上作畫,該制作過程較為復(fù)雜,不能大規(guī)模推廣。中國專利文獻號CN1124210A,
【公開日】期1996_6_12,記載了一種沙畫組件及其制作方法,在不干膠模板上面用小刀刻出圖案每部分的輪廓,做畫者只需在做畫的時候用一根牙簽輕輕將每一部分揭起,然后將各種顏色的沙子倒在上面即可。這種方式雖然制作簡單,卻無法體現(xiàn)創(chuàng)作者的創(chuàng)作過程,不能個性化繪制沙畫,僅是在已創(chuàng)作好的作品上進行上沙過程。
【發(fā)明內(nèi)容】
[0004]為了克服現(xiàn)有技術(shù)中存在的問題,本發(fā)明提供一種沙畫表演機器人及其圖像處理和運動控制方法,該沙畫表演機器人應(yīng)是一種融合了圖像處理、電機控制和人機交互等技術(shù)的機器人。使用計算機軟件處理用戶提供的圖片,三維平臺和漏沙漏斗取代人的雙手,在沙畫平臺上用沙子繪畫,,用投影儀向觀眾同步展示繪畫過程。
[0005]本發(fā)明采用的技術(shù)方案是:一種沙畫表演機器人,它包括一個沙畫繪制平臺,它還包括一個上位機和一個下位機,所述上位機通過串口與下位機通信,控制沙畫繪制平臺進行繪圖操作;所述上位機包括一個圖像處理模塊,所述下位機包括通信模塊、機器人主控處理器、閉環(huán)控制模塊、安全模塊、步進電機驅(qū)動器和沙漏電機驅(qū)動器,所述沙畫繪制平臺包括步進電機、漏沙裝置和繪畫平臺X、Y、Z三軸、攝像系統(tǒng)、沙畫工作臺和燈箱;所述通信模塊分別與上位機的圖像處理模塊和下位機的機器人主控處理器進行電連接,閉環(huán)控制模塊、安全模塊和步進電機驅(qū)動器分別與機器人主控處理器和繪畫平臺X、Y、Z三軸的步進電機進行電連接,沙漏電機驅(qū)動器分別與機器人主控處理器和漏沙裝置進行電連接;所述安全模塊使用光電限位開關(guān),光電限位開關(guān)設(shè)置在繪畫平臺X、Y、Z三軸的導(dǎo)軌的兩端,當(dāng)導(dǎo)軌上的滑塊移動到限位開關(guān)處時,滑塊停止移動并發(fā)出警報;所述閉環(huán)控制模塊使用編碼器記錄步進電機實際轉(zhuǎn)過的角度,在誤差超出允許范圍時進行相應(yīng)的調(diào)整。
[0006]所述沙畫繪制平臺設(shè)有一個沙畫平臺,在沙畫平臺上設(shè)置二個平行的X軸直線導(dǎo)軌,在X軸直線導(dǎo)軌上移動的X軸滑塊與Z軸直線導(dǎo)軌固定連接,在Z軸直線導(dǎo)軌移動的Z軸滑塊與Y軸直線導(dǎo)軌固定連接,在Y軸直線導(dǎo)軌移動的Y軸滑塊與沙漏裝置固定連接;z軸步進電機、Y軸步進電機和X軸步進電機分別通過Z軸聯(lián)軸器、Y軸聯(lián)軸器、X軸聯(lián)軸器連接Z軸直線導(dǎo)軌、Y軸直線導(dǎo)軌和X軸直線導(dǎo)軌內(nèi)的齒形皮帶輪傳動機構(gòu)驅(qū)動Z軸滑塊、Y軸滑塊和X軸滑塊移動,使沙漏裝置到達指定位置;同時Z軸步進電機、Y軸步進電機、X軸步進電機上的編碼器模塊實時向主控處理器反饋矯正沙漏裝置位置的編碼信號,主控處理器向沙漏電機驅(qū)動器發(fā)送控制信號,控制沙漏裝置內(nèi)的電機轉(zhuǎn)動,使沙子落在作畫平面上,進行沙畫繪制;燈箱放置在沙畫平臺上,燈箱的一端安裝有燈條,光線投過作畫平面將沙子的投影投到沙畫平臺上,安裝在沙畫平臺上的攝像頭將畫面?zhèn)鬏數(shù)酵队皟x端實時顯示。
[0007]所述齒形皮帶輪傳動機構(gòu)包括二個齒形皮帶輪和一個齒形皮帶,在Z軸直線導(dǎo)軌、Y軸直線導(dǎo)軌和X軸直線導(dǎo)軌兩端都設(shè)有一個用齒形皮帶連接的齒形皮帶輪,步進電機經(jīng)聯(lián)軸器連接一端的齒形皮帶輪驅(qū)動Z軸滑塊、Y軸滑塊和X軸滑塊移動;對于二個平行設(shè)置的Z軸直線導(dǎo)軌和X軸直線導(dǎo)軌,步進電機經(jīng)聯(lián)軸器連接一個設(shè)有二個齒形皮帶輪的傳動軸。
[0008]所述沙漏裝置的外殼固定在底座上,底座固定在移動的Y軸滑塊上,沙漏的電機安裝到底座上,帶動安裝在外殼中的轉(zhuǎn)子轉(zhuǎn)動;圓柱形的轉(zhuǎn)子被劃分為20個隔艙,沙子從儲沙漏斗通過導(dǎo)管流進轉(zhuǎn)子的隔艙,轉(zhuǎn)子隔艙內(nèi)的沙子在外殼內(nèi)轉(zhuǎn)動半圈后,經(jīng)過漏嘴流出,落到作畫平面上,面板用于密封外殼。
[0009]所述的沙畫表演機器人上位機的圖像處理方法:
[0010](I)所述上位機通過圖像預(yù)處理、軌跡生成及路徑規(guī)劃算法分析之后,得到最終的繪圖軌跡;
[0011](2)所述圖像預(yù)處理將輸入的原始二值圖像,分割成線條部分圖像和面部分圖像,并對線條部分圖像提取其骨架,保留其中心線得到新的線條部分圖像;
[0012](3)所述軌跡生成及路徑規(guī)劃算法對于線條部分圖像,將其像素矩陣轉(zhuǎn)換成拓撲結(jié)構(gòu),并通過一種路徑規(guī)劃方法,從生成的拓撲結(jié)構(gòu)中規(guī)劃出繪圖路徑,對于面部分圖像,通過逐行填充方法,從面部分圖像中生成面填充路徑;
[0013](4)所述拓撲結(jié)構(gòu)由節(jié)點及連接兩個節(jié)點之間的邊構(gòu)成,在骨架化的圖像中,端點和分支點均是拓撲中的節(jié)點,而處于節(jié)點之間的其它點作為一個整體構(gòu)成拓撲中的邊,節(jié)點結(jié)構(gòu)中存儲了所有鄰接邊的指針、該邊在該節(jié)點處的斜率值、鄰接邊數(shù)目以及訪問位,邊結(jié)構(gòu)中存儲了兩端節(jié)點的指針以及訪問位;
[0014](5)所述路徑規(guī)劃方法,在拓撲結(jié)構(gòu)中的交叉節(jié)點處,通過比較該節(jié)點所有未訪問的鄰接邊在該點處的斜率,選出斜率值最為接近的一對鄰接邊,則這兩條邊便處于同一條路徑上且不屬于其他路徑中;以此方法,從一個起始節(jié)點開始訪問,找出屬于同一條路徑上的所有邊,當(dāng)訪問到某節(jié)點,剛訪問過的邊不在夾角最小的一對鄰接邊里時,則該路徑已到盡頭,需要從另一個起始節(jié)點開始訪問,找下一條路徑;一個拓撲結(jié)構(gòu)可能經(jīng)過多條路徑的訪問,才能訪問完拓撲中所有邊,這些路徑便是所規(guī)劃的路徑;
[0015](6)所述逐行填充方法,這里的路徑規(guī)劃等效于用一個方形矩陣模板,在由面部分圖像像素構(gòu)成的矩陣上逐行左右移動,以短的移動路程覆蓋圖像矩陣的大部分區(qū)域,而忽略個別像素點沒有被覆蓋到的地方,方形矩陣模板的移動軌跡即是面部分圖像的繪圖路徑軌跡;
[0016]所述的沙畫表演機器人其下位機的運動控制方法:
[0017](I)所述機器人運動控制模塊使用改進的S形加減速曲線算法控制步進電機的移動速度,使用改進的DFB直線插補算法實現(xiàn)繪畫平臺的X軸和Y軸聯(lián)動控制;運動控制模塊的作用是從上位機圖像處理模塊接收移動坐標(biāo)數(shù)據(jù)和沙漏控制數(shù)據(jù),然后控制繪畫平臺繪制沙畫作品;
[0018](2)所述改進的S形加減速曲線算法是根據(jù)步進電機的具體參數(shù)和實際負載確定S形加減速曲線的方程;然后將S形加減速曲線離散為21個加減速臺階,計算一次移動所需的PWM脈沖個數(shù),然后為每個加減速臺階分配相應(yīng)的脈沖個數(shù);所做的改進是引入了運動方向預(yù)判和速度調(diào)整策略;
[0019](3)所述速度調(diào)整方法是根據(jù)運動曲線的方向變化趨勢來設(shè)定移動一個線段的終點所在的減速臺階;
[0020](4)所述改進的DFB直線插補算法對原算法的改進是定義單獨的方向變量,然后將移動向量都轉(zhuǎn)化為增加步進電機閉環(huán)控制的第一象限向量。
[0021]本發(fā)明的有益效果:這種沙畫表演機器人的上位機包括圖像預(yù)處理和軌跡生成及規(guī)劃兩個模塊的圖像處理模塊,下位機包括通信模塊、機器人主控處理器、閉環(huán)控制模塊、安全模塊、步進電機驅(qū)動器和沙漏電機驅(qū)動器,沙畫繪制平臺包括步進電機、漏沙裝置和繪畫平臺的Χ、Y、Z三軸。該沙畫表演機器人結(jié)構(gòu)簡潔,并且采用了模塊化設(shè)計,便于維護。安全模塊可以保證沙畫表演機器人移動過程的安全性。步進電機的閉環(huán)控制模塊可以保證沙畫表演機器人運動的準確性。沙畫表演機器人上位機的圖像處理模塊可以將用戶提供的圖片轉(zhuǎn)化為相應(yīng)的坐標(biāo)數(shù)據(jù)和沙漏控制數(shù)據(jù)。下位機使用了改進的S形加減速曲線和改進的DFB直線插補算法,可以保證沙畫表演機器人運動的流暢和平穩(wěn)。串口通信模塊使用了自定義的通信協(xié)議和數(shù)據(jù)包格式,可以保證上位機圖像處理模塊和下位機之間的通信的可靠性。
【專利附圖】
【附圖說明】
[0022]圖1為沙畫表演機器人的結(jié)構(gòu)框圖。
[0023]圖2為沙畫表演平臺的結(jié)構(gòu)示意圖。
[0024]圖3為沙漏裝置結(jié)構(gòu)示意圖。
[0025]圖4為圖像矩陣到拓撲結(jié)構(gòu)的轉(zhuǎn)換程序流程圖。
[0026]圖5為路徑規(guī)劃的程序流程圖。
[0027]圖6為運動控制程序流程圖。
[0028]圖中:1、傳動軸,2、Z軸聯(lián)軸器,3、Z軸步進電機,4、Y軸步進電機,5、Y軸聯(lián)軸器,6、燈箱,7、L型連接件,8、X軸滑塊,9、X軸步進電機,10、Z軸直線導(dǎo)軌,11、Z軸滑塊,12、Y軸直線導(dǎo)軌,13,Y軸滑塊,14、沙漏裝置,14.1、電機,14.2、外殼,14.3、底座,14.4、導(dǎo)管,14.5、儲沙漏斗,14.6、漏嘴,14.7、轉(zhuǎn)子,14.8、面板,15、作畫平面,16、燈條,17、攝像頭,18,X軸直線導(dǎo)軌,19、限位保護模塊,20、沙畫平臺,21、步進電機驅(qū)動器,22、主控處理器,23、Χ軸聯(lián)軸器。
具體實施方案
[0029]圖1示出了沙畫表演機器人的結(jié)構(gòu)框圖。一種沙畫表演機器人包括一個沙畫繪制平臺、一個上位機和一個下位機。上位機通過串口與下位機通信,控制沙畫繪制平臺進行繪圖操作。上位機包括圖像預(yù)處理和軌跡生成及規(guī)劃兩個模塊的圖像處理模塊,下位機包括通信模塊、機器人主控處理器、閉環(huán)控制模塊、安全模塊、步進電機驅(qū)動器和沙漏電機驅(qū)動器,沙畫繪制平臺包括步進電機、漏沙裝置和繪畫平臺的x、Y、z三軸。安全模塊使用光電開關(guān)實現(xiàn),光電限位開關(guān)之間的范圍為安全范圍,當(dāng)導(dǎo)軌的滑塊移動到限位開關(guān)處時,表示滑塊移動超出安全范圍,此時系統(tǒng)停止移動發(fā)出警報。閉環(huán)控制模塊使用編碼器記錄步進電機實際轉(zhuǎn)過的角度,將實際轉(zhuǎn)過角度和目標(biāo)值進行對比,在誤差超出允許范圍時進行相應(yīng)的調(diào)整。繪畫平臺的X、Y、Z三軸的導(dǎo)軌兩端都裝有光電限位開關(guān),光電限位開關(guān)之間的范圍為安全范圍,當(dāng)導(dǎo)軌上的滑塊移動到限位開關(guān)處時,表示滑塊移動超出安全范圍,此時系統(tǒng)停止滑塊移動并發(fā)出警報。
[0030]圖2示出了沙畫表演機器人的結(jié)構(gòu)圖。所述沙畫繪制平臺設(shè)有一個沙畫平臺20,在沙畫平臺20上設(shè)置二個平行的X軸直線導(dǎo)軌18,在X軸直線導(dǎo)軌18上移動的X軸滑塊8與Z軸直線導(dǎo)軌10固定連接,在Z軸直線導(dǎo)軌10移動的Z軸滑塊11與Y軸直線導(dǎo)軌12固定連接,在Y軸直線導(dǎo)軌12移動的Y軸滑塊13與沙漏裝置14固定連接。Z軸步進電機
3、Y軸步進電機4和X軸步進電機9分別通過Z軸聯(lián)軸器2、Y軸聯(lián)軸器5、X軸聯(lián)軸器23連接Z軸直線導(dǎo)軌10、Y軸直線導(dǎo)軌12和X軸直線導(dǎo)軌18內(nèi)的齒形皮帶輪傳動機構(gòu)驅(qū)動Z軸滑塊11、Υ軸滑塊13和X軸滑塊8移動,使沙漏裝置14到達指定位置。齒形皮帶輪傳動機構(gòu)包括二個齒形皮帶輪和一個齒形皮帶,在Z軸直線導(dǎo)軌10、Y軸直線導(dǎo)軌12和X軸直線導(dǎo)軌18兩端都設(shè)有一個用齒形皮帶連接的齒形皮帶輪,步進電機經(jīng)聯(lián)軸器連接一端的齒形皮帶輪驅(qū)動Z軸滑塊11、Y軸滑塊13和X軸滑塊8移動;對于二個平行設(shè)置的Z軸直線導(dǎo)軌10和X軸直線導(dǎo)軌18,步進電機經(jīng)聯(lián)軸器連接一個設(shè)有二個齒形皮帶輪的傳動軸
I。同時Z軸步進電機3、Y軸步進電機4、X軸步進電機9上的編碼器模塊實時向主控處理器22反饋矯正沙漏裝置14位置的編碼信號,主控處理器22向沙漏電機驅(qū)動器發(fā)送控制信號,控制沙漏裝置14內(nèi)的電機轉(zhuǎn)動,使沙子落在作畫平面15上,進行沙畫繪制;燈箱6放置在沙畫平臺20上,燈箱6的一端安裝有燈條16,光線投過作畫平面15將沙子的投影投到沙畫平臺20上,安裝在沙畫平臺上的攝像頭17將畫面?zhèn)鬏數(shù)酵队皟x端實時顯示。
[0031]圖3示出了沙漏裝置結(jié)構(gòu)示意圖。沙漏裝置14的外殼14.2固定在底座14.3上,底座14.3固定在移動的Y軸滑塊13上,沙漏的電機14.1安裝到底座14.3上,帶動安裝在外殼14.2中的轉(zhuǎn)子14.7轉(zhuǎn)動。圓柱形的轉(zhuǎn)子14.7被劃分為20個隔艙,沙子從儲沙漏斗14.5通過導(dǎo)管14.4流進轉(zhuǎn)子的隔艙,轉(zhuǎn)子隔艙內(nèi)的沙子在外殼14.2內(nèi)轉(zhuǎn)動半圈后,經(jīng)過漏嘴14.6流出,落到作畫平面15上,面板14.8用于密封外殼14.2。
[0032]采用上述的沙畫表演機器人的圖像處理方法是:
[0033]上位機的圖像處理模塊包括圖像處理模塊和軌跡生成及規(guī)劃模塊。
[0034]圖像處理模塊負責(zé)完成對二值圖像的處理。其具體過程如下。首先要把原始二值圖像分割成線條部分和面部分兩個部分分開處理,這一步稱為“線面分割處理”。線條部分是指圖像中線寬變化較平滑,線寬較窄的部分;面部分則是將線條部分去掉的其他部分。
[0035]“線面分割處理”的處理方法為,首先估計線條部分的線寬大小:逐行遍歷全圖4,并設(shè)計數(shù)數(shù)組width[10]。當(dāng)遇到黑色像素區(qū)域便對像素個數(shù)開始計數(shù),回到白色像素區(qū)域停止計數(shù)。假設(shè)計數(shù)值為X,若計數(shù)值X在I到10之間(包括I和10),則width [x-1]加一,表示寬度為X的黑色區(qū)域增加一個。遍歷結(jié)束后,找出計數(shù)數(shù)組中值最大的元素,其下標(biāo)加一的值則為我們所要的線寬估計值。
[0036]估計完線條部分的線寬大小之后,要將此線寬作為參數(shù),對原始二值圖像進行“線面分割處理”。具體做法是對原二值圖像進行膨脹操作(作用是為腐蝕掉圖像中線寬較小的線條部分),但線條為黑色,因此為膨脹操作,模板為3 X 3大小時,膨脹次數(shù)為線寬值。處理完成后即得到了面部分。最后用原始二值圖像減去面部分即為線條部分。經(jīng)“線面分割處理”后,得到了線條圖像部分和面圖像部分。對于線條圖像部分,使用Zhang-快速并行細化算法進行骨架化處理,得到單線寬的線條圖像部分。至此圖像預(yù)處理完成。
[0037]軌跡生成及規(guī)劃模塊,對線條圖像部分和面圖像分別生成軌跡并規(guī)劃路徑。
[0038]骨架化的線條部分的實現(xiàn)過程為,首先要將這部分的圖像矩陣,轉(zhuǎn)換成拓撲結(jié)構(gòu)。拓撲結(jié)構(gòu)由節(jié)點和連接兩個節(jié)點的邊組成。骨架化后的線條圖像中,所有的端點像素點、分支像素點都是拓撲中的節(jié)點,此外,對于閉合環(huán)等沒有顯式節(jié)點的情況,也要選擇一個點作為節(jié)點。除了這些作為節(jié)點的點以外,其它處于兩個節(jié)點(可能是同一個節(jié)點)之間的點作為一個整體,屬于拓撲中的邊。邊的結(jié)構(gòu)體成員包含了邊兩端節(jié)點的指針,以及邊上所有點組成的雙向鏈表指針,另外還有訪問位。節(jié)點結(jié)構(gòu)體包含了分支數(shù),所有分支邊指針以及分支在局部的斜率值構(gòu)成的Map,另外還有X、y坐標(biāo),以及訪問位與其他標(biāo)志位。
[0039]從圖像矩陣到拓撲結(jié)構(gòu)的轉(zhuǎn)換程序流程圖如圖4所示。在圖4的流程圖中,搜索函數(shù)功能是在指定坐標(biāo)的點附近搜索圖像矩陣,得到該點附近的分支數(shù)(端點附近只有一個分支,普通邊上有兩個分支,分支上有大于兩個分支);以及待訪問分支邊的起始點指針。
[0040]圖4的流程圖中更新當(dāng)前邊信息是指,將雙向鏈表的指針、兩端的節(jié)點指針存入到邊的成員里;更新節(jié)點信息是指,將連接它的邊指針以及對應(yīng)的斜率存入到Map里,更新分支數(shù),以及初始化或者更改標(biāo)志位。
[0041]完成拓撲結(jié)構(gòu)的生成以后,即得到了一系列的坐標(biāo)軌跡序列。這些軌跡序列就是邊結(jié)構(gòu)中存儲的雙向鏈表。接下來的路徑規(guī)劃就是將這些軌跡序列組織成一段一段的路徑(一段路徑可能由一條或多條邊構(gòu)成),一個拓撲結(jié)構(gòu)可能經(jīng)過多條路徑的訪問,才能訪問完拓撲中所有邊。路徑規(guī)劃的結(jié)果是一系列邊序列。
[0042]路徑規(guī)劃的程序流程圖如圖5所示。在圖5的流程圖中,最優(yōu)邊組合是指,連接當(dāng)前節(jié)點的所有未訪問的邊中,夾角最小的一對組合,只需比較這些邊對應(yīng)的斜率值,選出差值最小的一對即可。在規(guī)劃完線條部分的路徑之后,還需將邊序列轉(zhuǎn)換成坐標(biāo)點序列。這一步轉(zhuǎn)換實際上就是將多條雙向鏈表按各自被指定的方向,轉(zhuǎn)換成一條單向鏈表。
[0043]面部分是使用逐行填充的方式來繪制。面部分的路徑規(guī)劃等效于用一個方形矩陣模板在面部分圖像矩陣上移動,以盡量短的移動路程覆蓋圖像矩陣的大部分區(qū)域,對于個別沒有覆蓋到的像素點可以忽略。該部分路徑規(guī)劃最終得到的也是一條存放坐標(biāo)點序列的單向鏈表。該單鏈表將與線條部分的鏈表合成一條單向鏈表,即整體圖像繪圖坐標(biāo)點序列。
[0044]為了實現(xiàn)上位機和下位機之間的可靠通信,定義了上位機和下位機的串口通信協(xié)議。通信協(xié)議共定義了兩大數(shù)據(jù)包類型:上位機向下位機發(fā)送數(shù)據(jù)的數(shù)據(jù)包(簡稱數(shù)據(jù)數(shù)據(jù)包)、下位機向上位機回應(yīng)的數(shù)據(jù)包(簡稱回應(yīng)數(shù)據(jù)包)。其中回應(yīng)數(shù)據(jù)包又分為接收成功數(shù)據(jù)包、校驗和錯誤或數(shù)據(jù)包頭部錯誤數(shù)據(jù)包、緩沖區(qū)已滿數(shù)據(jù)包、緩沖區(qū)非滿數(shù)據(jù)包。
[0045]在整個通信中,下位機的主控處理器是通信的發(fā)起者,若下位機程序的緩沖區(qū)有空閑,則向上位機發(fā)送緩沖區(qū)非滿數(shù)據(jù)包,即向上位機發(fā)出請求,請求上位機發(fā)送坐標(biāo)點。上位機收到這個請求之后,將要發(fā)送的點封裝成數(shù)據(jù)數(shù)據(jù)包向下位機發(fā)送過去,同時將此數(shù)據(jù)存儲在本地緩存數(shù)組中,并設(shè)置一個定時器。
[0046]下位機的主控處理器收到上位機發(fā)送過來的數(shù)據(jù)數(shù)據(jù)包后,向上位機發(fā)送回應(yīng)數(shù)據(jù)包。若上位機發(fā)送數(shù)據(jù)數(shù)據(jù)包后1000ms沒有收到回應(yīng)數(shù)據(jù)包,則重發(fā)緩存中的數(shù)據(jù)。若上位機收到的回應(yīng)為接收成功數(shù)據(jù)包,則重新設(shè)置定時器。若上位機收到的回應(yīng)為校驗和錯誤或數(shù)據(jù)包頭部錯誤數(shù)據(jù)包,則重發(fā)緩存中的數(shù)據(jù),并重設(shè)定時器。若上位機收到的回應(yīng)為緩存區(qū)已滿數(shù)據(jù)包,則關(guān)閉定時器。
[0047]下位機的運動控制方法主要包括改進的S形加減速曲線和改進的直接函數(shù)運算法(DFB算法)。
[0048]改進的S形加減速曲線的計算方法如下,首先根據(jù)步進電機的參數(shù)確定S形加減速曲線的計算公式中的參數(shù)。然后將S形加減速曲線離散為21個加減速臺階。21個加減速臺階中有10個加速臺階、10個減速臺階和I個勻速臺階。其中加速階段、減速階段和勻速階段各占總輸出脈沖個數(shù)的1/3。先介紹該改進算法中的運動方向預(yù)判和速度調(diào)整策略。假設(shè)當(dāng)前所在點為A點,A點坐標(biāo)為(xa, ya),接下來要移動到B點,B點坐標(biāo)為(xb,yb) ,B點的
下一個點為C點,C點坐標(biāo)為(xc,yc)。計算向量21與向量;I1的夾角余弦值,設(shè)夾角余弦的值
為cos_value。由夾角余弦的值來決定本次移動的終點速度。對于該繪畫機器人,在實際實現(xiàn)時夾角余弦與終點速度之間的關(guān)系。夾角余弦與終點速度的具體關(guān)系為,當(dāng)c0S_valUe>=0.9時終點速度對應(yīng)S形加減速曲線的勻速階段速度,當(dāng)cos_value> = 0.7&&cos_value〈0.9時終點速度對應(yīng)減速階段的倒數(shù)第5個減速臺階。當(dāng)cos_value〈0.7&&cos_value〉= O時終點速度為減速臺階的倒數(shù)第3個減速臺階。當(dāng)cos_value〈0終點速度為O0
[0049]改進的直接函數(shù)運算法(DFB算法)計算方法如下。原算法將直角坐標(biāo)系的每個象限都用45°斜線分2個區(qū)域。將四個象限共劃分為8個區(qū)域,稱為8個卦限。按照原算法實現(xiàn)對于不同的卦限需要有8種不同的移動策略。這在程序?qū)崿F(xiàn)時顯得過于冗余和復(fù)雜。對于該算法的改進是,定義單獨的方向變量用于記錄步進電機的方向,然后所有的移動向量都可以轉(zhuǎn)換為第一象限的向量進行處理。步進電機的方向只有逆時針和順時針兩種,因此該方向向量只需要有O和I兩種狀態(tài)既可。假設(shè)X軸滑塊移動的方向變量為dir_x,Y軸滑塊
移動的方向變量為dir_y。當(dāng)前點A (X1, yj ,下一個點B(x2, y2),移動向量^(丨X「X2丨,
Iy1-ysl)。當(dāng)X2-X1X)時,dir_x = I,表示X軸滑塊的移動方向沿X軸正方向,反之dir_x =
0,表示X軸滑塊的移動方向沿X軸負方向;當(dāng)Y2-Y1X)時,dir_y>0,表示Y軸滑塊的移動方向沿Y軸正方向,反之dir_y〈0,表示Y軸滑塊的移動方向沿Y軸負方向。
[0050]然后需要根據(jù)移動向量十算X軸和Y軸各自移動所需的PWM脈沖個數(shù)。將
看作起點為原點,終點為(/X1-X2/,/y1-y2/)的線段。該線段可能在第一卦限或者在第二卦限。接下來我們分別對這兩種情況進行討論。
[0051]當(dāng)線段在第一卦限時,首先向X軸走一步。然后計算誤差函數(shù)F (U,V,根據(jù)以下策略決定X,Y軸的進給方向。當(dāng)F(u,v)> = O時,X軸運動一步;iF(u,v)〈0時,X、Y軸各運動一步。X軸或者Y軸移動一步即主控處理器向該軸的步進電機驅(qū)動器輸出一個PWM脈沖。[0052]當(dāng)線段在第二卦限時,首先向Y軸走一步。然后計算誤差函數(shù)F(U,V, F(U,V)=UeV-VeI^根據(jù)以下策略決定X, Y軸的進給方向。當(dāng)F(u, v)〈0時,Y軸運動一步;當(dāng)F(u, v)>=O時,X、Y軸各運動一步。
[0053]使用這種插補策略,依次調(diào)度X軸和Y軸移動順序直到本次移動完成。
[0054]為了保證運動精度,沙畫表演機器人的X軸和Y軸增加了閉環(huán)控制。閉環(huán)控制實現(xiàn)方法為給X軸的步進電機和Y軸的步進電機均安裝霍爾編碼器。該沙畫表演機器人使用霍爾編碼器記錄X軸和Y軸的步進電機實際轉(zhuǎn)過的角度,然后對比目標(biāo)轉(zhuǎn)過角度和實際轉(zhuǎn)過角度,對誤差進行補償。
[0055]主控處理器控制系統(tǒng)通過以下方式實現(xiàn)具體控制。
[0056]步驟1,主控處理器在上電之后,完成系統(tǒng)硬件的初始化。
[0057]步驟2,主控處理器完成硬件初始化之后同時上位機開始發(fā)送數(shù)據(jù)包,通知上位機開始通信。主控處理器與上位機通過串口來進行通信。[0058]步驟3,主控處理器在接收完一個數(shù)據(jù)包之后,檢查數(shù)據(jù)包是否正確,如果數(shù)據(jù)包準確無誤,從數(shù)據(jù)包中解析出坐標(biāo)數(shù)據(jù),將坐標(biāo)數(shù)據(jù)存入坐標(biāo)緩存隊列。否則舍棄該數(shù)據(jù)包,通知上位機重發(fā)該數(shù)據(jù)包。
[0059]如圖6所示,主控處理器的運動控制部分的實現(xiàn)如下。
[0060]步驟4,主程序從坐標(biāo)緩存隊列中取出坐標(biāo)。根據(jù)上個已經(jīng)計算完成的點、當(dāng)前計算的點和下一個要計算的點,計算方向夾角余弦,然后根據(jù)本次計算的移動向量與下次移動向量的夾角余弦確定本次所計算的移動向量的終點速度。
[0061]步驟5,計算移動到該點X軸、Y軸和Z軸各自需要輸出的PWM脈沖個數(shù)和移動方向。
[0062]步驟6,根據(jù)改進的S形加減速曲線,計算各個加減速臺階所需的脈沖個數(shù)。
[0063]步驟7,判斷Z軸滑塊是否需要移動,如果Z軸滑塊需要移動,首先移動Z軸滑塊。Z軸的移動所需的脈沖通過開啟一個配置為PWM輸出模式的定時器來負責(zé)輸出。
[0064]步驟8,判斷沙漏的開關(guān)狀態(tài)是否需要改變,如果需要則啟動控制沙漏的減速電機,調(diào)整沙漏的開關(guān)狀態(tài)。
[0065]步驟9,如果Z軸需要移動或沙漏開關(guān)狀態(tài)需要改變則等待Z軸滑塊的移動和沙漏開關(guān)狀態(tài)調(diào)整均完成。否則重復(fù)步驟9。
[0066]步驟10,將根據(jù)改進的S形加減速曲線計算的運動參數(shù)存入運動參數(shù)緩存隊列。
[0067]步驟11,X軸和Y軸的聯(lián)動控制所使用的改進的直接函數(shù)運算法是在定時器中斷中實現(xiàn),一次定時器中斷進行一次脈沖輸出。
[0068]上一段所述的改進的DFB插補算法在中斷函數(shù)中的具體實現(xiàn)為如下:
[0069]步驟SI,在定時器中斷中,首先檢測限位開關(guān)的狀態(tài)是否正常
[0070]步驟S2,檢測當(dāng)前已取出的運動參數(shù)節(jié)點是否已經(jīng)執(zhí)行完了。如果執(zhí)行完則轉(zhuǎn)到步驟S3,否則轉(zhuǎn)到步驟S4。
[0071]步驟S3,檢測運動參數(shù)緩存隊列是否為空,不為空則從隊列中取出一個節(jié)點,根據(jù)節(jié)點的參數(shù)修改定時器頻率。該沙畫表演機器人是通過設(shè)定定時器頻率來控制脈沖輸出頻率,從而控制X軸導(dǎo)軌滑塊和Y軸導(dǎo)軌滑塊的移動速度。
[0072]步驟S4,如果已經(jīng)取出的節(jié)點未執(zhí)行完,則按照改進的DFB算法,為X軸和Y軸分配PWM脈沖。
[0073]步驟S5,在完成脈沖分配之后,判斷一個加減速臺階是否完成。如果已經(jīng)完成,則轉(zhuǎn)到步驟6,否則退出中斷。
[0074]步驟S6,分別讀取X軸和Y軸霍爾編碼器所對應(yīng)的計數(shù)器的值。通過該計數(shù)器的值獲取X軸步進電機真實轉(zhuǎn)過的角度。然后將真實值與理論值作對比,計算誤差,如果誤差超過允許范圍則在下一階段進行補償。否則修改定時器頻率進入下一加減速階段。
[0075]步驟S7,退出中斷。
【權(quán)利要求】
1.一種沙畫表演機器人,它包括一個沙畫繪制平臺,其特征在于:它還包括一個上位機和一個下位機,所述上位機通過串口與下位機通信,控制沙畫繪制平臺進行繪圖操作;所述上位機包括一個圖像處理模塊,所述下位機包括通信模塊、機器人主控處理器、閉環(huán)控制模塊、安全模塊、步進電機驅(qū)動器和沙漏電機驅(qū)動器,所述沙畫繪制平臺包括步進電機、漏沙裝置(14)和繪畫平臺X、Y、Z三軸、攝像系統(tǒng)、沙畫工作臺和燈箱(6);所述通信模塊分別與上位機的圖像處理模塊和下位機的機器人主控處理器進行電連接,閉環(huán)控制模塊、安全模塊和步進電機驅(qū)動器分別與機器人主控處理器和繪畫平臺X、Y、Z三軸的步進電機進行電連接,沙漏電機驅(qū)動器分別與機器人主控處理器和漏沙裝置(14)進行電連接;所述安全模塊使用光電限位開關(guān),光電限位開關(guān)設(shè)置在繪畫平臺X、Y、Z三軸的導(dǎo)軌的兩端,當(dāng)導(dǎo)軌上的滑塊移動到限位開關(guān)處時,滑塊停止移動并發(fā)出警報;所述閉環(huán)控制模塊使用編碼器記錄步進電機實際轉(zhuǎn)過的角度,在誤差超出允許范圍時進行相應(yīng)的調(diào)整。
2.根據(jù)權(quán)利要求1所述的一種沙畫表演機器人,其特征在于:所述沙畫繪制平臺設(shè)有一個沙畫平臺(20),在沙畫平臺(20)上設(shè)置二個平行的X軸直線導(dǎo)軌(18),在X軸直線導(dǎo)軌(18)上移動的X軸滑塊(8)與Z軸直線導(dǎo)軌(10)固定連接,在Z軸直線導(dǎo)軌(10)移動的Z軸滑塊(11)與Y軸直線導(dǎo)軌(12)固定連接,在Y軸直線導(dǎo)軌(12)移動的Y軸滑塊(13)與沙漏裝置(14)固定連接;Ζ軸步進電機(3)、Υ軸步進電機⑷和X軸步進電機(9)分別通過Z軸聯(lián)軸器(2)、Y軸聯(lián)軸器(5)、X軸聯(lián)軸器(23)連接Z軸直線導(dǎo)軌(10)、Y軸直線導(dǎo)軌(12)和X軸直線導(dǎo)軌(18)內(nèi)的齒形皮帶輪傳動機構(gòu)驅(qū)動Z軸滑塊(11)、Υ軸滑塊(13)和X軸滑塊(8)移動,使沙漏裝置(14)到達指定位置;同時Z軸步進電機(3)、Υ軸步進電機(4)、X軸步進電機(9)上的編碼器模塊實時向主控處理器(22)反饋矯正沙漏裝置(14)位置的編碼信號,主控處理器(22)向沙漏電機驅(qū)動器發(fā)送控制信號,控制沙漏裝置(14)內(nèi)的電機轉(zhuǎn)動,使沙子落在作畫平面(15)上,進行沙畫繪制;燈箱(6)放置在沙畫平臺(20)上,燈箱(6)的一端安裝有燈條(16),光線投過作畫平面(15)將沙子的投影投到沙畫平臺(20)上,安裝在沙畫平臺上的攝像頭(17)將畫面?zhèn)鬏數(shù)酵队皟x端實時顯示。
3.根據(jù)權(quán)利要求2所述的一種沙畫表演機器人,其特征在于:所述齒形皮帶輪傳動機構(gòu)包括二個齒形皮帶輪和一個齒形皮帶,在Z軸直線導(dǎo)軌(10)、Y軸直線導(dǎo)軌(12)和X軸直線導(dǎo)軌(18)兩端都設(shè)有一個用齒形皮帶連接的齒形皮帶輪,步進電機經(jīng)聯(lián)軸器連接一端的齒形皮帶輪驅(qū)動Z軸滑塊(11)、Y軸滑塊(13)和X軸滑塊(8)移動;對于二個平行設(shè)置的Z軸直線導(dǎo)軌(10)和X軸直線導(dǎo)軌(18),步進電機經(jīng)聯(lián)軸器連接一個設(shè)有二個齒形皮帶輪的傳動軸(I)。
4.根據(jù)權(quán)利要求1或2所述的一種沙畫表演機器人,其特征在于:所述沙漏裝置(14)的外殼(14.2)固定在底座(14.3)上,底座(14.3)固定在移動的Y軸滑塊(13)上,沙漏的電機(14.1)安裝到底座(14.3)上,帶動安裝在外殼(14.2)中的轉(zhuǎn)子(14.7)轉(zhuǎn)動;圓柱形的轉(zhuǎn)子(14.7)被劃分為20個隔艙,沙子從儲沙漏斗(14.5)通過導(dǎo)管(14.4)流進轉(zhuǎn)子的隔艙,轉(zhuǎn)子隔艙內(nèi)的沙子在外殼(14.2)內(nèi)轉(zhuǎn)動半圈后,經(jīng)過漏嘴(14.6)流出,落到作畫平面(15)上,面板(14.8)用于密封外殼(14.2) ο
5.權(quán)利要求1所述的沙畫表演機器人的圖像處理和運動控制方法,其特征是: 一、圖像處理方法 (I)所述上位機通過圖像預(yù)處理、軌跡生成及路徑規(guī)劃算法分析之后,得到最終的繪圖軌跡; (2)所述圖像預(yù)處理將輸入的原始二值圖像,分割成線條部分圖像和面部分圖像,并對線條部分圖像提取其骨架,保留其中心線得到新的線條部分圖像; (3)所述軌跡生成及路徑規(guī)劃算法對于線條部分圖像,將其像素矩陣轉(zhuǎn)換成拓撲結(jié)構(gòu),并通過一種路徑規(guī)劃方法,從生成的拓撲結(jié)構(gòu)中規(guī)劃出繪圖路徑,對于面部分圖像,通過逐行填充方法,從面部分圖像中生成面填充路徑; (4)所述拓撲結(jié)構(gòu)由節(jié)點及連接兩個節(jié)點之間的邊構(gòu)成,在骨架化的圖像中,端點和分支點均是拓撲中的節(jié)點,而處于節(jié)點之間的其它點作為一個整體構(gòu)成拓撲中的邊,節(jié)點結(jié)構(gòu)中存儲了所有鄰接邊的指針、該邊在該節(jié)點處的斜率值、鄰接邊數(shù)目以及訪問位,邊結(jié)構(gòu)中存儲了兩端節(jié)點的指針以及訪問位; (5)所述路徑規(guī)劃方法,在拓撲結(jié)構(gòu)中的交叉節(jié)點處,通過比較該節(jié)點所有未訪問的鄰接邊在該點處的斜率,選出斜率值最為接近的一對鄰接邊,則這兩條邊便處于同一條路徑上且不屬于其他路徑中;以此方法,從一個起始節(jié)點開始訪問,找出屬于同一條路徑上的所有邊,當(dāng)訪問到某節(jié)點,剛訪問過的邊不在夾角最小的一對鄰接邊里時,則該路徑已到盡頭,需要從另一個起始節(jié)點開始訪問,找下一條路徑;一個拓撲結(jié)構(gòu)可能經(jīng)過多條路徑的訪問,才能訪問完拓撲中所有邊,這些路徑便是所規(guī)劃的路徑; (6)所述逐行填充方法,這里的路徑規(guī)劃等效于用一個方形矩陣模板,在由面部分圖像像素構(gòu)成的矩陣上逐行左右移動,以短的移動路程覆蓋圖像矩陣的大部分區(qū)域,而忽略個別像素點沒有被覆蓋到的地方,方形矩陣模板的移動軌跡即是面部分圖像的繪圖路徑軌跡; 二、運動控制方法 (1)所述機器人下位機的運動控制使用改進的S形加減速曲線算法控制步進電機的移動速度,使用改進的DFB直線插補算法實現(xiàn)繪畫平臺的X軸和Y軸聯(lián)動控制; (2)所述改進的S形加減速曲線算法是根據(jù)步進電機的具體參數(shù)和實際負載確定S形加減速曲線的方程;然后將S形加減速曲線離散為21個加減速臺階,計算一次移動所需的PWM脈沖個數(shù),然后為每個加減速臺階分配相應(yīng)的脈沖個數(shù); (3)所述速度調(diào)整方法是根據(jù)運動曲線的方向變化趨勢來設(shè)定移動一個線段的終點所在的減速臺階; (4)所述改進的DFB直線插補算法對原算法的改進是定義單獨的方向變量,然后將移動向量都轉(zhuǎn)化為增加步進電機閉環(huán)控制的第一象限向量。
【文檔編號】G05B19/414GK103955166SQ201410214837
【公開日】2014年7月30日 申請日期:2014年5月20日 優(yōu)先權(quán)日:2014年5月20日
【發(fā)明者】馮林, 呂連生, 秦曉程, 武超, 毛小龍, 彭向岐 申請人:大連理工大學(xué)