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

这篇具有很好参考价值的文章主要介绍了标定系列二、9点标定以及5点圆心标定过程(代码详解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、九点标定过程

1.算法原理

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

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

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

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

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

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

 文章来源地址https://www.toymoban.com/news/detail-440817.html

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

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

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

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

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

 在相机视野中能观察提取到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

 

 

 

到了这里,关于标定系列二、9点标定以及5点圆心标定过程(代码详解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深度学习网络模型 MobileNet系列MobileNet V1、MobileNet V2、MobileNet V3网络详解以及pytorch代码复现

    DW与PW计算量 普通卷积计算量 计算量对比 因此理论上普通卷积是DW+PW卷积的8到9倍 Residual blok与Inverted residual block对比: Residual blok :先采用1 x 1的卷积核来对特征矩阵进行压缩,减少输入特征矩阵的channel,再通过3 x 3的卷积核进行特征处理,再采用1 x 1的卷积核来扩充channel维

    2024年02月01日
    浏览(44)
  • 如何在echarts的3d地球上以任意一个坐标点为圆心画一个标准的圆形(附代码)

    这是我用echarts做前端开发遇到的问题,似乎echarts没有提供在3d地球坐标面上画圆的方法。  而我的需求是要在地球上画出一个卫星通信的覆盖范围的圆形区域。  (效果展示) 最开始的时候我用网上的公式将经纬度乘系数转化为千米之后直接计算采样半径,然后在圆周中采

    2024年02月03日
    浏览(37)
  • 手眼标定,9点标定过程及其运算

    在工业领域常常会遇到将相机安装在机器手中,由相机快速引导机器手进行工作的方式。其中9点标定的作用是将图像的坐标转化为机器手的坐标。 不同标定文件的区别:不同标定的区别在于:图像坐标系与机器人坐标系是否匹配,单像素精度是否匹配。影响单像素精度是,

    2023年04月24日
    浏览(38)
  • 【MySQL系列】- Select查询SQL执行过程详解

    一条SQL语句从发送到数据并返回结果,主要经历以下几个过程: 连接器 : 查询缓存 :如果开启了查询缓存,则会经过这一步,但是大多数情况下都不是开启的,也不建议开启;MySQL8.0之后也删除了这一块功能。 分析器 : 优化器 执行器 2.1. 连接器 如果想对MySQL进行操作,第

    2024年02月08日
    浏览(58)
  • TCP,SSL以及HTTPS的连接建立过程详解

    可以参考B站的一个视频,把TLS/SSL的连接建立过程降解的非常透彻。配合这篇博客食用更佳。一遍不懂请多看几遍,很有用! 1 说明 1.1 对称加密的和非对称加密 在数字加密算法中,通过可划分为对称加密和非对称加密。 什么是对称加密? 在对称加密算法中,加密和解密使用

    2024年04月09日
    浏览(74)
  • 玩转Mysql系列 - 第17篇:存储过程&自定义函数详解

    这是Mysql系列第17篇。 环境:mysql5.7.25,cmd命令中进行演示。 代码中被[]包含的表示可选,|符号分开的表示可选其一。 需求背景介绍 线上程序有时候出现问题导致数据错误的时候,如果比较紧急,我们可以写一个存储来快速修复这块的数据,然后再去修复程序,这种方式我们

    2024年02月09日
    浏览(46)
  • OpenCV相机标定全过程

    一、OpenCV标定的几个常用函数 findChessboardCorners() 棋盘格角点检测 第一个参数是输入的棋盘格图像(可以是8位单通道或三通道图像); 第二个参数是棋盘格内部的角点的行列数(注意:不是棋盘格的行列数,如棋盘格的行列数分别为4、8,而内部角点的行列数分别是3、7,因

    2024年02月04日
    浏览(48)
  • 【计算机视觉】YOLOv8的测试以及训练过程(含源代码)

    YOLOv8是来自Ultralytics的最新的基于YOLO的对象检测模型系列,提供最先进的性能。 利用以前的 YOLO 版本,YOLOv8模型更快、更准确,同时为训练模型提供统一框架,以执行: 物体检测 实例分割 图像分类 Ultralytics为YOLO模型发布了一个全新的存储库。它被构建为 用于训练对象检测

    2024年02月13日
    浏览(44)
  • Matlab相机标定方法及主要参数含义,坐标变换过程

    网上有很多关于matlab相机标定的资料,但找了很久没有相应的参数说明:怎样利用获得参数从世界坐标系变换到图像坐标系,所以这里为了记录一下,也方便新人理解。 首先由图像到参数的获取部分在网上有很多资料,也很容易,在这就不再赘述,我利用的标定板的格子大小

    2024年02月05日
    浏览(45)
  • 学习Kalibr工具---Camera与IMU联合标定过程

    以双目+IMU为例进行介绍相机和IMU 的联合标定,也叫多传感器融合; 录制含有标定板图像的bag包,注意需要不断移动标定板。 运行Kalibr工具箱中 多相机标定 节点程序。 我们使用的最终命令 参考链接:https://github.com/ethz-asl/kalibr/wiki/camera-imu-calibration (一) 标定的输入文件包括

    2024年02月08日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包