51Halcon机器视觉

 找回密码
 会员注册

QQ登录

只需一步,快速开始

扫一扫,微信登录

查看: 196|回复: 1

[手眼标定] 【3】机器人手眼标定:固定向下相机

[复制链接]
  • TA的每日心情
    叹气
    2020-6-19 11:36
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    3

    主题

    26

    帖子

    582

    积分

    Rank: 9

    积分
    582
    发表于 2020-6-23 12:13:04 | 显示全部楼层 |阅读模式

    51Halcon诚邀您的加入,专注于机器视觉开发与应用技术,我们一直都在努力!

    您需要 登录 才可以下载或查看,没有帐号?会员注册

    x
        
        

        

    相机固定向下安装是手眼搭配中最简单的应用模式,也是大家最常用,最容易理解的一种方式。就让我们从这种简单的应用场景一起思考其中的一些奥妙吧。

    — Edited By Hugo

        
        

        
    如上图所示:
    要让机器人的手抓住杯子,就必须知道杯子跟手的相对位置关系,而杯子的位置则是通过机器人的眼睛看见的,所以,我们只需要知道机器人的手可以眼睛的转换关系,就可以随时抓取机器人眼睛所看到的物体了。

    先演示下相机标定过程:

    STEP 1:准备好一张标定板,里面有3X3的圆。
        
    STEP 2:把标定板水平放置在相机正下方,控制相机拍照得到一张图片,并按顺序(走Z字型)记录图片上9个圆的中心位置。

    STEP 3:控制机器人TCP工具末端按顺序(走Z字型)移动到每个圆心,并记录下9组机器人位置坐标数据。

    STEP 4: 执行标定,这里使用HALCON标定算子作为演示,利用上面求得的数据。

      -图像上9个位置-
    1. image_x:=[727.884,2395.058,1505.023,666.948,2678.36,1505.023,666.948,2678.36]

    2. image_y:=[755.759,664.057,1289.824,1787.698,1707.432,1505.023,666.948,2678.36]
    复制代码


      -机器人9个位置-
    1. robot_x:=[-57.011,-33.521,-46.759,-58.678,-30.024,-46.759,-58.678,-30.024]

    2. robot_y:=[323.965,324.565,316.237,309.794,309.695,-46.759,-58.678,-30.024]

    复制代码

      -图像与机器人数据结合-
    1. vector_to_hom_mat2d (image_x, image_y, robot_x, robot_y, HomMat2D)
    复制代码


    STEP 5:标定完成后,拍摄一个特征点的,求得像素位置
    1. img_x:=2094.344

    2. img_y:=1326.878
    复制代码


    利用以下算子即可把像素坐标转换成机器人坐标
    1. affine_trans_point_2d(HomMat2D,img_x,img_y, Qx, Qy)
    复制代码


    到这里标定以及转过程就完成了。是不是觉得很简单?那么问题来了,他怎么做到的呢,这个标定函数里面做了什么?下面一起看看:

        
    如上图所示:

    矩阵A代表了图像像素点的点集合,矩阵B代表了机器人在世界坐标系下的点集合,在机器人应用中,我们习惯使用齐次坐标与齐次矩阵来统一描述刚体的位置和姿态。而X就是我们需求出的AB两组点集之间的旋转平移关系矩阵。

    在做平面手眼标定(非3D)时,都是利用该等式进行求解的。这也是我们通常熟悉的N点标定的数学原型。这也无论是四轴机器人还是六轴机器人(姿态固定)都同样适用。

    听到矩阵两个字是不是很烦?没关系你看看这个两个等式就很容易明白了。
        
    矩阵最开出现的目的在于简化线性方程的写法。矩阵的本质就是线性方程式,两者是一一对应关系。

    为何图像与机器人的标定关系可以这样来表示呢?

    我们知道,三维空间中的一个平面可以使用一个三元一次方程来表示,所以在平面标定中,假设图像坐标系为A平面,机器人坐标系为B平面。那么通过三元一次方程组,可求出一个平面分别与AB平面相交。可表示如下:

        
    当使用N组数据时,即可使用点集A*矩阵R=点集B的方式进行表示了。这个矩阵R矩阵我们通常称为仿射变换矩阵。

        
        

    仿射变换(Affine Transformation)是空间直角坐标系的变换,从一个二维坐标变换到另一个二维坐标,仿射变换是一个线性变换,他保持了图像的“平行性”和“平直性”,即图像中原来的直线和平行线,变换后仍然保持原来的直线和平行线,仿射变换比较常用的特殊变换有平移(Translation)、缩放(Scale)、翻转(Flip)、旋转(Rotation)和剪切(Shear)。

    已知给定两个对应点集AB,如何估计指定变换矩阵R的参数?

    一对对应点可以列两个线性方程,多个对应点可以列出线性方程组,为了求解参数,需要的对应点数至少为自由度的一半,多个点时构成超定方程组,可以基于最小二乘或者SVD分解等方法进行求解,这里就暂时展开讨论。






    关于SVD求解过程可参考下面连接:

    https://blog.csdn.net/chenaiyanmie/article/details/80011244

    在实验过程中遇到问题的或者存在疑问的

    可以关注后联系我~


        

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    开心
    3 天前
  • 签到天数: 15 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    1

    主题

    8

    帖子

    32

    积分

    Rank: 1

    积分
    32

    切换助手验证会员

    发表于 3 天前 | 显示全部楼层
    感谢大佬

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

    您需要登录后才可以回帖 会员登录 | 会员注册

    本版积分规则

    51Halcon会员技术交流会员技术交流 | 51Halcon官方客服咨询官方客服咨询 | Halcon切换助手使用反馈切换助手使用反馈 | 51Halcon论坛管理团队论坛管理团队

    申请友链| 小黑屋| 手机版| Archiver|  

    粤ICP备15095995号-2 粤公网安备44030602000670号

    CopyRight © 2015-2020 51Halcon机器视觉. Tencent Cloud X3.4.

    快速回复 返回顶部 返回列表