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

03-11 1197阅读 0评论

一、九点标定过程

1.算法原理

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

标定系列二、9点标定以及5点圆心标定过程(代码详解),标定系列二、9点标定以及5点圆心标定过程(代码详解),词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,我们,方法,第1张
(图片来源网络,侵删)

(1)眼在手外

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

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

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

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

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

标定系列二、9点标定以及5点圆心标定过程(代码详解),标定系列二、9点标定以及5点圆心标定过程(代码详解),词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,我们,方法,第5张
(图片来源网络,侵删)

 

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

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

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

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

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

标定系列二、9点标定以及5点圆心标定过程(代码详解),标定系列二、9点标定以及5点圆心标定过程(代码详解),词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,我们,方法,第8张
(图片来源网络,侵删)

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

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

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

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

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

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

(2)眼在手上

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

该种标定方式是机械手和相机不发生相对变化,让物料固定不动,相机依次去拍物料,获取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点标定其实就是点与点的映射关系。当我们的旋转中心,吸嘴,特征点在一致的时候,我们可以想象成各点都是绕着特征点旋转,此时则无需标定旋转中心如下图所示:

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

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

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

 

标定旋转中心的方法:

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

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

2.代码介绍

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

 

 

 


免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,1197人围观)

还没有评论,来说两句吧...

目录[+]