曹恒督,高 志
(華東理工大學機械與動力工程學院,上海200237)
刮研是用來對機械設備中某些精密配合表面進行光整加工的工藝方法,它可以降低配合面的表面粗糙度值,提高其配合性能、潤滑性能及機械效率,達到磨削加工難以達到的表面加工精度,是高檔精密設備所必需的工藝過程,如機床導軌平面和機床工作臺面的加工[1]。
刮研主要包括兩個工序:研磨顯點和刮削高點。該工藝通過互相研磨表面附有顯示劑的兩個配合工作表面或者工作表面與標準表面之間來顯示出工件表面的高點,即相對不平點,然后用刮刀以微量刮削的方式刮去高點[2]。如此不斷重復研點與刮點的過程,直到達到規定的表面精度要求為止。當前刮研操作主要依靠手工來完成,在人工研磨顯點之后,工人雙手握持刮刀,使刮刀與待刮表面呈一定切削角度,并對刀頭施加下壓力,后用腰部前頂刀柄以使刮刀刮削高點,并在之后順勢提起刮刀,完成對一個高點的刮削。刮研過程勞動強度大,長期從事會造成工人下肢淤血,導致下肢靜脈血栓綜合癥等健康問題[3]。目前成熟的刮研輔助工具只有動力刮刀,它通過刀片的振動來代替人力進行刮削操作,但是仍然需要人工手持定位表面高點[2]。
機器視覺技術是最近幾年隨著計算機硬件與軟件技術、光學攝影技術等成熟發展而新興起來的一門學科,相機拍攝物體圖像并傳輸至計算機后使用特定識別算法對其進行分析處理即可得到所需信息[4]。將機器視覺應用于材料表面的特征識別與定位也成為國內外研究的趨勢,文獻采用KNN算法結合小波系數對軌道表面質量進行檢測[5];文獻則基于最小距離分類方法對鋼板圖像進行表面質量檢測[6]。雖然目前針對表面特征的檢測識別算法很多,但不同材料表面的不同特征需要采用不同的識別算法。
在熟悉了解傳統刮研工藝的基礎上,結合機器視覺技術,創新性的開發出一套基于視覺識別技術的自動表面刮研機構,并開發出適用于刮研表面高點特征識別的視覺處理算法,使用該算法可以從待刮表面圖像中準確識別出需要刮削的高點并確定其位置,后用該位置信息指導刮研機器人運動。
該機構主體由一個直角坐標型機器人與相機組成,如圖1所示。X,Y軸電機負責移動刮刀到高點位置及實現刮削操作,Z軸電機通過繞線和彈簧片與刮刀相連,用以使刮刀壓緊在待刮表面上,負責提供刮削壓力,刮削完成后電機反轉放松刮刀。刮刀采用基于人工刮刀的改進設計,使之更好的與機器人運動機構相配合。相機獲取研點后待刮表面的圖像,計算機對其進行數字圖像預處理之后,使用特征識別算法對其進行后續處理,識別出需要刮削的高點位置,并將該位置信息傳遞給直角坐標機器人執行部件的驅動器,進而驅動各坐標軸電機運動來執行刮削操作。照明光源可以消除待刮表面上的陰影,協助相機采集到更加清晰準確的表面圖像。整體機構的工作原理,如圖2所示。

圖1 刮研機器人整體結構Fig.1 Overall Mechanical Structure of Scraping Robot

圖2 刮研機器人工作原理Fig.2 Operating Principle of Scraping Robot
X軸電機與Z軸電機為機器人刮削操作提供刮刀推力與壓緊力,選用型號為57CME23的雷賽步進電機,電機保持轉矩為2.3N.m。Y軸電機只負責刮刀的沿軸運動,沒有外加負載,故選用體積較小的型號為42CME08的雷賽步進電機,電機保持轉矩為0.8N.m。機器人三軸電機的驅動器均選用雷賽H2X-CAN506總線型混合伺服驅動器,該驅動器基于標準的CANopen協議,支持位置、速度、回零等控制模式,可以與適配計算機的CANopen通訊主站進行數據通訊,最多可對127軸電機進行組網,最高通信速率為1Mbps。設備選用型號為周立功CAN-USB的通訊主站卡,該卡支持5Kbit/s~1Mbit/s的CAN通訊波特率,一端可以與電機驅動器進行CAN數據通訊,另一端可以通過調用庫函數與計算機進行USB數據通訊。設備的圖像處理與特征識別算法通過OpenCV庫來實現;使用QT庫來組織控制軟件架構與搭建人機交互界面。整機控制系統結構,如圖3所示。

