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