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