Design of robot off-line programming system based on dynamic list
李 靜1,李 君2,郝衛東2LI Jing1, LI Jun2, HAO Wei-dong2(1.桂林電子科技大學信息科技學院,桂林 541004;2.桂林電子科技大學 機電工程學院,桂林 541004)
?
基于動態鏈表的機器人離線編程系統設計
Design of robot off-line programming system based on dynamic list
李靜1,李君2,郝衛東2
LI Jing1,LI Jun2,HAO Wei-dong2
(1.桂林電子科技大學信息科技學院,桂林 541004;2.桂林電子科技大學 機電工程學院,桂林 541004)
摘要:機器人離線編程系統主要是實現程序的編輯轉換和離線仿真分析,不同類型的系統其系統架構很相似,且系統與C/C++有很好的兼容性。采用C/C++語言,對系統架構和重要模塊進行編程設計,可以提高系統的二次開發能力和程序的可移植能力。針對系統的數據處理特點,提出了采用動態鏈表進行數據操作的方法,實現了語言指令到機器人可執行文件的轉換。在MFC框架中,完成了離線編程仿真系統的設計。通過用戶界面輸入機器人語言程序,在仿真界面中輸出了仿真效果圖,仿真結果表明,所設計的系統能實現機器人的離線編程和仿真。通過串口模塊,將機器人可執行文件發送給機器人控制系統,控制川崎FS30N機器人進行了焊接實驗。
關鍵詞:焊接機器人;離線編程系統;架構設計;動態鏈表
工業機器人具有良好的可編程性,其編程能力決定了工業機器人功能的靈活性和智能性。離線編程系統能夠進示教編程的不足,具有顯著的優點[1]。離線編程系統在很大程度上滿足了工業生產的需求,但是實用化程度不深,在人機界面的人性化設計、軌跡規劃算法、系統魯棒性及二次開發能力等技術需要進步研究[2,3]。主流的離線編程系統有:基于VC++與OpenGL的離線編程系統[4];借助MATLAB的數值計算和繪圖功能開發的具有維可視化功能的離線編程系統[5];通過Solidworks 等維建模軟件的API接口進行二次開發的離線編程系統[6,7]。這些編程系統的功能和系統架構都很類似,而且與C和C++都有很好的兼容性。
本文將對系統進行功能模塊劃分,優化系統架構。針對模塊的順序執行特性和數據量不確定的特點,提出了采用動態鏈表進行數據操作的方法,并結合設計的軌跡規劃模塊,實現了語言指令到機器人可執行文件的轉化。在MFC框架中,完成了離線編程系統的設計。

圖1 離線編程系統工作流程圖
程序模塊主要是程序編制功能,具有程序管理、程序編輯、指令集管理、自主編程、程序檢測及程序轉換功能,每個功能的實現都離不開數據的讀取、轉換和存儲,程序的數據處理能力將直接影響到系統的整體性能[8]。程序模塊的執行是按照定規則順序單向執行的,且數據量不確定,因此適合采用動態鏈表進行數據的存儲和轉換。數據處理流程如圖2所示。

