陳子健,卓 勇,唐炳洋
(廈門大學(xué) 航空航天學(xué)院,福建 廈門 361102)
虛擬現(xiàn)實[1](Virtual Reality,簡稱VR)已經(jīng)在各領(lǐng)域得到應(yīng)用,被認為是影響人類生活的重要技術(shù)之一。隨著國家和市場對工業(yè)機器人的需求不斷增長,各大高校也在開設(shè)機器人相關(guān)課程與實訓(xùn),但機器人價格昂貴、數(shù)量少,不能滿足教學(xué)需求,焊接作業(yè)環(huán)境經(jīng)常是復(fù)雜、惡劣的,用真實機器人對作業(yè)人員進行培訓(xùn)的成本高、危險性大[2]。因此,使用VR可有效規(guī)避風(fēng)險、滿足要求。國外機器人相對成熟,也開發(fā)了相應(yīng)的仿真軟件[3],但一般都是針對自己公司的產(chǎn)品,進行購買也會擴大投入,不一定適合所有學(xué)?;蚱髽I(yè)。
Unity3D(下文簡稱Unity)是一款優(yōu)秀的跨多平臺的虛擬引擎[4]。目前部分學(xué)者在此虛擬環(huán)境中進行機器人虛擬仿真并取得一定成果。例如,高國雪等[5]搭建虛擬仿真環(huán)境實現(xiàn)同步運動;劉俊等[6]將Unity仿真環(huán)境應(yīng)用在機器人仿真上滿足教學(xué)需求;劉謀玉等[7]運用Unity虛擬環(huán)境實現(xiàn)機器人遙操作系統(tǒng);岑洎濤等[8]基于Unity平臺搭建一個跨平臺的機器人仿真系統(tǒng);劉宇軒等[9]基于Unity搭建一個人機交互的教學(xué)平臺。這些系統(tǒng)的搭建基本都是基于人工示教或作為教學(xué)展示加強對機器人的理解。機器人編程方式常用的有離線和再現(xiàn)示教兩種。示教編程簡單易學(xué)、精度低、操作繁瑣、不安全;離線編程高效,但對使用者要求較高,并且沒有統(tǒng)一通用的離線編程軟件[6]。綜上所述,為了盡可能的利用各自優(yōu)勢,本文利用VR的強交互能力,將簡單離線編程與其結(jié)合,實現(xiàn)焊件焊縫自動提取,并實現(xiàn)工業(yè)機器人自動進行焊接仿真的軌跡規(guī)劃過程。
對上述其他作者搭建的系統(tǒng)進行研究,發(fā)現(xiàn)基本都是基于人工示教或作為教學(xué)展示加強對機器人的理解。本文通過特征提取算法實現(xiàn)自動提取特征線,通過直接選擇焊縫實現(xiàn)自動焊接仿真加工過程,從而避免一個個選取點進行人工示教,也避免了示教精度不足的問題。仿真確認無誤后,可以輸出機器人語言程序,用于實際的生產(chǎn)或教學(xué)當中。
VR系統(tǒng)要求對實體與環(huán)境的模擬實時逼真,仿照真實場景建立如圖1所示的系統(tǒng)平臺。本文選用SolidWorks軟件進行高效建模和3ds Max進行渲染,獲得與Unity兼容的FBX格式的模型文件[10],結(jié)合二者優(yōu)勢進行系統(tǒng)平臺的搭建[11]。本文機器人焊接虛擬仿真系統(tǒng)主要由焊接過程所需的機械、電氣及焊接裝置三部分組成。包括安全圍欄、變位機、公共基座、操作臺、機器人本體、固定工作臺、夾具、電纜橋架以及機器人控制器和焊機等部分[12]。
圖1 系統(tǒng)總體框架結(jié)構(gòu)圖
本系統(tǒng)使用Unity內(nèi)置的UI組件設(shè)計功能面板,用于實現(xiàn)人機交互的功能,方便作業(yè)人員快速尋找自己想要實現(xiàn)的功能。最終在Unity中布置好場景后,可以看到如圖2所示的整體布局界面。
圖2 UI面板和仿真場景
本文通過獲取焊接模型的三角網(wǎng)格頂點信息,并經(jīng)過重復(fù)點剔除、重組后建立新的拓撲關(guān)系,然后根據(jù)特征點的識別條件提取模型中的特征點并存入集合進行存儲管理,最后按照給定的規(guī)則將特征點連接成特征線并顯示出來??傮w思路如圖3所示。
圖3 特征提取總體思路
Unity中的模型均為三角網(wǎng)格結(jié)構(gòu),缺乏實體信息。Unity提供Mesh類,用于存儲網(wǎng)格信息且可再次編輯。Unity中的網(wǎng)格模型包含了大量散亂、無序的三角面片,造成大量的頂點冗余現(xiàn)象。因此需要剔除大量冗余點,并重建三角面片的拓撲關(guān)系。根據(jù)Unity中網(wǎng)格模型的特點以及三角面片規(guī)則,本文利用基于排序的三角網(wǎng)格模型快速拓撲重建算法。
(1)冗余點剔除
本文建立Vertex類,用于模型中頂點信息的存儲及處理。重寫Vertex類中繼承自IEquatable
重復(fù)點剔除的關(guān)鍵是保證數(shù)據(jù)的唯一性。本文利用C#中的HashSet集合進行重復(fù)點的剔除,再對頂點進行重新編號,對于HashSet中每個數(shù)據(jù)都對應(yīng)一個唯一的鍵值,保證了數(shù)據(jù)的唯一性。
(2)三角面片頂點序號更新
隨著頂點的去重,需要對三角面片中的頂點序號進行更新。建立Triangle類用于三角面片數(shù)據(jù)的存儲與處理。通過id進行頂點的索引,減少內(nèi)存占用。
使用Dictionary
(3)三角面片鄰接信息的獲取
對于滿足充滿原則[13]的網(wǎng)格模型,每條邊均被兩個三角形共用,因此每個三角形有三個鄰接三角形,據(jù)此特點可以找到三角面片的所有鄰接三角形。
為了準確完整地提取模型的特征邊,本文的特征邊提取算法主要分為兩步:首先通過模型邊的二面角進行特征邊的初步提取,再通過頂點的曲率判斷,獲取遺漏的特征點,并利用點與邊的幾何依存關(guān)系,獲取遺漏的特征邊。
2.2.1 基于二面角的特征提取
本文首先對網(wǎng)格模型中所有的三角形邊求解基于兩個相鄰三角形的二面角,再按照一定的規(guī)則設(shè)定閾值,若大于設(shè)定閾值,則該邊為特征邊,特征邊線上的兩個頂點為特征點。
(1)三角形邊的二面角求解
構(gòu)建Segment類,用于邊信息的存儲與編輯處理。由空間幾何關(guān)系,通過兩個鄰接三角形的單位外法線,可以求得邊的二面角。
(1)
式中,n1,n2為鄰接三角形的單位外法線。
(2)通過閾值篩選特征點
通過分析其他的基本幾何體可知,只需剔除其光滑表面上的邊,剩下的邊即為特征邊,閾值可以通過其上界和下界進行確定[14]。一般地,根據(jù)基本幾何體模型的統(tǒng)計規(guī)律及工程經(jīng)驗,其無特征邊的光滑曲面上二面角不大于20°,因此可以遍歷模型所有的二面角得到小于20°的最大角度值β,作為確定閾值α的下界;同時以大于20°的最小角度值γ作為確定閾值α的上界,則可得:
(2)
因此,例如在立方體模型中,β值取0°,γ值取90°,閾值α可以選擇45°。
對于本文系統(tǒng)焊接模塊討論的幾何體由基本幾何體組成,因此特征邊可以通過式進行篩選得到,但由于復(fù)雜幾何體三角形的形狀不一,僅通過單一的閾值難以提取到完整的邊界特征。例如圖4中由尖銳的狹長三角形連接得到的邊,其二面角小于閾值,卻是特征邊線。
(a) 模型中的邊 (b) 狹長三角形示意圖 圖4 狹長三角形構(gòu)成的邊
一般情況都是通過公共邊上高的比值進行判斷是否是狹長的三角形,但僅通過三點坐標進行高的求解較為復(fù)雜,效率低。本文改進后,通過另外兩條邊長之和的比值進行判斷。記兩個三角形中除公共邊外的邊長之和的比值為τ,則其表達式為:
(3)
圖5 基于二面角的特征提取算法流程
2.2.2 基于曲率判斷的特征提取
首先通過各頂點的法矢量構(gòu)建二次曲面,并計算該曲面在各頂點上的曲率半徑,然后經(jīng)過相應(yīng)的判斷獲取特征點,并由頂點與邊的幾何依存關(guān)系,遍歷尋找到組成模型的三角面片的邊,即特征邊。
(1)頂點法向量的獲取
頂點法向量是曲率計算的基礎(chǔ),Unity中Mesh包含了頂點的法向量信息,可以直接獲取。
(2)頂點曲率的計算
本文主要使用曲面局部擬合法[15]的思想,首先任取一個頂點,將該點與所有的鄰接點構(gòu)建二次曲面,由此得到該點處的主曲率與其方向。
對于頂點P,存在鄰接點Vi,i=1,2...n,如圖6所示在P點處建立局部坐標系Puvw,其鄰接點轉(zhuǎn)換到Puvw內(nèi)的坐標為(ui,vi,wi),二次曲面擬合頂點P及其鄰接點
S(u,v)=(u,v,w(u,v))
(4)
其中,w(u,v)=au2+buv+cv2由式(4)可以得到線性方程組(5):
(5)
上述方程可以通過最小二乘法進行二次曲面系數(shù)a、b、c的求解。這種解適合均勻的三角網(wǎng)格模型,但在本文中2.2.1節(jié)中已經(jīng)剔除了狹長三角形的情況,因此可以認為是均勻化的情況。
(3)特征點的判別
遍歷模型中除去2.2.1小節(jié)已經(jīng)篩選出來的頂點,通過對點的主曲率極值的判斷,通過判斷不同方向上曲率極值點來進一步篩選特征點,若如圖6所示兩個方向上均為極值點,則該點為特征點。具體篩選方法見參考文獻[15]。
圖6 主曲率的極值點
(4)誤差消除
由于曲率的計算是不準確的,根據(jù)上述方法得到的特征點的數(shù)量大于實際所需的,本文根據(jù)參考文獻[15]中的方法,加入誤差消除因子與整體誤差消除因子,進行誤差點的剔除。
前文通過特征提取算法得到的網(wǎng)格模型特征僅是離散的特征邊(實際獲得的為特征點,由頂點與邊的依存關(guān)系,可以尋找到三角面片的邊),相互之間沒有順序關(guān)系,難以直接用于機器人的軌跡規(guī)劃,因此需要對得到的特征邊進行排序。本文利用基于頂點鄰接數(shù)的特征邊自動生長算法[15],能夠?qū)㈦x散的特征邊進行整合排序,快速得到完整的模型邊界。
圖7 特征線自動生長
算法根據(jù)模型邊界是否閉合,將其分為特征鏈與特征環(huán)兩類。兩者排序算法基本一致,只是算法的終止條件略有不同。獲取所有鄰接點大于2的特征邊頂點,即存在開叉現(xiàn)象的特征點。如圖7所示的P0、P5點是個開叉點,這類點一般作為特征鏈的起止點。例如P0可以出現(xiàn)在4條特征鏈中,設(shè)置可使用次數(shù)為4;P4僅具有2個鄰接點,這類點則作為特征鏈的中間點,僅會出現(xiàn)在一條特征鏈中,可使用次數(shù)為1。步驟如圖8所示。
圖8 獲取完整特征線流程框圖
特征環(huán)的終止條件為:終止點與起始點相同,其他的步驟與特征鏈相似,不再贅述。
當外部輸入的模型精度不高時,直接獲取到的邊界線精度較低,因此需進一步處理,提高其精度滿足機器人運動仿真的需求。對于直線可以直接使用直線插值獲取仿真點,曲線選用三次樣條曲線插值。本文使用基于累加弦長的三次參數(shù)樣條曲線插值算法進行曲線的二次擬合與插值。
設(shè)第i段三次參數(shù)樣條曲線的表達式為:
Pi(t)=B1+B2t+B3t2+B4t3,t∈[0,Li]
(6)
式中,Li為第i段的弦長。
(7)
使用對角矩陣追趕法對上式進行求解可以得到二階導(dǎo)Mi的值,可求得第i段的三次樣條曲線表達式。本文系統(tǒng)中建立Spine類進行三次樣條曲線插值處理,應(yīng)用三次樣條插值算法后得到的圓柱邊界如圖9所示,結(jié)果表明,特征線的精度提升明顯。
(a) 未插值處理的圓弧 (b) 插值處理的圓弧 圖9 圓弧插值處理前后
為了實現(xiàn)用戶點擊特征線后,機器人自動進行自動焊接運動,無需人工示教,需通過機器人逆運動學(xué)求解出機器人6個關(guān)節(jié)角度值[17],并反饋給機器人使其運動。利用貪婪算法其局部最優(yōu)解的思想,將所有解與上一狀態(tài)進行對比,差值最小解即為需要的最優(yōu)解。具體求解方法請見參考文獻[17]。本文在Unity中選用C#語言進行程序的編寫,使用Transform組件中的局部旋轉(zhuǎn)的成員變量可以實現(xiàn)各個關(guān)節(jié)的相對旋轉(zhuǎn),同時根據(jù)焊縫的位置來自動改變焊槍位姿,盡可能保持垂直焊接,從而實現(xiàn)焊縫自動焊接的軌跡規(guī)劃過程。
本文基于Unity 5.6.0版本,使用C#腳本在Visual Studio 2015外部編輯器進行代碼編寫、編譯、測試,同時,可以在面板上點擊模型選擇的按鈕,根據(jù)需要選擇如圖10a所示不同類型的焊接模型,便可更改圖10b中焊接對象的仿真模型并在場景中顯示更新的模型。點擊UI界面上的特征提取按鈕后可看到生成的特征線(圖中黑色線框)。通過選取焊縫,同時可顯示出如圖11所示準備進行運動仿真的預(yù)定軌跡。通過控制面板的開始按鈕讓機器人運動,仿真過程如圖12所示。操作者可以隨時通過鼠標改變視角觀察任何部位,或暫停觀察。在界面右下角設(shè)置一個小窗口用于跟蹤放大焊接詳情,便于觀察焊槍所走路徑是否正確。本文對于直線和曲線進行算法測試,均可以取得良好的視覺效果,將特征提取獲取的特征點與三維軟件中獲取的特征點進行對比,效果如圖13所示,從圖中可以看出,兩者基本可以實現(xiàn)重合。將兩者數(shù)據(jù)進行擬合對比,以多項式函數(shù)作為對比標準,發(fā)現(xiàn)兩者相關(guān)系數(shù)R2分別為0.9243和0.9236,差值低于0.001,說明本文提取到的特征線基本可以滿足普通的加工或者教學(xué)要求。
(a) 模型選擇面板 (b) 相應(yīng)模型顯示 圖10 模型選擇及顯示
(a) 直線仿真軌跡 (b) 曲線仿真軌跡 圖11 仿真軌跡展示
圖12 仿真運動及路徑觀察窗口
(a) 曲線特征點 (b) 特征點放大對比 圖13 仿真點數(shù)據(jù)驗證
本文選用Unity進行虛擬仿真研究,從外部軟件導(dǎo)入模型搭建了一個6關(guān)節(jié)機器人焊接的虛擬仿真系統(tǒng)。通過對三角網(wǎng)格模型進行基本信息的提取、重組,采用特征提取算法獲取特征點,連接得到完整的邊界曲線,最后進行三次樣條曲線的擬合得到運動軌跡進行焊接仿真。確認無誤后,可以輸出機器人語言程序,用于實際的生產(chǎn)或教學(xué)當中。這種方式具有良好的臨場感和交互性,同時帶給操作者良好的視覺沖擊,有效逼真的代替真實機器人進行加工訓(xùn)練和教學(xué),降低作業(yè)風(fēng)險、培訓(xùn)成本和環(huán)境污染。本文對于仿真過程自動躲避障礙物還有所不足,以后可以結(jié)合機器視覺、圖像處理等技術(shù)進一步識別障礙物并自動實現(xiàn)躲避,重新規(guī)劃仿真路徑。