王春,韓德元,高鵬
(1.大連交通大學(xué) 機(jī)械工程學(xué)院,遼寧 大連 116028;2.大連德控電氣技術(shù)有限公司,遼寧 大連 116028)①
去毛刺作業(yè)是工件加工過程中的重要一環(huán).目前很多去除毛刺的方法都是手工操作,效率不高,在去除的過程中還會(huì)損壞零件,對(duì)零件精度產(chǎn)生更大影響[1].隨著工業(yè)機(jī)器人的普及,去毛刺的工作逐漸由工業(yè)機(jī)器人來完成.當(dāng)前在使用工業(yè)機(jī)器人進(jìn)行去毛刺作業(yè)時(shí),其加工軌跡的路徑規(guī)劃多數(shù)為現(xiàn)場(chǎng)手動(dòng)示教或是在離線編程軟件中對(duì)工件模型進(jìn)行手動(dòng)編程.編程的具體做法是在現(xiàn)實(shí)場(chǎng)景中操作機(jī)器人移動(dòng),或者在離線編程軟件中操作機(jī)器人模型移動(dòng),并在此過程中記錄機(jī)器人移動(dòng)的相關(guān)數(shù)據(jù),之后讓機(jī)器人根據(jù)這些記錄的數(shù)據(jù)重復(fù)運(yùn)動(dòng).但是當(dāng)路徑較為復(fù)雜的時(shí)候,手動(dòng)示教不僅繁瑣,而且容易出現(xiàn)錯(cuò)誤,導(dǎo)致效率低下.這時(shí)加工路徑的自主生成就顯得尤為重要了.
去毛刺的路徑規(guī)劃是機(jī)器人編程的基礎(chǔ),比如在人工使用工具進(jìn)行去毛刺作業(yè)的時(shí)候,是通過眼睛的觀察和大腦的判斷來進(jìn)行毛刺的去除作業(yè),其中眼睛是視覺傳感器,大腦是控制系統(tǒng),而肢體則是執(zhí)行機(jī)構(gòu).
在不考慮機(jī)器人本身特性的前提下,對(duì)毛刺加工路徑首先進(jìn)行自主規(guī)劃,然后以此作為機(jī)器人編程的前提,可以使機(jī)器人的編程具有一定的智能性.在不遠(yuǎn)的將來,傳統(tǒng)的示教編程將只在很少的場(chǎng)合得到應(yīng)用,并且會(huì)與CAD/CAM、視覺技術(shù)、傳感技術(shù),互聯(lián)網(wǎng)、大數(shù)據(jù)、增強(qiáng)現(xiàn)實(shí)等技術(shù)深度融合,自動(dòng)感知、辨識(shí)和重構(gòu)工件和加工路徑等,實(shí)現(xiàn)路徑的自主規(guī)劃,自動(dòng)糾偏和自適應(yīng)環(huán)境[2].
本文提出一種通過使用視覺傳感器對(duì)工件進(jìn)行輪廓識(shí)別與檢測(cè),進(jìn)而自主生成去毛刺加工路徑的方法.由于現(xiàn)實(shí)中影響視覺傳感器的因素太多,并且目前多數(shù)的離線編程軟件仍然是需要人工識(shí)別加工邊緣.因此本文選用在VREP平臺(tái)下,建立與實(shí)際應(yīng)用狀況下對(duì)應(yīng)的場(chǎng)景模型,通過添加平臺(tái)自身的視覺傳感器,對(duì)工件進(jìn)行輪廓邊緣檢測(cè),之后使用相應(yīng)的編程函數(shù)獲取邊緣像素點(diǎn)的相關(guān)數(shù)據(jù),根據(jù)所獲取的數(shù)據(jù)進(jìn)行路徑生成,為機(jī)器人智能化編程提供一定的數(shù)據(jù)參考.
工件在進(jìn)行機(jī)械加工的過程中,毛刺主要產(chǎn)生于工件輪廓邊緣處,因此視覺傳感器需要在識(shí)別工件的過程中利用邊緣檢測(cè)算子提取出工件的輪廓邊緣.機(jī)器人編程需要的是基于世界坐標(biāo)系的坐標(biāo)點(diǎn)位,因此在完成輪廓邊緣像素點(diǎn)的提取工作之后,需要將其轉(zhuǎn)換為世界坐標(biāo)系下的坐標(biāo)點(diǎn)位.
圖像上的像素點(diǎn)序列用像素坐標(biāo)系[uv]T表示,路徑點(diǎn)相對(duì)于世界坐標(biāo)系的坐標(biāo)值用[XwYwZw]T表示.根據(jù)像素坐標(biāo)系與世界坐標(biāo)系的轉(zhuǎn)換公式(1),建立二者的對(duì)應(yīng)關(guān)系,其中相機(jī)內(nèi)參的3×4矩陣由u0、v0所表示像素坐標(biāo)原點(diǎn)和fx、fy所表示的相機(jī)焦距所組成,相機(jī)外參的4×4矩陣由旋轉(zhuǎn)矩陣R和平移矩陣T所組成.
(1)
Virtual Robot Experimentation Platform,簡(jiǎn)稱V-REP,是全球領(lǐng)先的機(jī)器人及模擬自動(dòng)化軟件平臺(tái).在V-REP平臺(tái)下,可以根據(jù)實(shí)際應(yīng)用搭建相應(yīng)的場(chǎng)景模型,并且可以添加各種傳感器,通過腳本語言對(duì)其進(jìn)行程序代碼的編寫,從而模擬機(jī)器人系統(tǒng)的各項(xiàng)使用功能.
在V-REP平臺(tái)下進(jìn)行去毛刺的路徑規(guī)劃,首先需要搭建相應(yīng)的應(yīng)用場(chǎng)景,本文所涉及的場(chǎng)景模型主要分為工件模型、視覺傳感器、圖表.其中視覺傳感器用來識(shí)別工件模型的相關(guān)數(shù)據(jù)并進(jìn)行處理,然后將所處理后的數(shù)據(jù)傳遞給圖表,使圖表將所接收的數(shù)據(jù)可視化.場(chǎng)景布局如圖1所示,三者的關(guān)系如圖2所示,下面分別進(jìn)行闡述.
圖1 場(chǎng)景模型布局圖
圖2 場(chǎng)景模型關(guān)系圖
(1)工件模型指的是待加工模型.建立工件
模型可在V-REP中完成,也可在外部的CAD 軟件中完成然后導(dǎo)入V-REP,但是前者建模能力較弱且較為繁瑣,遠(yuǎn)不如現(xiàn)在已經(jīng)商用化的三維軟件便捷[3].本文將所需要的工件模型直接導(dǎo)入至V-REP中.
(2)V-REP中視覺傳感器,可以模擬現(xiàn)實(shí)中的工業(yè)相機(jī),它可以檢測(cè)可渲染的實(shí)體.視覺傳感器有固定的、可設(shè)置的分辨率,其檢測(cè)到的圖像內(nèi)容可以通過腳本函數(shù)訪問,并且可以使用內(nèi)部的圖像處理過濾器對(duì)原始圖像進(jìn)行二次處理.V-REP中的視覺傳感器可分為正交投影型和透視投影型.本文使用的是透視投影型,其視場(chǎng)角(FOV)設(shè)置為60°,即傳感器處于透視模式下,檢測(cè)體積的最大打開角度為60°.
視覺傳感器中的剪切平面分為近端剪切平面和遠(yuǎn)端剪切平面,其主要作用是用于排除場(chǎng)景中的幾何體,即只查看近端剪切平面與遠(yuǎn)端剪切平面內(nèi)的場(chǎng)景模型,而其他部分的模型則不可見.由于本文需要圖像傳感器對(duì)工件模型全范圍識(shí)別,因此工件模型需要全尺寸的處于圖像傳感器的包絡(luò)范圍內(nèi).
V-REP中的視覺傳感器在仿真過程中對(duì)可視范圍內(nèi)所檢測(cè)到的物體進(jìn)行圖像檢測(cè)與處理.其具體過程就是遍歷圖像的每個(gè)像素進(jìn)行處理,并同步生成兩種數(shù)據(jù)流,即彩色圖和深度圖.但是根據(jù)去毛刺的加工特性,路徑規(guī)劃編程所需的只是工件模型的邊緣部分,因此需要視覺傳感器的內(nèi)部過濾器來對(duì)圖像進(jìn)行二次處理.內(nèi)部過濾器的圖像處理流程主要分為輸入、濾波、輸出.根據(jù)本文的使用需要,這里選用的是濾波方式為工作圖像邊緣檢測(cè),即首先將原始圖像轉(zhuǎn)換成工作圖像,然后對(duì)工作圖像進(jìn)行邊緣檢測(cè),最后將工作圖像進(jìn)行輸出,其內(nèi)部過濾的流程圖如圖3所示.
圖3 視覺傳感器過濾器流程圖
由于視覺傳感器只在模擬運(yùn)行時(shí)才能對(duì)圖像進(jìn)行處理,因此圖像內(nèi)容僅在模擬過程中可見.VREP平臺(tái)下的模擬效果圖中,僅存在兩種顏色,其中背景色為黑色,輪廓邊緣為白色,為了方便表達(dá),這里將效果圖進(jìn)行取反操作,即黑白顏色互換,互換后的效果圖如圖4所示.
圖4 經(jīng)過邊緣檢測(cè)后的圖像
由圖可見,經(jīng)過濾波后的圖像中,黑色輪廓包含了工件模型中需要進(jìn)行去毛刺的加工邊緣,即需要后續(xù)數(shù)據(jù)處理的部分.
(3)V-REP中圖表(Graph)主要用于記錄、可視化或?qū)С瞿M數(shù)據(jù).為了接收視覺傳感器所處理的后的數(shù)據(jù),并將數(shù)據(jù)可視化,使得能夠同步生成加工路徑,因此需要在場(chǎng)景中添加一個(gè)空?qǐng)D表,并將其設(shè)為顯示處理(Explicit handling),用于在此基礎(chǔ)上添加用戶自定義數(shù)據(jù)流.由于加工路徑是一個(gè)由三維空間中的標(biāo)量點(diǎn)組成,因此需要分別添加X值、Y值和Z值.
V-REP主要是通過嵌入式腳本對(duì)模型與仿真進(jìn)行控制的.嵌入式腳本指的是嵌入在模型中的腳本,是模型的一部分,與模型一起保存一起加載.V-REP腳本類型分為非線程和線程,由于路徑的規(guī)劃是一個(gè)連續(xù)的過程,因此本文使用的是以級(jí)聯(lián)方式處理的線程腳本進(jìn)行程序的編寫,添加對(duì)象分別是視覺傳感器與圖表,其中視覺傳感器的腳本用于對(duì)圖像進(jìn)行數(shù)據(jù)處理與發(fā)送,圖表的腳本用于接收視覺傳感器的數(shù)據(jù),并同步生成路徑.
本文使用的是Lua語言作為編程的腳本語言.目前,Lua語言已經(jīng)在游戲開發(fā)、圖像信息處理、分布式控制與應(yīng)用、生物信息學(xué)等領(lǐng)域中得到了較為廣泛的應(yīng)用[4].
腳本代碼的編寫,首先是通過獲取對(duì)象句柄函數(shù)(sim.getObjectHandle)來獲取相關(guān)的模型句柄.在使用視覺傳感器對(duì)工件模型進(jìn)行圖像處理的時(shí)候,主要使用的是函數(shù)庫(kù)中關(guān)于彩色圖與深度圖的函數(shù).
使用獲取像素點(diǎn)的彩色圖函數(shù),即獲取圖像的RGB值函數(shù) (sim.GetVisionSensorImage)對(duì)經(jīng)過邊緣檢測(cè)后的圖像進(jìn)行處理,其返回的數(shù)值是一個(gè)一維數(shù)表,其數(shù)據(jù)結(jié)構(gòu)為視覺傳感器遍歷每個(gè)像素點(diǎn)的RGB值.例如圖像像素點(diǎn)行列數(shù)為m×n.其數(shù)據(jù)結(jié)構(gòu)與像素點(diǎn)的對(duì)應(yīng)關(guān)系如表1所示.
表1 像素點(diǎn)與數(shù)表關(guān)系表
由于原始圖像在經(jīng)過濾波處理后只存在黑白兩種顏色,因此返回的數(shù)表中也只存在0或1兩種數(shù)字,其中0代表白色,即非輪廓邊緣點(diǎn),而1代表黑色,即輪廓邊緣點(diǎn).因此需要將輪廓邊緣點(diǎn)所對(duì)應(yīng)的像素點(diǎn)序列值提取出來,即找到返回值為1的點(diǎn)所對(duì)應(yīng)的像素坐標(biāo).本文使用的是常規(guī)編程方法中的泛型for循環(huán),即通過一個(gè)迭代器函數(shù)來遍歷所有值,進(jìn)而提取處返回值為1的數(shù)組索引值.然后將獲取的像素點(diǎn)坐標(biāo)使用矩陣變換將其轉(zhuǎn)換到世界坐標(biāo),進(jìn)而生成加工路徑的X、Y坐標(biāo)點(diǎn).
與此同時(shí),使用用于獲取圖像深度值數(shù)據(jù)函數(shù)(sim.GetVisionSensorDepthBuffer)來提取出的像素點(diǎn)的深度值,進(jìn)而生成其相對(duì)于世界坐標(biāo)系的Z值.函數(shù)的返回值同樣是一個(gè)一維數(shù)表,此數(shù)表顯示的是圖像上指定點(diǎn)的深度數(shù)據(jù).需要注意的是其生成的數(shù)值并不是真正的距離,而是歸一化的比例關(guān)系數(shù)值,其中離傳感器最近的值為0,最遠(yuǎn)的值為1,因此需要根據(jù)已知剪切平面的位置計(jì)算出真實(shí)的深度.進(jìn)而再次使用矩陣變化將其轉(zhuǎn)換為相對(duì)于世界坐標(biāo)系的Z值.
將獲取的輪廓邊緣像素點(diǎn)轉(zhuǎn)換為世界坐標(biāo)值之后,使用壓縮數(shù)據(jù)表函數(shù)(sim.PackFloatTable)將數(shù)據(jù)打包成字符串,通過設(shè)置字符串信號(hào)函數(shù)(sim.SetStringSignal)將字符串信號(hào)發(fā)送給圖表. 同時(shí)在圖表腳本中使用獲取字符串信號(hào)函數(shù)(sim.GetStringSignal) 和 解 壓 浮點(diǎn)數(shù)據(jù)表函數(shù)(sim.UnpackFloatTable)將從視覺傳感器所發(fā)送的數(shù)據(jù)進(jìn)行讀取與解壓,并同步生成3D曲線.其算法流程圖如圖5所示.
圖5 算法流程圖
在完成了平臺(tái)的搭建和編寫相應(yīng)的程序代碼之后,需要對(duì)其進(jìn)行運(yùn)動(dòng)仿真,驗(yàn)證其結(jié)果,并且觀察是否滿足需求.為了方便顯示所生成的路徑,需要將工件模型與視覺傳感器隱藏,所生成路徑圖如圖6所示.
圖6 路徑生成圖
由圖可見,視覺傳感器成功地將可視范圍內(nèi)的輪廓邊緣通過圖表的方式顯示出來,將由圖表記錄的路徑數(shù)據(jù)使用CSV后綴文件可以導(dǎo)出至Excel之中,用于后續(xù)的數(shù)據(jù)處理.
需要注意的是,其中所生成的輪廓曲線除了需要進(jìn)行去毛刺加工的輪廓邊緣之外,同時(shí)也存在不需要加工的輪廓邊緣,并且根據(jù)所生成的路徑無法判斷出路徑是內(nèi)輪廓邊緣還是外輪廓邊緣,因此還需要進(jìn)行后續(xù)的數(shù)據(jù)處理,比如輪廓跟蹤,輪廓分割等,才可以最終生成機(jī)器人編程所使用的坐標(biāo)數(shù)據(jù).
本文使用視覺傳感器對(duì)去毛刺加工路徑進(jìn)行自主識(shí)別,并通過在V-REP平臺(tái)下建立場(chǎng)景模型,并利用編程手段自主生成去毛刺的加工路徑,模擬仿真驗(yàn)證其結(jié)果,最后生成機(jī)器人編程所需要的數(shù)據(jù)點(diǎn).全過程由計(jì)算機(jī)自主完成,相比人工完成,效率得到顯著提升.使用視覺傳感器進(jìn)行去毛刺的自主路徑規(guī)劃,不但可以減少手動(dòng)編程的試錯(cuò)幾率,而且還可以在此基礎(chǔ)上,實(shí)現(xiàn)機(jī)器人去毛刺加工的自主編程,從而減少大量的人為工作量.