圖3 刮研機器人控制系統結構Fig.3 Structure of Scraping Robot’s Controlling System
使用相機準確獲取研點后待刮研表面的圖像是整個工作流程的第一步,它對后續整個機構的高點識別定位精度及運動控制精度都有著根本性的影響。如圖4所示,是一般相機的小孔成像模型。

圖4 相機小孔成像模型Fig.4 Pinhole Imaging Model of Camera
在小孔投影成像模型中,光軸與圖像平面的交點稱為主點,f為相機的焦距,即投影中心到成像平面的距離,實際計算中,由于感光像素的形狀誤差,會使用兩個焦距fx及fy來表示將連續圖像坐標轉換為離散像素坐標時不同垂直方向上的度量單位。用兩個參數cx和cy來表示成像平面中心相對于光軸的誤差偏移。根據相似三角形原理,用齊次坐標形式下的矩陣乘積來表示三維空間點(X,Y,Z)與成像平面上所對應的像點(x,y,f)的關系:

其中,

由于小孔通光量過小而需要鏡頭來收集光線,這樣由于鏡頭的制造誤差引入了圖像的透鏡畸變。透鏡畸變主要有兩種:徑向畸變與切向畸變[8]。徑向畸變是由透鏡的球面形狀誤差造成的;切向畸變是由整個鏡頭中透鏡的安裝誤差造成的。對于徑向畸變,可以用r=0附近的前幾項泰勒級數展開來描述:

對于切向畸變,根據鉛錘模型算法,可以用兩個參數p1,p2來表示:

其中,(x,y)是成像平面上畸變點的原始位置,(xcorrected,ycorrected)是矯正后的新位置。由以上數學模型可知,表征相機的透鏡畸變共需要5個變量:三個徑向畸變變量k1,k2,k3,及兩個切向畸變變量p1,p2。在相機標定過程中將他們組合在一個5×1的畸變向量中。
相機的標定就是通過一定手段來確定相機內參矩陣與畸變向量等固有參數的過程。該設備采用型號為U-300C的低功耗CMOS工業相機,預設像素分辨率為1024×768(32FPS),靈敏度為1.0V/lux-sec550nm,曝光時間為0.0556-683.8ms。采用張正友相機標定方法[9],借助OpenCV視覺標定庫函數加以實現,以黑白方格棋盤作為標定物,拍攝標定棋盤不同姿態下的12張照片作為標定參照,如圖5所示。

圖5 相機標定實驗Fig.5 Experiment of Camera Calibration
最終標定結果為:相機內參數fx=1033.25,fy=1034.75,cx=320,cy=240;相機透鏡畸變系數為k1=-0.115803,k2=0.605959,k3=-1.21121,p1=0,p2=0。根據標定結果參數對相機所獲取的圖像進行矯正之后就可以得到準確反映待刮表面實際場景的圖像。
在本設備中,相機的光軸應該與刮研平面互相垂直,這樣獲取的圖像才會準確反映表面實際情況,才能保證由像點像素坐標準確還原到刮研點空間坐標。但由于設備的裝配誤差,不能保證相機光軸與刮研平面的絕對垂直,如圖6所示。

圖6 理想情況與實際情況相機位置與成像差異Fig.6 Difference Between Ideal and Practical Imaging Conditions
需要對相機最后獲取的圖像進行鳥瞰化操作,即將圖像中發生變形的高點通過一定映射方式恢復成實際的形狀。定義一個3×3的矩陣來表示從一個平面到另一個平面的投影映射,稱之為單應性矩陣[10],整個映射過程稱為透視變換,如下所示:


