前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【手眼标定篇】九点标定

【手眼标定篇】九点标定

作者头像
threeQing
发布2021-06-15 16:13:20
12.8K0
发布2021-06-15 16:13:20
举报

“葵花点穴手”

4点法、9点法、N点法都可以将图像坐标与机械手坐标联系起来。综合考虑调试难度、标定精度等因素,9点法标定是工业上使用广泛的二维手眼标定,常用于从固定平面抓取对象进行装配等工业应用场景。


1 引子

先来回顾下单相机标定

将图像坐标系与物理坐标系联系起来

那么再加个机械手就是需要手眼标定

将图像坐标系与机械手的空间坐标系联系起来

相机固定 eye to hand

绿色已知关系

红色未知关系

需要的是base与cam的空间位置关系

相机固定再机械手臂上 eye in hand

绿色已知关系

红色未知关系

需要的是base与tool的空间位置关系

2 相关坐标系

手眼标定的熟练使用必须理解所涉及到的各个坐标系。

图像坐标系

相机坐标系

标定板坐标系

工具坐标系

机械手基础坐标系

3 标定原理

通常眼在手上,相机拍照与标定的位置时一样的,那么眼在手上和手眼分离的标定过程都是一样的。

其主要原理为:如果我们有一个点变换之前是[x,y,1],变换后是[x’,y’,1] 则转换关系表示如下:

TX=Y

展开后表示

如果我们想求这【a-f】 6个变量需要有6个方程,也就是3组点。但是比三个点多呢? 比如:20个点。那就是用最小方差。

3 标定步骤

  1. 准备一块标定板。如果条件不足,可以使用白纸画上九个圆进行代替。
  1. 相机位置,机械手位置全部固定好,标定针固定在机械手上,固定好后不能够再移动。标定针的位置一定要与夹手或吸盘之内的工具同一位置高度。
  2. 将标定板放到相机下方,位置区域要与机械手工作的区域一样,包括高度必须尽量一致,这是标定准确度的关键。
  3. 调整好相机焦距,拍照,然后识别9个圆圆心的坐标并进行记录。
  4. 将机械手依次移动到9个圆的圆心位置,记下机械手坐标

4 Halcon实现

代码语言:javascript
复制
***标定***
*前面求出图像坐标
area_center(SortedRegions,Area,Row,Column) %
Column_robot := [275,225,170,280,230,180,295,240,190]
*机器人末端运动到9点的列坐标
Row_robot := [55,50,45,5,0,-5,-50,-50,-50]
*机器人末端运动到9点的行坐标
vector_to_hom_mat2d(Row,Column,Row_robot,Column_robot,HomMat2D)
*求解变换矩阵,HomMat2D是图像坐标和机械手坐标之间的关系

***求解***
affine_trans_point_2d(HomMat2D,Row2,Column2,Qx,Qy)
*由像素坐标和标定矩阵求出机器人基础坐标系中的坐标

5 改进点

一般项目没什么特殊要求,可以按照以上9点法走一遍即可。由于标定过程中基本上所有用到的模型都只是近似模型,再结合现场应用的具体情况,所以,上面说的每一步,都有改进空间。

ex1.手动戳点可以改为自动记录:相机移动一次拍照一次,记录机械手当前的拍照位置,循环往复,计算转换矩阵。

ex2.利用机械手重复定位精度弥补绝对定位精度:相机中心点与mark中心点之差作为递归条件,直到二者重合,记录当前机械手坐标位置,可以准确的构建工件坐标系。



本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器视觉那些事儿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档