平 原,張連東,宋雪萍,張博聞
(大連交通大學,大連 116028)
集裝箱運輸是一種現代化的先進運輸方式。為保證集裝箱運輸中集裝箱堆疊的穩固性,需要對集裝箱加裝穩固措施,限制集裝箱的運動。扭鎖主要用于甲板與集裝箱以及集裝箱上下層的連接鎖閉,用于防止集裝箱傾覆和滑移[1]。近年來,隨著集裝箱裝載率的不斷增加,對集裝箱扭鎖裝卸及解鎖技術的快速化、自動化的要求也日益迫切[2]。
目前集裝箱碼頭的集裝箱裝鎖拆鎖工藝均由人工完成,效率低下且無法保證操作人員的安全。因此,通過二次開發技術在虛擬環境中模擬工業機器人代替人工安裝扭鎖,對進一步實現集裝箱扭鎖安裝技術的快速化、自動化有著重要意義。
RoboStudio是ABB機器人公司的一款離線機器人編程與仿真工具,能夠針對ABB工業機器人進行離線編程與控制。基于RobotStudio平臺,通過二次開發軟件,針對海港集裝箱裝卸的實際情況進行仿真,模擬、測試海港集裝箱扭鎖的自動安裝過程。
本文中RobotStudio的二次開發主要用到了ABB SDK(software development kit)中的Controller API。這是一個由上至下的多層次樹型網絡結構,若要調用控制器的某個功能,則必須進行逐級訪問。其結構如圖1所示。
二次開發工具則選用C#語言,基于Microsoft Visual Studio平臺來進行對RobotStudio的二次開發。

圖1 Controller API對象結構圖
在RobotStudio中,機器人的運動軌跡是由若干個目標點按次序的連線組成。因此分析目標點的構成對機器人的軌跡規劃十分重要。
以目標點P為例:

目標點的位置信息分為四個部分。1表示TCP(Tool Center Point,工具中心點)的位置;2表示機器人的工具的姿態,以四元數來表示;3表示機械臂的軸配置;4表示附加軸的位置。其中,第二部分的四元數決定了機器人工具的姿態方位,因此需在目標坐標系中將工具旋轉的歐拉角轉換為四元數。
四元數由矢量部分和標量部分組成,可表示成如下形式:

由于歐拉角到四元數的轉換與歐拉角的轉動順序有關[3],以Z-Y-X的轉動順序為例,定義分別為繞Z軸、Y軸、X軸旋轉角度,歐拉角到四元數的轉換可表示為:

將式(2)展開,得到:

將該式用于計算控制工具方位的四元數,可實現歐拉角到四元數的轉換。
在RobotStudio已有的基礎功能之上,設計了目標點設置模塊以及軌跡優化模塊用以解決機器人運行過程中對目標點性質判斷難的問題。
在常規的機器人運動軌跡規劃中,機器人的控制程序需要詳細規劃到每一個目標點,若涉及到的目標點數量較大,則十分耗費人力物力。通過分析機器人在不同目標點的實際動作來對目標點進行分類,可大幅提升工作效率。該模塊為適應多變的應用環境,靈活設置機器人軌跡,將機器人目標點分為抓取點、安裝點和過渡點三種類型。其中,抓取點為機器人抓取扭鎖時,TCP的位置;安裝點為機器人開始向集裝箱角件安裝扭鎖時,TCP的位置;過渡點則為機器人攜帶扭鎖運動時,TCP的目標位置。
在設置時,可設置一個抓取點,一個安裝點,以及若干個過渡點。多個過渡點的設置可使機器人躲避實際應用環境中的障礙物。在設置完畢后可對目標點的個數及參數進行修改或重置。如果設置過程中出現錯誤,該模塊會彈窗提醒操作者修改數據或設置內容。該模塊的效果如圖2所示。

圖2 目標點設置模塊
該模塊的主要作用是對輸入的目標點數據進行整理、優化。數據在錄入程序之后,會進行列隊以構成機器人的運動軌跡。一直到程序開始運行前都可以對已輸入的目標點進行編輯。在開始運行程序后,程序會根據最后的目標點次序控制機器人進行移動。
由于目標點的次序直接影響著機器人最終的運動軌跡,因此在程序中利用Queue隊列對輸入目標點數據進行儲存。該方法對數據的處理方法為“先進先出,后進后出”。這樣既可保證機器人的運動軌跡與輸入的數據相一致。該模塊的效果如圖3所示。

圖3 軌跡優化模塊
在利用二次開發程序控制RobotStudio時,最主要的是機器人運動信息的交換,即二次開發程序的數據可以傳遞給RobotStudio自帶的Rapid程序,同時RobotStudio中的數據也能反饋給控制程序。
讀取Rapid程序數據,可以選擇Direct Access,即直接進入Rapid程序,獲取想要的數據信息。這種方法節省內存而且信息獲取更加迅速[4]。如下示例即為獲取Rapid程序中T_ROB1任務的Module1組件的P1點數據的程序語句:

