吳毅文,劉 博
(寶山鋼鐵股份有限公司,上海 201900)
機器人的研發(fā)、應(yīng)用是衡量國家科技創(chuàng)新和高端制造業(yè)水平的重要標(biāo)準(zhǔn),工業(yè)機器人作為《中國制造2025》重要內(nèi)容之一,是解決日益嚴(yán)峻的勞動力供需矛盾[1],推動從“中國制造”走向“中國智造”的關(guān)鍵設(shè)備。
當(dāng)前,工業(yè)機器人主要有示教編程、離線編程和自主編程三類編程技術(shù)[2],因為在線示教編程具有易于學(xué)習(xí)、操作簡便等優(yōu)勢,所以目前國內(nèi)工業(yè)機器人大多采用在線示教編程[3]。然而示教編程需要人工參與,機器人的位置精度完全依靠人眼判斷,因此對操作人員的技術(shù)要求很高。此外,每次編程都需要在生產(chǎn)線停工的狀態(tài)下進(jìn)行,因此其過程不僅繁瑣而且耗費時間和資源;如果機器人的運動軌跡是復(fù)雜的三維軌跡,采用示教編程不但費時費力而且不能保障精度。隨著人工智能、圖像識別等技術(shù)不斷涌現(xiàn),部分研究學(xué)者提出機器人的自主編程技術(shù)。機器人自主編程技術(shù)就是能夠依靠傳感器(視覺、超聲、相機等)獲取周圍環(huán)境的信息,通過內(nèi)部的模型算法可以識別目標(biāo)位置,并計算出軌跡路線,同時將軌跡路線處理為機器人的動作指令。自主編程技術(shù)具有不停機、無人員干預(yù)、適用范圍廣、工作效率高等諸多優(yōu)點。因此工業(yè)機器人的自主編程取代在線示教編程將成為未來的發(fā)展趨勢[4,5]。
本文針對ABB工業(yè)機器人,基于C#語言開發(fā)機器人自主編程的上位機軟件,同時搭建了由上位機、下位機和ABB機器人構(gòu)成的機器人自主編程控制系統(tǒng),并對該系統(tǒng)進(jìn)行了仿真和試驗驗證。
本文設(shè)計的機器人自主編程控制系統(tǒng)主要分為上位機軟件、下位機程序、ABB的IRC5標(biāo)準(zhǔn)柜控制器和IRB6700通用工業(yè)機器人三部分組成。該系統(tǒng)運行時,上位機從硬件設(shè)備、數(shù)據(jù)庫獲取數(shù)據(jù);對獲取到的數(shù)據(jù)進(jìn)行算法處理,得到控制機器人所用的數(shù)據(jù),并處理成目標(biāo)格式,然后上位機通過有線局域網(wǎng)絡(luò)連接機器人;在上位機獲取機器人的控制權(quán)限之后,把控制數(shù)據(jù)和指令發(fā)送到下位機程序中,并運行下位機程序,完成工業(yè)機器人的自主編程控制。系統(tǒng)整體結(jié)構(gòu)如圖1所示。
圖1 自主編程控制系統(tǒng)整體結(jié)構(gòu)
上位機軟件運行于工控機等終端上,在系統(tǒng)中起主控作用,在VisualStudio2015平臺中使用C#語言進(jìn)行開發(fā)。軟件可依據(jù)獲取的數(shù)據(jù)進(jìn)行自主編程,并對機器人進(jìn)行基礎(chǔ)控制操作;顯示界面簡單,軟件預(yù)留接口,方便針對具體工況二次開發(fā)。
下位機中運行機器人的控制指令中,ABB官方仿真軟件RobotStudio中用RAPID語言開發(fā)。在下位機程序中封裝了ABB機器人常用的控制指令,無特殊需求的應(yīng)用場景下無需對下位機中指令模塊進(jìn)行修改;使用時只需把相應(yīng)的程序模塊導(dǎo)入控制器中即可。
為了驗證該軟件的功能,使用上位機處理的數(shù)據(jù)作為系統(tǒng)的數(shù)據(jù)源,以ABBIRC5標(biāo)準(zhǔn)柜控制器作為下位機,運行下位機程序,控制、驅(qū)動ABBIRB6700通用工業(yè)機器人,完成整個系統(tǒng)的硬件設(shè)備搭建。
C#語言是基于C語言和.NET平臺開發(fā)的面向?qū)ο蟮木幊陶Z言。使用C#可以提高開發(fā)效率[6],同時消除編程中可能導(dǎo)致嚴(yán)重結(jié)果的錯誤;使C/C++開發(fā)者可以快速進(jìn)行網(wǎng)絡(luò)開發(fā),同時保持功能強大性和使用靈活性。
VisualStudio提供了高級開發(fā)工具、調(diào)試功能、數(shù)據(jù)庫功能和創(chuàng)新功能,幫助在各種平臺上快速創(chuàng)建當(dāng)前最先進(jìn)的應(yīng)用程序。
該軟件開發(fā)、試驗的計算機平臺為64位Windows10,Intel Corei7-8550U CPU@1.80GHz,8GB。
上位機運行在PC或工控機等Windows設(shè)備上,上位機通過修改和監(jiān)控下位機程序變量實現(xiàn)對機器人的編程控制,故上、下位機的通信非常重要。機器人自主編程控制軟件在有線局域網(wǎng)中與下位機連接,并以TCP/IP的方式,借助ABB官方提供的二次開發(fā)工具包PCSDK實現(xiàn)上、下位機之間數(shù)據(jù)、指令的通信[7]。通信過程中需要機器人開通PC Interface選項;此時上位機作為服務(wù)機,下位機作為客戶機,上位機可以同時控制多臺下位機,并通過IP地址、機器編碼、機器名等字段標(biāo)識下位機。
根據(jù)ABB機器人的下位機編程原理,通過同步上、下位機變量實現(xiàn)對機器人控制。即上位機把獲取的數(shù)據(jù)進(jìn)行處理,并把自動生成的動作指令保存到上位機設(shè)定的變量中;上位機通過軟件模塊將變量處理成特定格式,上位機在獲取機器人控制器的控制權(quán)限后,把變量同步到控制器中;下位機程序會依據(jù)變量的更新,重新確定目標(biāo)的坐標(biāo)位置和機器人的動作指令運行順序,最終實現(xiàn)對機器人的控制。其流程如圖2所示。
圖2 上、下位機通信原理示意圖
本文所使用的通信數(shù)據(jù)的種類如表1所示,開發(fā)者可根據(jù)具體工況進(jìn)行修改或補充。其中各類通信數(shù)據(jù)的作用如下所示:①坐標(biāo)信息變量:定義機器人運行所需的坐標(biāo)系信息。②過程數(shù)據(jù)變量:用于下位機根據(jù)上位機的指示對程序運行順序、流程等進(jìn)行決策。③控制數(shù)據(jù)變量:定義控制機器人運行的目標(biāo)軌跡點、運行速度、到達(dá)空間、軸配置、外軸控制等。
表1 通信數(shù)據(jù)
通過分析焊接、裝配、搬運、噴涂和打磨等應(yīng)用中機器人的常用控制需求,本文所設(shè)計的機器人自主編程控制軟件可實現(xiàn)的功能如圖3所示。
圖3 機器人自主編程控制軟件功能結(jié)構(gòu)圖
2.3.1 數(shù)據(jù)獲取
若要實現(xiàn)機器人的自主編程和無人化全自動控制,視覺圖像數(shù)據(jù)等的獲取是基礎(chǔ)[8]。本文以保存在數(shù)據(jù)庫中的圖像數(shù)據(jù)作為數(shù)據(jù)源??紤]到在實際應(yīng)用中需要接收外部硬件設(shè)備中數(shù)據(jù),該軟件提供了方便的手動操作輸入接口和外部數(shù)據(jù)庫讀入接口,方便開發(fā)者根據(jù)具體的工況進(jìn)行二次開發(fā)。
2.3.2 運動求解
上位機從數(shù)據(jù)庫中加載目標(biāo)的相關(guān)信息之后,利用內(nèi)嵌模型建立空間坐標(biāo)系,確定目標(biāo)的空間位置。由于機器人自主編程生成的動作指令中需要機器人各個關(guān)節(jié)角數(shù)據(jù),因此需要建立運動學(xué)方程對機器人的各個獨立運動的連桿進(jìn)行位姿求解,一般運動學(xué)方程的建立是通過獲取機器人的VRML模型中的關(guān)鍵數(shù)據(jù),在模型中需要對每個關(guān)節(jié)或連桿建立坐標(biāo)系,在機器人移動或者旋轉(zhuǎn)過程中,通過平移矢量確定節(jié)點下一次的空間坐標(biāo)位置,以此建立機器人的末端姿態(tài)矩陣,通過機器人的逆向運動學(xué)方程求解每個關(guān)節(jié)角的值。在獲取逆解結(jié)果之后,需要進(jìn)行仿真運動,以檢測機器人是否會發(fā)生碰撞。
2.3.3 通信
建立上、下位機連接需要在Windows平臺上配置PCSDK工具包,并在代碼中引用相關(guān)的動態(tài)庫組件。聲明Network Scanner類型的變量Scanner,用于實例化并保存掃描到的機器人控制器。在主窗口類中編寫針對機器人控制器的掃描方法,當(dāng)該方法被調(diào)用時,上位機將掃描所有可用的下位機并把相應(yīng)的信息顯示到待選框中。
2.3.4 自主編程
上、下位機聯(lián)合實現(xiàn)自主編程控制的流程如下,首先在上、下位機中分別聲明變量,例如在上位機中聲明RapidData類型的變量Polishingtool,用于讀取下位機中的工具坐標(biāo)系變量;聲明ToolData類型的變量Polishingtool,用于保存上位機根據(jù)獲取到的數(shù)據(jù)計算出的工具坐標(biāo)系變量,該數(shù)據(jù)最終會同步到下位機程序中。同時在下位機中定義ToolData類型的變量Polishingtool,用于定義工具坐標(biāo)系[9]。其次建立上、下位機中變量的對應(yīng)關(guān)系,最后進(jìn)行變量同步,其實質(zhì)就是上位機遠(yuǎn)程修改下位機程序。首先上位機需要把變量處理成特定格式,然后需要獲取下位機的讀寫控制權(quán)限,最終實現(xiàn)變量同步。
2.3.5 顯示
為方便使用,保證使用過程中機器人的運行安全,軟件中聲明了相應(yīng)的變量用來反饋機器人的運行狀態(tài),并實時在界面顯示出來,方便使用者進(jìn)行觀察、判斷;為方便調(diào)試,上位機還把機器人運行錯誤時的錯誤信息獲取并顯示在界面上。
機器人自主編程控制軟件的工作需要上、下位機同步運行,相互配合實現(xiàn)機器人的自主編程控制,該軟件的程序流程如圖4所示。
圖4 機器人自主編程控制軟件程序流程
為確保試驗人員和設(shè)備的安全,該軟件開發(fā)完成后在RobotStudio平臺進(jìn)行了軟件仿真[10],驗證機器人自主編程生成動作指令的合理性。其仿真過程過程如下所示:
(1)在RobotStudio中搭建了IRB_6700_2.60 m機器人本體、IRC5_Singel控制器組成的虛擬機器人系統(tǒng),如圖5所示。
圖5 仿真所用的機器人系統(tǒng)
(2)為機器人系統(tǒng)添加616-1PCInterface選項,該軟件在應(yīng)用于實體系統(tǒng)時也需要該選項的支持。
(3)啟動虛擬控制器,并把寫好的與上位機對應(yīng)的下位機程序加載到虛擬控制器中。
(4)設(shè)置虛擬系統(tǒng)為自動模式,電機設(shè)置到上電狀態(tài)。
(5)為確保安全,把系統(tǒng)程序運行指針PP到main函數(shù)并運行。
仿真環(huán)境搭建完成后,針對上位機的功能進(jìn)行了仿真測試和優(yōu)化,具體內(nèi)容如下:
(1)上位機讀取文件數(shù)據(jù)的測試。
(2)上位機掃描、連接下位機(此處指虛擬機器人系統(tǒng))等通信功能的測試。其中,在測試掃描功能時,在環(huán)境中同時運行了兩個下位機以完成多下位機場景的測試。
(3)上位機處理數(shù)據(jù)功能的測試。這里主要是通過上位機編譯環(huán)境設(shè)置斷點,在調(diào)試過程中分析上位機變量的值來判斷該功能是否實現(xiàn)。
(4)上、下位機變量同步功能測試。
(5)上位機顯示功能測試。
通過仿真后,又針對基于該軟件實現(xiàn)的機器人TCP線性運動、TCP圓弧運動、單軸旋轉(zhuǎn)和一鍵復(fù)位等功能進(jìn)行了仿真測試和優(yōu)化。仿真結(jié)果表明,機器人自主編程控制系統(tǒng)的功能均已實現(xiàn),滿足開展試驗的要求。
完成仿真后,根據(jù)仿真時的方法和步驟配置下位機(實體機器人系統(tǒng)),并把仿真時所做的工作在實體機器人系統(tǒng)上進(jìn)行了試驗,結(jié)果復(fù)現(xiàn)了仿真結(jié)果,達(dá)到了試驗預(yù)期的控制效果。試驗現(xiàn)場設(shè)備如圖6所示。
圖6 試驗現(xiàn)場設(shè)備圖
本文基于C#語言設(shè)計了機器人自主編程軟件,并搭建了由上位機、下位機和ABB機器人構(gòu)成的機器人自主編程系統(tǒng),為了驗證機器人自主編程功能的可靠性,在RobotStudio平臺進(jìn)行了模擬仿真,仿真結(jié)果顯示機器人的自主編程功能可靠。除此之外,該系統(tǒng)在滿足基礎(chǔ)操作的應(yīng)用之上,還預(yù)留多種接口,方便用于二次開發(fā),具有較強的兼容性。機器人自主編程功能有助于機器人在復(fù)雜工業(yè)場景下的應(yīng)用,推進(jìn)工業(yè)機器人智能化發(fā)展。