在工业领域常常会遇到将相机安装在机器手中,由相机快速引导机器手进行工作的方式。其中9点标定的作用是将图像的坐标转化为机器手的坐标。
不同标定文件的区别:不同标定的区别在于:图像坐标系与机器人坐标系是否匹配,单像素精度是否匹配。影响单像素精度是,相机与被测物体的高度差,如果相机与被测物体的高度差不变时,则可以不改变标定文件。
9点标定的作用意义:
标定视野范围,标定视野范围应大于相机视野的2/3以上,以保证相机出现畸变时可以及时发现。
1.计算像素当量,通过9点标定后的计算,可以得出一个由像素值转化为机器手的移动值的一个变化量。当我们标定完后即可得到一个像素当量的固定值。
2.将图像坐标系转化为机器手的同向坐标系。
为什么叫做同向坐标系?
我们标定的时候,需要将图像坐标与对应的机器手的坐标进行一一对应。图像坐标系通常会默认左上角的视野临界点为图像的起始原点即为(0,0)【图像坐标系】。图像往东为X轴的正方向,图像往南为Y轴的正方向。当然我们的机器手由于各种问题往往所体现出来的坐标系是混乱不固定的,且实际的工作单位为机器手,我们相机需要为机器手进行引导,所以即使在机器手坐标系不一的情况下,可以使用9点标定实现将机器手坐标系与图像坐标系联系在一起并计算为坐标系同向的状态。
我们的标定步骤:
1.在安装好设备后开始进行手眼标定
2.确定工作计算的坐标系,在实际生产中视觉计算的坐标系往往是多样化的,根据实际情况进行选择工作坐标系,同时示教时也需要在工作坐标系下。我直接采取机器手的Base0坐标系。原因在于:Base0坐标系时机器手的固定坐标系,此坐标系的原点在机器人的底座上,坐标系的变化只与机器人的安装误差有关系。
3.将机器手移动至方案选定的拍照高度,随后调节相机的焦距,和将光圈调到最大,在相机控制软件调节相机曝光时长,使得物体在视野内清晰可见,同时干扰源尽可能的少。
4.以库卡机器人为例子。将机器人选择为全局坐标系下,即为Base0坐标系(底座坐标系)。移动机器手,使得相机的中心对准被检测物体(或者标定物体的中心),记录当前的机器人坐标X,Y,Z,A等其他数值。
5.设定机器手的移动距离,根据实际情况设置机器手的移动距离,通常将9个点均在画面当中,9个点相连接占用的面积约为视野范围的2/3即可。这里我以20mm作为偏移值。则将视野中心点设置为4号点,机器坐标为(0,0)。则对应的坐标为

例如0号点的机械坐标设定为(-20,-20),则我们在机器手中将X轴移动-20,Y轴移动-20,其他均不改变 。同理我们的其他坐标也是如此。
6.然后生成标定文件进行验证即可
参考Halcon程序

*已知A坐标系的9个点
Ax:=[-20,-20,-20,0,0,0,20,20,20]
Ay:=[-20,0,20,20,0,-20,-20,0,20]*待识别的B坐标点,和上面的A坐标系点一一对应
Bx:=[]
By:=[]
dev_get_window (WindowHandle)
* Image Acquisition 01: Code generated by Image Acquisition 01
list_files ('E:/762halcon/标定', ['files','follow_links'], ImageFiles)
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
for Index := 0 to |ImageFiles| - 1 by 1read_image (Image, ImageFiles[Index])* Image Acquisition 01: Do somethingdev_display (Image)* 以下过程为在B坐标系找A中的9个点draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)reduce_domain (Image, Rectangle, ImageReduced)threshold (ImageReduced, Regions, 0, 211)   *找到了B坐标系的点(Row,Column)area_center (Regions, Area, Row, Column)Bx:=[Bx,Column]By:=[By,Row]
endfor
*得到目标变换矩阵HomMat2D
vector_to_hom_mat2d (Bx, By, Ax, Ay, HomMat2D)*保存变换矩阵
serialize_hom_mat2d (HomMat2D, SerializedItemHandle)
open_file ('my_vector.mat', 'output_binary', FileHandle)
fwrite_serialized_item (FileHandle, SerializedItemHandle)
close_file (FileHandle)stop ()
*读取变换矩阵,测试
open_file ('my_vector.mat', 'input_binary', FileHandle)
fread_serialized_item (FileHandle, SerializedItemHandle)
deserialize_hom_mat2d (SerializedItemHandle, HomMat2D_9p)
close_file (FileHandle)
tx:=20
ty:=30
affine_trans_point_2d (HomMat2D_9p, tx, ty, Qx, Qy)

7.同时标定坐标系需要与程序的实际情况相对应,如果程序中的是当前坐标-示教坐标,那么我们标定出来的坐标系需要与机器人的坐标系方向正负相反。
库卡机器人参考标定文件程序:
lin_rel{x -15}
lin_rel{y-15} //第一个点
lin_rel{x 15}
lin_rel{x 15}
lin_rel{y 15}
lin_rel{x -15}
lin_rel{x -15}
lin_rel{y 15}
lin_rel{x 15}
lin_rel{x15} //最后一个点
lin_rel{x-15}
lin_rel{y -15} (回到原点)
标定后,图像坐标系与机器人坐标系相反,适用于当前坐标-示教坐标程序。

标定问题:

