Halcon中手臂抓取過程中遇到的旋轉位移問題

2021-08-16 21:55:51 字數 2216 閱讀 7577

圖1: 模板影象

圖2: 待糾正影象

在機械手抓取的過程中會遇到以下幾個問題,一是先位移還是先旋轉,二是mark

影象的中心點和實際手臂的抓取點、旋轉中心點不一致的問題。

已知變數:

1、 圖1模板影象矩形的中心點,視為手臂抓取點:rectcenter_row, rectcenter_column

2、圖1模板影象中mark

的中心點: modelrow, modelcol

3、以圖1中mark

建立形狀匹配模板,在圖2中查詢模板,得到mark新的中心點:row,column   角度:angle

1.第一種情況:mark點中心點和手臂旋轉中心點統一的情況 

1.1先位移,再旋轉

hom_mat2d_identity(hommat2didentity)

hom_mat2d_translate(hommat2didentity,row-modelrow  ,column - modelcol,hommat2dtranslate)

//位移是以row, column為旋轉中心點

hom_mat2d_rotate(hommat2dtranslate,angle,row, column, hommat2drotate)

// 移動輪廓,驗證效果

affine_trans_contour_xld(contours,contoursaffintrans1, hommat2drotate)

配合機械手臂時,只需要告訴手臂中心的差值和角度即可

1.2  先旋轉再位移

hom_mat2d_identity(hommat2didentity1)

// 這裡旋轉的中心點是以模板的中心點為準的

hom_mat2d_rotate(hommat2didentity1,angle,modelrow,modelcol,hommat2drotate1)

hom_mat2d_translate(hommat2drotate1,row-modelrow  ,column - modelcol,hommat2dtranslate1) 

affine_trans_contour_xld(contours,contoursaffinetrans, hommat2dtranslate1)

配合機械手臂時,只需要告訴手臂中心的差值和角度即可 

1.3統一的情況下總結

(1)無論是先旋轉還是先位移,位移的變數都是不變的,都是新的位置減去舊的位置

(2)如果是先位移再旋轉,旋轉的中心軸是以位移後的中心點。如果是先旋轉再位移,則旋轉的中心軸是以位移前的中心點作為旋轉中心軸。

第二種情況:mark點中心點和手臂旋轉中心點不統一的情況(實際中大多數為這種情況,因為手臂的抓取點任意)

2.1   先位移再旋轉

這種情況不推薦,位移之後旋轉,另外之後還需要加一步位移

2.2  先旋轉再位移

hom_mat2d_identity(hommat2didentity3)

hom_mat2d_rotate(hommat2didentity3,angle,rectcenter_row,       rectcenter_column,hommat2drotate3)

*因為繞著實際的中心軸做了旋轉,mark點的位置發生了變化,可以通過旋轉變換得到新的位置

affine_trans_point_2d(hommat2drotate3,modelrow, modelcol, qx, qy)

affine_trans_contour_xld(contours,contoursaffinetrans1, hommat2drotate3)

hom_mat2d_identity(hommat2didentity4)

//這裡的做差是減去新的位置。

hom_mat2d_translate(hommat2didentity4,row - qx, column - qy, hommat2dtranslate3)

affine_trans_contour_xld(contoursaffinetrans1,contoursaffinetrans2, hommat2dtranslate3)

實際操作中,告訴手臂旋轉角度,以及位移(row - qx, column - qy)

BeautifulSoup在使用過程中遇到問題

通過soup.find all 得到的結果無法join 在使用soup.find all 時發現,得到的結果無法使用類似 join 的 進行處理,具體錯誤表現為 typeerror sequence item 0 expected string,tag found typeerror sequenc...

面試過程中

面試過程中,面試官會向應聘者發問,而應聘者的回答將成為面試官考慮是否接受他的重要依據。對應聘者而言,了解這些問題背後的 貓膩 至關重要。本文對面試中經常出現的一些典型問題進行了整理,並給出相應的回答思路和參 讀者無需過分關注分析的細節,關鍵是要從這些分析中 悟 出面試的規律及回答問題的思維方式,達到...

Halcon使用過程中異常情況(bug)彙總

一 vs下不易發現的記憶體洩露 在vs下呼叫halcon運算元時,要特別注意 所有輸出的變數,不管有沒有用到,都不要用null來替代。否則會導致程式會有2 4kb的記憶體洩露。halcon12及以前版本均存在這個問題,最新的版本是否存在有待驗證 例如,我們需要計算某個區域的面積,而不關心另兩個一併計...