王春,韓德元,高鵬
(1.大連交通大學 機械工程學院,遼寧 大連 116028;2.大連德控電氣技術有限公司,遼寧 大連 116028)①
去毛刺作業是工件加工過程中的重要一環.目前很多去除毛刺的方法都是手工操作,效率不高,在去除的過程中還會損壞零件,對零件精度產生更大影響[1].隨著工業機器人的普及,去毛刺的工作逐漸由工業機器人來完成.當前在使用工業機器人進行去毛刺作業時,其加工軌跡的路徑規劃多數為現場手動示教或是在離線編程軟件中對工件模型進行手動編程.編程的具體做法是在現實場景中操作機器人移動,或者在離線編程軟件中操作機器人模型移動,并在此過程中記錄機器人移動的相關數據,之后讓機器人根據這些記錄的數據重復運動.但是當路徑較為復雜的時候,手動示教不僅繁瑣,而且容易出現錯誤,導致效率低下.這時加工路徑的自主生成就顯得尤為重要了.
去毛刺的路徑規劃是機器人編程的基礎,比如在人工使用工具進行去毛刺作業的時候,是通過眼睛的觀察和大腦的判斷來進行毛刺的去除作業,其中眼睛是視覺傳感器,大腦是控制系統,而肢體則是執行機構.
在不考慮機器人本身特性的前提下,對毛刺加工路徑首先進行自主規劃,然后以此作為機器人編程的前提,可以使機器人的編程具有一定的智能性.在不遠的將來,傳統的示教編程將只在很少的場合得到應用,并且會與CAD/CAM、視覺技術、傳感技術,互聯網、大數據、增強現實等技術深度融合,自動感知、辨識和重構工件和加工路徑等,實現路徑的自主規劃,自動糾偏和自適應環境[2].
本文提出一種通過使用視覺傳感器對工件進行輪廓識別與檢測,進而自主生成去毛刺加工路徑的方法.由于現實中影響視覺傳感器的因素太多,并且目前多數的離線編程軟件仍然是需要人工識別加工邊緣.因此本文選用在VREP平臺下,建立與實際應用狀況下對應的場景模型,通過添加平臺自身的視覺傳感器,對工件進行輪廓邊緣檢測,之后使用相應的編程函數獲取邊緣像素點的相關數據,根據所獲取的數據進行路徑生成,為機器人智能化編程提供一定的數據參考.
工件在進行機械加工的過程中,毛刺主要產生于工件輪廓邊緣處,因此視覺傳感器需要在識別工件的過程中利用邊緣檢測算子提取出工件的輪廓邊緣.機器人編程需要的是基于世界坐標系的坐標點位,因此在完成輪廓邊緣像素點的提取工作之后,需要將其轉換為世界坐標系下的坐標點位.
圖像上的像素點序列用像素坐標系[uv]T表示,路徑點相對于世界坐標系的坐標值用[XwYwZw]T表示.根據像素坐標系與世界坐標系的轉換公式(1),建立二者的對應關系,其中相機內參的3×4矩陣由u0、v0所表示像素坐標原點和fx、fy所表示的相機焦距所組成,相機外參的4×4矩陣由旋轉矩陣R和平移矩陣T所組成.
(1)
Virtual Robot Experimentation Platform,簡稱V-REP,是全球領先的機器人及模擬自動化軟件平臺.在V-REP平臺下,可以根據實際應用搭建相應的場景模型,并且可以添加各種傳感器,通過腳本語言對其進行程序代碼的編寫,從而模擬機器人系統的各項使用功能.
在V-REP平臺下進行去毛刺的路徑規劃,首先需要搭建相應的應用場景,本文所涉及的場景模型主要分為工件模型、視覺傳感器、圖表.其中視覺傳感器用來識別工件模型的相關數據并進行處理,然后將所處理后的數據傳遞給圖表,使圖表將所接收的數據可視化.場景布局如圖1所示,三者的關系如圖2所示,下面分別進行闡述.

