都說(shuō)“紙上得來(lái)終覺(jué)淺,絕知此事要躬行”,可惜咱沒(méi)這條件呀,沒(méi)項(xiàng)目咱也不能干坐著呀,那咱發(fā)揮主觀能動(dòng)性,咱不是學(xué)機(jī)械的么,還好還記得一點(diǎn)CAD的知識(shí),今天小楊說(shuō)事,咱就“紙上談兵”,用CAD結(jié)合公司的視覺(jué)算法平臺(tái)VisionMaster來(lái)說(shuō)說(shuō)相機(jī)映射和對(duì)位貼合的事,如果有錯(cuò)誤的地方,還請(qǐng)各位自動(dòng)化前輩多多指教,畢竟網(wǎng)上的關(guān)于這個(gè)知識(shí)太少了。
實(shí)際的生產(chǎn)過(guò)程中,我們常常會(huì)碰到這樣的情況,機(jī)械手從工位一吸著對(duì)象到工位二進(jìn)行貼合,但是工位二我們不方便執(zhí)行標(biāo)定,通常的做法是在工位一執(zhí)行一次標(biāo)定流程,然后使用兩點(diǎn)映射或者四點(diǎn)映射把工位二的相機(jī)坐標(biāo)映射到工位一的相機(jī)一中。說(shuō)起來(lái)很輕松,咱沒(méi)實(shí)戰(zhàn)過(guò)呀,但是咱可以模擬呀,說(shuō)干就干,咱開(kāi)始動(dòng)手吧。
如上圖所示,咱們?yōu)榱蓑?yàn)證一般性,把機(jī)械手坐標(biāo)系,工位一的相機(jī)1坐標(biāo)系,工位二的相機(jī)2坐標(biāo)系畫(huà)的夸張一些,但是在CAD圖上我們是通過(guò)旋轉(zhuǎn)的方式來(lái)改變兩個(gè)相機(jī)的坐標(biāo)系和機(jī)械手坐標(biāo)系的夾角的,事先是知道相機(jī)1坐標(biāo)系X軸和相機(jī)2坐標(biāo)系X軸和機(jī)械手坐標(biāo)系X軸的夾角分別是10°和45°。當(dāng)然關(guān)于單像素精度,這里是采用一比一的方式,因?yàn)楝F(xiàn)實(shí)成像比這個(gè)更復(fù)雜,為了方便描述而已,不影響咱的用戶體驗(yàn)。
現(xiàn)實(shí)場(chǎng)景中,咱一般碰到的都是機(jī)械手末端吸盤(pán)和末端中心不共軸的情況,那這邊咱就選用最通用的12點(diǎn)標(biāo)定來(lái)求出這個(gè)旋轉(zhuǎn)中心,啥,你不知道什么是不共軸,啥是旋轉(zhuǎn)中心,那你out了,趕緊看看這個(gè)博主的博客,人家講的很詳細(xì),地址如下:
https://blog.csdn.net/KayChanGEEK/article/details/73878994
看完了那咱繼續(xù),吸盤(pán)吸著帶MARK點(diǎn)的標(biāo)定板,在相機(jī)視野里面平移9次,旋轉(zhuǎn)3次,當(dāng)然盡量貼近實(shí)際對(duì)象所在的平面,移動(dòng)范圍盡量覆蓋實(shí)際對(duì)象可能出現(xiàn)的范圍。以X方向每次平移640.3044,Y方向每次平移389.3736,角度每次旋轉(zhuǎn)30°,使用??档乃惴ㄆ脚_(tái)呢,咱一般使用相對(duì)坐標(biāo)系,盡量不使用絕對(duì)坐標(biāo)系。咱一般是以平移的第5點(diǎn)作為基準(zhǔn)哈,所以有了下圖的12點(diǎn)的關(guān)系以及在CAD里面的坐標(biāo)數(shù)據(jù),機(jī)械手的絕對(duì)坐標(biāo)是可以從機(jī)械手的示教器讀出來(lái)的,相對(duì)坐標(biāo)呢,都是相對(duì)第5點(diǎn)的坐標(biāo)哈,至于像素坐標(biāo),這里咱取的是標(biāo)定板上的那個(gè)圓Mark點(diǎn)的圓心,這個(gè)使用一個(gè)模板匹配,位置修正,圓查找工具就完事哈。
由于咱是使用的CAD模擬,那只能使用N點(diǎn)標(biāo)定工具,手動(dòng)輸入啦,對(duì)應(yīng)著輸入就行啦,如下圖:
可以看到輸完執(zhí)行之后,像素精度確實(shí)是1.0,由于點(diǎn)是完全一一對(duì)應(yīng)的,所以標(biāo)定平移和旋轉(zhuǎn)誤差都是0,實(shí)際生產(chǎn)中,這里是有標(biāo)定誤差值的。同時(shí),這邊也算出了機(jī)械手末端中心在圖像中的理論像素坐標(biāo)(891.371,970.815),咱回到CAD圖中,把圖紙的坐標(biāo)系從機(jī)械手坐標(biāo)系切換到相機(jī)1坐標(biāo)系,看看第五點(diǎn)時(shí)刻,機(jī)械手的旋轉(zhuǎn)中心的像素坐標(biāo)是多少,沒(méi)錯(cuò)就是下圖粗紅色圓圈出來(lái)的地方,查看坐標(biāo)發(fā)現(xiàn)是一致的。
好啦,相機(jī)1標(biāo)定完成之后,咱緊接著該對(duì)兩個(gè)相機(jī)進(jìn)行相機(jī)映射,制作一個(gè)映射板,上面做4個(gè)Mark點(diǎn),這里咱采用4個(gè)圓來(lái)模擬,同樣用機(jī)械手吸盤(pán)吸著映射板,在相機(jī)1視野中進(jìn)行拍攝,記錄當(dāng)前機(jī)械手的位置,這個(gè)地方其實(shí)是以后對(duì)象每次在相機(jī)1處的拍照位,就是圖中的藍(lán)色直線交點(diǎn)處,然后機(jī)械手進(jìn)行平移,咱這里只進(jìn)行一個(gè)X方向平移,到紅色直線的交點(diǎn)處,記錄當(dāng)前的機(jī)械手位置,這是以為每次對(duì)象到相機(jī)2處的,可以叫做貼合的基準(zhǔn)位置(但是實(shí)際上是不用建立基準(zhǔn)的,這里可以理解為以后每次在這里對(duì)對(duì)象進(jìn)行偏移貼合就行,明白的人一看就明白了哈)。
注意每次采集4個(gè)Mark點(diǎn)的圓心坐標(biāo),在CAD里面要切換對(duì)應(yīng)的坐標(biāo)系,圓心點(diǎn)也需要對(duì)應(yīng)哈,采集的坐標(biāo)如下:
然后使用相機(jī)映射模塊,將四和個(gè)圓心坐標(biāo)對(duì)應(yīng)輸入進(jìn)去,注意對(duì)象點(diǎn)和目標(biāo)點(diǎn)的關(guān)系即可,生成相機(jī)映射文件,其實(shí)就是一個(gè)坐標(biāo)系之間的變換矩陣,如下:
當(dāng)然咱可以使用工具打開(kāi)這個(gè)文件可以看到矩陣的參數(shù),里面包含了坐標(biāo)系變換的旋轉(zhuǎn)角度信息和平移量信息:
這里咱嘗試改變映射板在相機(jī)2中的X和Y的位置,發(fā)現(xiàn)自始至終旋轉(zhuǎn)矩陣是不變的,變化的只是平移量,可見(jiàn)咱之前要確定機(jī)械手的兩個(gè)位置的重要性,否則平移量發(fā)生變化了,要自己修正旋轉(zhuǎn)矩陣的平移量呀。
那為了進(jìn)一步加深理解這個(gè)映射的關(guān)系咱來(lái)看看這個(gè)映射關(guān)系表示的是啥唄,既然是把相機(jī)2中的4點(diǎn)映射到相機(jī)1,那么我們直接把相機(jī)2帶著4個(gè)點(diǎn)移動(dòng)到相機(jī)1處,然后來(lái)手動(dòng)檢驗(yàn)一下,如下圖:
打開(kāi)映射文件,看到映射矩陣如下:
CAD切換坐標(biāo)系到相機(jī)1坐標(biāo)系,查看平移之后的相機(jī)2坐標(biāo)系的原點(diǎn)在相機(jī)1中的坐標(biāo)如下:
關(guān)于旋轉(zhuǎn)矩陣,前面我們知道兩個(gè)相機(jī)坐標(biāo)系分別是逆時(shí)針轉(zhuǎn)10°和順時(shí)針轉(zhuǎn)45°,那么它們之間的夾角就是55°,求解余弦值和正弦值如下,和矩陣是一致的:
至此咱所有的準(zhǔn)備工作都結(jié)束了,那咱就開(kāi)始驗(yàn)證貼合唄:
下圖是機(jī)械手吸著實(shí)際對(duì)象進(jìn)行貼合過(guò)程模擬,咱用一個(gè)矩形方便描述,注意此時(shí)機(jī)械手的吸盤(pán)并沒(méi)有吸到對(duì)象的中心,由于咱剛才記住了兩個(gè)固定的機(jī)械手的拍照位置,那么首先要做的是吸著對(duì)象到剛才的相機(jī)1拍照位進(jìn)行圖像采集,建立模板,貼合點(diǎn)我們模擬的對(duì)象的十字線交叉點(diǎn)。然后在相機(jī)2的拍照位處,假設(shè)有個(gè)目標(biāo)和對(duì)象是一樣的,注意此時(shí)我們只需要確保對(duì)象移動(dòng)到相機(jī)2的拍照點(diǎn)時(shí),目標(biāo)對(duì)象的角度是一樣的,我們要建立一個(gè)角度基準(zhǔn),然后對(duì)目標(biāo)建模版,也是選擇矩形的中心作為貼合點(diǎn),后面做映射的時(shí)候,咱就是把這個(gè)點(diǎn)的像素坐標(biāo)映射到相機(jī)1,再加上目標(biāo)的旋轉(zhuǎn)角度就可以算出機(jī)械手貼合需要走到的位置。
那咱先看最簡(jiǎn)單的情況,目標(biāo)不發(fā)生角度旋轉(zhuǎn),只有平移的情況:
目標(biāo)位置相對(duì)于原始位置Y方向移動(dòng)了439.85,然后切換坐標(biāo)系讀出,當(dāng)前的目標(biāo)矩形中心貼合點(diǎn)的像素坐標(biāo)為:
對(duì)象還是基準(zhǔn)狀態(tài),切換到相機(jī)1讀出對(duì)象矩形中心點(diǎn)的像素坐標(biāo)為:
和之前映射驗(yàn)證一樣,咱把此時(shí)的目標(biāo)也映射到相機(jī)1中,也就是上圖中的藍(lán)色矩形的位置,然后搭建如下圖的方案,查看使用相機(jī)映射文件進(jìn)行標(biāo)定轉(zhuǎn)換之后的像素坐標(biāo)和實(shí)際的CAD測(cè)量結(jié)果進(jìn)行對(duì)比:
切換到相機(jī)1坐標(biāo)系,讀出目標(biāo)映射過(guò)來(lái)的貼合點(diǎn)的坐標(biāo)如下:
可見(jiàn)理論計(jì)算和實(shí)際結(jié)果是一致的,然后咱們使用單點(diǎn)對(duì)位模塊來(lái)計(jì)算貼合的偏移量,輸入對(duì)象和目標(biāo)對(duì)應(yīng)的貼合點(diǎn)標(biāo)定轉(zhuǎn)換之后的坐標(biāo)以及角度偏差,計(jì)算出來(lái)的貼合偏差如下:
發(fā)現(xiàn)和之前的假設(shè)的偏移量是一致的,那么此時(shí)咱可以在相機(jī)1的拍照位進(jìn)行便宜然后再走之前相機(jī)映射的時(shí)候的固定偏移量去到相機(jī)2處進(jìn)行貼合,也可以先到相機(jī)2的拍照位然后再直接走偏移量也能實(shí)現(xiàn)貼合。
以上模擬的是一個(gè)簡(jiǎn)單的情況,目標(biāo)和對(duì)象都有角度旋轉(zhuǎn)以及XY方向偏移,這個(gè)就當(dāng)做作業(yè)留給各位看官們自己驗(yàn)證吧,反正咱自己是驗(yàn)證了。當(dāng)然實(shí)際生產(chǎn)過(guò)程更加復(fù)雜,比如相機(jī)安裝反了導(dǎo)致坐標(biāo)系之間旋轉(zhuǎn)了180或者90,機(jī)械手左右手坐標(biāo)系的選擇,實(shí)際貼合點(diǎn)和拍照得到mark點(diǎn)是不一樣的等等問(wèn)題,有興趣想探討或者覺(jué)得咱說(shuō)的不對(duì)的,可以相互探討。
責(zé)任編輯:lq
-
算法
+關(guān)注
關(guān)注
23文章
4709瀏覽量
95339 -
機(jī)器視覺(jué)
+關(guān)注
關(guān)注
163文章
4594瀏覽量
122870 -
CAD
+關(guān)注
關(guān)注
18文章
1114瀏覽量
74302
原文標(biāo)題:基于海康機(jī)器視覺(jué)算法平臺(tái)的對(duì)位貼合項(xiàng)目個(gè)人理解
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺(jué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
主流機(jī)器視覺(jué)軟件開(kāi)發(fā)平臺(tái)介紹及對(duì)比?

???/b>機(jī)器人如何站穩(wěn)機(jī)器視覺(jué)行業(yè)第一梯隊(duì)
2025???/b>機(jī)器人機(jī)器視覺(jué)新品發(fā)布會(huì)成功舉辦
【「# ROS 2智能機(jī)器人開(kāi)發(fā)實(shí)踐」閱讀體驗(yàn)】視覺(jué)實(shí)現(xiàn)的基礎(chǔ)算法的應(yīng)用
???/b>威視綜合安防管理平臺(tái)融合DeepSeek與???/b>觀瀾大模型
???/b>機(jī)器人布局關(guān)節(jié)機(jī)器人業(yè)務(wù)
???/b>威視推出視覺(jué)大模型系列攝像機(jī)
適用于機(jī)器視覺(jué)應(yīng)用的智能機(jī)器視覺(jué)控制平臺(tái)

評(píng)論