機(jī)器視覺技術(shù)與運(yùn)動(dòng)控制技術(shù)相結(jié)合解析方案
掃描二維碼
隨時(shí)隨地手機(jī)看文章
開發(fā)視覺導(dǎo)引運(yùn)動(dòng)系統(tǒng)概述
過去幾年里,運(yùn)動(dòng)控制系統(tǒng)已經(jīng)把機(jī)器視覺作為其關(guān)鍵部分。越來越多的工程師和科研人員認(rèn)識到當(dāng)前的機(jī)器視覺技術(shù)和運(yùn)動(dòng)控制技術(shù)相結(jié)合對于解決復(fù)雜應(yīng)用問題有相當(dāng)大的幫助。軟硬件技術(shù)的發(fā)展也促進(jìn)了運(yùn)動(dòng)控制和機(jī)器視覺系統(tǒng)的結(jié)合,并降低了它們的開發(fā)難度和開發(fā)成本。在設(shè)計(jì)這種系統(tǒng)時(shí),了解目前的技術(shù)發(fā)展、方法以及開發(fā)工具會對您的工作提供很大的幫助。
當(dāng)您開發(fā)一個(gè)視覺導(dǎo)引運(yùn)動(dòng)控制系統(tǒng)時(shí),有很多方面需要考慮。其中重要的一點(diǎn)就是如何建立該系統(tǒng)。比如一個(gè)視覺導(dǎo)引運(yùn)動(dòng)控制系統(tǒng)用于在移動(dòng)電話上安裝機(jī)蓋,每次電話的位置和方向可能有所不同。為了使問題變得簡單,假定移動(dòng)電話放置在X-Y-Theta工作臺來校正位置以及方向。視覺系統(tǒng)用來定位機(jī)蓋并測量電話移動(dòng)到正確位置運(yùn)動(dòng)系統(tǒng)需要移動(dòng)的方向和距離。開發(fā)這樣的系統(tǒng)也有很多的問題必須考慮到,例如視覺單元如何和運(yùn)動(dòng)單元關(guān)聯(lián)來保證把部件移動(dòng)到位。在運(yùn)動(dòng)和視覺單元之間建立通信需要校準(zhǔn)。如圖1所示,在校準(zhǔn)一個(gè)視覺導(dǎo)引運(yùn)動(dòng)控制系統(tǒng)時(shí),需要按照以下幾個(gè)步驟進(jìn)行:首先,您需要校正圖像系統(tǒng)的所有失真,它們有可能導(dǎo)致錯(cuò)誤的測量距離被傳遞到運(yùn)動(dòng)控制系統(tǒng)上;
然后,您需要把圖像測量的距離(通常用像素表達(dá))和工作臺或電機(jī)測量的距離(通常用步進(jìn)的次數(shù)或計(jì)數(shù)值)聯(lián)系起來;最后,您需要把運(yùn)動(dòng)控制系統(tǒng)與視覺坐標(biāo)系統(tǒng)相關(guān)聯(lián),從而校正兩個(gè)系統(tǒng)的偏移。這種圖像測量距離到運(yùn)動(dòng)控制距離的轉(zhuǎn)換依賴于很多的參數(shù),其中包括相機(jī)和被測物體間的距離以及鏡頭的類型。相機(jī)焦距的改變會使得物體成像的大小有所不同,因此測量的結(jié)果也會與相機(jī)移動(dòng)之前有所不同。一個(gè)簡單的視覺和運(yùn)動(dòng)控制系統(tǒng)框圖如圖1所示。
常見失真的校正
當(dāng)校正運(yùn)動(dòng)控制部分在2維平面上的視覺導(dǎo)引運(yùn)動(dòng)控制系統(tǒng)時(shí),應(yīng)該確保您的相機(jī)垂直于該平面或工作臺。如果相機(jī)不垂直,那么圖像將有透視性失真,就是說對于一個(gè)各部分尺寸相同的物體,距離相機(jī)近的部分會比顯得比距離相機(jī)遠(yuǎn)的部分要大。某些軟件包,如NI視覺軟件,可以使用某些校準(zhǔn)算法來校正這些透視性失真。
在校準(zhǔn)系統(tǒng)時(shí)鏡頭失真也一種誤差源。鏡頭失真來自于鏡頭邊緣的變形。這會導(dǎo)致直線在圖像邊緣上變成曲線。像透視性失真一樣,鏡頭失真可以使用某些圖像處理軟件如NI 視覺軟件的特定功能在進(jìn)行校正。
關(guān)聯(lián)視覺單元和運(yùn)動(dòng)控制單元
校準(zhǔn)視覺導(dǎo)引運(yùn)動(dòng)控制系統(tǒng)可以通過多種方法來實(shí)現(xiàn)。最簡單的方法是通過實(shí)驗(yàn)利用機(jī)器視覺和運(yùn)動(dòng)控制單元采集到的數(shù)據(jù)來校準(zhǔn)系統(tǒng)。使用這種方法,您可以移動(dòng)運(yùn)動(dòng)控制系統(tǒng)到多個(gè)工作點(diǎn)并使用機(jī)器視覺系統(tǒng)來測量其運(yùn)動(dòng)的的距離。利用所采集到的數(shù)據(jù),您可以確定計(jì)算出從相機(jī)的像素值與工作臺運(yùn)動(dòng)之間的等式關(guān)系,比如說編碼器的計(jì)數(shù)單位?;氐揭苿?dòng)電話撿取和放置的例子,假定您的工作臺向X方向移動(dòng)了1cm,您使用相機(jī)觀察到工作臺在X方向移動(dòng)了100像素。您就可以建立一個(gè)校準(zhǔn)常量0.01 cm/像素,它說明您在工作臺上所測量的0.01 cm相當(dāng)于1個(gè)像素。
圖2 用于關(guān)聯(lián)視覺單元和運(yùn)動(dòng)控制單元的LabVIEW 代碼。
關(guān)聯(lián)運(yùn)動(dòng)坐標(biāo)系統(tǒng)和視覺坐標(biāo)系統(tǒng)
在消除或校正了圖像系統(tǒng)的失真影響后,另一個(gè)您在設(shè)計(jì)系統(tǒng)時(shí)要防范的問題是確保相機(jī)的坐標(biāo)系統(tǒng)和運(yùn)動(dòng)控制的坐標(biāo)系統(tǒng)同軸。根據(jù)具體的應(yīng)用以及您所要獲得的精度,同軸性可能會成為提高性能的最關(guān)鍵環(huán)節(jié)。相機(jī)和運(yùn)動(dòng)控制坐標(biāo)系統(tǒng)不嚴(yán)格同軸會導(dǎo)致指令的偏差。例如,如果您使用不同軸的工作臺和相機(jī),當(dāng)物體在工作臺上沿X方向向移動(dòng)時(shí)相機(jī)會記錄工作臺在X方向和Y方向同時(shí)移動(dòng)。使用坐標(biāo)轉(zhuǎn)換可以校正坐標(biāo)系統(tǒng)的偏移。坐標(biāo)轉(zhuǎn)換可以把一個(gè)坐標(biāo)系統(tǒng)(工作臺坐標(biāo)系統(tǒng))轉(zhuǎn)換為另一個(gè)坐標(biāo)系統(tǒng)(相機(jī)的坐標(biāo)系統(tǒng))。例如機(jī)器人應(yīng)用中經(jīng)常會用到這些坐標(biāo)變換技術(shù)來根據(jù)獲取的信息確定最終的執(zhí)行系統(tǒng)應(yīng)該怎樣工作。在下圖中,黑色為相機(jī)坐標(biāo)系統(tǒng),綠色為工作臺坐標(biāo)系統(tǒng),二者相差一定的角度。
圖3:坐標(biāo)系統(tǒng)的不同軸會導(dǎo)致運(yùn)動(dòng)控制系統(tǒng)與視覺系統(tǒng)距離換算時(shí)出現(xiàn)偏差。
首先您要確定的兩個(gè)坐標(biāo)系統(tǒng)的角度偏差值。我們把這一角度稱為偏差角。一種簡單的做法是通過移動(dòng)工作臺一個(gè)已知角度,利用機(jī)器視覺系統(tǒng)來測量起始位置和終止位置來確定該偏差角。例如,假定您僅在X軸移動(dòng)了工作臺2000單位(0,0到2000,0位置)。由于您只移動(dòng)了X軸,在圖像坐標(biāo)系中測量的Y軸的任何移動(dòng)都能幫助您確定該偏差角。如果相機(jī)的圖像顯示工作臺在X軸移動(dòng)了173像素,在Y軸移動(dòng)了100像素,可以通過對Y和X比值的反正切來計(jì)算旋轉(zhuǎn)的角度。對100/173取反正切得到偏差角為30度。
在確定了偏差角后,下一步您要確定視覺單元和運(yùn)動(dòng)控制單元之間的轉(zhuǎn)換關(guān)系。您可以通過比較在圖像中測量出的運(yùn)動(dòng)距離和在運(yùn)動(dòng)控制中給出的運(yùn)動(dòng)距離來計(jì)算得該轉(zhuǎn)換公式。為了確定在圖像中的移動(dòng)距離Z,可以利用勾股定理通過X值和Y值進(jìn)行計(jì)算。Z=sqrt(X^2+Y^2)。
在視覺系統(tǒng)中移動(dòng)的長度=sqrt(100^2+173^2) = 200像素。
現(xiàn)在您可以從上面的范例中知道,視覺單元到運(yùn)動(dòng)控制單元的比率為200:2000或1:10。在進(jìn)行校準(zhǔn)時(shí)您需要注意的一點(diǎn)是當(dāng)您在校準(zhǔn)時(shí)采樣的點(diǎn)數(shù)越多,在最后您的校準(zhǔn)結(jié)果越準(zhǔn)確。另一點(diǎn)需要注意的是運(yùn)動(dòng)控制系統(tǒng)可能有輕微缺陷,這會導(dǎo)致不同部件移動(dòng)相同距離有輕微差別。為了提高可重復(fù)率,您應(yīng)該通過采集不同點(diǎn)的多個(gè)樣本來計(jì)算轉(zhuǎn)換比率。此外,使用這種比率,您可以發(fā)現(xiàn)為了能在圖像上觀察到一個(gè)像素距離的移動(dòng),您至少需要將工作臺移動(dòng)10個(gè)單位。這些類系統(tǒng)中,工作臺的分辨率遠(yuǎn)高于鏡頭的分辨率的情況是很常見的,這意味著圖像中的微小移動(dòng)將會在運(yùn)動(dòng)系統(tǒng)中導(dǎo)致很大的位移變化。若您連續(xù)的核對工作臺的位置,您可能發(fā)現(xiàn)它會在目標(biāo)位置附近跳動(dòng)。一旦出現(xiàn)這樣的情況,您可以考慮設(shè)置盲區(qū),這樣當(dāng)您感覺工作臺已足夠接近目標(biāo)區(qū)域,運(yùn)動(dòng)控制就不再繼續(xù)進(jìn)行調(diào)整。
坐標(biāo)轉(zhuǎn)換
下一步我們將要利用系統(tǒng)的相關(guān)信息來決定如何把相機(jī)坐標(biāo)系統(tǒng)上點(diǎn)的位置轉(zhuǎn)換到工作臺坐標(biāo)系統(tǒng)上??梢?/p>
利用下圖來更好地說明這種轉(zhuǎn)換如何實(shí)現(xiàn):假定將工作臺從0,0移動(dòng)到到相機(jī)坐標(biāo)系統(tǒng)的新位置X1 和Y1(以藍(lán)色代表),X1和Y1都位于第一象限內(nèi)。
關(guān)于坐標(biāo)轉(zhuǎn)換,您需要知道某點(diǎn)在工作臺坐標(biāo)系統(tǒng)中的X坐標(biāo)和Y坐標(biāo),在圖中由紅色的虛線表示。在相機(jī)坐標(biāo)系統(tǒng)中的X坐標(biāo)和Y坐標(biāo)是已知的,利用它們您可以很容易地計(jì)算出在相機(jī)坐標(biāo)系統(tǒng)中的偏差角。利用相機(jī)坐標(biāo)系統(tǒng)下的角度矢量減去已知的偏置角就能方便地得到工作臺坐標(biāo)系統(tǒng)中的角度矢量。利用矢量H作為斜邊您可以構(gòu)建一個(gè)直角三角形,Y2和X2是它的兩條未知長度的直角邊。對于直角三角形,當(dāng)您知道其中一條邊和一個(gè)角的大小,就能夠計(jì)算出其余兩條邊的大小。由于我們已經(jīng)通過計(jì)算得到了工作臺坐標(biāo)系統(tǒng)中的矢量角度的大小,就可以通過正弦定律和余弦定律來計(jì)算其余兩條邊的大小。結(jié)果如下:
通過sin(theta3)=Y2/H 得到 H*sin(angle in stage frame)= Y2
通過cos(theta3)=X2/H 得到H*cos(angle in stage frame)= X2
圖5坐標(biāo)轉(zhuǎn)換的LabVIEW代碼
利用這組簡單的等式,您可以完成從已知的圖像坐標(biāo)系下的坐標(biāo)到未知的工作臺坐標(biāo)系下的坐標(biāo)的轉(zhuǎn)換。在使用這種方式時(shí)需要注意的是,當(dāng)矢量落在其它象限時(shí)等式會有所不同。然而,確定其它象限下坐標(biāo)變換的等式和以上方法非常類似。
對于特定的應(yīng)用,您可以使用閉環(huán)控制來實(shí)現(xiàn)運(yùn)動(dòng)視覺校準(zhǔn)。這種方法的原理是利用某一特征在理想位置和觀察位置的差值作為誤差信號來進(jìn)行一個(gè)控制回路。例如,您可以將部件上的一個(gè)凹槽作為特征,將它調(diào)整到圖像中的某個(gè)理想位置??刂苹芈窌谶B續(xù)循環(huán)中不斷調(diào)整部件或相機(jī),誤差會越來越小直到理想位置和觀察到的特征點(diǎn)的位置重合。利用這種方法,您可以輕松地校準(zhǔn)相機(jī)和工作臺的坐標(biāo)系統(tǒng)。您還可以進(jìn)一步利用估計(jì)算法在控制部件的同時(shí)估算出系統(tǒng)的缺陷,比如光照變化以及圖像采集中較低的幀速。
結(jié)論
視覺導(dǎo)引運(yùn)動(dòng)控制系統(tǒng)適和多種應(yīng)用,從大量元件的自動(dòng)分析到簡單的撿取和放置應(yīng)用。設(shè)計(jì)這種系統(tǒng)雖然很復(fù)雜,但它能最大限度地提高生產(chǎn)效率。校準(zhǔn)只是建立整個(gè)系統(tǒng)比較初級的部分但它非常重要。消除視覺系統(tǒng)的失真、將運(yùn)動(dòng)單元與視覺單元相關(guān)聯(lián)以及進(jìn)行坐標(biāo)轉(zhuǎn)換是非常重要的幾個(gè)部分,它們可以提高您的視覺導(dǎo)引運(yùn)動(dòng)系統(tǒng)的精度、可重用性以及整體價(jià)值。