标定系列二、9点标定以及5点圆心标定过程(代码详解)
一、九點(diǎn)標(biāo)定過程
1.算法原理
? ? ? ? 9點(diǎn)標(biāo)定就是通過9個(gè)點(diǎn)計(jì)算出相機(jī)坐標(biāo)系到機(jī)械手坐標(biāo)系下的一個(gè)仿射變換,(實(shí)際上空間中的二維平面的仿射變換只需要3個(gè)點(diǎn)就足夠了)。在實(shí)際應(yīng)用過程中,需要獲取像素下特征點(diǎn)的坐標(biāo)和對(duì)應(yīng)機(jī)械手的坐標(biāo)。聯(lián)立方程組求解即可得到對(duì)應(yīng)仿射變換的矩陣,實(shí)際應(yīng)用場(chǎng)景主要分為眼在手上和眼在手外,下面具體介紹使用過程:
(1)眼在手外
? ? ? ? ? ? ? ? ? ? ?
? ? ? 使用場(chǎng)景如圖所示,該場(chǎng)景是一個(gè)上相機(jī),9點(diǎn)標(biāo)定經(jīng)常是四軸機(jī)械臂或者是通過舵機(jī)搭建的X,Y兩方向的運(yùn)行機(jī)構(gòu)與相機(jī)相互配合使用。無論是眼在手上還是眼在手外,目的都是獲取對(duì)應(yīng)像素點(diǎn)的坐標(biāo)和機(jī)械手的坐標(biāo),然后通過數(shù)學(xué)計(jì)算,得到轉(zhuǎn)換矩陣。
眼在手外獲取機(jī)械手坐標(biāo)的方式主要有兩種:
第一種:1.準(zhǔn)備一張A4紙,或者標(biāo)定板也行
? ? ?,??
?
獲取圖像中9個(gè)圓的圓心的像素位置,存儲(chǔ)起來,點(diǎn)的存儲(chǔ)順序是Z字形。
2.在機(jī)械手上加裝針尖,用針尖按Z字形順序依次去戳每個(gè)圓的圓心,并以此記錄每個(gè)機(jī)械手的坐標(biāo)。
該種方法標(biāo)定效果誤差較大,因?yàn)獒樇馊ゴ翀A心的過程是肉圓觀察得到的,結(jié)果并不是很準(zhǔn)確的。
第二種:1,機(jī)械手吸取物料固定。
? ? ? ? ? ??? ?
?在相機(jī)視野中能觀察提取到Mark(特征)點(diǎn),對(duì)于Mark點(diǎn)是物料上穩(wěn)定的特征,容易獲取,類似交點(diǎn),圓心等等。
2.機(jī)械手帶動(dòng)物料按照右圖方式依次運(yùn)動(dòng),獲取9個(gè)點(diǎn)的機(jī)械手坐標(biāo)和像素坐標(biāo)。
該標(biāo)定方法效果準(zhǔn)確,但是需要注意的兩點(diǎn),一個(gè)是標(biāo)定視野范圍一定大于機(jī)械手的工作范圍,
其中紅色為視野中標(biāo)定的范圍,黑色為機(jī)械手的在視野中的工作范圍,否在超過標(biāo)定范圍的誤差較大,而且難預(yù)測(cè)。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
另外,在標(biāo)定過程中,實(shí)際的工作面高度和標(biāo)定高度盡量一致,因?yàn)槌藞A心鏡頭,我們使用的工業(yè)相機(jī)會(huì)隨著高度變化,X,Y的坐標(biāo)也會(huì)有誤差。
(2)眼在手上
? ? ? ? ? ? ? ? ? ? ??
該種標(biāo)定方式是機(jī)械手和相機(jī)不發(fā)生相對(duì)變化,讓物料固定不動(dòng),相機(jī)依次去拍物料,獲取Mark點(diǎn)的特征和對(duì)應(yīng)機(jī)械手的坐標(biāo),存儲(chǔ)起來。
2.代碼介紹
*計(jì)算仿射變換矩陣 *機(jī)械手9點(diǎn)坐標(biāo)X,Y數(shù)組 Rx=[] Ry=[] *像素坐標(biāo)的x,y數(shù)組 px=[] py=[] vector_to_hom_mat2d (px, py, Rx, Ry, HomMat2D)*計(jì)算仿射變換矩陣的RMS affine_trans_point_hommat2d(HomMat2D,px,py,Rx_t,Ry_t)其中Rx_t,Ry_t為仿射變換后對(duì)應(yīng)計(jì)算出的機(jī)械手坐標(biāo)。 Rx, Ry為實(shí)際標(biāo)定時(shí)機(jī)械手的坐標(biāo),計(jì)算出距離偏差。distance_pp(Rx,Ry,Rx_t,Ry_t,distance) 其中distance存儲(chǔ)9點(diǎn)的坐標(biāo)偏差tuple_mult(distance,distance,data1) tuple_sum(data1,data_end) tuple_sqrt(data_end,RMS)二、五點(diǎn)旋轉(zhuǎn)中心標(biāo)定過程
1.算法原理?
? ? ?在標(biāo)定旋轉(zhuǎn)中心之前應(yīng)該理解為什么要標(biāo)定旋轉(zhuǎn)中心,通過上文可以對(duì)9點(diǎn)標(biāo)定有個(gè)大概的理解,9點(diǎn)標(biāo)定其實(shí)就是點(diǎn)與點(diǎn)的映射關(guān)系。當(dāng)我們的旋轉(zhuǎn)中心,吸嘴,特征點(diǎn)在一致的時(shí)候,我們可以想象成各點(diǎn)都是繞著特征點(diǎn)旋轉(zhuǎn),此時(shí)則無需標(biāo)定旋轉(zhuǎn)中心如下圖所示:
? ? ? ? ? ? ?
但實(shí)際應(yīng)用中,吸嘴和旋轉(zhuǎn)中心并不一致,伴隨著旋轉(zhuǎn)中心轉(zhuǎn)動(dòng),特征點(diǎn)也會(huì)移動(dòng),此時(shí)機(jī)械手的坐標(biāo)并未發(fā)生并未發(fā)生變換,如果仍使用點(diǎn)點(diǎn)映射求出對(duì)應(yīng)機(jī)械手坐標(biāo)是錯(cuò)誤,正確的方法是先繞旋轉(zhuǎn)中心回正,在計(jì)算特征點(diǎn)對(duì)應(yīng)的坐標(biāo)。
?
標(biāo)定旋轉(zhuǎn)中心的方法:
機(jī)械手固定物料,在相機(jī)下依次轉(zhuǎn)動(dòng)5個(gè)角度,獲取5個(gè)位置特征點(diǎn)的像素坐標(biāo),通過擬合圓心,求出圓心對(duì)應(yīng)的像素坐標(biāo),在通過映射關(guān)系得到圓心對(duì)應(yīng)機(jī)械手的坐標(biāo)。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
2.代碼介紹
*將5個(gè)點(diǎn)對(duì)應(yīng)像素坐標(biāo)生成多線條輪廓 gen_contour_polygon_xld*將輪廓進(jìn)行擬合生成圓,求出對(duì)應(yīng)圓心坐標(biāo) fit_circle_contour_xld?
?
?
總結(jié)
以上是生活随笔為你收集整理的标定系列二、9点标定以及5点圆心标定过程(代码详解)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Twisted-17.1.0-cp36-
- 下一篇: Climbing Stairs -- L