标定系列二、9点标定以及5点圆心标定过程(代码详解)

简介: 标定系列二、9点标定以及5点圆心标定过程(代码详解)

一、九点标定过程

1.算法原理

       9点标定就是通过9个点计算出相机坐标系到机械手坐标系下的一个仿射变换,(实际上空间中的二维平面的仿射变换只需要3个点就足够了)。在实际应用过程中,需要获取像素下特征点的坐标和对应机械手的坐标。联立方程组求解即可得到对应仿射变换的矩阵,实际应用场景主要分为眼在手上和眼在手外,下面具体介绍使用过程:

(1)眼在手外

                   

     使用场景如图所示,该场景是一个上相机,9点标定经常是四轴机械臂或者是通过舵机搭建的X,Y两方向的运行机构与相机相互配合使用。无论是眼在手上还是眼在手外,目的都是获取对应像素点的坐标和机械手的坐标,然后通过数学计算,得到转换矩阵。

眼在手外获取机械手坐标的方式主要有两种:

第一种:1.准备一张A4纸,或者标定板也行

    ,  

 

获取图像中9个圆的圆心的像素位置,存储起来,点的存储顺序是Z字形。

2.在机械手上加装针尖,用针尖按Z字形顺序依次去戳每个圆的圆心,并以此记录每个机械手的坐标。

该种方法标定效果误差较大,因为针尖去戳圆心的过程是肉圆观察得到的,结果并不是很准确的。

第二种:1,机械手吸取物料固定。

             

在相机视野中能观察提取到Mark(特征)点,对于Mark点是物料上稳定的特征,容易获取,类似交点,圆心等等。

2.机械手带动物料按照右图方式依次运动,获取9个点的机械手坐标和像素坐标。

该标定方法效果准确,但是需要注意的两点,一个是标定视野范围一定大于机械手的工作范围,

其中红色为视野中标定的范围,黑色为机械手的在视野中的工作范围,否在超过标定范围的误差较大,而且难预测。

                                                 

另外,在标定过程中,实际的工作面高度和标定高度尽量一致,因为除了圆心镜头,我们使用的工业相机会随着高度变化,X,Y的坐标也会有误差。

(2)眼在手上

                     

该种标定方式是机械手和相机不发生相对变化,让物料固定不动,相机依次去拍物料,获取Mark点的特征和对应机械手的坐标,存储起来。

2.代码介绍

*计算仿射变换矩阵
*机械手9点坐标X,Y数组
Rx=[] 
Ry=[]
*像素坐标的x,y数组
px=[]
py=[]
vector_to_hom_mat2d (px, py, Rx, Ry, HomMat2D)
*计算仿射变换矩阵的RMS
affine_trans_point_hommat2d(HomMat2D,px,py,Rx_t,Ry_t)
其中Rx_t,Ry_t为仿射变换后对应计算出的机械手坐标。
Rx, Ry为实际标定时机械手的坐标,计算出距离偏差。
distance_pp(Rx,Ry,Rx_t,Ry_t,distance)
其中distance存储9点的坐标偏差
tuple_mult(distance,distance,data1)
tuple_sum(data1,data_end)
tuple_sqrt(data_end,RMS)

二、五点旋转中心标定过程

1.算法原理

    在标定旋转中心之前应该理解为什么要标定旋转中心,通过上文可以对9点标定有个大概的理解,9点标定其实就是点与点的映射关系。当我们的旋转中心,吸嘴,特征点在一致的时候,我们可以想象成各点都是绕着特征点旋转,此时则无需标定旋转中心如下图所示:

           

但实际应用中,吸嘴和旋转中心并不一致,伴随着旋转中心转动,特征点也会移动,此时机械手的坐标并未发生并未发生变换,如果仍使用点点映射求出对应机械手坐标是错误,正确的方法是先绕旋转中心回正,在计算特征点对应的坐标。

 

标定旋转中心的方法:

机械手固定物料,在相机下依次转动5个角度,获取5个位置特征点的像素坐标,通过拟合圆心,求出圆心对应的像素坐标,在通过映射关系得到圆心对应机械手的坐标。

                                             

2.代码介绍

*将5个点对应像素坐标生成多线条轮廓
gen_contour_polygon_xld
*将轮廓进行拟合生成圆,求出对应圆心坐标
fit_circle_contour_xld

 

 

 

相关文章
|
6月前
标定系列三、9点标定实际应用场景分析
标定系列三、9点标定实际应用场景分析
178 0
|
6月前
|
存储 计算机视觉 流计算
【OpenCV】计算视频的光流并跟踪物体calcOpticalFlowPyrLK
【OpenCV】计算视频的光流并跟踪物体calcOpticalFlowPyrLK
254 0
|
6月前
|
编解码 机器人
标定系列一、手眼标定基础介绍
标定系列一、手眼标定基础介绍
187 0
|
传感器
使用校准相机测量平面物体
使用校准相机测量平面物体。
146 0
|
6月前
|
算法
[Halcon&标定] 相机自标定
[Halcon&标定] 相机自标定
158 1
|
6月前
|
文字识别 Python
Halcon 学习笔记五:几何定位+仿射变换+测量
Halcon 学习笔记五:几何定位+仿射变换+测量
610 0
|
6月前
Halcon&测量] 模糊测量
Halcon&测量] 模糊测量
136 0
|
6月前
[Halcon&测量] 两线直线的角度测量
[Halcon&测量] 两线直线的角度测量
150 0
|
机器学习/深度学习 传感器 算法
【图像误差测量】测量 2 张图像之间的差异,并测量图像质量(Matlab代码实现)
【图像误差测量】测量 2 张图像之间的差异,并测量图像质量(Matlab代码实现)
|
机器学习/深度学习 传感器 算法
垂直腔表面发射激光器极化噪声的建模与分析论文复现
垂直腔表面发射激光器极化噪声的建模与分析论文复现