勇哥的视觉实验:眼在手上(eye in hand)的标定实验(二) 相机位于机器人第3轴时,并且定位特征在相机视野内不可见


继续上篇《勇哥的视觉实验:眼在手上(eye in hand)的标定实验。相机挂在x,y平台上,全部九点标定特征在相机视野内可见


这次勇哥换用Epson四轴scara机器人来做实验。

如下图所示,相机挂在第3轴上面,因此这种眼在手上的工作模式分为两种情况:

(1) 相机移动,不旋转

(2) 相机移动并且旋转


本篇研究一下第(1)种情况。

image.png

(图1)

我们开始九点标定。

请看上图,这里勇哥还是用笔尖做为标定特征点。要说明的是,在相机视野范围内看不到我们的笔尖。

我们计划只做四个点的标定,下图是走到其中一个点时相机看到的视野内容:

image.png

(图2)

这种情况下就产生一个问题:

由于相机的视野小,机器人走四个点位时看到的视野内容没有重叠部分,即完全是四个不同的视野内容。


四点中的第一个点是字符2右上那个点,其它点为顺时针方向分布。

g1.gif  

(图3)


四个点位相机看到的视野内容分别为3,4,1,2

g2.gif

(图4)


那么上一篇贴子中的情况就不是这样的。在轴的原点位置,相机已经能看到全部的要标定的九个点了

如下图所示:

image.png

(图5)


由此得到一个猜想是我们必须在一个视野范围内来选择九点标定用的特征点

前面我们pt1, pt2, pt3, pt4四个点位看到的是四个视野范围。

现在我们只选择在第一个点pt1时相机的视野范围内的四个点。

image.png

(图6)


按标记的顺序记录下上图中十字中心的像素坐标

//217,224
//737,230
//731,751
//212,746

接下来移动机器人用笔尖去戳那四个十字中心,记录机械坐标。

221.161,128.968
220.958,109.122
200.386, 110.091
201.310, 129.641

进行标定

px:= [217,737,731,212]
py:=[224,230,751,746]

mx:=[221.161,220.958,200.386,201.310]
my:=[128.968,109.122,110.091,129.641]

vector_to_hom_mat2d(px, py, mx, my, HomMat2D)

affine_trans_point_2d(HomMat2D,244,611 , Qx, Qy)
*污渍点的像素坐标
//244,611
*正确答案
//206.157,127.746

然后我们在这个视野内随便找一个点,看看机器人能不对用笔尖戳准它。

勇哥选择箭头所指的污渍。

image.png

(图7)


affine_trans_point_2d(HomMat2D,  244,611, Qx, Qy)

结果是:206.311,128.334

正确答案是:206.157,127.746

可以看到,结果在X方向偏差了0.16mm, Y方向上偏差了0.6mm,考虑到实验是人眼对笔尖位置,比较粗糙,因此这个结果也能代表我们的实验原理上是正确的。



我们标定时选择是在pt1时相机看到的视野内容进行标定的,当我们在这个视野内任选一个点时,转换出来的机械坐标都可以正确让笔尖戳到这个点。

但是如果我们在pt2, pt3, pt4 位置时,相机视野内的任意一点,可以戳准吗?

答案是不能!

怎么可以做到呢? 勇哥在后续文章中再继续实验。



在这部分的实验中,勇哥得到的经验是:

  1. 实验时相机的x,y和运动方向的x,y是相反的。

    考虑到这个问题,我特别尝试过把像素坐标交换一下,如下图所示。

    但是经过实验,其实不交换,结果也没啥子区别。这个似乎并不重要。

    image.png

    (图7)


   2.  像素坐标点位一定要与机构坐标的点位对应起来。

        图6的四个点顺序是表示的像素坐标的顺序。

        它对应的四个点的机构坐标顺序如图8所示。

        image.png

        (图8)

        这一点很关键,由于相机与运动的方向是相反的,因此这个地方很容易搞错。 

        如果这个对应关系错误了,标定结果就相去十万八千里了。







未完待续…………



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

作者:hackpig

来源:www.skcircle.com

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


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:
  • 评论列表:
  •  访客
     发布于 2020-09-28 15:00:22  回复该评论
  • 勇哥你好!请问eye-in-hand标定中,机械手移动,图像的坐标系不是也更新了吗,请问笔尖的图像坐标如何确定呢?
  •  hexingliang
     发布于 2022-03-09 09:04:24  回复该评论
  • 相机移动的标定可以有更加简单方法,将机械臂置于一个合适的高度(拍照高度),移动机械臂走9个点并拍9张照片(保证机械臂的高度不变),记录下XY值;再把拍摄的九张图片都导进halcon,识别同一个点在不同图片中的像素坐标;再运用仿射变换求出变换矩阵,应用变换矩阵即可得到像素坐标和物理坐标的转换关系;可以取九个点其中一个作为参考位置,将机械臂移动到在halcon中识别的那个点上,记录下这个位置,其余的点都可以以此为基准做相对偏移

发表评论:

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

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 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