李楊 張華良 王軍



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