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