李楊 張華良 王軍



關鍵詞:機器人;Coppeliasim仿真;LuaSocket;D-H模型
隨著機器人建模與仿真在工業技術領域占有比重越來越大,在機器人設計與制造過程中,能夠提前解決機器人運行中出現的問題,并避免在實操中呈現的各種安全隱患問題也變得尤為重要。根據不同的仿真目標選擇仿真工具成為開發機器人的關鍵。L Pitonakova等人提出了V-REP,Gazebo和ARGOS機器人模擬器的功能和性能比較。2019年11月,V-REP被重新命名為Coppeliasim,Coppeliasim在V-REP的基礎上重寫計算例程、碰撞處理檢測、最短路徑計算、超頻樹、近似傳感器模擬以及點云方面,顯著提高了運行速度。但Coppeliasim仿真運動過程只能根據腳本執行,可操作性能差。祁若龍等人指出MATLAB在機器人仿真領域應用廣泛,但是MATLAB仿真在三維空間構型能力差,不能完整清晰的各個連桿與末端問的姿態。
本文針對以上的不足,提出了結合Coppeliasim與MATLAB通過LuaSocket通信使用控制器對機械臂控制,并得到機器人運動的關節角以及運動軌跡曲線。為當代機器人的使用與有效通信協議的開發提供必要參考。
1建立模型過程
各類機器人在仿真之前均需要建立機器人模型。本部分主要介紹使用3D建模軟件SolidWorks建模,并采用D-H參數法建模對所研究的機器人進行運動學分析。
1.1 D-H模型
為了準確描述機器人運動,D-H模型最初是由Denavit和Hartenberg于1956年提出,原理是依賴坐標變換:利用a(x軸移動距離)、a(基于x軸旋轉角度)、d(z軸移動距離)、(基于z軸旋轉角度)四個變量來描述并實現最小線性表示約定。該模型的出現,使得精確描述機器人運動軌跡,變得更為簡便化、具體化。D-H參數法建模要根據機器人的各個連桿分別創建坐標系,通過使用坐標的齊次變換表示兩個不同連桿之間的坐標變換與位姿狀態,根據此方法可以建立起多個連桿之間串聯系統中首末位置坐標系的變換關系。
1.2機器人正運動學的D-H表示方法
圖1是機器人關節簡圖,利用(基于z軸自身旋轉角度)、d(z軸上兩條公垂線之間的長度)、a(公垂線的長度)、a(基于兩條臨近z軸問的角度)四個變量表述機器人中各個角度與距離。通常,只有角和d是關節變量。
D-H建模方法主要思路:絡石機器人XB7具有六個自由度,對圖2所示的模型進行三維建模,對其進行具體分析。建立三維坐標系。建立機器人連桿坐標系如圖2所示。
根據D-H參數表1,機器人在其每個關節處均可建立屬于自己的參考坐標系。每個關節指定一個參考坐標系,確定各個關節轉換至下一個關節處的每一步,也就是從上一個參考坐標系轉至下一個參考坐標系的詳細步驟。重復以上所述,并結合各個關節變換,從而得出機器人的總變換矩陣。
根據以上D-H參數表確定并寫出絡石機器人XB7的總變換矩陣。方法如下:
2 LuaSocket通信
LuaSocket作為Lua的網絡拓展庫,類比Python中第三方庫概念,LuaSocket可理解為Lua的擴展庫,與第三方庫區別為,LuaSocket更為強大,可以實現平臺跨越,如Win、Unix、Mac等系統均可使用。在windows操作系統中,LuaSocket使用14個頭文件。通信由兩部分組成:第一個部分的核心代碼使用c語言編寫,能夠對TCP與UDP傳輸層的訪問提供相應支持。第二個部分是一組Lua模塊,這組模塊中添加了對SMTP、HTTP的支持和FTP協議以及處理Intemet的應用程序通常需要的其他功能。
在控制腳本中編寫控制程序與通信接口,遠程API函數通過socket通信與Coppeliasim進行交互,最大程度上減少了延遲和網絡負載。一個或多個外部應用程序與Coppe-liasim進行交~[12J。機器人運動時不問斷接收MATLAB中控制程序所發出的指令。通信體系選擇Client-Server模式,將Coppeliasim作為Client端,MATLAB中控制程序為Server端。這個通信模式下,Coppdiasim接收MATLAB發送的相關控制指令,能準確對機器人的運動仿真進行控制。
MATLAB與Coppeliasim通過使用Luasocket進行通信。二者進行聯合仿真時,Coppeliasim客戶端需要對通信協議進行初始化,與MATLAB服務器端綁定的端口號相連,雙方構建連接后,可繼續進行通信及控制命令的發送與接收。服務器收到指令后對信息進行處理,隨機發送響應信息給客戶端,雙方成功構建鏈接,指定成功發送并執行后關閉此次通信。
3 XB7機器人運動仿真
XB7機器人是絡石公司研發的新一代機器人,與以往開發的機器人相比具有以下優點:
(1)速度更快。使用基于機器人動力學控制的軌跡規劃,實現高度精確動力學建模與參數辨識,并建立動態慣量模型,使機器人在運動過程中保持以最大加速度進行運動。
(2)準確度更高。對運動學參數進行分析時,存在與精確數據存在一定誤差的情況,XB7通過全局誤差補償和高精度誤差標定等一系列手段,機器人在運動過程中能精確運動軌跡與運動姿態平滑。
(3)柔順性更好。使用算法替代傳感器,實現準確的機器人力學控制與拖動示教。
(4)開放性更高。支持c++語言與Python語言、邏輯性指令、實時對接底層接口。
依據絡石機器人XB7的各項規格,創建準確的連桿坐標系,獲取連桿參數,根據機器人各個關節之間約束與相互運動聯系,將各個關節依次約束到對應的上層關節上,進而完成建模過程。圖3中七個部件使用六個關節連接,其層級如圖3所示。
建模及仿真具體做法:
聯合仿真開始時,在客戶端建立控制腳本文件,提供控制體對象模型、搭建仿真環境,以及解析來自MATLAB的socket控制命令,MATLAB負責對控制命令的編寫。由MATLAB輸出控制命令,實現控制機器人運動。MATLAB將生成的.txt文件導人數據,生成圖像如圖4所示:
仿真過程中,控制程序通過simxGetObjectHandle()函數獲取控制命令發送給執行句柄。MATLAB經控制程序計算后,通過socket下發控制命令給Coppeliasim并對socket控制命令進行解析后,機器人按照其控制命令進行運動。
仿真結束時,MATLAB控制程序通過simxFinish()函數中斷其與Coppeliasim的通信聯系。
Coppeliasim與MATLAB聯合仿真過程中重要的代碼如下所示:
(1)vrep=remApi("remoteApi,).在控制語句中添加本條語句,目的是在MATLAB控制程序中調用vrep=remApi(”remoteApi”)來構建對象并加載庫函數。
(2)vrep.simxFinsh(一1);這條語句執行時,會斷開之前打開的所有連接程序。
(3)clientID=vrep.simxStart(127.O.0.1,19999,true,true,5000,5);建立相應的端口號。
4結論
本文提出了基于LuaSocket的機器人建模與運動仿真的方法,在SolidWorks軟件中生成STL文件,并導入Cop-peliasim中。通過使用Lua語言編寫控制程序。使MATLAB通過LuaSocket遠程控制XB7機器人運動。
經過對機器人運動控制的調試和實驗,證實了通過LuaSocket通信讓MATLAB與Coppeliasim聯合仿真的可行性,為以后的機器人編程打下基礎。本文所述的絡石機器人XB7屬于六軸,本文提出的方法,可以開發出其他多軸機器人、輪式機器人等。在此基礎上,通過修改內部腳本程序以及外部控制命令代碼,能夠對機器人運動仿真進行深層次的優化。本文對機器人建模與運動仿真后續研究中,需要在命令程序中添加更多控制模塊以及優化Coppe-liasim腳本庫方面做更多努力。