0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何利用旋转中心进行手眼标定呢?

新机器视觉 来源:机器视觉课堂 2023-07-25 16:52 次阅读

首先,我们要了解一下常规的手眼标定流程是怎么样的。

(一)如果吸嘴中心就是法兰盘的中心则

是下面这样的:

按九宫格走九个点,取得九组吸嘴的像素坐标与法兰盘的机械坐标

1ca80b5c-2ac8-11ee-a368-dac502259ad0.png

(图1)

进行标定

(二)如果吸嘴位置不在法兰盘中心

则标定流程要复杂些:

人工创建工具坐标Tool 1,把工具坐标中心创建到标定片的Mark点上去

按九宫格走九个点,取得九组特征点的像素坐标与对应的机械坐标

进行标定

这里的难点是创建工具坐标的方法。

人工创建工具坐标,一般按工具向导来创建,需要第二个点同第一个点U轴差180度。对于结构紧凑的机器来说,你是不可能做到的。

即使能做到,这个过程是相当磨人的。

如果想不转180度创建工具坐标,则需要自己写算法,而不是使用工具向导来创建。

这里勇哥介绍一下同事用到的一种利用旋转中心进行标定的方法,它可以用以实现自动标定的需求。

注意:如果你得人工去创建工具坐标的话,就做不到自动标定了。

另外,自动标定是需要机器人里面写程序,IPC上写一段自动标定的程序与之配合才可以做到的。

第一步:

机器人吸嘴上放上标定片,走矩形四个位置。取得4组特征点B的像素坐标。

同时取得4组机械坐标,这个机械坐标是机器人U轴中心A的机械坐标。(这个过程简化了九点标定,只取4个点)

我们同时有了四组像素与机械坐标,用halcon算子vector_to_hom_mat2d进行标定。

此时标定的结果不是我们想要的,它只是把机器人法兰盘中心(U轴中心)的A点和特征点B标定在了一起。

因为机器人默认使用tool 0工具坐标系工作的,我们这样标定也就是把特征点和Tool 0工具坐标的中心(这个中心就是法兰盘的中心)标定在了一起。

这是我们的第一次标定,它标定出来的结果是存在一个固定偏差的,这个偏差就是法兰盘中心(u轴中心)到特征的固定的距离偏差。

标定成功后,我们获得一个标定关系的矩阵homMat2D

1cc494f2-2ac8-11ee-a368-dac502259ad0.png

(图2)

第二步:

接下来进行三点定圆心的操作。如下图所示,我们通过旋转机器人法兰盘(u轴中心)的中心旋转出三个位置。

通过三个特征点B,我们可以求出通过它们的一个圆,其圆心是法兰盘中心(u轴中心)在相机坐标系中的像素坐标。

现在我们求出的圆心只是像素坐标,通过第一步的标定关系矩阵homMat2D,利用halcon算子affine_trans_point_2d可以计算出这个圆心的机械坐标。

重要的地方来了!这个圆心的机械坐标并不是法兰盘的中心坐标,而是拥有固定偏差值的一个坐标!

注:如果只看图3,你可能很疑惑,这3个角度明明是绕着U轴中心转动的呀,为什么说这个中心不是法兰盘U轴的中心呢?

注意,这个三点的中心只是在像素坐标系里面是U轴的中心!

但是,当你把这个像素转为机械坐标时,因为你原来第一次标定时的矩阵homMat2D,里面的信息就是法兰盘中心到特征点的关系,所以此时你把圆心像素坐标转为机器坐标时,你还是用的这个矩阵homMat2D在转换。因此你转化后的机械坐标不是U轴中心,而是法兰盘到特征点机械坐标的距离。

1ce2ee3e-2ac8-11ee-a368-dac502259ad0.png

(图3)

第三步

接下来进行第二次标定的过程。

有了第3步的Tool 0工具坐标中心的机械坐标,我们可以计算工具1和工具0的毫米偏差,并把最初标定时的Tool0下的四个特征点的机械坐标加上这个毫米偏差,使其变为Tool1下的坐标,Tool1的工具中心就是我们选取的特征点那个地方。

说人话:法兰盘中心(u轴中心)机械坐标减去 用3点定圆那个圆心的机械坐标,求出固定偏差值。

这个固定偏差就是法兰盘到特征点机械坐标的距离!

然后我们用这个偏差值更新一下第一次标定时的四组像素与机械坐标数据,重新标定即可。

这次更新的过程其实就是把Tool0下的四组机械坐标转化为Tool1下的四组机械坐标。

可能你会说,我们目前为止根本没有Tool1呀,这个没关系,本步骤不需要Tool1,第四步才会创建Tool1坐标。那个时候用得上三点圆心的机械坐标了。

第四步

最后利用三点定圆的圆心机械坐标,我们来创建Tool 1坐标系。要实现求出工具坐标x,y的过程可以在机器人端写程序,也可以用C#代码来实现,但是创建Tool 1坐标系这一步仍然还是需要在机器人端来执行。

