邰思銘,王紅平,張乂文
(長(zhǎng)春理工大學(xué) 機(jī)電工程學(xué)院,長(zhǎng)春 130022)
Plant Simulation(以下簡(jiǎn)稱為“Plant”)是一款面向?qū)ο蟆D形式集成的離散型生產(chǎn)系統(tǒng)建模仿真軟件,由德國(guó)西門子公司負(fù)責(zé)開發(fā),主要應(yīng)用于生產(chǎn)線的模型搭構(gòu)及分析研究。
目前針對(duì)Plant仿真軟件大多文獻(xiàn)都致力于解決生產(chǎn)線平衡、生產(chǎn)系統(tǒng)布局、作業(yè)排序與調(diào)度、物料配送等相關(guān)問(wèn)題[1-4],且其中大部分仿真項(xiàng)目都是基于二維模型來(lái)進(jìn)行設(shè)計(jì)和實(shí)驗(yàn)的,即使涉及到三維仿真也只通過(guò)軟件自帶的對(duì)象庫(kù)中的模型來(lái)進(jìn)行轉(zhuǎn)換,目前還沒有針對(duì)Plant中三維設(shè)備仿真進(jìn)行精細(xì)化操作的相關(guān)文獻(xiàn)研究。這就造成了兩點(diǎn)缺陷:1)雖然Plant主要以工廠仿真的數(shù)據(jù)分析為主,但自定義模型導(dǎo)入和精確的模型控制更能貼合實(shí)際產(chǎn)線的運(yùn)轉(zhuǎn),能夠給予工廠搭建更多的實(shí)際性參考意義;2)由于Plant本身的算法封閉不予以用戶展示,無(wú)法針對(duì)內(nèi)置算法進(jìn)行參考分析來(lái)實(shí)現(xiàn)三維模型的精確調(diào)控,這就造成實(shí)際設(shè)備模型在導(dǎo)入后的驅(qū)動(dòng)過(guò)程中無(wú)法保證平穩(wěn)運(yùn)行且極易產(chǎn)生干涉現(xiàn)象,使其整體展示性并不形象直觀,不能夠搭建更為真實(shí)的“數(shù)字孿生工廠”。
本文針對(duì)現(xiàn)有三維仿真的不足,以其中結(jié)構(gòu)較為復(fù)雜的六軸機(jī)器人三維模型作為研究對(duì)象,針對(duì)此機(jī)器人在復(fù)雜環(huán)境中無(wú)法有效避障及平穩(wěn)運(yùn)行的問(wèn)題提出了一種新的研究方法及解決思路,從實(shí)際機(jī)器人模型設(shè)備的導(dǎo)入到精細(xì)化建模及運(yùn)動(dòng)控制都做了相應(yīng)的分析及仿真實(shí)現(xiàn)。
直至最新版本,Plant中工具箱中自帶的原始機(jī)器人模型仍為四軸機(jī)器人。雖可替換官方自帶的3種六軸機(jī)器人模型的文件,但仍非產(chǎn)線中的實(shí)際設(shè)備,且由于不可控的原因,以機(jī)器人的取件置件操作為例,針對(duì)每個(gè)物料的拾取點(diǎn),實(shí)際機(jī)器人都存在多組逆解所形成的多組姿態(tài)進(jìn)行抓取,然而軟件默認(rèn)只會(huì)給予一種姿態(tài)形式;在機(jī)器人取件到置件的運(yùn)動(dòng)過(guò)程中,運(yùn)動(dòng)路徑的形式也是固定的,無(wú)法對(duì)機(jī)器人各個(gè)關(guān)節(jié)加以調(diào)控來(lái)進(jìn)行優(yōu)化,極容易導(dǎo)致干涉現(xiàn)象的發(fā)生,原始機(jī)器人也無(wú)法在量程范圍內(nèi)實(shí)現(xiàn)精確抓取,甚至容易出現(xiàn)隔空抓取的操作,與實(shí)際的生產(chǎn)線的設(shè)備運(yùn)動(dòng)相差甚遠(yuǎn)。
針對(duì)仿真中機(jī)器人而言,一般有以下2種產(chǎn)生干涉的情況:一是機(jī)器人在取置件時(shí)由于自身結(jié)構(gòu)或關(guān)節(jié)角選取問(wèn)題自身姿態(tài)同上下料的設(shè)備產(chǎn)生干涉;二是機(jī)器人在運(yùn)動(dòng)過(guò)程中由于路徑的優(yōu)化問(wèn)題同周圍設(shè)備產(chǎn)生碰撞,具體干涉情況以圖1某區(qū)域?yàn)槔?/p>
圖1 原始機(jī)器人運(yùn)動(dòng)時(shí)的干涉現(xiàn)象
針對(duì)以上問(wèn)題,本文以實(shí)際產(chǎn)線處的六軸機(jī)器人模型為例,通過(guò)逆解運(yùn)算達(dá)成機(jī)器人多種取置件姿態(tài)并取其中一組最優(yōu)的關(guān)節(jié)角解實(shí)現(xiàn)最短路徑驅(qū)動(dòng),針對(duì)運(yùn)動(dòng)過(guò)程易于產(chǎn)生干涉的問(wèn)題,通過(guò)對(duì)干涉現(xiàn)象進(jìn)行分析并以內(nèi)置的Simtalk語(yǔ)言編程的方式來(lái)對(duì)各關(guān)節(jié)進(jìn)行運(yùn)動(dòng)角度及運(yùn)動(dòng)順序調(diào)整,保證機(jī)器人的平穩(wěn)運(yùn)行及避障的效果,優(yōu)化的流程步驟為:1)針對(duì)此六軸機(jī)器人進(jìn)行運(yùn)動(dòng)學(xué)建模及逆解運(yùn)算;2)通過(guò)Matlab對(duì)解析式編程及ActiveX接口完成數(shù)據(jù)交互;3)將實(shí)際產(chǎn)線的機(jī)器人模型導(dǎo)入Plant中進(jìn)行建模;4)通過(guò)Simtalk語(yǔ)言編程實(shí)現(xiàn)運(yùn)動(dòng)控制及路徑優(yōu)化;5)驅(qū)動(dòng)自定義導(dǎo)入的機(jī)器人實(shí)現(xiàn)避障等操作。
本文以生產(chǎn)線的某區(qū)域處的六軸機(jī)器人為研究對(duì)象,此機(jī)器人實(shí)際型號(hào)為德國(guó)庫(kù)卡機(jī)器人KR210-R3100-ULTRA型,是六軸均為旋轉(zhuǎn)關(guān)節(jié)的串聯(lián)機(jī)器人,針對(duì)此機(jī)器人進(jìn)行D-H運(yùn)動(dòng)學(xué)建模。
首先采用由Denavit和Hartenberg提出D-H建模法進(jìn)行運(yùn)動(dòng)學(xué)建模,D-H建模方法主要有兩種:標(biāo)準(zhǔn)D-H方法和改進(jìn)的D-H方法,這兩種方法的主要區(qū)別于連桿坐標(biāo)系建立的位置不同,因?yàn)闃?biāo)準(zhǔn)D-H方法的轉(zhuǎn)換矩陣只涉及到一個(gè)連桿的相關(guān)參數(shù),更方便MATLAB 編程語(yǔ)言的實(shí)現(xiàn)[5]76-88。本文采用標(biāo)準(zhǔn)D-H方法進(jìn)行建模。
通過(guò)標(biāo)準(zhǔn)D-H方法,建立的連桿坐標(biāo)系如圖2所示。
圖2 Kr210r3100機(jī)器人的D-H坐標(biāo)系
其中PTarget表示為末端執(zhí)行位置坐標(biāo)、Oc表示腕關(guān)節(jié)的腕心位置坐標(biāo)。建立好D-H坐標(biāo)系后,根據(jù)相鄰連桿之間坐標(biāo)系變換規(guī)則來(lái)確定各連桿的D-H參數(shù),如表1所示。
表1 Kr210r3100機(jī)器人的D-H參數(shù)表
其中括號(hào)內(nèi)的值為機(jī)器人初始狀態(tài)下所對(duì)應(yīng)的初始值,關(guān)節(jié)角范圍為官方提供的各關(guān)節(jié)旋轉(zhuǎn)軸相對(duì)初始狀態(tài)的最小和最大旋轉(zhuǎn)角度范圍。
根據(jù)Pieper準(zhǔn)則[6],六軸機(jī)器人存在解析解共有2個(gè)充分條件即:1)3個(gè)相鄰關(guān)節(jié)軸線交于一點(diǎn);2)3個(gè)相鄰關(guān)節(jié)軸線互相平行。此機(jī)器人滿足Pieper準(zhǔn)則的第一個(gè)充分條件,故可通過(guò)幾何法對(duì)解析解進(jìn)行求解,因?yàn)闄C(jī)器人末端的3個(gè)關(guān)節(jié)軸線相交于同一點(diǎn),該點(diǎn)通常稱之為腕點(diǎn)Oc,因此腕點(diǎn)存在,故可以通過(guò)對(duì)關(guān)節(jié)解耦的方式來(lái)極大地簡(jiǎn)化求解過(guò)程。即前3個(gè)關(guān)節(jié)變量影響腕點(diǎn)的位置,后3個(gè)關(guān)節(jié)變量影響腕點(diǎn)的姿態(tài)[7]。
由于腕點(diǎn)和4、5號(hào)關(guān)節(jié)的坐標(biāo)原點(diǎn)重合,而D-H坐標(biāo)系中Z5和Z6軸共線,因此可以將Oc沿Z5軸平移d6個(gè)長(zhǎng)度單位來(lái)獲取機(jī)器人末端位置的坐標(biāo)PTarget,即有:
綜上,關(guān)節(jié)角θ1、θ2、θ5均存在兩組解,此解耦型六軸串聯(lián)機(jī)器人共有2×2×2=8組解。
通過(guò)MATLAB對(duì)上述運(yùn)動(dòng)學(xué)解析式進(jìn)行編程后,再進(jìn)行逆解正確性驗(yàn)證。將求解出來(lái)的末端執(zhí)行器的位姿矩陣的關(guān)節(jié)角代入進(jìn)MATLAB的機(jī)器人工具箱(Robotics Toolbox)中,對(duì)比工具箱自動(dòng)求解后的末端位置X、Y、Z和末端姿態(tài)所代表的RPY角是否和原始輸入的位姿矩陣一致,若一致則說(shuō)明逆運(yùn)動(dòng)學(xué)無(wú)誤。
MATLAB 輸入的末端姿態(tài)矩陣TTarget如圖3所示。
圖3 輸入的姿態(tài)矩陣
設(shè)定機(jī)器人工具箱基本參數(shù)并進(jìn)行驗(yàn)證,在MATLAB中輸入的代碼內(nèi)容如下:
設(shè)定初始參數(shù)后開啟機(jī)器人工具箱的示教窗口,將逆運(yùn)動(dòng)學(xué)求出來(lái)的解值輸入到示教欄各軸的關(guān)節(jié)角q1~q6中,驗(yàn)證后的結(jié)果如圖4所示。
圖4 機(jī)器人工具箱逆運(yùn)動(dòng)學(xué)驗(yàn)證
通過(guò)觀察可知,將示教欄中的X、Y、Z值乘上縮放系數(shù)1000,將其值對(duì)比輸入的位置矩陣即TTarget中第4列的前3行所構(gòu)成的3×1矩陣可知無(wú)誤,將RPY角值通過(guò)矩陣轉(zhuǎn)換公式j(luò)iRxyz(γ,β,α)=R(Z,α)R(Y,β)R(X,γ)[5]66可以轉(zhuǎn)換成一個(gè)3×3矩陣對(duì)比輸入的姿態(tài)矩陣,即前3行、前3列所構(gòu)成的3×3矩陣可知無(wú)誤,通過(guò)以上完成了逆運(yùn)動(dòng)學(xué)正確性的判定。
因?yàn)镻lant的復(fù)雜函數(shù)運(yùn)算和矩陣運(yùn)算等能力較為薄弱,無(wú)法實(shí)現(xiàn)對(duì)上述解析式的編程表達(dá),故需借助MATLAB強(qiáng)大的計(jì)算能力來(lái)實(shí)現(xiàn),然后再與Plant進(jìn)行數(shù)據(jù)交互,為了實(shí)現(xiàn)MATLAB和Plant之間的通信,就必須借助相應(yīng)的通信工具,ActiveX是微軟公司提出的一種使用基于COM/DCOM通信,可以在本地環(huán)境中進(jìn)行一種數(shù)據(jù)交互的技術(shù),能夠使應(yīng)用程序相互共享數(shù)據(jù)和共享功能[8],對(duì)于MATLAB和Plant軟件而言,均自帶COM端口,故可通過(guò)ActiveX進(jìn)行通信和數(shù)據(jù)傳輸。
Plant需要從管理類庫(kù)的功能中找到信息流對(duì)象欄添加自帶的ActiveX插件,并要在打開此對(duì)象的窗口的類名欄中輸入MATLAB.application作為呼叫值,具體的添加方法如圖5(a)所示,呼叫方法如圖5(b)所示。
圖5 ActiveX插件添加與呼叫
在安裝時(shí)MATLAB 會(huì)自動(dòng)注冊(cè)成COM 服務(wù)器,MATLAB可作為自動(dòng)化服務(wù)器窗口(MATLAB Command Window)直接調(diào)用。
具體調(diào)用程序通過(guò)Plant內(nèi)置的Simtalk語(yǔ)言進(jìn)行編程,并將調(diào)用程序(Method)命名為calmat,主要通過(guò)以下幾個(gè)函數(shù)實(shí)現(xiàn)本地姿態(tài)矩陣數(shù)據(jù)的傳遞及MATLAB中關(guān)節(jié)角變量值的提?。?)Excute函數(shù)。將Plant中相應(yīng)的參數(shù)傳遞到MATLAB自動(dòng)化服務(wù)器窗口并執(zhí)行指定語(yǔ)句。如activex.execute ("run 'D:Program FilesMATLABR2014ain6dofmain.m'")—運(yùn)行存儲(chǔ)在硬盤中的主函數(shù)文件。2)GetVariable函數(shù)。獲取MATLAB自動(dòng)化服務(wù)器執(zhí)行語(yǔ)句后求解出來(lái)的工作區(qū)變量值。如ThetaTab [i,1]:=activex.Getvariable (thetaX,"base")—把求解的關(guān)節(jié)角值存儲(chǔ)在Plant中的ThetaTab表格中。
兩款軟件具體的數(shù)據(jù)交互示意圖如圖6所示。
圖6 ActiveX接口的數(shù)據(jù)交互
雖然針對(duì)自定義模型的導(dǎo)入及驅(qū)動(dòng)控制,西門子開發(fā)了這個(gè)方向的一定解決辦法,但更多的也僅限于關(guān)節(jié)少、運(yùn)動(dòng)簡(jiǎn)單的三維設(shè)備,對(duì)于機(jī)器人這種多關(guān)節(jié)的復(fù)雜運(yùn)動(dòng)構(gòu)件實(shí)現(xiàn)驅(qū)動(dòng)較為麻煩,要從模型入手和編程角度加以實(shí)現(xiàn),數(shù)模設(shè)定主要通過(guò)以下3點(diǎn):1)模型導(dǎo)入先前的設(shè)定和格式轉(zhuǎn)換。首先對(duì)要導(dǎo)入的模型通過(guò)相關(guān)CAD軟件建立各關(guān)節(jié)坐標(biāo)系,然后將模型文件轉(zhuǎn)化成.JT格式進(jìn)行輸出保存,并在Plant中通過(guò)Import Graphics的命令選取該.JT文件進(jìn)行導(dǎo)入,并設(shè)定好模型的對(duì)象屬性類別后以.s3d格式進(jìn)行保存。2)建立模型的層次結(jié)構(gòu)。通過(guò)Make Animatable Object命令對(duì)實(shí)體設(shè)置可動(dòng)節(jié)點(diǎn),從機(jī)器人第一軸至第六軸構(gòu)建好模型裝配體的結(jié)構(gòu)關(guān)系,創(chuàng)建完成的裝配結(jié)構(gòu),如圖7所示。3)設(shè)定各關(guān)節(jié)軸參數(shù)。以第五軸(Y5軸)為例,開啟其3D屬性欄,由于為旋轉(zhuǎn)關(guān)節(jié),故只需設(shè)定旋轉(zhuǎn)軸(Rotation axis)、運(yùn)動(dòng)副類型(Joint Type)及關(guān)節(jié)角運(yùn)動(dòng)范圍,若導(dǎo)入模型前坐標(biāo)系建立無(wú)誤,旋轉(zhuǎn)中心(Rotation center)默認(rèn)為原點(diǎn),角速度取默認(rèn)值1°/s值,第五軸具體參數(shù)設(shè)定如圖8所示。通過(guò)以上3點(diǎn),即完成了對(duì)該機(jī)器人整體模型的基本參數(shù)設(shè)定。
圖7 機(jī)器人裝配體結(jié)構(gòu)創(chuàng)建
圖8 第五軸關(guān)節(jié)參數(shù)設(shè)定
實(shí)現(xiàn)運(yùn)動(dòng)仿真共有兩個(gè)方面:一是MU運(yùn)動(dòng);二是機(jī)器人自身運(yùn)動(dòng)。前者較為簡(jiǎn)單,可以直接從機(jī)器人模型內(nèi)部進(jìn)行屬性設(shè)定,后者則要通過(guò)Simtalk語(yǔ)言及相關(guān)函數(shù)進(jìn)行實(shí)現(xiàn)。MU(MobileUnits)為可移動(dòng)單元對(duì)象,包括實(shí)體、容器和運(yùn)輸工具,本文中參與生產(chǎn)的MU為軟件內(nèi)置的托盤對(duì)象,具體設(shè)定過(guò)程如下:開啟機(jī)器人的第六軸的3D窗口,添加托盤當(dāng)MU對(duì)象,編輯、創(chuàng)建并更改運(yùn)動(dòng)路徑中的位置、角度和軸等3個(gè)參數(shù),并通過(guò)測(cè)定路徑功能來(lái)調(diào)節(jié)紅色箭頭位置來(lái)將MU放在機(jī)器人法蘭盤的合適位置上,在機(jī)器人初始的3D屬性窗口中,在運(yùn)動(dòng)對(duì)象欄中添加機(jī)器人第六軸的層級(jí)結(jié)構(gòu)名,以此機(jī)器人創(chuàng)建的裝配結(jié)構(gòu)為例,第六軸的層級(jí)結(jié)構(gòu)名即為Z1.Y2.Y3.X5.Y5.X6,并選擇MU的所在附加側(cè),具體MU運(yùn)動(dòng)屬性設(shè)定如圖9所示。
圖9 設(shè)置MU運(yùn)動(dòng)屬性
Plant里提供機(jī)器人自身運(yùn)動(dòng)設(shè)定共有3種方法:一是通過(guò)Self Animation功能欄對(duì)路徑點(diǎn)進(jìn)行設(shè)定來(lái)實(shí)現(xiàn)機(jī)器人運(yùn)動(dòng);二是通過(guò)Pose功能欄對(duì)各關(guān)節(jié)運(yùn)動(dòng)副參數(shù)進(jìn)行設(shè)定來(lái)實(shí)現(xiàn)運(yùn)動(dòng);三是主要通過(guò)語(yǔ)言編程的方式來(lái)實(shí)現(xiàn)運(yùn)動(dòng)。對(duì)于前兩種只能通過(guò)手動(dòng)來(lái)調(diào)試路徑,且只可以設(shè)定機(jī)器人一個(gè)固定的運(yùn)動(dòng)姿態(tài),在取料或下料位置發(fā)生改變后,無(wú)法實(shí)現(xiàn)機(jī)器人的自動(dòng)尋徑操作,故不作考慮。以下采用第三種方法來(lái)實(shí)現(xiàn)機(jī)器人的運(yùn)動(dòng)控制。
1)Plant內(nèi)部的所有設(shè)備的位置和姿態(tài)數(shù)據(jù)都是相對(duì)于原點(diǎn)而言,主要通過(guò)以下2個(gè)關(guān)鍵語(yǔ)法來(lái)獲取機(jī)器人末端執(zhí)行器取置件時(shí)的位置和姿態(tài):a.<Path>._3D.Position。獲取由Path指定對(duì)象的當(dāng)前位置,返回值為一個(gè)1×3矩陣(由于Plant在目前版本中并不支持Z方向投影長(zhǎng)度,需要人為給予一個(gè)Z向的值)。b.<Path>._3D.transformationMatrix。獲取由Path指定對(duì)象的4×4的轉(zhuǎn)換矩陣,其中前三行三列即為對(duì)象的3×3姿態(tài)矩陣。
2)通過(guò)以下關(guān)鍵語(yǔ)法來(lái)執(zhí)行機(jī)器人各關(guān)節(jié)的運(yùn)動(dòng)。
3)為了實(shí)現(xiàn)可移植性、便攜性和封裝性,在編程過(guò)程中應(yīng)遵循可替換原則和便于移植原則,即:a.將語(yǔ)法中能使用匿名標(biāo)識(shí)符的地方統(tǒng)一使用,使用相對(duì)地址盡量不使用絕對(duì)地址;b.將全部程序、標(biāo)志位以及相關(guān)表格都封裝在對(duì)象的內(nèi)部屬性中,機(jī)器人的前后設(shè)備可根據(jù)具體工藝來(lái)進(jìn)行替換,不用對(duì)程序代碼做過(guò)度改動(dòng)。
4.4.1 涉及機(jī)器人運(yùn)動(dòng)的3個(gè)對(duì)象的封裝程序
1)機(jī)器人(kr210r3100)封裝的內(nèi)容如下,具體封裝如圖10所示:
圖10 機(jī)器人的封裝程序一覽
a. 程 序(Method)對(duì)象。執(zhí)行加載/卸載具體運(yùn)動(dòng)所涉及到的程序,包含機(jī)器人復(fù)位程序(reset)、機(jī)器人加載程序(loading)、機(jī)器人卸 載 程 序(unloading)。
b. 表 格(Table)對(duì)象。存儲(chǔ)機(jī)器人初始、加載、卸載等3個(gè)狀態(tài)的關(guān)節(jié)角值(CurPos)。除了初次機(jī)器人加載卸載需要調(diào)用MATLAB獲取關(guān)節(jié)角外,后續(xù)直接通過(guò)該表格進(jìn)行獲取,防止多次外部調(diào)用拖累仿真運(yùn)行速度。
c.標(biāo)志位(boolean)對(duì)象。通過(guò)3個(gè)布爾量來(lái)設(shè)定標(biāo)志位,執(zhí)行程序運(yùn)行過(guò)程中判斷操作,其中包含:判斷是否為第一次加載過(guò)程(first_load);判斷是否為第一次卸載(first_unload);判斷是否處于卸載狀態(tài)(unloaded)。
2)取件位置。傳送帶(Line)封裝的內(nèi)容為程序(Method)對(duì)象:輸出傳送帶上的傳感器相對(duì)于機(jī)器人的位置矩陣PTarget和姿態(tài)矩陣RTarget,并調(diào)用機(jī)器人加載程序(OnSensor)。
3)置件位置。緩沖區(qū)(Buffer)封裝的內(nèi)容為程序(Method) 對(duì)象:輸出緩沖區(qū)相對(duì)于機(jī)器人的位置矩陣PTarget和姿態(tài)矩陣RTarget,并調(diào)用機(jī)器人卸載程序(unloadPOS)。
除了3個(gè)設(shè)備內(nèi)部封裝好的表格、布爾量和程序外,外部還有6個(gè)信息對(duì)象,其中包括2個(gè)程序,reset程序用于對(duì)3個(gè)表格進(jìn)行復(fù)位,clamat程序用于同MATLAB進(jìn)行通信,詳情可看第2節(jié);3個(gè)表格中Ptab和Rtab等2個(gè)表格分別用于記錄末端位置及姿態(tài)矩陣,ThetaTab表格用于記錄和展示MATLAB返回的關(guān)節(jié)角值;一個(gè)通信接口對(duì)象ActiveX。這6個(gè)對(duì)象用來(lái)與MATLAB 構(gòu)成外部通信,具體布置如圖11所示。
圖11 外部通信接口程序及表格
4.4.2 具體執(zhí)行流程
1)加載系統(tǒng)調(diào)用。MU進(jìn)料后,在傳送帶上運(yùn)動(dòng)并觸發(fā)傳感器,調(diào)用傳送帶上的程序OnSensor,輸出當(dāng)前的MU相對(duì)于機(jī)器人的位姿矩陣到Ptab和Rtab表格中,并調(diào)用機(jī)器人加載程序loading,在加載過(guò)程中通過(guò)first_load標(biāo)志位來(lái)判斷是否處于初次加載狀態(tài),若為初次加載則調(diào)用calmat程序返回MATLAB計(jì)算后的一組關(guān)節(jié)角值到ThetaTab 表格中,并且機(jī)器人內(nèi)部表格CurPos 讀取ThetaTab表格中的數(shù)值,若非初次加載則直接調(diào)用內(nèi)部CurPos表格取件時(shí)的關(guān)節(jié)角值并完成加載運(yùn)動(dòng),再將卸載標(biāo)志位unloaded置為真,此時(shí)若還有MU進(jìn)料亦無(wú)法呼叫加載程序,防止機(jī)器人加載和卸載過(guò)程中產(chǎn)生沖突。
2)卸載系統(tǒng)調(diào)用。由于是先取件后置件操作,故在機(jī)器人加載完成后,機(jī)器人開始執(zhí)行卸載程序,首先調(diào)用緩沖區(qū)的程序unloadPOS,輸出當(dāng)前緩沖區(qū)相對(duì)于機(jī)器人的位姿矩陣到Ptab和Rtab表格中,并調(diào)用機(jī)器人的卸載程序unloading,在卸載過(guò)程中通過(guò)first_unload標(biāo)志位來(lái)判斷是否處于初次卸載狀態(tài),若為初次卸載則調(diào)用calmat程序返回MATLAB計(jì)算后的一組關(guān)節(jié)角值到ThetaTab表格中,并且機(jī)器人內(nèi)部表格CurPos讀取ThetaTab表格中的數(shù)值,若非初次卸載則直接調(diào)用內(nèi)部CurPos表格中置件的關(guān)節(jié)角值并完成卸載運(yùn)動(dòng),再將卸載標(biāo)志位unloaded置為否,MU出料并執(zhí)行下一次加載循環(huán)。
以上就是機(jī)器人加載和卸載的循環(huán)執(zhí)行流程,具體流程圖如圖12所示。
圖12 程序調(diào)用流程圖
機(jī)器人的姿態(tài)尋優(yōu)涉及到關(guān)節(jié)角最優(yōu)解選取,首先將圖1區(qū)域處的原始四軸機(jī)器人替換到實(shí)際的六軸機(jī)器人來(lái)進(jìn)行分析研究,針對(duì)上述章節(jié)流程進(jìn)行建模和編程后開始仿真的運(yùn)行,在Plant中可以自動(dòng)計(jì)算出機(jī)器人在加載和卸載狀態(tài)下的末端位置矩陣表格Ptab和姿態(tài)矩陣表格Rtab,分別如圖13(a)和圖13(b)所示。
圖13 加載/卸載時(shí)的末端位置和姿態(tài)表格
通過(guò)表格即可得到末端執(zhí)行器的位姿矩陣,再通過(guò)ActiveX接口將其值傳遞到MATLAB進(jìn)行解算得到8組關(guān)節(jié)角值,如圖14(a)和圖14(b)所示。
圖14 加載/卸載時(shí)解算出的八組關(guān)節(jié)角弧度值
從8組解中尋求機(jī)器人的最優(yōu)關(guān)節(jié)角,主要通過(guò)以下幾點(diǎn)進(jìn)行選?。?)解算后的機(jī)器人關(guān)節(jié)角要在值域范圍內(nèi),對(duì)于角度值在[-180°,180°]之外的值進(jìn)行加減360°運(yùn)算來(lái)補(bǔ)償出值域內(nèi)的其他可行解并可避免大關(guān)節(jié)運(yùn)動(dòng),最后通過(guò)rad2deg函數(shù)將該解由弧度值轉(zhuǎn)化成角度值;2)盡量避開奇異點(diǎn),因?yàn)槠娈愇恍未蠖喽际悄承╆P(guān)節(jié)共線或者產(chǎn)生運(yùn)動(dòng)抵消的情況,會(huì)導(dǎo)致機(jī)器人的自由度個(gè)數(shù)下降,從而產(chǎn)生無(wú)數(shù)組解和無(wú)法求解的情況;3)機(jī)器人取件和置件時(shí)的姿態(tài)不能同上下料設(shè)備進(jìn)行干涉。滿足以上三點(diǎn)后,再采用機(jī)器人取最優(yōu)逆解的通用原則,即“最短行程”原則[9]:對(duì)于此機(jī)器人滿足前3個(gè)關(guān)節(jié)大而后3個(gè)關(guān)節(jié)小的特點(diǎn),根據(jù)“多移動(dòng)小關(guān)節(jié),少移動(dòng)大關(guān)節(jié)”策略,以機(jī)器人初始狀態(tài)的各軸關(guān)節(jié)角初值為基準(zhǔn),選取求解出的關(guān)節(jié)角與該初值距離最近的可能解為最優(yōu)解,具體求解順序?yàn)椋合热£P(guān)節(jié)角1與上一狀態(tài)最接近的關(guān)節(jié)值作為最優(yōu)解進(jìn)行選取,再取的關(guān)節(jié)角2的值,依此類推直到關(guān)節(jié)角6,最后所得的這組解即為最優(yōu)關(guān)節(jié)角,并可調(diào)用MATLAB輸出圖形進(jìn)行各關(guān)節(jié)位姿判斷(如圖15(a)和圖15(b)),可以保證機(jī)器人的快速響應(yīng)。
圖15 加載/卸載時(shí)最優(yōu)執(zhí)行姿態(tài)及圖像輸出
根據(jù)最優(yōu)關(guān)節(jié)角得到最佳姿態(tài)后,由于沒有對(duì)機(jī)器人路徑進(jìn)行尋優(yōu)操作,在仿真運(yùn)行的過(guò)程中仍會(huì)同周圍設(shè)備產(chǎn)生干涉。利用MATLAB通過(guò)蒙特卡洛法[10]對(duì)此機(jī)器人進(jìn)行工作空間區(qū)域分析可知,參考圖16(a)、圖16(b)、圖16(c)的3種二維平面投影和圖16(d)的三維投影圖,如果機(jī)器人保持逆時(shí)針運(yùn)動(dòng),不論以何種姿態(tài)都必然會(huì)與路徑中的單處理器進(jìn)行碰撞,故必須針對(duì)機(jī)器人的關(guān)節(jié)角度進(jìn)行優(yōu)化,使其進(jìn)行順時(shí)針運(yùn)動(dòng),Plant中針對(duì)機(jī)器人的默認(rèn)旋轉(zhuǎn)方向是負(fù)角度逆時(shí)針、正角度順時(shí)針運(yùn)動(dòng),故只需將機(jī)器人卸載狀態(tài)下的一軸關(guān)節(jié)角減去360°,即可實(shí)現(xiàn)順時(shí)針運(yùn)動(dòng)且卸載姿態(tài)保持不變,優(yōu)化后的加載及卸載角度如表1所示。
表1 優(yōu)化后的機(jī)器人加載/卸載角度 (°)
圖16 機(jī)器人的工作空間分析
在關(guān)節(jié)角度優(yōu)化后,機(jī)器人會(huì)保持逆時(shí)針運(yùn)動(dòng),雖不會(huì)與右側(cè)的單處理器發(fā)生碰撞,但由于關(guān)節(jié)順序的影響,反而會(huì)與左側(cè)的2個(gè)buffer之間產(chǎn)生碰撞,具體原因是機(jī)器人在加載到卸載運(yùn)動(dòng)過(guò)程中二軸及三軸的動(dòng)作順序過(guò)于超前,導(dǎo)致機(jī)器人會(huì)快速保持一個(gè)俯身位進(jìn)行運(yùn)動(dòng),相反機(jī)器人在卸載到加載的運(yùn)動(dòng)過(guò)程中,機(jī)器人二軸和三軸動(dòng)作順序則過(guò)于遲緩,亦會(huì)以俯身位狀態(tài)同左側(cè)buffer 進(jìn)行碰撞。針對(duì)以上問(wèn)題,優(yōu)化后的關(guān)節(jié)順序如圖17所示。
圖17 機(jī)器人的運(yùn)動(dòng)優(yōu)化流程
本文針對(duì)系統(tǒng)仿真軟件Plant Simualtion中自定義導(dǎo)入的實(shí)際產(chǎn)線處六軸機(jī)器人的復(fù)雜三維模型,提供了一個(gè)新的控制策略及驅(qū)動(dòng)方法。即通過(guò)ActiveX接口與MATLAB聯(lián)調(diào)的方式對(duì)此機(jī)器人進(jìn)行姿態(tài)解算,提供相應(yīng)運(yùn)算及圖形技術(shù)支持,再應(yīng)用本身自帶的函數(shù)程序及Simtalk語(yǔ)言編程來(lái)實(shí)現(xiàn)機(jī)器人模型的驅(qū)動(dòng),對(duì)運(yùn)動(dòng)具體參數(shù)的細(xì)節(jié)化調(diào)整實(shí)現(xiàn)了避障等效果。相比原始默認(rèn)的四軸機(jī)器人模型而言,實(shí)現(xiàn)了各關(guān)節(jié)的優(yōu)化選取和具體運(yùn)動(dòng)路徑的操作控制,對(duì)于今后搭建更為真實(shí)的3D化數(shù)字工廠具有重要的參考意義。