勇哥的视觉实验:基本的九点手眼标定,眼在手外


准备一张纸,打印九个十字。

根据勇哥的经验,使用矢量图软件CorelDraw,用喷墨打印机可以得到比较好的效果。

image.png

在X,y,Z平台上装了一只笔,让笔尖对着十字的中心,这个例子里勇哥是用眼睛看的方式来让笔尖对到中心。

这样我就取得了九个机械位置p1到p9。

实际项目中,不要用眼睛去看,而是要把流程反过来。先自己计算出要走的九个点位,然后走位扎针,在纸上生成点,再用相机拍照取像素坐标。这样可以准确到像素级。

image.png


有了9个机械坐标后,我通过放大视图,鼠标指向十字中心的办法,取得九组像素坐标。

两组坐标都有了后,用下面的程序标定并验证结果。

程序主要用到下面两个算子:

vector_to_hom_mat2d   用来生成像素坐标与机械坐标之间的转换矩阵

affine_trans_point_2d    应用上面的矩阵关系,把像素坐标转为机械坐标 


open_framegrabber ('GigEVision2', 0, 0, 0, 0, 0, 0, 'progressive', -1, 'default', -1, 'false', 'default', '94aab8029638_Microvision_MVEM500M', 0, -1, AcqHandle)
grab_image (Image, AcqHandle)
close_framegrabber (AcqHandle)

//像素坐标
Row1:=[608,624,640,1127,1112,1097,1596,1612,1625]
Column1:=[1086,1632,2152,2133,1615,1071,1057,1597,2111]

//机械坐标
Row2:=[36.798,69.4,101.097,101.097,70.098,37.603,37.603,70.098,101.299]
Column2:=[-67.499,-67.398,-67.134,-96.108,-96.366,-96.597,-127.135,-126.522,-126.538]

//标定
vector_to_hom_mat2d (Row1, Column1, Row2, Column2, HomMat2D)

//验证结果,找5mm的圆并求出圆心位置
gen_rectangle1 (ROI_0, 1312.63, 1298.8, 1422.68, 1403.03)
reduce_domain(Image, ROI_0, ImageReduced)
threshold(ImageReduced, Region,0, 50)
connection(Region, ConnectedRegions)
area_center(ConnectedRegions, Area, Row, Column)

//应用标定计算出像素坐标对应的机械坐标
affine_trans_point_2d (HomMat2D, Row, Column, Qx, Qy)
*Qx,Qy的结果为: 55.1431  -112.066


下面勇哥放了一张胶片上去,找5mm圆的圆心位置,并把这个位置转为机械坐标。

再把机器开过去,通过观察笔尖的位置以验证结果是否正确。


image.png

image.png


下面来谈谈九点标定的原理:


九点标定直接建立相机和机械手之间的坐标变换关系。让机械手的末端去走这9个点得到在机器人坐标系中的坐标,同时还要用相机识别9个点得到像素坐标。这样就得到了9组对应的坐标。由下面的式子可知至少需要3个点才能求出标定的矩阵。

image.png



结束语


基本的基于x,y轴的九点标定很简单,但千万别轻视标定。

实际上项目中经常有麻烦的情况出现,勇哥举几个例子:

  • 机器人的九点标定,这个要考虑用工具坐标

  • 眼在手上时,相机和Z轴有个固定偏移的位置

  • 带“假肢”的机器人吸嘴的标定,这个时候旋转中心相当于偏置了

……


另外,类似于epson机器人之类的,都有自己的标定函数。而本例子是使用halcon来标定的。

你知道机器人的标定相比halcon的标定谁的结果更好吗?


标定的主题是有技术含量和经验含量的。

招聘视觉工程师时,这个话题是必考项,很多人只会表达那句“把像素坐标转为机械坐标”,肚子里其实没其它的货了。


--------------------- 

作者:hackpig

来源:www.skcircle.com

版权声明:本文为博主原创文章,转载请附上博文链接!


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:
  • 评论列表:
  •  波波俊秀
     发布于 2023-02-07 11:45:51  回复该评论
  • 现在总算明白九眼标定的作用了,之前一直用的是相机标定,导致相机坐标和机械坐标有偏差

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年3月    »
123
45678910
11121314151617
18192021222324
25262728293031
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864