标定系列二、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

 

 

 

目录
打赏
0
0
0
0
7
分享
相关文章
|
9月前
标定系列三、9点标定实际应用场景分析
标定系列三、9点标定实际应用场景分析
239 0
机械臂手眼标定详解
这篇文章是关于机械臂手眼标定的详细教程,包括了使用ROS1 Noetic和Realsense D415相机在Ubuntu 20.04环境下进行标定的步骤和配置方法。
328 0
机械臂手眼标定详解
标定系列一、手眼标定基础介绍
标定系列一、手眼标定基础介绍
345 0
相机标定系列---opencv相关标定算子
相机标定系列---opencv相关标定算子
199 0
|
9月前
|
[Halcon&标定] 相机自标定
[Halcon&标定] 相机自标定
213 1
[Halcon&标定] 单相机标定
[Halcon&标定] 单相机标定
364 1
智慧交通day03-车道线检测实现02-2:张氏标定法+双目标定
该方法介于传统标定法和自标定法之间,既克服了传统标定法需要的高精度三维标定物的缺点,又解决了自标定法鲁棒性差的难题。标定过程不需要特殊的标定物,只需使用一张打印出来的棋盘格,并从不同方向拍摄几组图片即可,不仅实用灵活方便,而且精度很高,鲁棒性好。因此很快被全世界广泛采用,极大的促进了三维计算机视觉从实验室走向真实世界的进程。
407 0
激光雷达与视觉联合标定综述!(系统介绍/标定板选择/在线离线标定等)
由于2D识别的成功,论文引入了一个大型基准,称为OMNI3D,重新审视了3D目标检测的任务。OMNI3D对现有数据集进行了重新利用和组合,生成了234k张图像,标注了300多万个实例和97个类别。由于相机内参的变化以及场景和目标类型的丰富多样性,这种规模的3D检测具有挑战性。论文提出了一个名为Cube R-CNN的模型,旨在通过统一的方法在摄像机和场景类型之间进行泛化。结果表明,在更大的OMNI3D和现有基准上,Cube R-CNN优于先前的工作。最后,论文证明了OMNI3D是一个强大的3D目标识别数据集,表明它提高了单个数据集的性能,并可以通过预训练加速对新的较小数据集的学习。
激光雷达与视觉联合标定综述!(系统介绍/标定板选择/在线离线标定等)
相机和livox激光雷达外参标定:在gazebo中搭建仿真场景
前两篇介绍了相机和livox激光雷达外参标定:ROS功能包的livox_camera_lidar_calibration 和使用方法. 具体链接: - [链接1](https://www.guyuehome.com/38522) - [链接2](https://www.guyuehome.com/38524) 本篇在gazebo中搭建可以模拟产生livox_camera_lidar_calibration功能包需要的数据的仿真场景.
相机和livox激光雷达外参标定:在gazebo中搭建仿真场景

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等