由于拍攝環境光照及相機本身的原因等,獲取的圖像會混入噪聲,對后期特征識別影響較大,所以需要在盡可能保留圖像自身細節特征的情況下對噪聲進行抑制,這個過程稱為圖像濾波操作。采用雙邊濾波技術對圖像進行降噪處理,雙邊濾波結合圖像的空域濾波與值域濾波為一體,將圖像中一個像素的值用與之在位置上相臨近的且灰度值相似的像素群的平均值代替[11]。它可以在很好的保留圖像紋理與邊緣信息的基礎上對噪聲加以濾除。
圖像的灰度化與二值化處理可以在有效削減圖像信息量并加快圖像處理速度的基礎上保留感興趣的圖像紋理輪廓信息,并完成前景與背景分割工作。刮研常用的染色劑為藍色,而鑄鐵平板為黑灰色,所以考慮使用色調及飽和度信息來實現圖像的灰度化以突出其藍色高點部分。將圖像原生的BGR顏色模型轉換為HSV顏色模型后提取H(hue色調)通道和S(saturation飽和度)通道以構建灰度圖[12]。
在刮研過程中只關心著色高點范圍的大小和位置分布,并不關心其紋理,所以對圖像進行二值化操作以保留高點區域輪廓。本設備采用的二值化方法如下:首先對圖像外圍背景進行漫水填充操作,漫水填充會設定兩個閾值確立一個亮度范圍,使與種子像素亮度值之差在該范圍內的周圍像素被漫水而被設為某一固定亮度值。漫水后可以使背景亮度統一為零,增大背景與前景的亮度差異,使后續的二值化操作更容易區分。后選擇二值化閾值為1,像素值大于1的設為255即白色,小于1的設為0即黑色。最終灰度化與二值化效果如圖7所示。

圖7 刮研平面灰度圖像與二值圖像Fig.7 Grayscale Image and Binary Image of Scraping Plane
從研點后獲取的圖像中可以看出,有些高點區域之間存在粘連,這些高點在輪廓識別中都會被識別為同一個高點,導致無法保證完全刮削。所以需要把圖像中相互粘連的高點分割識別開來,并標記刮研點,即下刀點。本設備在基于OpenCV視覺庫中輪廓查找算法與最小面積輪廓包圍矩形算法的基礎上,開發了一套針對刮研表面高點區域分割與識別的處理算法,算法具體操作步驟如圖8所示。

圖8 高點分割識別算法流程Fig.8 Segmentation and Recognition Algorithm of High-Points
其中,形態學腐蝕指的是求二值圖每個像素鄰域范圍內最小值的過程,以此來忽略一些面積過小高點。根據實際實驗得出r=15pixles時高點分割識別效果最好。算法實際實驗處理效果,如圖9所示。

圖9 高點識別算法效果Fig.9 Result of High-Points Recognition Algorithm
各個刮研點確定以后通過簡單直接的坐標變換可以將二維圖像坐標換算為刮研平面二維空間坐標,用以指導機器人各軸電機運動,完成刮削操作。
采用自主設計的刮研機器人及高點識別算法進行機床平板臺面高點識別實驗,如圖10所示。平板尺寸為200mm×200mm,材料為高強度鑄鐵,在與研具互研顯點之后由相機對其進行拍照,后傳至計算機用識別算法進行處理。實驗結果顯示共識別出106個待刮研高點,經檢驗之后發現有兩處漏識別,一處過識別,如結果圖中黃色標記所示,算法高點識別與定位的準確度為97%,實驗結果表明該圖像處理算法可以很好的將不同面積大小及相互粘連的高點區域分割標記,并確定各個刮研點的坐標位置,可以滿足該自動刮研設備的高點定位要求。

圖10 刮研機器人及其高點識別實驗結果Fig.10 Scraping Robot and Experiment Result of High-Points Recognition Algorithm
如表1所示,列舉五個已確定刮研點位置的圖像像素坐標。

表1 示例標記高點位置坐標Tab.1 Coordinates of Five Tagged High-Point Examples
設計了一種基于機器視覺的自動刮研機構,用于代替繁重的人工刮研操作,并闡述了其機械結構與控制系統;詳細說明了該設備的圖像處理與特征識別算法,通過該算法可以準確地識別并分割再定位待刮研平面上的高點,將高點的像素坐標傳遞給機械執行機構的控制設備,經過簡單的坐標變換將其轉換為實際刮研平面坐標,從而指導機構實現刮削操作。實際實驗結果表明該算法可以準確的識別和分割高點,使用該高點識別算法及整套刮研設備可以大大提高刮研操作的效率,減輕工人的勞動強度,消除刮研操作對工人健康的危害,達到機器換人的目的。