1.按照机器人移动的照片是斜的。
只要是根据机器人的坐标系移动,无论图像的连线是否是斜的都不影响精度。
2.标定结果有误差。
标定的坐标系问题,如果你在Base0下进行标定,结果出现误差是机器人安装错误,推荐重新正确的安装机器人底座;如果是在其他机器人坐标系下标定,结果出现误差是因为机器人的Z轴发生了变换,但是在当前坐标系下没有变化,实际在Base0下的Z轴开始变化了,可以将坐标系改为在Base0下进行标定。
3.为什么标定时4号点(视野中心)的机械坐标设置为0?
我们在计算的过程的时候,选择视野中的机械坐标为0的好处是,当我们进行示教时候,可以直接记录视野中心的点即为示教点,那么偏移量就可以直接将坐标映射后的坐标+示教的坐标即可得到基于当前坐标系的坐标了,方便计算。

参考的标定图片









手眼标定,9点标定过程及其运算相关推荐

  1. SCARA四轴机器人eye-to-hand手眼标定(九点标定)

    SCARA四轴机器人eye-to-hand手眼标定(九点标定) 9点法标定是工业上使用广泛的二维手眼标定,它分为eye_in_hand和eye_to_hand两种.在做项目时,用到的是eye-to-h ...

  2. 多传感器融合感知:传感器外参标定及在线标定算法详解

    点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心[全栈算法]技术交流群 后台回复[相机标定]获取超详细的单目双目相机模型介绍.内外参标定 ...

  3. 相机标定 - (01) - 相机标定简介

    目录 1 相机标定简介 1.1 相机标定的作用 1.2 相机标定的分类 1 相机标定简介 1.1 相机标定的作用 相机标定是利用二维平面信息及少量三维空间信息解析物点与对应像点几何关系的过程,在几何测 ...

  4. halcon,什么是标定?怎么标定?标定获得了什么?标定能干什么?

    以下为个人见解,如有错误,欢迎指出! 什么时候可以标定? 当你的工作环境即相机之类搭建完成后可以进行标定. 什么是标定? 总说标定标定,那么标定是什么呢? 在我看来,标定是在halcon通过一系列的操 ...

  5. 相机标定篇——相机标定

    认为相机标定是三维重建的核心,研究生期间主要方向为结构光三维重建 必要的数学知识 线性方程求解 Gauss消元法:LU分解:Cholesky分解 最小二乘问题-线性方法 特征值分解:奇异值分解:超定线 ...

  6. 多传感器融合感知 --传感器外参标定及在线标定学习

    0. 简介 作为无人车以及智能机器人而言,在装配过程中各个传感器之间的外参标定一直是比较头疼的问题.这里作者也系统的学习了一下,传感器的外参标定和在线标定问题.下图是我们常用的几个坐标系,而对于常用的 ...

  7. 相机标定与棋盘格标定

    文章目录 1.相机标定 1.1 相机标定介绍 1.2 相机标定的意义 1.3 相机标定方法 1.4 相机标定的用途 2.相机参数 2.1 内参 2.2 外参 2.3 畸变参数 3.棋盘格标定 3.1 ...

  8. 360度全景标定方法_一种用于360°全景泊车辅助系统的标定布及标定场地_2015209958302_说明书_专利查询_专利网_钻瓜专利网...

    技术领域 本实用新型涉及360°全景泊车辅助系统领域,特别是指一种用于360°全景泊车辅助系统的标定布及标定场地. 背景技术 随着图像和计算机视觉技术的快速发展,越来越多的技术被应用到汽车电子领域,传 ...

  9. 摄像机标定和立体标定

    尝试用OpenCV来实现立体视觉也有一段时间了,主要的参考资料就是Learning OpenCV十一.十二章和OpenCV论坛上一些前辈的讨论.过程中磕磕碰碰,走了不少弯路,终于在前不久解决了最头大的 ...

最新文章

  1. 前端调用mysql异步_PHP 使用 Swoole – TaskWorker 实现异步操作 Mysql
  2. 同质化软件“吃掉”创新 企业因何深陷罗网?
  3. CTFshow 命令执行 web71
  4. OpenCV | Laplacian算子的使用
  5. c++中求解非线性方程组_齐次线性方程组的基础解系的简便算法
  6. UNITY3D与iOS交互解决方案
  7. java.sql.SQLSyntaxErrorException: ORA-00923: 未找到要求的 FROM 关键字
  8. linux命令fdisk,Linux fdisk 命令使用详解
  9. 线性代数 —— 线性基与前缀线性基
  10. 幻想英雄2-战神再起折扣号新手入门攻略
  11. 用SDWebImage加载FLAnimatedImage
  12. python运行怎么下一步_简明Python3教程 18.下一步是什么
  13. FileZilla Client中文乱码
  14. 程序员教你不背单词学英语!流利英语一周成!!!
  15. 亚马逊测评日记: 亚马逊自养号是什么意思?测评的风险?review和feedback、rating星级评分的区别?
  16. 全国海选第四期:北京和海外赛区(视频)
  17. vue开发微信公众号调用相机和相册(上传到自己的服务器)
  18. 恢复MySQL 表结构 和数据
  19. ubuntu下,python2与3共存问题及pip使用的解决
  20. 【纪中受难记】——Day15:今晚吃烧烤(最后吃了火锅)

热门文章

  1. 常用数据结构与经典算法 简单讲解与示例代码
  2. 酷狗音乐模仿还在继续
  3. 如何与其他用户共享SkyBell HD访问
  4. Maya---操作工具
  5. 语义分割(三)Unet++
  6. d作者d语言中组件式编程
  7. 如何看待家长培训课?
  8. 台式计算机经常使用的硬盘是什么尺寸,台式机硬盘和笔记本硬盘能通用吗?有什么区别?...
  9. JS判断浏览器版本(已解决IE11版本为Mozilla问题)
  10. 发送webService请求BPM流程