最后我们就达到最终的目的:

创建工具坐标Tool 1,把工具坐标中心创建到标定片的Mark点上去,然后生成四组特征点的像素坐标与机械坐标。

大功告成!

1d052224-2ac8-11ee-a368-dac502259ad0.png

(图1: 4个标定点,3个旋转点,1个测试点

1d195bfe-2ac8-11ee-a368-dac502259ad0.png

(图2:第一次标定)

1d3242b8-2ac8-11ee-a368-dac502259ad0.png

(图3:第二次标定)

下面是标定的输出信息,请参考:

C#

CT1机械坐标:
mechanicalPosX=-22.585
mechanicalPosY=170.856

p1
{X = 1102.115 Y = 1110.051}
    IsEmpty: false
    X: 1102.115
    Y: 1110.051
p2
{X = 289.26 Y = 1175.885}
    IsEmpty: false
    X: 289.26
    Y: 1175.885
p3
{X = 1814.609 Y = 1332.285}
    IsEmpty: false
    X: 1814.609
    Y: 1332.285


圆心位置:
{X = 857.9301 Y = 3146.18433}

圆心转机械坐标:
row1AfterTrans={-14.4875695091889}
col1AfterTrans={88.6095108466213}

第一次标定后的矩阵:
homMat2D:
{[-0.040066467819754, -0.000775766400971161, 22.3672349752005, 0.000818720706487857, -0.0402510697036496, 214.656297497753]}



偏差:CT1机械坐标-圆心机械坐标
//double spanX = Convert.ToDouble(mechanicalPosX) - row1AfterTrans.D;
//double spanY = Convert.ToDouble(mechanicalPosY) - col1AfterTrans.D;
spanX=-8.0974304908110746
spanY=82.246489153378647


第二次标定后的矩阵:
homMat2D:
{[-0.040066467819754, -0.000775766400971159, 14.2299334255784, 0.000818720706487857, -0.0402510697036496, 296.790879463611]}




1713   等待机器人前往标定点1......
1728   模板位置:0, X:438.338, Y:560.191, U:0
1729   机器人到达标定点1,当前像素坐标为:457.791;445.217机械坐标为:3.703;197.128

1729   等待机器人前往标定点2.....
1654   模板位置:0, X:414.878, Y:1742.642, U:-0.001
1655   机器人到达2号点,当前像素坐标为:434.001;1627.619机械坐标为:3.704;149.502

1655   等待机器人前往标定点3......
1601   模板位置:0, X:1679.666, Y:1718.163, U:0.001
1602   机器人到达标定点3,当前像素坐标为:1699.957;1602.742机械坐标为:-46.975;151.532

1602   等待机器人前往标定点4......
1605   模板位置:0, X:1700.915, Y:601.786, U:0
1606   机器人到达标定点4,当前像素坐标为:1720.958;486.131机械坐标为:-46.975;196.502

1606   开始Tool0下的标定......
1606   Tool0下标定完成,开始创建工具坐标
1606   等待机器人前往创建工具2号点......
1609   模板位置:0, X:315.584, Y:1289.472, U:-0.397
1610   机器人到达创建工具2号点,当前像素坐标为:289.26;1175.885
1610   等待机器人前往创建工具3号点......
1613   模板位置:0, X:1754.706, Y:1432.779, U:0.366
1614   机器人到达创建工具3号点,当前像素坐标为:1814.609;1332.285
1614   等待机器人前往创建工具1号点......
1615   模板位置:0, X:1081.994, Y:1225.572, U:0.001
1616   机器人到达标创建工具1号点,当前像素坐标为:1102.115;1110.051机械坐标为:-22.585;170.856

1612   Tool0工具中心经标定关系转化后的坐标为:-14.4477;88.7214
1710   机器人工具1创建完成
1714   模板位置:0, X:1112.962, Y:916.192, U:-0.398
1715   标定精度测试结果:X偏差:0.104mm,Y偏差:0.041mm
1715   标定精度较差
1715   自动标定完成

本次标定成功后,tool1结果为:

x,y,z,u

82.008, 9.569, 0, 0

这里勇哥想知道的是,怎么把tool1结果转换为tool0呢?

1d45ef3e-2ac8-11ee-a368-dac502259ad0.png 

1d5910a0-2ac8-11ee-a368-dac502259ad0.png

tool0

3.703,197.128

tool1:

-4.377,279.296

显然并不是简单的把Tool0加上工具坐标这么简单。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 转换器
    +关注

    关注

    27

    文章

    8208

    浏览量

    141894
  • 机器人
    +关注

    关注

    206

    文章

    27043

    浏览量

    201425
  • IPC
    IPC
    +关注

    关注

    3

    文章

    306

    浏览量

    51349

原文标题:一种利用旋转中心进行手眼标定的原理性介绍

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    机器视觉手眼标定

    本帖最后由 lilin0734 于 2017-11-15 20:09 编辑 机器视觉手眼标定
    发表于 11-06 10:45

    请问各位大神,谁知道如何用labvIEW实现手眼标定

    请问各位大神,谁知道如何用labvIEW实现手眼标定
    发表于 06-12 11:03

    如何使用labview实现手眼标定

    求指教如何使用labview实现手眼标定谢谢
    发表于 04-22 18:24

    求大神赐一个基于labview手眼标定的实现图 感谢!

    希望各位大神能赐我几张基于labview手眼标定的实现图,给我几张手眼标定结果也非常感谢,谢谢!!!
    发表于 04-27 19:33

    请问各位高手,如何用labview的vision实现手眼标定

    有个项目要用视觉定位,视觉拍好产品之后,把产品的坐标发送到PLC,PLC再执行定位指令。现在查到的资料都没有涉及这一块,都是讲相机标定,而不是手眼标定。哪位有这方面的资料,怎么用labview实现
    发表于 05-28 14:42

    标定旋转中心

    物理坐标后,和当时的Z轴坐标几乎是一样的,很相近,那么,为什么不直接用机器人的中心坐标,而要进行旋转标定
    发表于 11-09 15:36

    凸松弛全局优化机器人手眼标定

    相对运动旋转轴之间的夹角对标定方程求解精度的影响,首先利用随机抽样一致性( RANSAC)算法对标定数据中旋转轴之间的夹角
    发表于 12-03 10:05 0次下载
    凸松弛全局优化机器人<b class='flag-5'>手眼</b><b class='flag-5'>标定</b>

    手眼标定_全面细致的推导过程

    这种情况的标定过程实际上和相机和机械手分离的标定方法是一样的,因为相机拍照时,机械手会运动到相机标定的时候的位置,然后相机拍照,得到目标的坐标,再控制机械手,所以简单的相机固定在末端的手眼
    的头像 发表于 07-11 09:57 5468次阅读
    <b class='flag-5'>手眼</b><b class='flag-5'>标定</b>_全面细致的推导过程

    手眼标定常用的标定方法有:九点标定

    在实际控制中,相机检测到目标在图像中的像素位置后,通过标定好的坐标转换矩阵将相机的像素坐标变换到机械手的空间坐标系中,然后根据机械手坐标系计算出各个电机该如何运动,从而控制机械手到达指定位置。这个过程中涉及到了图像标定,图像处理,运动学正逆解,
    的头像 发表于 08-28 11:42 1.1w次阅读
    <b class='flag-5'>手眼</b><b class='flag-5'>标定</b>常用的<b class='flag-5'>标定</b>方法有:九点<b class='flag-5'>标定</b>

    剖析Halcon 9点标定旋转中心标定与使用

    组成的多轴系统、Scara四轴机器、六轴机器人(在运行过程中保证几个自由度不动,运行即可) 一、 标定介绍 1.  标定模型A:相机固定(夹具不旋转) 夹具夹取产品或者标定块,选取一个
    的头像 发表于 05-08 10:05 3.5w次阅读
    剖析Halcon 9点<b class='flag-5'>标定</b><b class='flag-5'>旋转</b><b class='flag-5'>中心</b><b class='flag-5'>标定</b>与使用

    机器人手眼标定的推导过程

    机械手搭载双目相机,手眼标定
    的头像 发表于 04-20 16:32 1059次阅读

    手眼标定(九点法)

    在实际控制中,相机检测到目标在图像中的像素位置后,通过标定好的坐标转换矩阵将相机的像素坐标变换到机械手的空间坐标系中,然后根据机械手坐标系计算出各个电机该如何运动,从而控制机械手到达指定位置。这个过程中涉及到了图像标定,图像处理,运动学正逆解,
    的头像 发表于 07-03 15:45 2583次阅读
    <b class='flag-5'>手眼</b><b class='flag-5'>标定</b>(九点法)

    手眼标定的详细推导过程

    机械手搭载双目相机,手眼标定
    的头像 发表于 07-11 11:18 1153次阅读
    <b class='flag-5'>手眼</b><b class='flag-5'>标定</b>的详细推导过程

    张正友标定方法是手眼标定吗 如何分析相机标定参数的好坏

    张正友标定方法是一种经典的相机标定方法,目前是最受欢迎的方法之一。该方法通过一种机器学习的方法,利用大量匹配的数据点像素坐标、世界坐标,基于极大似然估计拟合得到一个最优解。
    发表于 08-03 10:59 767次阅读
    张正友<b class='flag-5'>标定</b>方法是<b class='flag-5'>手眼</b><b class='flag-5'>标定</b>吗 如何分析相机<b class='flag-5'>标定</b>参数的好坏

    机器人手眼标定技术你真的懂吗?

    相机知道的是像素坐标,机械手是空间坐标系,所以手眼标定就是得到像素坐标系和空间机械手坐标系的坐标转化关系。
    发表于 03-18 09:44 121次阅读
    机器人<b class='flag-5'>手眼</b><b class='flag-5'>标定</b>技术你真的懂吗?