圖2 數據處理流程圖
圖中,語言指令通過用戶界面或自動編程系統輸入,根據指令解析法則對指令集進行語法分析和詞法分析,并生成指令序列和相應的路徑點數據序列。根據指令序列分配動態內存建立動態鏈表,將存儲路徑點信息的指針賦給動態鏈表中的指針變量Robot_Route,將指令字符串指針賦給指針變量Robot_Instruction,將結構體指針變量R_TCBNext賦NULL值,將結構體的指針賦給上個結點的結構體指針變量R_TCBNext,將結構體中的數據指針Robot_Memory賦NULL值。所建立的動態鏈表的表頭指針存放在變量Robot_Head中,鏈表最后個結點的指針變量R_TCBNext的值為NULL。
遍歷建立的動態鏈表,將結構體指針Robot_Cur和Robot_List指向鏈表頭指針Robot_Head,讀取結構體中變量Robot_Instruction,如果存放的是控制指令,則讀取變量Robot_Cur->R_TCBNext,若為NULL,則遍歷結束,否則將結構體指針Robot_List指向Robot_Cur->R_ TCBNext;如果存放的是運動指令,則調用軌跡規劃函數,將Robot_Route中的路徑信息轉化為各關節轉角序列,并存放在內存中,并將存放數據的內存指針賦給結構體變量Robot_Cur->Robot_Memory,如果變量Robot_ Cur->R_TCBNext的值為NULL,則遍歷結束,否則將結構體指針Robot_List指向Robot_Cur->R_TCBNext。在進行程序的編寫和調試中,程序的修將調用鏈表的插入和刪除函數對動態鏈表進行更,在編譯修后的程序時將只對插入的結點進行計算,可以縮短程序編譯和修的時間,提高工作效率。
軌跡規劃完成后,所有信息都存放在動態鏈表中。機器人可執行文件可以通過遍歷鏈表的方式生成。機器人運動仿真也可以通過遍歷鏈表的方式進行。通過運動仿真和誤差分析后的機器人可執行文件將以txt文件的形式保存。
軌跡規劃的作用是按照運動指令類型生成結點之間的路徑,其過程是在相鄰結點之間通過插補算法生成位姿點數據鏈,逆運動學計算后進行關節空間的軌跡規劃生成各關節轉角數據鏈。算法功能樹如圖3所示。

圖3 軌跡規劃算法功能樹
圖中,將軌跡規劃分為運動指令和自動編程指令。運動指令適用于點、直線、圓弧等簡單軌跡的描述。自定義指令可以描述復雜的軌跡,而且可以通過指令讀取維模型軟件等方式生成的軌跡點數據包,實現復雜軌跡的軌跡規劃。軌跡規劃程序流程圖如圖4所示。

圖4 軌跡規劃流程圖
在軌跡規劃計算過程中,以指針作為函數間參數傳遞的載體,數據的存取與轉化通過動態鏈表進行操作,接口函數便可設計為如下的形式:
INT16* Robot_Track(struct Robot_tcb*);
函數中輸入參數為動態鏈表的結構體指針,返回值為軌跡規劃后的數據塊指針。函數內部通過函數指針調用插補算法、離散算法、逆運動學計算等函數。為了便于函數的添加、編寫、調用,函數設計為統形式:
void* (*C_Track)(void*);
函數的數據量和數據類型是變化的,所以只能在函數中調用malloc()函數分配動態內存,在完成軌跡規劃計算后再釋放分配的內存資源,實現內存資源的重復利用。采用統的函數類型和動態數據處理可以更方便的添加新的算法函數和對算法函數的修,更有利于對系統的進和研究。
MFC集成了微軟公司提供的許多類庫,通過調用庫中的類可以實現絕大部分所需的功能,而且所開發的系統與MATLAB、Solidworks等軟件能完全兼容。所設計的離線編程系統用戶界面如圖5所示。

