劉建星 陳淑玲 蘭志鵬 龔本強(qiáng) 邢紅義
摘 要:CAD是目前工業(yè)設(shè)計(jì)時(shí)必須使用的設(shè)計(jì)手段,可以說(shuō)工業(yè)設(shè)計(jì)離不開CAD,AutoCAD是歷史最悠久的CAD系統(tǒng)。DXF是AutoCAD的一種矢量圖形交換文件,有兩類存儲(chǔ)格式:ASCII格式和二進(jìn)制格式,ASCII格式具備良好的可讀性,DXF已被廣泛使用,絕大多數(shù)CAD軟件都能讀入或輸出DXF文件。DXF文件由多個(gè)Section(段)組成,每個(gè)Section描述一個(gè)矢量元素,DXF是完成產(chǎn)品設(shè)計(jì)后,進(jìn)行機(jī)器人加工軌跡規(guī)劃的優(yōu)選手段之一。工件坐標(biāo)系是工業(yè)機(jī)器人系統(tǒng)里以工件為參照所建立的直角坐標(biāo)系,ABB工業(yè)機(jī)器人工件坐標(biāo)系是很完善的坐標(biāo)系轉(zhuǎn)換,包括了坐標(biāo)平移和旋轉(zhuǎn)。有了工件坐標(biāo)系,有了產(chǎn)品設(shè)計(jì)的DXF,進(jìn)行工業(yè)機(jī)器人TCP(工具中心點(diǎn))軌跡規(guī)劃就很方便了,可從DXF中提取軌跡的矢量特征,從而引導(dǎo)工業(yè)機(jī)器人實(shí)訓(xùn)規(guī)劃軌跡循跡。自編軟件提取矢量特征切實(shí)可行,自主算法適用于教學(xué)。
關(guān)鍵詞:CAD與DXF格式;C++與矢量特征提取;RAPID編程;ABB工業(yè)機(jī)器人運(yùn)動(dòng)軌跡引導(dǎo)
1 引言
現(xiàn)代工業(yè)設(shè)計(jì)離不開CAD(計(jì)算機(jī)輔助設(shè)計(jì))。AutoCAD是歷史最悠久且應(yīng)用廣泛的CAD系統(tǒng),DXF格式是AutoCAD軟件系統(tǒng)的一種圖形交換文件,絕大多數(shù)CAD軟件都能導(dǎo)入和輸出DXF格式的文件。DXF是一種矢量數(shù)據(jù)格式,詳細(xì)描述了繪圖矢量的全部特征。DXF有兩種存儲(chǔ)格式:ASCII格式和二進(jìn)制格式。其中,ASCII具有良好的可讀性,可使用眾多的文本編輯器查看和修改。
智能制造是現(xiàn)代制造業(yè)的發(fā)展方向和重要環(huán)節(jié)。柔性生產(chǎn)系統(tǒng)則是智能制造過程中無(wú)可替代的加工方法和制作手段。工業(yè)機(jī)器人(又稱機(jī)械手或機(jī)械臂)是柔性生產(chǎn)系統(tǒng)的關(guān)鍵設(shè)備。經(jīng)過多年的發(fā)展,工業(yè)機(jī)器人已具備:重復(fù)定位精度高、連續(xù)工作時(shí)間長(zhǎng)、程序編寫簡(jiǎn)單易行、配套設(shè)備齊全,是柔性生產(chǎn)過程中不可或缺的設(shè)備。現(xiàn)代工業(yè)機(jī)器人系統(tǒng)已具備可自行定義的工件坐標(biāo)系,它以工件的基準(zhǔn)面為參考,是一種全面的坐標(biāo)轉(zhuǎn)換,包括原點(diǎn)位移和坐標(biāo)軸旋轉(zhuǎn),為我們的使用工業(yè)機(jī)器人提供了極大的便利。
一般來(lái)說(shuō),機(jī)器人的工作過程是對(duì)“機(jī)器人IO”、“TCP軌跡”、“工作節(jié)拍”,這三大要點(diǎn)的精準(zhǔn)控制,做好了,就能使機(jī)器人優(yōu)質(zhì)高效的工作。如果加工路線都能發(fā)生偏離,那么,何以言優(yōu)質(zhì)加工。故此,軌跡規(guī)劃就是機(jī)器人優(yōu)質(zhì)工作的重要前提之一。有了產(chǎn)品設(shè)計(jì)圖,加工工件上各個(gè)加工軌跡點(diǎn)的相對(duì)位置就能準(zhǔn)確定位,在工件坐標(biāo)系下,進(jìn)行工業(yè)機(jī)器人TCP的軌跡規(guī)劃就有章可循,定位準(zhǔn)確。
C語(yǔ)言在1970年由Bell實(shí)驗(yàn)室發(fā)明,結(jié)合了匯編語(yǔ)言和高級(jí)語(yǔ)言的優(yōu)點(diǎn),代碼少、高效靈活、易移植。C++是C語(yǔ)言的拓展延伸。既能實(shí)現(xiàn)C語(yǔ)言的過程化程序設(shè)計(jì),又能進(jìn)行以抽象數(shù)據(jù)類型為特點(diǎn)的基于對(duì)象的封裝型程序設(shè)計(jì)。C++我們并不陌生,編程簡(jiǎn)單易行,因此,我們可以自行編寫C++程序,從DXF文件中讀取產(chǎn)品設(shè)計(jì)圖中的軌跡矢量特征,形成TCP運(yùn)動(dòng)軌跡引導(dǎo)文件。
RAPID編程環(huán)境是工業(yè)機(jī)器人的編程手段之一,ABB工業(yè)機(jī)器人就是采用RAPID編程環(huán)境進(jìn)行機(jī)器人程序編制的,本文就是利用ABB機(jī)器人的程序?qū)CP運(yùn)動(dòng)軌跡引導(dǎo)文件進(jìn)行解讀,根據(jù)TCP運(yùn)動(dòng)軌跡引導(dǎo)文件的數(shù)據(jù),實(shí)現(xiàn)機(jī)器人TCP運(yùn)動(dòng)軌跡引導(dǎo)。
2 相關(guān)技術(shù)
2.1 AutoCAD之DXF 與軌跡特征
AutoDesk CAD是AutoDesk公司開發(fā)的CAD軟件。是歷史最悠久的CAD軟件,也是應(yīng)用最廣泛的CAD軟件之一。產(chǎn)品設(shè)計(jì)完成后,產(chǎn)品上各個(gè)點(diǎn)的相對(duì)位置就是已知的,不管是哪一種設(shè)計(jì)軟件,只要將產(chǎn)品設(shè)計(jì)圖輸出成DXF格式,我們就能進(jìn)行機(jī)器人TCP的軌跡規(guī)劃與引導(dǎo)。
DXF是AutoCAD定義的圖形交換文件,是一種開放型數(shù)據(jù)格式,用于與其它軟件進(jìn)行CAD設(shè)計(jì)圖形數(shù)據(jù)交換,DXF文件里包含了產(chǎn)品軌跡特征,絕大多數(shù)CAD系統(tǒng)都能導(dǎo)入和輸出DXF格式文件。DXF有二種存儲(chǔ)格式:ASCII格式和二進(jìn)制格式。本文只討論ASCII格式。
ASCII格式的DXF文件由幾個(gè)“段”組成,其基本元素是“數(shù)據(jù)對(duì)”,若干“數(shù)據(jù)對(duì)”組成一個(gè)“段”?!皵?shù)據(jù)對(duì)”由“組碼”和“組值”組成,“組碼”和“組值”各自獨(dú)占一行?!敖M碼”是正整數(shù)型字符串,“組值”是實(shí)數(shù)型或文本型字符串。
一般來(lái)說(shuō),一個(gè)DXF文件包括“標(biāo)題(HEADER)”段、“類(CLASSES)”段、“表(TABLES)”段、“快(BLOCKS)”段、“實(shí)體(ENTITIES)”段、“對(duì)象(OBJECTS)”段及“EOF(文件結(jié)束)”標(biāo)志組成。
組碼“0””和字符串“SECTION”為段頭,組碼“0”和字符串“ENDSEC”為段尾。組碼“2”和段名(如HEADER、ENTITIES等等)聲明本段的作用。
特別說(shuō)明:與本文相關(guān)的是“實(shí)體(ENTITIES)”段,本段描述了軌跡的相關(guān)數(shù)據(jù),如:軌跡的類型(直線、圓弧線、圓形)、軌跡特征點(diǎn)的坐標(biāo)值。根據(jù)這些特征值就能實(shí)現(xiàn)對(duì)機(jī)器人的TCP軌跡引導(dǎo)。
2.2 工業(yè)機(jī)器人
現(xiàn)代工業(yè)機(jī)器人具備重復(fù)定位復(fù)精度高、連續(xù)工作時(shí)間長(zhǎng)、程序編寫簡(jiǎn)單易行的優(yōu)點(diǎn),是柔性加工系統(tǒng)的優(yōu)選設(shè)備。在所有加工過程中,加工軌跡直接影響加工質(zhì)量,因此,機(jī)器人的軌跡規(guī)劃是機(jī)器人編程工作的重中之重。
2.2.1 工業(yè)機(jī)器人的工件坐標(biāo)系
絕大多數(shù)工業(yè)機(jī)器人都提供了可由用戶自行定義的工件坐標(biāo)系,這是一個(gè)完美的坐標(biāo)轉(zhuǎn)換功能。用戶可以以待加工產(chǎn)品(即工件)的基準(zhǔn)平面來(lái)定義工件坐標(biāo)。這個(gè)工件坐標(biāo)系與機(jī)器人的安裝位置無(wú)關(guān),必須在機(jī)器人的可達(dá)范圍內(nèi),只與工件的擺放位置相關(guān)。
定義工件坐標(biāo)系時(shí),需要選定坐標(biāo)系原點(diǎn)、確定X軸和Y軸的方向??梢远x多個(gè)工件坐標(biāo)系,在機(jī)器人工作時(shí)按需使用;自行定義的工件坐標(biāo)系可以在機(jī)器人基座標(biāo)系里實(shí)現(xiàn)偏移和旋轉(zhuǎn)。
使用已完成定義工件坐標(biāo)系時(shí),機(jī)器人控制器自動(dòng)進(jìn)行坐標(biāo)系轉(zhuǎn)換,根據(jù)坐標(biāo)系轉(zhuǎn)換的計(jì)算結(jié)果,實(shí)現(xiàn)機(jī)器人TCP的運(yùn)動(dòng)軌跡控制。
2.2.2 工業(yè)機(jī)器人TCP軌跡規(guī)劃
本文擬采用:從產(chǎn)品設(shè)計(jì)圖輸出DXF文件,在DXF文件里,提取軌跡特征,根據(jù)軌跡特征,進(jìn)行TCP運(yùn)動(dòng)軌跡控制,實(shí)訓(xùn)TCP軌跡規(guī)劃。
DXF文件里的軌跡特征皆是以產(chǎn)品設(shè)計(jì)時(shí)的基準(zhǔn)面為參考的,因此TCP軌跡規(guī)劃以產(chǎn)品設(shè)計(jì)的基準(zhǔn)參考面來(lái)實(shí)現(xiàn)才能更精準(zhǔn);前節(jié)所述的工件坐標(biāo)系可為我們實(shí)現(xiàn)軌跡規(guī)劃提供極大的幫助。
2.2.3 工業(yè)機(jī)器人編程
工業(yè)機(jī)器人自帶程序編輯器,提供了直線運(yùn)動(dòng)指令、圓弧運(yùn)動(dòng)指令。直線與圓弧軌跡直接使用運(yùn)動(dòng)指令,復(fù)雜圖形(如橢圓)則采用短直線段多次逼近來(lái)模擬。
2.3 C語(yǔ)言
C語(yǔ)言是目前很常見的一種計(jì)算機(jī)編程語(yǔ)言。具備跨平臺(tái)通用性強(qiáng)、編譯方式簡(jiǎn)單易行、生成后機(jī)器代碼少的特點(diǎn)。
本文以Microsoft的Visual Studio 2019中的VC++為編譯平臺(tái),自編程序,實(shí)現(xiàn)DXF軌跡特征提取。
3 軟件設(shè)計(jì)
C語(yǔ)言開發(fā)平臺(tái)采用Microsoft的Visual Studio官網(wǎng)提供的免費(fèi)Community版[1]。
關(guān)于VC++的詳細(xì)內(nèi)容可參考相關(guān)資料[2]。
關(guān)于DXF的內(nèi)容可參考相關(guān)資料[3][4]。
關(guān)于工業(yè)機(jī)器人的內(nèi)容可參考相關(guān)資料[5][6]。
CAD軟件早已廣泛應(yīng)用于工業(yè)設(shè)計(jì),因此,產(chǎn)品設(shè)計(jì)與DXF文件生成本文不作討論。本文只闡述DXF特征提取和機(jī)器人TCP軌跡規(guī)劃。
3.1 提取軌跡特征
DXF文件包含了產(chǎn)品設(shè)計(jì)時(shí)的圖層、線型、視窗、輪廓等等。這些都是產(chǎn)品的關(guān)鍵特征,我們進(jìn)行機(jī)器人TCP軌跡規(guī)劃與引導(dǎo)時(shí),只需要軌跡特征。因此,我們只需要將軌跡特征提取出來(lái),利用軌跡特征進(jìn)行軌跡規(guī)劃。
DXF文件軌跡特征簡(jiǎn)述:
說(shuō)明:每對(duì)雙引號(hào)內(nèi)的字符獨(dú)占一行,小寫字母d代表十進(jìn)制數(shù)字。
“2”和“ENTITIES”:本段為實(shí)體段;
“100”和“AcDBLine”:直線軌跡特征數(shù)據(jù)開始;
“10”和“ddd.dd”:直線段起點(diǎn)X坐標(biāo);
“20”和“ddd.dd”:直線段起點(diǎn)Y坐標(biāo);
“30”和“ddd.dd”:直線段起點(diǎn)Z坐標(biāo);
“11”和“ddd.dd”:直線段終點(diǎn)X坐標(biāo);
“21”和“ddd.dd”:直線段終點(diǎn)Y坐標(biāo);
“31”和“ddd.dd”:直線段終點(diǎn)Z坐標(biāo);
“100”和“AcDBCircle”:圓形軌跡特征數(shù)據(jù)開始;
“10”和“ddd.dd”:圓心X坐標(biāo);
“20”和“ddd.dd”:圓心Y坐標(biāo);
“30”和“ddd.dd”:圓心Z坐標(biāo);
“40”和“ddd.dd”:圓半徑;
更多特征描述,可參考DXF的相關(guān)資料[3][4]。
知道了軌跡特征的含義,從ASCII格式的DXF文件中提取就簡(jiǎn)單易行了,自行編寫一個(gè)小程序即可。
軌跡特征提取流程圖見圖1:
3.2 軌跡規(guī)劃
自行編寫軌跡規(guī)劃輔助程序從特征文件生成引導(dǎo)數(shù)據(jù)。簡(jiǎn)單圖形,如直線線段、圓弧線段、圓形圖形可直接應(yīng)用移動(dòng)指令進(jìn)行軌跡引導(dǎo);復(fù)雜圖形,如橢圓、樣條曲線,則需依據(jù)設(shè)計(jì)公差進(jìn)行多線段逼近。
軌跡規(guī)劃的所有目標(biāo)點(diǎn)的坐標(biāo)值皆以工件設(shè)計(jì)數(shù)據(jù)為依據(jù),與機(jī)器人坐標(biāo)無(wú)關(guān),進(jìn)行機(jī)器人引導(dǎo)時(shí),必須在工件坐標(biāo)系里進(jìn)行。
參考DXF文件格式,根據(jù)已提取到的軌跡特征文件,自定義軌跡引導(dǎo)文件;根據(jù)機(jī)器人移動(dòng)指令的特點(diǎn),軌跡引導(dǎo)文件格式如下:
(1)以ASCII格式存儲(chǔ),便于識(shí)別;(2)以數(shù)據(jù)組的形式組成機(jī)器人運(yùn)動(dòng)引導(dǎo)數(shù)據(jù),便于機(jī)器人程序編程;(3)一個(gè)引導(dǎo)數(shù)據(jù)組獨(dú)占一行,行首字母代表運(yùn)動(dòng)方式,后續(xù)若干運(yùn)動(dòng)參數(shù)。(4)引導(dǎo)參數(shù)以半角逗號(hào)“,”為參數(shù)分隔符、以半角分號(hào)“;”為數(shù)據(jù)組終止符。(5)L代表直線段軌跡,后續(xù)行為3個(gè)實(shí)數(shù)數(shù)值,分別代表X、Y、Z軸坐標(biāo)值;(6)C代表圓弧,后續(xù)行為6個(gè)實(shí)數(shù)數(shù)值,分別代表2個(gè)(圓弧)點(diǎn)的X、Y、Z軸坐標(biāo)值。(7)復(fù)雜圖形采用多線段逼近。(8)引導(dǎo)文件只包括軌跡數(shù)據(jù)。節(jié)拍控制、工具指向等,在機(jī)器人編程時(shí)完成。
生成引導(dǎo)數(shù)據(jù)流程圖,見圖2:
3.3 RAPID編程實(shí)習(xí)機(jī)器人運(yùn)動(dòng)引導(dǎo)
有了機(jī)器人TCP運(yùn)動(dòng)軌跡的引導(dǎo)數(shù)據(jù),根據(jù)引導(dǎo)數(shù)據(jù)指定的運(yùn)動(dòng)方式和參數(shù),正確調(diào)用機(jī)器人運(yùn)動(dòng)指令,以中間變量傳遞運(yùn)動(dòng)指令參數(shù),即可實(shí)現(xiàn)機(jī)器人TCP運(yùn)動(dòng)軌跡的引導(dǎo)。
從引導(dǎo)數(shù)據(jù)文件的第一行開始,每讀入一行引導(dǎo)數(shù)據(jù)進(jìn)行一次運(yùn)動(dòng)引導(dǎo),至最后一行結(jié)束;根據(jù)設(shè)計(jì)要求,在需要的時(shí)候,插入工作過渡點(diǎn)、插入節(jié)拍控制、IO控制指令等。
如:
在第一個(gè)軌跡循跡結(jié)束,移至非連續(xù)的下一個(gè)軌跡起點(diǎn)時(shí),就需要離開加工面,避開可能干涉的區(qū)域,然后,再移至下一個(gè)軌跡起始點(diǎn)。這個(gè)過程就需要添加一些移動(dòng)指令;
節(jié)拍控制和IO控制也不能在DXF文件里體現(xiàn)出來(lái),只有在RAPID編程環(huán)境下添加。
4 結(jié)語(yǔ)
(1)DXF格式的產(chǎn)品設(shè)計(jì)圖包含了易提取的軌跡特征,可用于工業(yè)機(jī)器人的軌跡規(guī)劃。(2)自編寫程序從DXF文件里快速提取軌跡特征,忽略與軌跡無(wú)關(guān)的數(shù)據(jù)。(3)機(jī)器人的移動(dòng)指令不能完全擬合軌跡,需在加工公差范圍內(nèi)采用短直線段逼近。(4)RAPID編程環(huán)境可實(shí)現(xiàn)利用軌跡特征的圖形交換文件進(jìn)行機(jī)器人TCP的軌跡引導(dǎo)。(5)非連續(xù)軌跡間的過渡移動(dòng)指令需另行添加。(6)機(jī)器人IO控制、節(jié)拍控制指令需另行添加。
參考文獻(xiàn):
[1]Visual Studio官網(wǎng):https://visualstudio.microsoft.com/zh-hans/downloads/.
[2]明日科技.Visual C 從入門到精通。清華大學(xué)出版社.
[3]DXF文件分析:https://wenku.baidu.com/view/ab13d7fcd5bbfd0a78567311.html.
[4]DXF組碼址:https://wenku.baidu.com/view/739eda482e3f5727a5e962a8.html?sxt s=1563506815490.
[5]葉暉,管小清.工業(yè)機(jī)器人實(shí)操與應(yīng)用技巧.機(jī)械工業(yè)出版社.
[6]龔仲華,龔曉雯.ABB工業(yè)機(jī)器人編程全集.人民郵電出版社.