林 森, 李文濤, 丁乃達(dá), 唐延?xùn)|
(1.中國科學(xué)院沈陽自動(dòng)化研究所 機(jī)器人學(xué)國家重點(diǎn)實(shí)驗(yàn)室,遼寧 沈陽 110016;2.中國科學(xué)院機(jī)器人與智能制造創(chuàng)新研究院,遼寧 沈陽 110016;3.遼寧工程技術(shù)大學(xué) 電子與信息工程學(xué)院,遼寧 葫蘆島 125105)
隨著汽車維修業(yè)的快速發(fā)展,車漆表面維護(hù)及修理逐漸成為常見的汽車車身維修種類。漆面修復(fù)過程中需要多次噴漆,工作量繁重,因此具有圖像傳感設(shè)備的智能噴漆機(jī)器人系統(tǒng)研發(fā)工作顯得極其重要。
近年來,國內(nèi)外研究者致力于研發(fā)噴漆機(jī)器人軌跡優(yōu)化方法。Chen H等人[1]在CAD模型基礎(chǔ)上首次提出基于網(wǎng)絡(luò)的噴漆軌跡規(guī)劃方法,但對(duì)于復(fù)雜曲面,網(wǎng)絡(luò)化的CAD模型很難識(shí)別數(shù)據(jù)特征。之后Chen H等人[2]再次利用CAD模型對(duì)工件表面網(wǎng)絡(luò)化的噴槍平面進(jìn)行分片處理,提出并驗(yàn)證片與片之間的有效連接算法。Andulkar M V等人[3]在離線噴漆軌跡規(guī)劃的基礎(chǔ)上提出增量式算法,對(duì)噴漆速度進(jìn)行優(yōu)化。張鵬等人[4]利用分片造型技術(shù)對(duì)大曲率曲面進(jìn)行噴漆軌跡規(guī)劃,并分析軌跡優(yōu)化組合中存在的問題,奠定自動(dòng)化噴漆系統(tǒng)的基礎(chǔ)。雖然對(duì)不同表面特征的噴漆軌跡規(guī)劃問題研究取得了一定成果,但噴漆系統(tǒng)仍存在目標(biāo)區(qū)域點(diǎn)云數(shù)據(jù)不夠準(zhǔn)確,軌跡規(guī)劃方法適用性較差等問題。
本文以Kinect V2相機(jī)為噴漆系統(tǒng)的圖像傳感設(shè)備,提出基于Sampson加權(quán)算子的隨機(jī)抽樣一致性算法(random sample consensus,RANSAC),剔除錯(cuò)誤匹配點(diǎn)對(duì),獲得精度更高的車身劃痕區(qū)點(diǎn)云;提出高效的點(diǎn)云切片生成算法,利用處理后的點(diǎn)云計(jì)算切片的數(shù)據(jù)坐標(biāo)與法矢量,并通過插補(bǔ)算法將軌跡中各點(diǎn)連接起來,形成連續(xù)平滑的噴槍運(yùn)動(dòng)軌跡,實(shí)現(xiàn)噴漆作業(yè)。
智能噴漆系統(tǒng)的整體結(jié)構(gòu)如圖1所示。
圖1 智能噴漆系統(tǒng)整體結(jié)構(gòu)
Kinect V2是第二代Kinect for Windows圖像傳感設(shè)備,可以同時(shí)獲取場(chǎng)景的顏色信息和深度信息[5]。
Kinect V2共有三個(gè)攝像頭,最左側(cè)是RGB攝像頭,右側(cè)為紅外相機(jī)和紅外線發(fā)射器組成的深度傳感器[6]。為獲得Kinect相機(jī)的內(nèi)部參數(shù),采用張正友標(biāo)定法[7]對(duì)相機(jī)自身進(jìn)行標(biāo)定。Kinect采集點(diǎn)云數(shù)據(jù)后,還需將數(shù)據(jù)轉(zhuǎn)換到噴漆機(jī)器人坐標(biāo)系下,才能進(jìn)行后續(xù)操作,因此要對(duì)Kinect與噴槍之間的相對(duì)位姿進(jìn)行標(biāo)定,即手眼標(biāo)定[8]。本文采用奇異值分解(singular value decomposition,SVD)的方法[9]計(jì)算Kinect與噴槍之間的旋轉(zhuǎn)矩陣和平移向量,完成二者相對(duì)位姿的標(biāo)定。
使用Kinect相機(jī)依次采集不同角度下的目標(biāo)圖像,將圖像兩兩之間配準(zhǔn),通過后期拼接,可得到完整的目標(biāo)點(diǎn)云。為保證圖像對(duì)之間的匹配精度,提出基于Sampson加權(quán)算子的RANSAC算法對(duì)匹配結(jié)果進(jìn)行處理。RANSAC算法[10]使用的基礎(chǔ)數(shù)學(xué)模型如圖2所示。α與α′為Kinect從V和V′兩個(gè)位置采集的圖像,成像點(diǎn)分別為i和i′。
圖2 幾何關(guān)系示意
對(duì)應(yīng)點(diǎn)i=(u,v,1)和i′=(u′,v′,1)存在如下關(guān)系
(1)
其中,Fcloud為待求的變換矩陣
(2)
當(dāng)匹配點(diǎn)數(shù)大于8時(shí),將式(2)代入式(1)展開求解可得到變換矩陣Fcloud。得到變換矩陣后,在RANSAC算法基礎(chǔ)上引入Sampson加權(quán)算子
(3)
Step1 隨機(jī)抽取8對(duì)匹配點(diǎn),計(jì)算變換矩陣Fi。
Step2 計(jì)算每對(duì)匹配點(diǎn)的Sampson距離,記為dij,i∈[1,N],j∈[1,8]。比較dij與事先設(shè)置的閾值d,若dij Step3 將Step1和Step2重復(fù)循環(huán)N次,其中 (4) 式中p為至少有一個(gè)數(shù)據(jù)子集所包含的數(shù)據(jù)全是局內(nèi)點(diǎn)的概率,通常p大于95%,s為子集中數(shù)據(jù)點(diǎn)的個(gè)數(shù),ε為局外點(diǎn)占數(shù)據(jù)集的比例。 Step4 將之前記錄的內(nèi)點(diǎn)數(shù)量進(jìn)行比較,找到對(duì)應(yīng)內(nèi)點(diǎn)數(shù)目最多的變換矩陣,記為F,與其對(duì)應(yīng)的內(nèi)點(diǎn)作為最終的內(nèi)點(diǎn),其余點(diǎn)作為外點(diǎn),即需要剔除的錯(cuò)誤匹配點(diǎn)。 如圖3所示,平面Π分別沿其法矢量方向與相反方向等距平移得到兩個(gè)新平面ΠR和ΠL,兩個(gè)平面之間的距離定義為切片厚度δ。Π與ΠL,ΠR之間構(gòu)成的切片與點(diǎn)云的交點(diǎn)分別記為PLi,i∈[1,nL]和PRi,i∈[1,nR]。通過求取PLi與PRi的最近連線可近似表達(dá)該模型的局部輪廓。 圖3 切面與點(diǎn)云求交 由于點(diǎn)云數(shù)據(jù)過大,尋找PLi與PRi的最近連線將花費(fèi)大量時(shí)間。因此對(duì)搜索距離最近點(diǎn)的算法進(jìn)行改進(jìn)。具體算法流程如下: 1)首先確定閾值nt,若ΠR和Π之間區(qū)域點(diǎn)的總數(shù)nR,滿足nR 2)在ΠL和Π之間區(qū)域中選取一點(diǎn)PLi,令d=δ/2。計(jì)算出PLi與Π平面之間的距離dL。如圖4所示,以PLi為中心,d為邊長(zhǎng)構(gòu)建一個(gè)正方體包圍盒,計(jì)算包圍盒內(nèi)含有另一區(qū)域點(diǎn)的數(shù)量,記為n。若n=0,則令d=d+δ/2,重新構(gòu)造包圍盒;若n>nt,則令d=dL+d/2,重新構(gòu)造包圍盒;若0 圖4 立方體包圍盒 3)同樣,在PLi中查找與Pli-near距離最近的點(diǎn),標(biāo)記為P′Li。判斷P′Li是否與PLi重合。若重合,將PLi與Pli-near記為匹配點(diǎn)對(duì),分別保存在鏈表List_ΠL和List_ΠR中;若不重合,則不保存該組點(diǎn)對(duì)。標(biāo)識(shí)PLi已遍歷。重復(fù)步驟(1)~步驟(3),直到遍歷PLi中的每一點(diǎn)為止。 4)計(jì)算List_ΠL和List_ΠR中每組點(diǎn)對(duì)之間連線PLiPli-near與平面Π的交點(diǎn),得到切片Π上的數(shù)據(jù)特征點(diǎn)坐標(biāo),記為Pi(xi,yi,zi)。 重復(fù)上述步驟,直到遍歷完全部點(diǎn)云切片,就得到點(diǎn)云切面上全部數(shù)據(jù)特征點(diǎn)坐標(biāo)。 為求得特征數(shù)據(jù)點(diǎn)集中各點(diǎn)的法矢量,利用離散點(diǎn)云的三角拓?fù)浣Y(jié)構(gòu),計(jì)算特征數(shù)據(jù)點(diǎn)相關(guān)三角形的法向量,可直接利用有向三角形的方向確定法向量的方向[11,12]。點(diǎn)云切片特征數(shù)據(jù)點(diǎn)構(gòu)成的集合稱為采樣點(diǎn)集Si。如圖5所示,假設(shè)Si與m個(gè)點(diǎn)Pj(j=1,2,…,m)相鄰,且與Pj+1共同構(gòu)成m個(gè)相關(guān)三角形。設(shè)這些三角形的單位法矢量為nj,可通過下式求得 圖5 Si法矢量估計(jì) (5) 令Si,Pj與Pj+1構(gòu)成的三角形面積為Λ,取加權(quán)因子λj=1/Λ,則Si的法矢量可按下式估算 (6) 如圖6所示,噴槍噴嘴到噴漆工件表面的垂直距離記為H。對(duì)于采樣點(diǎn)Si沿法矢量方向Ni進(jìn)行偏移H距離之后,就可以得到點(diǎn)Oi,并將點(diǎn)Oi記為點(diǎn)Si的偏置點(diǎn)。且 圖6 工件表面偏置信息 (7) 其中,點(diǎn)Oi包含坐標(biāo)值和單位法矢量。由全部Oi構(gòu)成的點(diǎn)集稱為偏置點(diǎn)集O,點(diǎn)集O包含點(diǎn)云中的全部數(shù)據(jù)特征。采用噴漆機(jī)器人空間直線或空間圓弧插補(bǔ)算法[13]將O中的全部點(diǎn)連接起來便形成了連續(xù)的噴涂機(jī)器人空間路徑,最后將該路徑轉(zhuǎn)換為特定型號(hào)的噴漆機(jī)器人運(yùn)行程序,完成噴漆工作。 實(shí)驗(yàn)平臺(tái)如下:開發(fā)平臺(tái)Visual Studio 2013;圖像處理算法庫OpenCV;三維點(diǎn)云處理算法庫PCL1.7.2;Kinect V2相機(jī)驅(qū)動(dòng)程序Kinect SDK。 當(dāng)使用SURF算法進(jìn)行匹配時(shí),得到66對(duì)匹配點(diǎn),匹配結(jié)果如圖7(a)所示。現(xiàn)采用改進(jìn)的RANSAC算法,得到43對(duì)匹配點(diǎn)。從圖7(b)可以看出,明顯的錯(cuò)誤匹配點(diǎn)對(duì)已經(jīng)剔除。 圖7 二種算法匹配結(jié)果 圖8(a),(b)分別為打過蠟的劃痕區(qū)以及Kinect獲取的該區(qū)域點(diǎn)云圖。利用特征點(diǎn)可以生成軌噴漆軌跡的法向圖,如圖8(c)所示。再根據(jù)數(shù)據(jù)點(diǎn)的法矢量確定噴槍的偏置參數(shù),通過插補(bǔ)算法將軌跡中的各點(diǎn)連接起來,最后形成了連續(xù)平滑的噴漆機(jī)器人噴槍運(yùn)動(dòng)軌跡,如圖8(d)所示。 圖8 實(shí)驗(yàn)結(jié)果 如圖8的小型區(qū)域噴槍軌跡規(guī)劃,算法需運(yùn)行3 s左右,大型區(qū)域如整個(gè)車門的噴槍軌跡生成,算法需運(yùn)行10 s左右。與目前國內(nèi)多采用的人工示教進(jìn)行軌跡規(guī)劃的方法相比,本文的改進(jìn)算法節(jié)省了大量時(shí)間。 如圖9(a)所示,通過可視化界面手動(dòng)選取目標(biāo)噴漆區(qū)域。規(guī)劃的噴漆機(jī)器人運(yùn)動(dòng)軌跡如圖9(b)所示,最后的噴漆效果如圖9(c)所示。噴漆后的汽車車面劃痕區(qū)已變得均勻光滑。 圖9 實(shí)際噴漆效果 采用基于Sampson加權(quán)算子的RANSAC算法剔除錯(cuò)誤匹配結(jié)果,為后續(xù)處理提供精確的三維點(diǎn)云。提出改進(jìn)的點(diǎn)云切片算法,減少獲取切片特征數(shù)據(jù)坐標(biāo)的運(yùn)行時(shí)間。根據(jù)上述研究,進(jìn)行軟硬件的設(shè)計(jì)與實(shí)現(xiàn),對(duì)車體劃痕區(qū)域進(jìn)行噴漆操作,驗(yàn)證該系統(tǒng)的正確性。實(shí)驗(yàn)證明本文噴漆系統(tǒng)具有很好的實(shí)用價(jià)值。3 噴漆機(jī)器人噴槍軌跡規(guī)劃
3.1 改進(jìn)的點(diǎn)云切片算法
3.2 估算數(shù)據(jù)點(diǎn)法矢量
3.3 噴漆機(jī)器人噴槍空間運(yùn)動(dòng)軌跡的生成
4 系統(tǒng)實(shí)驗(yàn)結(jié)果與分析
4.1 改進(jìn)點(diǎn)云匹配算法處理結(jié)果
4.2 法矢量及軌跡規(guī)劃結(jié)果
4.3 實(shí)際噴漆效果
5 結(jié) 論