圖5 用戶界面
系統所采用的機器人語言是詹少坤等人開發的ZSK機器人語言[8]。運動指令包括關節運動指令MOVJ,直線運動指令MOVL,圓弧運動插補指令MOVC,點運動指令MOVP以及用于復雜軌跡編程的指令MOVT等。系統具有程序編輯、離線仿真、串口通信、坐標系參數設置等功能。機器人指令通過Edit編輯框控件輸入。在點擊“坐標系設置”按鈕后,可以對工件坐標系和工具坐標系進行參數設置。點擊主界面“仿真系統”按鈕,可以進行離線仿真操作。點擊主界面的“保存”按鈕,將調用文件類CFile的成員函數,將機器人可執行文件以txt文檔的形式保存。在通信模塊中,設置串口參數,并打開串口資源,點擊“下載”按鈕將彈出文檔打開對話框,打開保存的機器人可執行文件,可執行文件中的內容將通過函數WriteFile下載至機器人控制柜控制機器人運動。
該離線編程系統是針對FS30L機器人開發的,在離線編程系統的工件坐標系設置界面中輸入參數,在離線編程系統的輸入編輯框中依次輸入直線、圓弧、點、控制指令的代碼。點擊“編譯”按鈕,彈出編譯成功后,點擊“離線仿真”按鈕,在彈出的界面中點擊“開始”按鈕,離線仿真界面將顯示仿真結果。
圖6為關節轉角曲線圖,圖中的曲線連續且平滑,說明各關節運動平穩,速度和加速度小,機器人在運動過程中沒用強烈的柔性和剛性沖擊。圖7為末端執行器端點軌跡圖,圖中顯示的圖形與輸入的運動指令所要求的運動軌跡相同。表明,離線編程系統的設計是合理的。將通過離線編程和誤差分析驗證的機器人可執行文件保存為txt文檔。連接好電腦與機器人控制柜的串口設備,設置串口通信參數,打開串口資源,點擊“下載”按鈕,將保存的txt文檔發送給控制柜,控制柜讀取數據控制機器人進行焊接運動。機器人焊接實驗現場效果圖如圖8所示。
實驗結果表明,機器人的焊接運動與離線仿真結果相同,且焊縫的焊接質量能滿足生產要求。

圖6 關節轉角曲線圖

圖7 末端執行器端點軌跡圖
針對機器人離線編程系統,提出了采用動態鏈表進行數據操作的方法,實現了語言指令到機器人可執行文件的轉換,對機器人軌跡規劃模塊的程序設計進行了優化。以FS30N機器人為控制對像,在MFC框架中開發了離線編程系統,系統以ZSK語言為機器人編程語言,通過仿真界面輸出程序仿真結果,將通過仿真驗證和誤差分析的機器人可執行文件發送給機器人控制柜控制機器人進行焊接實驗,實驗結果顯示機器人的實際焊接運動與仿真結果相同,且焊接質量符合生產要求。

圖8 機器人焊接實驗圖
參考文獻:
[1] Pan Z, Polden J,Larkin N, Duin SV, Norrish J.Recent Progress on Programming Methods for Industrial Robots[J].Robot Comput Integr Manuf,2011,28(2):87-94.
[2] 孟國軍.工業機器人離線編程系統關鍵技術的研究[M].華中科技大學,2011.
[3] Weidong Zhu, Weiwei Qu, Lianghong Cao, Di Yang , Yinglin Ke.An off-line programming system for robotic drilling in aerospace manufacturing[J].Int J Adv Manuf Technol 2013,68:2535-2545.
[4] 祁若龍,周維佳,劉金國,肖磊.VC 平臺下機器人虛擬運動控制及3D 運動仿真的有效實現方法[J].機器人,2013,35.(5):594-599.
[5] Carmelo Mineo,Stephen Gareth Pierce, Pascual Ian Nicholson, Ian Cooper.Robotic path planning for non-destructive testing – A custom MATLAB toolbox approach[J].Robotics and Computer-Integrated Manufacturing,2016,37:1-12.
[6] 宋鵬飛,和瑞林,苗金鐘,單東日.基于Solidworks的工業機器人離線編程系統[J].制造業自動化,2013,35(5):1-4.
[7] 趙鳳申.基于UG/Open的機器人復雜曲線離線編程系統設計[J].制造業自動化,2012,34(1):109-112.
[8] 詹少坤.基于開放式焊接機器人系統的離線編程方式研究[M].哈爾濱工業大學,2009.
分析與探討
作者簡介:李靜(1983 -),女,陜西澄城縣人,講師,工學碩士,研究方向為機器人技術、電子技術應用及開關電源等。
收稿日期:2015-12-19
中圖分類號:TP242
文獻標識碼:A
文章編號:1009-0134(2016)03-0057-04