圖1 場景模型布局圖

圖2 場景模型關系圖
(1)工件模型指的是待加工模型.建立工件
模型可在V-REP中完成,也可在外部的CAD 軟件中完成然后導入V-REP,但是前者建模能力較弱且較為繁瑣,遠不如現在已經商用化的三維軟件便捷[3].本文將所需要的工件模型直接導入至V-REP中.
(2)V-REP中視覺傳感器,可以模擬現實中的工業相機,它可以檢測可渲染的實體.視覺傳感器有固定的、可設置的分辨率,其檢測到的圖像內容可以通過腳本函數訪問,并且可以使用內部的圖像處理過濾器對原始圖像進行二次處理.V-REP中的視覺傳感器可分為正交投影型和透視投影型.本文使用的是透視投影型,其視場角(FOV)設置為60°,即傳感器處于透視模式下,檢測體積的最大打開角度為60°.
視覺傳感器中的剪切平面分為近端剪切平面和遠端剪切平面,其主要作用是用于排除場景中的幾何體,即只查看近端剪切平面與遠端剪切平面內的場景模型,而其他部分的模型則不可見.由于本文需要圖像傳感器對工件模型全范圍識別,因此工件模型需要全尺寸的處于圖像傳感器的包絡范圍內.
V-REP中的視覺傳感器在仿真過程中對可視范圍內所檢測到的物體進行圖像檢測與處理.其具體過程就是遍歷圖像的每個像素進行處理,并同步生成兩種數據流,即彩色圖和深度圖.但是根據去毛刺的加工特性,路徑規劃編程所需的只是工件模型的邊緣部分,因此需要視覺傳感器的內部過濾器來對圖像進行二次處理.內部過濾器的圖像處理流程主要分為輸入、濾波、輸出.根據本文的使用需要,這里選用的是濾波方式為工作圖像邊緣檢測,即首先將原始圖像轉換成工作圖像,然后對工作圖像進行邊緣檢測,最后將工作圖像進行輸出,其內部過濾的流程圖如圖3所示.

圖3 視覺傳感器過濾器流程圖
由于視覺傳感器只在模擬運行時才能對圖像進行處理,因此圖像內容僅在模擬過程中可見.VREP平臺下的模擬效果圖中,僅存在兩種顏色,其中背景色為黑色,輪廓邊緣為白色,為了方便表達,這里將效果圖進行取反操作,即黑白顏色互換,互換后的效果圖如圖4所示.

圖4 經過邊緣檢測后的圖像
由圖可見,經過濾波后的圖像中,黑色輪廓包含了工件模型中需要進行去毛刺的加工邊緣,即需要后續數據處理的部分.
(3)V-REP中圖表(Graph)主要用于記錄、可視化或導出模擬數據.為了接收視覺傳感器所處理的后的數據,并將數據可視化,使得能夠同步生成加工路徑,因此需要在場景中添加一個空圖表,并將其設為顯示處理(Explicit handling),用于在此基礎上添加用戶自定義數據流.由于加工路徑是一個由三維空間中的標量點組成,因此需要分別添加X值、Y值和Z值.
V-REP主要是通過嵌入式腳本對模型與仿真進行控制的.嵌入式腳本指的是嵌入在模型中的腳本,是模型的一部分,與模型一起保存一起加載.V-REP腳本類型分為非線程和線程,由于路徑的規劃是一個連續的過程,因此本文使用的是以級聯方式處理的線程腳本進行程序的編寫,添加對象分別是視覺傳感器與圖表,其中視覺傳感器的腳本用于對圖像進行數據處理與發送,圖表的腳本用于接收視覺傳感器的數據,并同步生成路徑.
本文使用的是Lua語言作為編程的腳本語言.目前,Lua語言已經在游戲開發、圖像信息處理、分布式控制與應用、生物信息學等領域中得到了較為廣泛的應用[4].
腳本代碼的編寫,首先是通過獲取對象句柄函數(sim.getObjectHandle)來獲取相關的模型句柄.在使用視覺傳感器對工件模型進行圖像處理的時候,主要使用的是函數庫中關于彩色圖與深度圖的函數.
使用獲取像素點的彩色圖函數,即獲取圖像的RGB值函數 (sim.GetVisionSensorImage)對經過邊緣檢測后的圖像進行處理,其返回的數值是一個一維數表,其數據結構為視覺傳感器遍歷每個像素點的RGB值.例如圖像像素點行列數為m×n.其數據結構與像素點的對應關系如表1所示.

