“葵花点穴手”
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 标定步骤
4 Halcon实现
***标定***
*前面求出图像坐标
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中心点之差作为递归条件,直到二者重合,记录当前机械手坐标位置,可以准确的构建工件坐标系。