本發(fā)明涉及工業(yè)機器人標(biāo)定領(lǐng)域,尤其是涉及一種基于單目視覺的六自由度機器人運動學(xué)標(biāo)定方法。
背景技術(shù):
精確測量機器人工作末端位移是完成機器人標(biāo)定的核心。通常借助外界傳感器測量其位姿。常用設(shè)備包括三坐標(biāo)測量儀、經(jīng)緯儀等精密測量儀器。但這些方案的共同缺點在于設(shè)備價格昂貴(數(shù)十萬甚至上百萬),使用方法繁瑣復(fù)雜,往往需要專業(yè)人員現(xiàn)場校正操控,使用門檻較高;另一方面,此類設(shè)備通常需要占據(jù)較大的空間,難以滿足生產(chǎn)現(xiàn)場對于高效便捷的要求。
受制于上述設(shè)備,工業(yè)現(xiàn)場往往采用根據(jù)機器人工作實際位置誤差,手動擬合補償函數(shù),但這樣并沒有將模型中各個機械參數(shù)造成的誤差解耦,難以滿足精確度的要求。且標(biāo)定結(jié)果適用范圍具有很大的局限性,往往僅適用于標(biāo)定過的位置,而其他位置存在較大誤差。
基于攝像頭的運動學(xué)標(biāo)定方案,以其經(jīng)濟(jì)、便捷的優(yōu)點,能夠很好的滿足現(xiàn)場標(biāo)定的要求。測量時,將相機固定在機器人末端,標(biāo)靶位置固定且已知(或反之)。其基本原理是利用相機相對于固定標(biāo)靶的移動,得到末端的位移信息。然而,現(xiàn)有的方案往往需要保持整個標(biāo)靶始終處于視野范圍內(nèi),利用標(biāo)靶上所有的特征點,計算所需信息。這種方法很難利用普通相機做到高精度標(biāo)定。主要原因是以下兩點:
1.機器人往往需要較大的工作空間,為了保持標(biāo)靶始終處于視野范圍內(nèi),這就要求相機的視野范圍很大,相應(yīng)的每個像素對應(yīng)的尺寸就很大(很難控制在1mm2以內(nèi)),難以做到精確定位。
2.標(biāo)靶會較多的出現(xiàn)在視野中圖片的邊緣區(qū)域。而該部分有很嚴(yán)重的徑向畸變。即使經(jīng)過攝像頭標(biāo)定,其帶來的誤差也會使測量結(jié)果產(chǎn)生較大的波動,給結(jié)果的精準(zhǔn)度造成干擾。
另外,傳統(tǒng)的對于機器人進(jìn)行標(biāo)定的方法,多是通過dh模型對機器人進(jìn)行建模,這種建模方法存在一個根本缺陷,即當(dāng)存在兩軸平行或近于平行時,兩軸線相對位置誤差的建模不符合微小誤差模型,可能會引起很大的桿件偏移量誤差。而且現(xiàn)有的方法多是默認(rèn)機器人末端和攝像頭之間為平移關(guān)系,二者之間的坐標(biāo)轉(zhuǎn)換較為簡單,對于六自由度機器人來講,由于機器人自由度較高,這種坐標(biāo)轉(zhuǎn)換方式將會引起較大的誤差。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是針對上述問題提供一種基于單目視覺的六自由度機器人運動學(xué)標(biāo)定方法。
本發(fā)明的目的可以通過以下技術(shù)方案來實現(xiàn):
一種基于單目視覺的六自由度機器人運動學(xué)標(biāo)定方法,所述方法包括下列步驟:
1)建立六自由度機器人的mdh模型,并根據(jù)初始標(biāo)定變量u得到六自由度機器人末端的指令位移和安裝于六自由度機器人上的單目視覺傳感器與六自由度機器人末端之間的坐標(biāo)變換關(guān)系
2)根據(jù)六自由度機器人的初始標(biāo)定變量u,利用絕對值編碼棋盤對安裝于六自由度機器人上的單目視覺傳感器的多組位移δ'進(jìn)行分級測距并優(yōu)化;
3)標(biāo)定棋盤格坐標(biāo)系與基坐標(biāo)系的轉(zhuǎn)換角α,并根據(jù)轉(zhuǎn)換角α對位移δ'進(jìn)行坐標(biāo)變換得到六自由度機器人末端的實際位移δ,并得到多組觀測變量vk;
4)利用約束關(guān)系,結(jié)合步驟2)得到的多組觀測變量vk對標(biāo)定變量u進(jìn)行優(yōu)化,判斷標(biāo)定變量u是否達(dá)到定位精度,若是則完成六自由度機器人的運動學(xué)標(biāo)定,若否則返回步驟2)。
所述六自由度機器人的mdh模型具體為5參數(shù)mdh模型,所述5參數(shù)包括關(guān)節(jié)角θi、桿件偏移量di、桿件長度li、扭轉(zhuǎn)角αi和扭轉(zhuǎn)角βi。
所述通過初始標(biāo)定得到安裝于六自由度機器人上的單目視覺傳感器與六自由度機器人之間的坐標(biāo)變換關(guān)系的方法包括單軸旋轉(zhuǎn)法或雙軸旋轉(zhuǎn)法。
所述單軸旋轉(zhuǎn)法具體為:保持六自由度機器人的5個軸靜止,只旋轉(zhuǎn)最后1個軸,得到單目視覺傳感器采集的圖片,測量單目視覺傳感器相對于棋盤格坐標(biāo)系的位置,通過擬合得到單目視覺傳感器的軌跡方程,結(jié)合當(dāng)前機器人的末端執(zhí)行器的位置即可得到單目視覺傳感器與六自由度機器人末端之間的坐標(biāo)變換關(guān)系。
所述雙軸旋轉(zhuǎn)法具體為:保持六自由度機器人的4個軸靜止,只旋轉(zhuǎn)最后2個軸,擬合最后2個軸的軸線并將2個軸線的交點作為六自由度機器人的第六軸的坐標(biāo)系的原點,通過單目視覺傳感器與第六軸的坐標(biāo)系的原點的位置關(guān)系得到單目視覺傳感器與六自由度機器人末端之間的坐標(biāo)變換關(guān)系。
所述步驟2)具體為:
21)對絕對值編碼棋盤的角點在像素坐標(biāo)系下的位置坐標(biāo)進(jìn)行優(yōu)化;
22)利用優(yōu)化后的絕對值編碼棋盤對安裝于六自由度機器人上的單目視覺傳感器的位移進(jìn)行分級測距,得到多組位移δ',同時測量與位移δ'對應(yīng)的電機角度θ。
所述步驟21)具體為:
211)根據(jù)絕對值編碼棋盤的局部特征對角點在像素坐標(biāo)系下的位置坐標(biāo)進(jìn)行優(yōu)化;
212)根據(jù)絕對值編碼棋盤的整體屬性,對優(yōu)化后的角點在像素坐標(biāo)系下的位置坐標(biāo)進(jìn)行進(jìn)一步優(yōu)化。
所述位移δ'為單目視覺傳感器在絕對值編碼棋盤下的中心柵格位置變化t與單目視覺傳感器在中心柵格內(nèi)部的相對位移t'之和。
所述單目視覺傳感器在絕對值編碼棋盤下的中心柵格位置變化t具體為:根據(jù)識別中心柵格陣列的編碼,確定單目視覺傳感器所在的中心柵格的位置,繼而確定單目視覺傳感器在絕對值編碼棋盤下的中心柵格位置變化t。
所述單目視覺傳感器在中心柵格內(nèi)部的相對位移t'具體為:
t'=t(i+1)k-tik
spik=a[riktik]pik
其中,i=1,2,...表示單目視覺傳感器的不同位置,k表示角點的編號,pik和pik分別表示角點在像素坐標(biāo)系與棋盤格坐標(biāo)系下的坐標(biāo),s表示尺度參數(shù),a表示單目視覺傳感器內(nèi)部參數(shù),rik和tik分別表示單目視覺傳感器當(dāng)前位姿在棋盤格坐標(biāo)系下單旋轉(zhuǎn)和平移。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果:
(1)通過對六自由度機器人建立mdh模型,克服原有dh模型在存在兩軸平行或近于平行時,兩軸線相對位置誤差的建模不符合微小誤差模型,可能會引起很大的桿件偏移量誤差的缺陷,使得機器人的建模更為準(zhǔn)確,提高后續(xù)標(biāo)定的準(zhǔn)確程度。
(2)本發(fā)明提出的方法,通過初始標(biāo)定確定機器人末端和單目視覺傳感器之間的坐標(biāo)變換關(guān)系,而非傳統(tǒng)的默認(rèn)為二者是簡單的平移關(guān)系,對于六自由度機器人來講,此方法更符合實際,充分考慮到六自由度機器人活動的靈活程度,大大減小了標(biāo)定的誤差。
(3)利用絕對值編碼棋盤,實現(xiàn)單目視覺傳感器的分級測距,保證了單目視覺傳感器始終工作在較小的視野范圍內(nèi),且圖片有效信息集中在圖像中央畸變較小的部分,提高單目視覺傳感器的測距精度,進(jìn)而提高了標(biāo)定的準(zhǔn)確性。
(4)分別根據(jù)絕對值編碼棋盤的局部特征和整體屬性對角點的位置坐標(biāo)進(jìn)行了優(yōu)化,使角點的精度達(dá)到了亞像素的級別,進(jìn)一步提高了單目視覺傳感器的測距準(zhǔn)確度,提高了標(biāo)定的準(zhǔn)確性。
附圖說明
圖1為本發(fā)明的方法流程圖;
圖2為分級測距的示意圖,其中(2a)為中心柵格的位置變化示意圖,(2b)為光心相對位移示意圖;
圖3為8階反饋移位寄存器的示意圖;
圖4為對偽隨機序列進(jìn)行二維延擴(kuò)的示意圖;
圖5為角點位置優(yōu)化的示意圖,其中(5a)為利用棋盤格的局部特征進(jìn)行角點位置優(yōu)化,(5b)為利用棋盤格的整體屬性進(jìn)行角點位置優(yōu)化;
圖6為六自由度機器人的近似平行關(guān)節(jié)示意圖;
圖7為兩個位姿之差示意圖。
具體實施方式
下面結(jié)合附圖和具體實施例對本發(fā)明進(jìn)行詳細(xì)說明。本實施例以本發(fā)明技術(shù)方案為前提進(jìn)行實施,給出了詳細(xì)的實施方式和具體的操作過程,但本發(fā)明的保護(hù)范圍不限于下述的實施例。
機器人標(biāo)定的通常步驟是根據(jù)機器人的結(jié)構(gòu)特征,構(gòu)建運動學(xué)模型。并利用模型特性建立觀測變量與待標(biāo)定變量的約束關(guān)系;通過外部傳感器,高精度地測量所需觀測變量;利用約束關(guān)系與多組實測值,通過相關(guān)數(shù)學(xué)優(yōu)化方法,實現(xiàn)對待標(biāo)定變量的優(yōu)化;以此修正模型中的機械參數(shù)或進(jìn)行末端的誤差補償,獲得高精度的空間定位。
如圖1所示,本實施例提供的是一種基于單目視覺的六自由度機器人運動學(xué)標(biāo)定方法,針對的是空間少自由度機器人的標(biāo)定,即機器人末端存在空間上的位移,沒有姿態(tài)上的旋轉(zhuǎn),具體的標(biāo)定步驟如下:
1)建立六自由度機器人的mdh模型,并根據(jù)初始標(biāo)定變量u得到六自由度機器人末端的指令位移和安裝于六自由度機器人上的單目視覺傳感器與六自由度機器人末端之間的坐標(biāo)變換關(guān)系
2)根據(jù)六自由度機器人的初始標(biāo)定變量u,利用絕對值編碼棋盤對安裝于六自由度機器人上的單目視覺傳感器的多組位移δ'進(jìn)行分級測距并優(yōu)化;
3)標(biāo)定棋盤格坐標(biāo)系與基坐標(biāo)系的轉(zhuǎn)換角α,并根據(jù)轉(zhuǎn)換角α對位移δ'進(jìn)行坐標(biāo)變換得到六自由度機器人末端的實際位移δ,并得到多組觀測變量vk;
4)利用約束關(guān)系,結(jié)合步驟2)得到的多組觀測變量vk對標(biāo)定變量u進(jìn)行優(yōu)化,判斷標(biāo)定變量u是否達(dá)到定位精度,若是則完成六自由度機器人的運動學(xué)標(biāo)定,若否則返回步驟2)。
下面對上述步驟進(jìn)行具體的闡述:
機器人模型構(gòu)建
本實施例針對的是空間六自由度機器人的標(biāo)定。一般而言,具有6個關(guān)節(jié)的六自由度機器人系統(tǒng)能驅(qū)動末端執(zhí)行器達(dá)到三維空間中的任意位置和姿態(tài)。目前工業(yè)機器人多采用dh參數(shù)法進(jìn)行建模,但是dh參數(shù)法存在一個根本缺陷,即當(dāng)存在兩軸平行或近于平行時,兩軸線相對位置誤差的建模不符合微小誤差模型。
如圖6所示,當(dāng)關(guān)節(jié)i和關(guān)節(jié)i+1公稱平行時,桿件偏移量|di|的變化很敏感。這樣造成:參數(shù)對偏移平行條件(相鄰兩軸線扭轉(zhuǎn)角αi為0)下的誤差非常敏感了;當(dāng)αi趨近于0時,di和矩陣接近無窮大;該處關(guān)節(jié)建立的坐標(biāo)軸遠(yuǎn)遠(yuǎn)偏離機器人手臂。
因此,本實施例中在采用5參數(shù)mdh方法。5個參數(shù)分別是關(guān)節(jié)角θi、桿件偏移量di、桿件長度li、扭轉(zhuǎn)角αi和βi。其中,扭角βi時相鄰關(guān)節(jié)軸zi-1和zi在平行于xi和zi平面上的夾角,其他參數(shù)的定義與dh模型一致。其變換矩陣為:
當(dāng)相鄰關(guān)節(jié)不平行時,扭角βi的值為0,mdh模型與dh模型一致;當(dāng)相鄰關(guān)節(jié)平行時,mdh桿件坐標(biāo)系的建立與dh模型相鄰關(guān)節(jié)平行的規(guī)則一致,d=0,β是否等于0,則有機械誤差決定,當(dāng)相鄰平行關(guān)節(jié)軸有微小的偏差時,β不等于0。因此,mdh模型能夠克服dh模型的不足。
相機分級測距方案
視覺測量系統(tǒng)主要組成部分為單個攝像頭傳感器和帶有絕對編碼的棋盤格。
如圖2所示,圖中柵格角點與角點分別記為g1和g2,圖中虛線表示攝像頭的主光軸。在相機的從初始位置運動到終點位置的一次移動過程中,引入過渡位置,使得該位置攝像頭主光軸與初始位置時主光軸在同一柵格中。并且保證在過渡位置處攝像頭與在終點位置處姿態(tài)相同,攝像頭主光軸平行。這樣就可以講整個移動過程等效為從初始位置先運動到過渡位置以及從過渡位置運動到終點位置兩個運動過程。
以固定方式在每個角點處自定義局部角點陣列坐標(biāo)系,這樣,每個局部角點陣列坐標(biāo)系與棋盤格坐標(biāo)系之間只有簡單平移關(guān)系。利用攝像頭成像原理以及剛體變換等原理,可以根據(jù)在棋盤格各個角點處的圖像來確定該角點陣列坐標(biāo)系與攝像頭坐標(biāo)系之間的變換關(guān)系。從而可以獲得攝像頭坐標(biāo)系和棋盤格坐標(biāo)系之間的變換關(guān)系。
t2過程等于從過渡位置運動到終點位置的過程可以看作是在棋盤格坐標(biāo)系下兩個角點陣列坐標(biāo)系的平移運動。
t1過程等于終點位置相對于角點陣列g(shù)2的位置與姿態(tài)與初始位置相對于角點陣列g(shù)1的位置與姿態(tài)之差。
通過將整體位移和局部位姿變換的分離,實現(xiàn)了位移分級測量。相比于現(xiàn)在的測量方案,在位移分級測量中,機器人末端執(zhí)行器的運動范圍更大。只要保證攝像頭的視野范圍內(nèi)包含棋盤格上的一個編碼序列就行,無需看到完整的標(biāo)靶就能測出末端的位子變化。并且由于角點陣列基本均在攝像頭視野中間,大大降低了由于攝像頭成像畸變造成的誤差對結(jié)果的影響,提高了測量精度。
對棋盤格各個柵格進(jìn)行編碼參考如下:
選取中心柵格周圍n*n(如n=8)的棋盤格陣列,那么t可以通過陣列本身的特定標(biāo)示確定,t'可以利用陣列求算相機外部參數(shù)解算。這樣的劃分能夠保證相機工作在足夠小的視野范圍,從而獲得更加精準(zhǔn)且魯棒的測量值。
確定中心柵格的在棋盤上的絕對位置需要每個柵格具有獨特的標(biāo)示??梢詫ζ渲車鷑*n的棋盤格陣列進(jìn)行二進(jìn)制編碼,使每個柵格對應(yīng)的陣列具有唯一的標(biāo)示。通過擴(kuò)展偽隨機序列到二維,可以實現(xiàn)柵格的絕對編碼。
構(gòu)造一個長度為m=2n-1的偽隨機序列需要n階多項式h(x)。以n=8為例,反饋移位寄存器如圖3。即在給定ai...ai+7后,
f.jessie等提出上述構(gòu)造方式并證明寄存器的循環(huán)周期為255=28-1。下面將其延擴(kuò)為50*50的二維陣列。若棋盤格邊長為2cm,則會構(gòu)成1m*1m棋盤,滿足使用要求。
如圖4所示,取前215組編碼,分為模塊1~5,每個模塊43組,每組長度為50。第一行用模塊1偽隨機編碼即43組不同的編碼(長度為50),使得在序列中任取8個數(shù)都有唯一的一組8位二進(jìn)制編碼與其對應(yīng)。將1*8的標(biāo)識延拓為8*8的方陣,后7行與第1行相同,得到8*50的矩陣。其余4個8*50的矩陣可以用類似的方法得到,組合后得到40*50的矩陣,最后10*50的矩陣可由兩個5*50的矩陣組合得到,分別采用模塊1、2的編碼數(shù)據(jù)延拓。
這樣,通過圖像識別柵格陣列的編碼,就能夠唯一的確定相機光心所在的柵格位置。
六自由度機器人和單目視覺傳感器之間的轉(zhuǎn)化
六自由度機器人末端執(zhí)行器和攝像頭是剛性連接,而通過視覺測量獲取的是攝像頭相對于柵格板坐標(biāo)系的位置和姿態(tài)。所以,在標(biāo)定之前,首先需要獲取機器人末端執(zhí)行器和攝像頭之間的轉(zhuǎn)換關(guān)系,即攝像頭坐標(biāo)系與機器人末端坐標(biāo)系之間的齊次變換矩陣
本方案中選擇視覺測量方法獲取該變換矩陣
另外根據(jù)機器人的mdh模型,可以通過各軸電機當(dāng)前角度計算出此時末端的位姿。根據(jù)多級通過視覺測量的光心位姿的擬合,可以求出攝像頭的旋轉(zhuǎn)軌跡和該軌跡方程和軸線的方程。而末端執(zhí)行器一定在該軸線上,所以根據(jù)這兩個方程和末端執(zhí)行器的位置,就可以利用視覺測量方法獲得機器人末端執(zhí)行器坐標(biāo)系和攝像頭坐標(biāo)系的齊次變換矩陣
也可以將機器人最后兩個軸均進(jìn)行旋轉(zhuǎn),通過上述方法對最后兩個軸的軸線進(jìn)行擬合,有mdh模型中坐標(biāo)系的建立過程,可以知道這兩個軸線的交點就是最后一個關(guān)節(jié)坐標(biāo)系的坐標(biāo)原點。所以就可以直接獲取攝像頭位置到最后一個關(guān)節(jié)位置的平移,即可直接得到最后一個關(guān)節(jié)坐標(biāo)系到攝像頭坐標(biāo)系的變換關(guān)系。
選擇合理的誤差函數(shù)迭代優(yōu)化
當(dāng)前對工業(yè)機器人精度的定義一般采用位姿精確度和位姿重復(fù)度來衡量。但是在實際測量中,機器人末端執(zhí)行器的實際位姿是不易獲取的。這是因為標(biāo)定系統(tǒng)是利用指令位姿和實際位姿之差作為修正機械參數(shù)的依據(jù),只有當(dāng)指令位姿和實際位姿是在同一坐標(biāo)系(也就是基坐標(biāo)系)下的描述,才能得到完全理想的誤差函數(shù)。然而,在實際標(biāo)定過程中,末端執(zhí)行器的實際位姿都是通過外部設(shè)備獲取的,是當(dāng)前實際末端執(zhí)行器相對于測量坐標(biāo)系的位姿,而通過個關(guān)節(jié)電機參數(shù)以及機械參數(shù)算出的指令位姿是相對于機器人基坐標(biāo)系的位姿。兩者之間相差一個從測量坐標(biāo)系到基坐標(biāo)系的變換,而現(xiàn)實中這個變換是不易獲取的。這就導(dǎo)致了末端執(zhí)行器相對于基坐標(biāo)系的實際位姿是很難得到的。
但是,對于末端執(zhí)行器的兩種不同位姿狀態(tài),它們之間的差值是可以精確測量的。并且因為攝像頭光心與末端執(zhí)行器之間是剛性連接,所以在同一坐標(biāo)系下,二者的位移相等,可以將攝像頭光心的位姿變化差值等價于末端執(zhí)行器的位姿變化差值。
如圖7所示,設(shè)ac與bc分別是兩個指令位姿,相應(yīng)的實際位姿分別是a和b。若僅考慮位置上的差值,根據(jù)距離準(zhǔn)確度的定義,可以得到:
另外也可以考慮距離精密度在不同坐標(biāo)軸方向上的定義:
上式的向量坐標(biāo)也需要在同一坐標(biāo)系下表達(dá),但相比于位置的坐標(biāo)變換要更簡單一下。因為它并不受坐標(biāo)系的平移的影響,因此求取時無需關(guān)注兩坐標(biāo)系之間的平移變換。
本實施例中,通常選取電機轉(zhuǎn)角值與末端執(zhí)行器位姿變化值作為觀測變量v,如下所示:
vk=[θ1...θmδpk]
上式表示第k組觀測標(biāo)量,其中θ表示m個電機轉(zhuǎn)動角度,δpk表示末端執(zhí)行器位姿變化值。而待定標(biāo)量u由機器人需要標(biāo)定的機械參數(shù)組成。這是結(jié)合機器人模型與使用需求確定的。約束條件可以表征為:
γk=f(vk,u)
測得v后即可獲得多組約束條件。在理想的u下,γ為零??梢赃x用適合的數(shù)學(xué)優(yōu)化方法最小化γ,已獲得u的最佳值。
高斯牛頓法是常用的解決非線性回歸問題的手段??梢詫組測量值表達(dá)成誤差矩陣的形式:
e(u,v)=[γ1...γt]
記誤差矩陣的雅克比矩陣為j(u,v),則可逐步優(yōu)化待標(biāo)定向量:
un+1=un-j(un,v)+e(un,v)
視覺測量優(yōu)化
本實施例中選擇將棋盤格進(jìn)行特殊編碼,使得每個柵格對應(yīng)位置都有一串唯一表示序列。這樣可以保證在標(biāo)定時運動范圍可以更大,不需要讓整個棋盤格都在攝像頭視野中。
利用棋盤格的局部特征與整體屬性,可以進(jìn)行兩個方面的優(yōu)化。
如圖5所示,考慮到角點q應(yīng)滿足性質(zhì):在q的圖像鄰域內(nèi)的一點p處,其梯度與向量q-p垂直。即
重復(fù)迭代這一過程可以得到精確到亞像素級別的角點位置。
另一方面,棋盤格打印的尺寸精度可以到0.01mm的數(shù)量級。利用尺寸信息可以在整體布局上對角點進(jìn)行約束。下述為基于ransac對角點布局優(yōu)化的算法:
若迭代達(dá)到指定次數(shù)或誤差小于給定閾值,輸出當(dāng)前角點坐標(biāo)為最優(yōu);否則繼續(xù)。隨機選取若干實測角點,根據(jù)其坐標(biāo)計算出理想角點坐標(biāo)集合。計算理想角點集合每對相鄰點距離與給定尺寸之間的差的平方之和為當(dāng)前誤差。若當(dāng)前誤差小于最優(yōu)誤差,記錄當(dāng)前坐標(biāo)集合和誤差為最優(yōu)值。返回1。