表1 像素點與數表關系表
由于原始圖像在經過濾波處理后只存在黑白兩種顏色,因此返回的數表中也只存在0或1兩種數字,其中0代表白色,即非輪廓邊緣點,而1代表黑色,即輪廓邊緣點.因此需要將輪廓邊緣點所對應的像素點序列值提取出來,即找到返回值為1的點所對應的像素坐標.本文使用的是常規編程方法中的泛型for循環,即通過一個迭代器函數來遍歷所有值,進而提取處返回值為1的數組索引值.然后將獲取的像素點坐標使用矩陣變換將其轉換到世界坐標,進而生成加工路徑的X、Y坐標點.
與此同時,使用用于獲取圖像深度值數據函數(sim.GetVisionSensorDepthBuffer)來提取出的像素點的深度值,進而生成其相對于世界坐標系的Z值.函數的返回值同樣是一個一維數表,此數表顯示的是圖像上指定點的深度數據.需要注意的是其生成的數值并不是真正的距離,而是歸一化的比例關系數值,其中離傳感器最近的值為0,最遠的值為1,因此需要根據已知剪切平面的位置計算出真實的深度.進而再次使用矩陣變化將其轉換為相對于世界坐標系的Z值.
將獲取的輪廓邊緣像素點轉換為世界坐標值之后,使用壓縮數據表函數(sim.PackFloatTable)將數據打包成字符串,通過設置字符串信號函數(sim.SetStringSignal)將字符串信號發送給圖表. 同時在圖表腳本中使用獲取字符串信號函數(sim.GetStringSignal) 和 解 壓 浮點數據表函數(sim.UnpackFloatTable)將從視覺傳感器所發送的數據進行讀取與解壓,并同步生成3D曲線.其算法流程圖如圖5所示.

圖5 算法流程圖
在完成了平臺的搭建和編寫相應的程序代碼之后,需要對其進行運動仿真,驗證其結果,并且觀察是否滿足需求.為了方便顯示所生成的路徑,需要將工件模型與視覺傳感器隱藏,所生成路徑圖如圖6所示.

圖6 路徑生成圖
由圖可見,視覺傳感器成功地將可視范圍內的輪廓邊緣通過圖表的方式顯示出來,將由圖表記錄的路徑數據使用CSV后綴文件可以導出至Excel之中,用于后續的數據處理.
需要注意的是,其中所生成的輪廓曲線除了需要進行去毛刺加工的輪廓邊緣之外,同時也存在不需要加工的輪廓邊緣,并且根據所生成的路徑無法判斷出路徑是內輪廓邊緣還是外輪廓邊緣,因此還需要進行后續的數據處理,比如輪廓跟蹤,輪廓分割等,才可以最終生成機器人編程所使用的坐標數據.
本文使用視覺傳感器對去毛刺加工路徑進行自主識別,并通過在V-REP平臺下建立場景模型,并利用編程手段自主生成去毛刺的加工路徑,模擬仿真驗證其結果,最后生成機器人編程所需要的數據點.全過程由計算機自主完成,相比人工完成,效率得到顯著提升.使用視覺傳感器進行去毛刺的自主路徑規劃,不但可以減少手動編程的試錯幾率,而且還可以在此基礎上,實現機器人去毛刺加工的自主編程,從而減少大量的人為工作量.