劉富春,柏受軍*,郝旭耀,鄭群現(xiàn),江 明
(1.安徽工程大學(xué) 電氣工程學(xué)院,安徽 蕪湖 241000;2.安徽工程大學(xué) 高端裝備先進(jìn)感知與智能控制教育部重點實驗室,安徽 蕪湖 241000;3.安徽佐標(biāo)智能科技有限公司 軟件研發(fā)部,安徽 蕪湖 241000)
工業(yè)機(jī)器人是綜合機(jī)械、電子、控制、計算機(jī)、傳感器、人工智能、控制技術(shù)等多種學(xué)科的先進(jìn)技術(shù)于一體的復(fù)雜智能機(jī)器[1-2]。隨著工業(yè)4.0時代的推進(jìn),工業(yè)機(jī)器人的應(yīng)用領(lǐng)域和規(guī)模越發(fā)廣泛,與此同時,機(jī)器人的運動控制也面臨著高適應(yīng)性、快速設(shè)計變化、數(shù)字信息技術(shù)和更靈活的技術(shù)勞動力培訓(xùn)的壓力[3-4]。
由于機(jī)器人價格比較昂貴[5],而且需要定期維護(hù),成本較高,在教學(xué)與科研中難以保證為學(xué)生提供更多的實體機(jī)器人實驗機(jī)會。同時,市面上大部分機(jī)器人模型設(shè)計的參數(shù)不盡相同,進(jìn)行示教運行的機(jī)器人運動控制系統(tǒng)也大不一樣。目前,工業(yè)機(jī)器人運動控制仿真軟件大多數(shù)是自主開發(fā)的離線仿真示教軟件,可以在計算機(jī)上再現(xiàn)機(jī)器人的三維虛擬世界,實現(xiàn)機(jī)器人離線編程、三維運動軌跡的規(guī)劃以及動態(tài)仿真。但是特定款式的機(jī)器人系統(tǒng)編程開發(fā)仿真成本高、仿真手段單一,對技術(shù)人員技術(shù)水平的要求也很高。
本文所進(jìn)行的工業(yè)機(jī)器人運動虛實孿生控制仿真研究,是基于Unity3D技術(shù)進(jìn)行的機(jī)器人控制系統(tǒng)半實物仿真。在關(guān)于工業(yè)機(jī)器人半實物系統(tǒng)仿真的研究中,文獻(xiàn)[5]以三菱工業(yè)機(jī)器人為原型建立了仿真平臺和機(jī)器人控制器之間的TCP/IP通信,設(shè)計了平臺的用戶圖形交互界面,交互實現(xiàn)了機(jī)器人的正向和逆向運動在線控制和實時仿真。文獻(xiàn)[6]研發(fā)的水下機(jī)器人半實物仿真系統(tǒng)采用同一地面控制終端作為三維仿真系統(tǒng)和機(jī)器人控制系統(tǒng)的統(tǒng)一指令輸入源,以實現(xiàn)虛擬對象和機(jī)器人本體的同步工作,可對系統(tǒng)進(jìn)行實時監(jiān)測與調(diào)參。文獻(xiàn)[7]為了解決低剛度輕型機(jī)械手的高精度多關(guān)節(jié)同步運動控制,提出了一種基于以太貓實時以太網(wǎng)的網(wǎng)絡(luò)分布式時鐘同步方法。在關(guān)于工業(yè)機(jī)器人的離線編程系統(tǒng)的研究中,文獻(xiàn)[8]使用離線編程技術(shù)結(jié)合計算機(jī)輔助技術(shù),在機(jī)器人不脫離生產(chǎn)線的情況下,通過虛擬仿真驗證運動軌跡后自動生成實體機(jī)器人作業(yè)程序。文獻(xiàn)[9]在傳統(tǒng)幾何參數(shù)誤差標(biāo)定的基礎(chǔ)上,建立了耦合重力參數(shù)的機(jī)器人運動學(xué)誤差模型,實現(xiàn)了機(jī)器人控制指令的離線修正。關(guān)于工業(yè)機(jī)器人在線仿真研究方面,文獻(xiàn)[10]在主端虛擬仿真預(yù)測系統(tǒng)中建立了從端環(huán)境及機(jī)器人的虛擬模型,根據(jù)操作者命令對從端機(jī)器人的狀態(tài)實時預(yù)測,同時根據(jù)從端現(xiàn)場檢測到的機(jī)器人狀態(tài)對虛擬機(jī)器人進(jìn)行在線修正。文獻(xiàn)[11]采用工件模型的DXF(Drawing Exchange Format)文件自動提取方法解析出作業(yè)信息,并為實現(xiàn)任務(wù)級作業(yè)提供了一種高效的人機(jī)文交互方式。
本文以Unity3D引擎為開發(fā)平臺,以C++和C#為開發(fā)語言,設(shè)計并開發(fā)了一種工業(yè)機(jī)器人運動虛實孿生控制仿真系統(tǒng)。該系統(tǒng)采用Unity建模原理搭建虛擬六軸機(jī)器人,可多角度觀測虛擬機(jī)器人運動姿態(tài),觀測性良好;利用機(jī)器人運動學(xué)理論和Modbus/Tcp通訊原理建立實體機(jī)器人和虛擬機(jī)器人之間的實時通訊傳輸和數(shù)據(jù)顯示,實現(xiàn)了虛擬機(jī)器人孿生映射實體機(jī)器人運動。
本文所述的工業(yè)機(jī)器人虛實孿生仿真系統(tǒng)如圖1所示。由圖1可知,系統(tǒng)主要包括兩部分,首先是實體機(jī)器人控制系統(tǒng)部分,此系統(tǒng)以實體示教器輸入指令信號,實體控制器接收信號并進(jìn)行指令運行,發(fā)送信號至伺服驅(qū)動,從而驅(qū)動六軸機(jī)器人運動。其次是虛擬機(jī)器人仿真系統(tǒng)部分,此部分主要包括虛擬解析器的設(shè)計與驗證、狀態(tài)幀的數(shù)據(jù)組成以及虛擬機(jī)器人的三維模型搭建。
圖1 虛實孿生機(jī)器人運動控制系統(tǒng)總體框圖
本文旨在體現(xiàn)虛實同步運動仿真,內(nèi)容是虛擬機(jī)器人仿真系統(tǒng)映射實體機(jī)器人控制系統(tǒng),即虛擬仿真系統(tǒng)中仿真器以Modbus/Tcp通訊協(xié)議讀取實體機(jī)器人控制系統(tǒng)中機(jī)器人控制器的指令數(shù)據(jù),得到數(shù)據(jù)幀進(jìn)行解析,在Unity3D虛擬引擎里以狀態(tài)幀的方式將物理狀態(tài)輸出和物理狀態(tài)反饋來驅(qū)動機(jī)器人模型運動。以固定頻率數(shù)據(jù)幀的讀取來確保虛擬機(jī)器人與實體機(jī)器人的運行姿態(tài)保持一致,實現(xiàn)機(jī)器人虛實孿生運動的實時性與同步性。
仿真系統(tǒng)里的虛擬六軸機(jī)器人建模參照圖2中EFORT ER3-600型號六軸機(jī)器人[12]。D-H參數(shù)表如表1所示。
圖2 EFORT ER3-600機(jī)器人各關(guān)節(jié)尺寸和工作空間(單位:mm)
表1 EFORT ER3-600機(jī)器人D-H參數(shù)表
使用Unity3D虛擬引擎平臺[13],依據(jù)機(jī)器人參數(shù)進(jìn)行建模,具體流程如下:
(1)在Solidworks中依據(jù)實際參數(shù)1∶1對機(jī)器人模型進(jìn)行繪制;
(2)利用3ds Max合并機(jī)器人孤立頂點進(jìn)行檢查和移除,并對模型進(jìn)行處理以減少冗余的面;
(3)使用貼圖(Texture)和著色器(Shader)相配合,完善機(jī)器人模型、信號模型的材質(zhì)、紋理以及燈光效果等信息的添加;
(4)將所有模型的初始坐標(biāo)設(shè)置為原點,將模型中的軸設(shè)置為對象的中心;
(5)對項目中的模型添加剛體(Rigidbody)屬性,勾選“Use Gravity”屬性實現(xiàn)碰撞效果;
(6)添加機(jī)器人相機(jī)視角、跟隨視角和整體視角3種不同視角,進(jìn)行不同角度的觀察;
(7)提供控制接口,與顯控計算機(jī)通過Modbus/Tcp協(xié)議數(shù)據(jù)交互;
(8)機(jī)械臂模型通過3ds Max軟件導(dǎo)出為Unity3D引擎需要的FBX數(shù)據(jù)格式,最后導(dǎo)入Unity3D引擎的虛擬場景。
創(chuàng)建好的機(jī)器人模型調(diào)試如圖3所示。通過機(jī)器人六軸父系機(jī)構(gòu)調(diào)試驗證建模準(zhǔn)確性,單軸調(diào)試符合建模規(guī)范;機(jī)器人軸角添加碰撞盒模塊進(jìn)行碰撞報警,效果顯示良好?;赨nity3D引擎搭建的仿真機(jī)器人觀測角度與運行狀態(tài)優(yōu)于文獻(xiàn)[8]等基于OpenGL平臺所搭建的模型。
圖3 Unity3D虛擬六軸機(jī)器人建模
為更好地觀測機(jī)器人運動狀態(tài),在建立虛擬機(jī)器人模型的同時,為機(jī)器人基礎(chǔ)搬運工作站的其他元器件也進(jìn)行虛擬建模,主要包含吸盤、運輸皮帶線、光電傳感器、物料生成器等。建模完成的模型還需要進(jìn)行模擬信號控制,與實體機(jī)器人控制信號相仿即可進(jìn)行仿真系統(tǒng)的元器件信號控制,以完成機(jī)器人對物料的基礎(chǔ)搬運。建模元器件的參數(shù)如表2所示。
表2 建模元器件參數(shù)表
完成虛擬仿真系統(tǒng)的建模之后,要想達(dá)到仿真系統(tǒng)虛擬六軸機(jī)器人孿生同步實體機(jī)器人,需要進(jìn)行兩者之間的數(shù)據(jù)通訊。其中,實體機(jī)器人控制系統(tǒng)中以實體示教器作為上位機(jī)發(fā)送信號指令,實體控制器運行指令程序進(jìn)行實體機(jī)器人的運動,其信號傳輸流程如下:
在實體機(jī)器人處于斷電重啟初始狀態(tài)時,機(jī)器人控制器內(nèi)部未知機(jī)器人運動狀態(tài),此時發(fā)送指令示教調(diào)試,在控制器內(nèi)部為角度信號值J1~J6;之后機(jī)器人運動到已知位置和姿態(tài),此時機(jī)器人控制器傳輸?shù)臄?shù)據(jù)類型取決于調(diào)用的程序類型,若為軸角坐標(biāo)運動指令,則控制器內(nèi)部數(shù)據(jù)為角度信號值J1~J6;若為空間坐標(biāo)運動指令,則控制器內(nèi)部數(shù)據(jù)為機(jī)器人末端坐標(biāo)數(shù)據(jù),經(jīng)控制器內(nèi)部機(jī)器人正逆運動學(xué)解析反解得到機(jī)器人角度信號值J1~J6,統(tǒng)一存放于控制器某個寄存器中,進(jìn)而驅(qū)動六軸伺服電機(jī)聯(lián)動控制機(jī)器人的運行。實體控制器還會發(fā)送DI變量信號或者其他如浮點型數(shù)據(jù)信號等至實體控制器,控制器轉(zhuǎn)換成DO變量或者浮點型數(shù)據(jù)至實體控制器內(nèi)部寄存器中。上述機(jī)器人運動角度值、DO變量信號值和其他浮點型數(shù)據(jù)值再通過Modbus/Tcp通訊協(xié)議發(fā)送至虛擬解析器中進(jìn)行數(shù)據(jù)解析,從而驅(qū)動虛擬仿真系統(tǒng)里虛擬機(jī)器人的運行。實體機(jī)器人控制系統(tǒng)到虛擬機(jī)器人控制系統(tǒng)的通訊數(shù)據(jù)傳輸流程如圖4所示。
圖4 實體機(jī)器人控制系統(tǒng)與虛擬機(jī)器人控制系統(tǒng)數(shù)據(jù)傳輸流程圖
研究需要通過仿真系統(tǒng)得到實體機(jī)器人控制器的運動數(shù)據(jù),為控制虛擬機(jī)器人運動,要在仿真系統(tǒng)中開發(fā)對于虛擬機(jī)器人運動數(shù)據(jù)進(jìn)行顯示與反饋的解析器。解析器的主要功能是對實體控制器傳輸來的數(shù)據(jù)進(jìn)行解析,利用虛擬三維世界的機(jī)器人運動學(xué)變換,將真實機(jī)器人的角度值映射到虛擬引擎里,并解析成虛擬機(jī)器人的角度值和位姿位置。因此,解析器的仿真開發(fā)就是虛擬機(jī)器人的正逆運動學(xué)解析及算法實現(xiàn)。本文以EFORT ER3-600型號六軸機(jī)器人為研究對象,虛擬仿真系統(tǒng)里也依據(jù)實體機(jī)器人參數(shù)1∶1搭建虛擬機(jī)器人模型,EFORT ER3-600型號六軸虛擬機(jī)器人運動應(yīng)符合機(jī)器人運動學(xué)原理,機(jī)器人的D-H參數(shù)如上文表1所示。
EFORT ER3-600型號機(jī)器人D-H結(jié)構(gòu)坐標(biāo)變換簡圖如圖5所示。由圖5可知,它具有6個自由度,6個關(guān)節(jié)均為旋轉(zhuǎn)關(guān)節(jié),前3個關(guān)節(jié)決定手腕的位置,后3個關(guān)節(jié)決定手腕的姿態(tài)。因為工具坐標(biāo)系跟手腕是固連的,所以前3個關(guān)節(jié)跟后3個關(guān)節(jié)也就分別決定了工具坐標(biāo)系的位置和姿態(tài)。
圖5 機(jī)器人相鄰坐標(biāo)變換圖
參考文獻(xiàn)[14-16]得到機(jī)器人末端執(zhí)行器相對于機(jī)器人基座的連桿變換矩陣為
圖6 運動學(xué)正解程序流程圖 圖7 運動學(xué)逆解程序流程圖
逆運動學(xué)討論的其實就是正運動學(xué)的反向問題,即已知末端執(zhí)行器的位置和姿態(tài)來確定機(jī)器人各關(guān)節(jié)變量的取值,六自由度機(jī)器人的逆運動學(xué)解有多種,需根據(jù)機(jī)器人的工作環(huán)境和各項參數(shù)求取合適的解。即可轉(zhuǎn)換成假設(shè)機(jī)械臂末端u=(px、pv、pz)T以及n、o、a,求解各關(guān)節(jié)角度q=(θ1、θ2、θ3、θ4、θ5、θ6)的問題,求解過程如下。
求解機(jī)器人運動學(xué)逆解的過程是已知機(jī)器人末端位置和姿態(tài),求取該姿態(tài)對應(yīng)的6個關(guān)節(jié)轉(zhuǎn)動的角度,因此,先求取T矩陣,再依次計算得出6個關(guān)節(jié)角度,將解得角度重新代入等式,需要判斷值是否真實有效,然后再進(jìn)行最優(yōu)解的求取,最優(yōu)解遵循兩個原則:不超過軸的運動范圍;最短路徑原則,即選出距離上一次姿態(tài)各軸所需最小的運動量,給各軸分配一個權(quán)重,使盡量動小軸或姿態(tài)軸,最終獲得的最優(yōu)解即為機(jī)器人的逆運動學(xué)求解。運動學(xué)逆解算法流程圖如圖7所示。
控制機(jī)器人運動的程序一般是周期性的(例如插補(bǔ)、求逆解),即循環(huán)執(zhí)行,每一次循環(huán)必須要在規(guī)定的時間內(nèi)完成,否則會影響機(jī)器人的性能(例如精度);還有機(jī)器人必須對突發(fā)情況作出及時的響應(yīng),否則可能危及人身和設(shè)備安全。因此,控制器不僅要完成工作,還必須在規(guī)定的時間內(nèi)完成。在虛擬仿真環(huán)境里解析器通過解析從實體機(jī)器人控制器傳過來的數(shù)據(jù),將數(shù)據(jù)處理成為可以驅(qū)動虛擬引擎的物理狀態(tài)輸出,主要包含機(jī)器人運行的角度、DO控制變量信號等。虛擬仿真系統(tǒng)里機(jī)器人的運行要同步孿生于實體機(jī)器人,需要進(jìn)行幀同步,即在發(fā)送端必須提供每幀的起始標(biāo)記,在接收端檢測并獲取這一標(biāo)志。實體機(jī)器人控制器運行周期約為100 μs,本文以實體機(jī)器人作為Modbus-Server端,仿真系統(tǒng)作為Client端,連接到機(jī)器人后,進(jìn)行實時通信,數(shù)據(jù)頻率根據(jù)情況控制在20 Hz,即50 ms左右,所以仿真系統(tǒng)從實體機(jī)器人控制器讀取值的實時性誤差在49.9~50 ms,可忽略不計,達(dá)到虛實機(jī)器人孿生運動的實時性效果。
虛擬仿真系統(tǒng)里機(jī)器人的運行要同步孿生于實體機(jī)器人,需要進(jìn)行幀同步,即在發(fā)送端必須提供每幀的起始標(biāo)記,在接收端檢測并獲取這一標(biāo)記。因此機(jī)器人實體控制器與虛擬解析器使用Modbus通訊協(xié)議的幀內(nèi)容就必須包含幀頭位,解析器檢測到幀頭之后,會分析機(jī)器人設(shè)備的類型和編號,去識別匹配的機(jī)器人型號,即匹配本文的研究對象EFORT ER3-600型號機(jī)器人,子幀類型與長度則存放實體機(jī)器人運行角度,可添加其他子幀包含DI/DO、FLAOT變量等,解析器會將此數(shù)據(jù)給到狀態(tài)幀,最終解析器會將之前的數(shù)據(jù)信息進(jìn)行CRC加和校驗,確定數(shù)據(jù)的準(zhǔn)確性??傆嬕粠l(fā)送的數(shù)據(jù)格式和內(nèi)容如表3所示。
表3 實體機(jī)器人控制器與虛擬仿真系統(tǒng)Modbus傳輸數(shù)據(jù)
為實現(xiàn)工業(yè)機(jī)器人運動虛實孿生控制仿真同步,首先在仿真環(huán)境里搭建六軸工業(yè)機(jī)器人虛擬三維模型以及工作站元器件模型來虛擬化DI/DO變量信號,以單個機(jī)器人本體為中心,搭建一個設(shè)備完整的機(jī)器人A to B點的基礎(chǔ)搬運工作站。除了虛擬機(jī)器人模型外,Unity3D虛擬引擎還包含虛擬化工作臺、電氣控制柜、物料毛坯生成、皮帶傳輸線、光電傳感器、物料吸盤等模型。實體機(jī)器人與搭建完畢的虛擬機(jī)器人搬運工作站對比圖片如圖8所示。
圖8 虛擬機(jī)器人搬運工作站與實體機(jī)器人對比圖
實體機(jī)器人控制系統(tǒng)與虛擬控制系統(tǒng)通過網(wǎng)絡(luò)Modbus/Tcp進(jìn)行數(shù)據(jù)通訊,虛擬控制器通過Modbus通訊協(xié)議讀取機(jī)器人控制器信號。實體機(jī)器人六組運動點位角度值測量表如表4所示。以機(jī)器人實體控制器運行搬運流程的程序代碼,隨機(jī)選取某一幀運動數(shù)據(jù)作為標(biāo)定值數(shù)據(jù),記錄在表4第2列中,多次測量實體機(jī)器人標(biāo)定值點位數(shù)據(jù)分別記錄在表4第3~7列中。計算測量值與標(biāo)定值的最大誤差記錄在表4第8列中。表4數(shù)據(jù)表明,多次運動點位測量數(shù)據(jù)最大誤差低于機(jī)器人重復(fù)定位精度誤差±0.02 mm,故選取標(biāo)定值數(shù)據(jù)真實有效。
表4 實體機(jī)器人六組運動點位角度值測量表
實體機(jī)器人運動姿態(tài)如圖9a所示??刂破骷拇嫫鞯慕嵌戎礘1~J6可通過實體示教器讀取得到,如表5所示。將讀取到的實體機(jī)器人控制器寄存器角度值通過Modbus傳輸協(xié)議進(jìn)行傳輸。虛擬解析器得到機(jī)器人六軸角度等數(shù)據(jù)之后,通過調(diào)用內(nèi)部機(jī)器人運動學(xué)正逆解算法得到Unity3D仿真環(huán)境里的機(jī)器人末端姿態(tài)和位置數(shù)據(jù),然后在虛擬仿真環(huán)境里顯示機(jī)器人的空間位置和姿態(tài),如圖9b所示。實體機(jī)器人與虛擬機(jī)器人接收運動數(shù)據(jù)記錄在表5中。通過虛實機(jī)器人的姿態(tài)和數(shù)據(jù)對比可知,虛擬機(jī)器人運動姿態(tài)和角度變化基本跟隨實體機(jī)器人運動。
圖9 實體機(jī)器人運動與虛擬機(jī)器人運動對比圖
表5 實體機(jī)器人與虛擬機(jī)器人運動角度值
同時在虛擬環(huán)境里還要進(jìn)行運動學(xué)正解,將得到的角度值轉(zhuǎn)換成Unity3D世界坐標(biāo)值,通過將讀取的實體機(jī)器人控制器坐標(biāo)值與虛擬仿真UI顯示坐標(biāo)值以及運動學(xué)算法正解結(jié)果對比,實體機(jī)器人、虛擬機(jī)器人與運動學(xué)算法世界坐標(biāo)值如表6所示。
表6 實體機(jī)器人、虛擬機(jī)器人與運動學(xué)算法世界坐標(biāo)值
從圖9的虛實機(jī)器人運動姿態(tài)對比可以看出,從初始狀態(tài)到機(jī)器人抓取物料,這兩個機(jī)器人姿態(tài)基本保持一致,未出現(xiàn)碰撞報警信號;表5的機(jī)器人實體控制器與虛擬機(jī)器人調(diào)試器所獲取到的六軸機(jī)器人角度值也保持一致,其誤差只是由于Unity3D虛擬引擎設(shè)置的角度精確度為0.1°,得出虛擬仿真系統(tǒng)實現(xiàn)了實時獲取實體機(jī)器人運動數(shù)據(jù),并映射至虛擬仿真環(huán)境里。同時表6的數(shù)據(jù)表明,解析器封裝的機(jī)器人運動學(xué)算法數(shù)據(jù)與實體機(jī)器人的世界位姿數(shù)據(jù)誤差滿足仿真精度,仿真環(huán)境里顯示的數(shù)據(jù)也準(zhǔn)確表明了虛擬機(jī)器人在仿真環(huán)境里的位姿,與實體機(jī)器人互為虛實對應(yīng)。該虛擬仿真系統(tǒng)可實時獲取實體機(jī)器人運行數(shù)據(jù)并將其映射至仿真環(huán)境中,實現(xiàn)了虛實孿生的機(jī)器人運動控制仿真模擬。
搭建了虛擬機(jī)器人控制仿真系統(tǒng),與傳統(tǒng)的離線編程系統(tǒng)對比,不僅可以完成離線機(jī)器人示教,而且可以通過Modbus通訊協(xié)議建立與實體機(jī)器人控制系統(tǒng)的連接,通過虛擬解析器解析實體控制器的運行數(shù)據(jù)并以數(shù)據(jù)幀的方式實時傳輸給虛擬仿真機(jī)器人。通過上述實驗結(jié)果可以表明,實體機(jī)器人與虛擬機(jī)器人運行同步性良好,三維虛擬世界仿真觀測效果好,且虛擬機(jī)器人運行數(shù)據(jù)符合機(jī)器人正逆運動學(xué)算法,和實體機(jī)器人保持一致,達(dá)到了虛實同步與孿生。
此機(jī)器人運動控制仿真系統(tǒng)利用Unity3D引擎為平臺搭建,三維角度觀測性能好,且支持在線孿生示教,為機(jī)器人的學(xué)習(xí)和示教提供一種有效手段。之后的研究中可以將虛實孿生機(jī)器人的運行數(shù)據(jù)統(tǒng)一上傳數(shù)據(jù)庫保存記錄,實現(xiàn)虛擬機(jī)器人運行報錯數(shù)據(jù)復(fù)現(xiàn),為智能制造數(shù)字孿生系統(tǒng)化開發(fā)做基礎(chǔ)準(zhǔn)備條件。