將數據寫入Rapid程序,則是利用IRapidData.FillFromString方法來實現。如下示例為將Rapid程序中的Bool值zhuaqu的值改為Ture:

控制機器人運動的難點在于對目標點的分析,需要通過程序來判斷目標點的性質。不同性質的目標點則對應著不同的機器人動作。之前介紹的目標點分為三類,即抓取點、安裝點和過渡點,將目標點的性質跟隨目標點的數據一同加入Queue隊列,在數據出列時對目標點的性質進行判斷,即達到程序對目標點的分析效果。
二次開發程序對機器人運動的控制主要通過循環嵌套和分支結構的條件語句來實現。首先,在RobotStudio的Rapid程序中對應三類目標點的后續控制程序之前添加一個“開關”,“開關”由Bool值控制,True代表打開,False代表關閉。然后,在二次開發程序中,根據Queue隊列中出列的每一個目標點數據附加的目標點性質,將Bool值傳遞給Rapid程序。最后,Rapid程序根據接收到的Bool值來判斷該點的分類。Rapid控制程序如下。

舉例來說,在Rapid程序中,分別在抓取點、安裝點、過渡點的控制程序之前添加了zhuaqu、shifang、waitloop三個Bool值,默認值都是False。當被標注為抓取點的p1點從數據隊列中出列的同時,二次開發程序將zhuaqu的True值發送給Rapid程序,Rapid即啟動抓取動作的控制程序。
在二次開發程序中,對目標點性質的判斷是通過循環結構和分支結構來實現的。首先將錄入的目標點數據加入到Queue隊列中,當每一個目標點出列時,對其性質進行判斷,若為抓取點,即向Rapid程序發送“zhuaqu”的True值,打開Rapid程序中的抓取點控制程序的“開關”。同樣的過程也適用于安裝點和過渡點。每一次判斷完目標點的性質之后,二次開發程序會對Queue隊列中的剩余的目標點數據個數進行核算,若還有剩余,即繼續進行出列操作。當Queue隊列中所有的目標點數據均已出列,則結束循環,程序停止。若有目標點未被標記分類,既不是抓取點、安裝點,也不是過渡點,則程序會進行報錯,由操作人員檢查目標點的錄入或程序設置是否存在問題。該算法的邏輯流程如圖4所示。

圖4 目標點性質判斷的算法邏輯流程圖
為驗證此次二次開發程序的適用性,在RobotStudio中建立虛擬仿真試驗室。該實驗室構成如圖5所示。
建立好虛擬仿真實驗室后,打開二次開發程序,錄入目標數據,本次仿真試驗共錄入四個點,分別為:

圖5 虛擬仿真實驗室構成

圖6 完成目標點數據錄入

圖7 機器人運行軌跡
點1:坐標值[500,0,100],工具方位為繞Z軸旋轉90°,繞Y軸旋轉0°,繞X軸旋轉180°,該點為抓取點。
點2:坐標值[500,0,200],工具方位為繞Z軸旋轉90°,繞Y軸旋轉0°,繞X軸旋轉180°,該點為過渡點。
點3:坐標值[300,-300,200],工具方位為繞Z軸旋轉90°,繞Y軸旋轉0°,繞X軸旋轉180°,該點為過渡點。
點4:坐標值[0,-450,200],工具方位為繞Z軸旋轉90°,繞Y軸旋轉0°,繞X軸旋轉180°,該點為安裝點。
錄入完成效果如圖6所示。
點擊“運行”,程序開始向RobotStudio發送數據,機器人開始運動。機器人運動軌跡如圖7所示。
0段為機器人從初始點到達點1;1段為點1到點2;2段為機械手爪抓取扭鎖;3段為點2到點3;4段為機器人到達點3后等待程序相應;5段為點3到點4;6段為機器人等待扭鎖安裝指令;7段為機器人安裝扭鎖;8段為安裝完畢后機器人回到初始點等待下次循環。
機器人運行過程平穩,均按照二次開發程序中的目標點數據進行運動,達到預期目標。
本文闡述了對RobotStudio進行二次開發的思路以及開發方法,通過該二次開發程序,可對不同目標點進行判斷,并根據判斷結果決定機器人的運動。該二次程序可一次性添加多個目標點,避免在RobotStudio中設定目標點的繁瑣過程。根據仿真的結果來看,此次二次開發的結果是值得肯定的,并可以在日后的扭鎖抓取研究中發揮作用。
[1]Dr. Yvo Saanen, Peter Walker, et al.An operations perspective on new twist lock handling in terminals[J].Chemosphere,2015,42(3):861-872.
[2]謝琛,張攀攀,費海波.集裝箱扭鎖技術的現狀及發展趨勢[J].中國水運,2015.7(15):38-40.
[3]張帆,曹喜濱,鄒經湘.一種新的全角度四元數與歐拉角的轉換算法[J].南京理工大學學報,2002.26(4):376-380.
[4]ABB.技術參考手冊-RAPID語言概覽[CP/OL].2015.10:11-12.