上下相机对位,上下贴合,上下相机映射对位场景案例

2023-10-30 14:37

本文主要是介绍上下相机对位,上下贴合,上下相机映射对位场景案例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  1. 场景描述
    适用场景:上下相机映射对位场景,机械手在固定上料位置取料,然后放置到料盘内/贴合
    到目标位置;当上料与料盘位置都会出现偏差时可采用上下相机映射对位。
    在这里插入图片描述
    案例场景目标:
    位置目标:将图 1 中物料的 Point 点贴合到图 2 中料盘的 Point2 点;
    姿态目标:将图 1 中物料的 Line 边和图 2 中的 Line2 边对齐。
    在这里插入图片描述
    限制条件:该应用对机构有一定限制,需确保机构的 XYR 一体,上相机安装在 R 轴上(可随 XY 一起平移,随 R 轴一起旋转)或相机静止;下相机静止安装。
  2. 定位引导视觉流程
    整个应用分为标定、示教和生产三部分,需依次进行。
    2.1 标定(步骤一)
    标定目的:本场景涉及到两个相机坐标系和一个机构坐标系,为了统一坐标系需做两次坐标
    系标定,将坐标系统一到机构坐标系。
    标定方式:
    1)下相机做十二点标定:工具中心与旋转中心(一般为法兰中心)共轴的定位引导场景,可采
    用九点标定;工具中心与旋转中心不共轴,此时可采用十二点标定;
    2)上相机和下相机做映射标定:有标定板可用标定板映射,无标定板可用物料做相机映射;
    下相机十二点标定示意图如下:
    在这里插入图片描述
    上下相机映射标定示意图如下:提取四组一一对应的特征点
    在这里插入图片描述
    2.1.1 搭建下相机标定流程
    在这里插入图片描述
    1)图像特征点提取
    高精度模板匹配:粗定位;
    边缘交点:精定位,获取图像点和角度信息。
    在这里插入图片描述
    2)物理坐标获取
    可使用接收数据和协议解析,解析出通信发送的机械手实时物理坐标。
    3)平移旋转标定模块
    标定基本参数设置如图所示:
    在这里插入图片描述
    标定类型:共轴选择平移标定;不共轴选择平移旋转标定;
    相机模式:根据实际场景选择,自由度建议使用默认选项第二个自由度(缩放、旋转、纵横
    比、倾斜以及平移);
    平移次数默认 9 次;旋转次数十二点标定可设为 3。
    2.1.2 创建通信触发
    可在通信管理添加通信设备,全局触发建立触发事件,实现 PLC 通信触发视觉流程;详细协议需与 PLC 工程师协商。
    在这里插入图片描述
    2.1.3 下相机平移旋转标定流程
    1)标定的操作步骤:
    [1]. 机械手吸取标定片或物料移动至下相机视野内。
    [2]. 机构带着相机按 Z 字形等间距平移 9 次,平移中保持角度固定;每移动到位一次,需
    通讯发送物理坐标(如:C1,5,5,0)给视觉流程并触发标定流程拍照。
    [3]. 回到中心点(一般为标定第五点,第十一点和第五点重合),机构带着相机顺/逆时针
    旋转 3 次,旋转过程中机械手 XY 坐标保持固定。
    整体标定轨迹如下图所示:
    在这里插入图片描述
    2)标定结果查看(出现异常需重新标定)
    标定轨迹:如图所示为标定轨迹,轨迹是否存在波动(建议等步长,方便通过轨迹排查特征提取是否正确)。
    在这里插入图片描述
    标定状态:标定状态 1 表示成功,0 表示失败需重新标定。
    平移像素平均误差和旋转像素平均误差:根据实际精度要求判断,一般建议在一个像素以内。
    角度旋转一致性:表示图像坐标系与机械手坐标系的旋转一致性,1 表示旋转一致,-1 表示旋转方向相反,需旋转机构查看旋转一致性是否判断准确,若判断错误需调整参数重新标定。
    3)标定状态检测正常则生成标定文件。
    2.1.4 上下相机映射标定流程
    上下相机映射标定步骤:
  1. 放置标定物料于上相机视野内:物料要求上下相机拍摄不同面时能同时拍摄到至少四个不共线的特征点;
    在这里插入图片描述
  2. 上相机在拍照位拍照;
  3. 移动机械手抓取物料,记录此时的物理坐标(为示教物理点);
  4. 抓取物料平移到下相机视野内,下相机拍照;
  5. 搭建上下相机映射标定流程:
    流程如图所示,左右分别为上下相机采集的一一对应的图像特征点,用相机映射模块得到两个相机的映射矩阵。
    在这里插入图片描述
  6. 生成映射标定文件。
    2.2 示教(步骤二)
    示教目的:通过示教建立目标检测物的基准像素坐标和物理坐标之间的关系。记录映射标定时吸取物料时的物理坐标(示教物理点),填入单点映射对位模块。
    在这里插入图片描述
    2.3 生产(步骤三)
    2.3.1 下相机拍照流程
    1)下相机拍照流程如图所示
    在这里插入图片描述
    2)将下相机提取的对象特征点和直线角度传给全局变量以便上相机位使用。
    2.3.2 上相机拍照流程
    1)上相机拍照位确认
    上相机拍照位坐标最好与标定第五点拍照位一致,可产生 X/Y 偏移,但拍照姿态(相机旋转角度)必须保持不变。
    上相机拍照位与标定时的工作距离必须保持不变。
    2)上相机拍照方案搭建:如图所示为上相机拍照流程,生产时需保证上相机提取的对象特征点与下相机提取的目标图像特征点一致,直线查找方向一致。
    在这里插入图片描述
    3)单点映射对位模块配置:对象像素点订阅下相机传送到全局变量的特征点;目标像素点订阅上相机提取的特征点;目标直线起点终点订阅上相机提取的直线起点终点,加载上下相机标定的标定文件。
    在这里插入图片描述
    2.3.3 实际生产流程
    1)机械手抓取物料移动到下相机拍照位,触发下相机拍照流程;
    2)机械手移动到上相机拍照位,触发上相机拍照流程:单点映射对位模块结果分为相对坐标及绝对坐标,绝对坐标则为机构抓取的位置。使用格式化模块订阅单点映射对位模块输出的坐标值,然后使用发送数据模块将结果发送给机械手,机械手按照绝对坐标可实现引导定位。
    在这里插入图片描述

这篇关于上下相机对位,上下贴合,上下相机映射对位场景案例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/308587

相关文章

JavaScript中的isTrusted属性及其应用场景详解

《JavaScript中的isTrusted属性及其应用场景详解》在现代Web开发中,JavaScript是构建交互式应用的核心语言,随着前端技术的不断发展,开发者需要处理越来越多的复杂场景,例如事件... 目录引言一、问题背景二、isTrusted 属性的来源与作用1. isTrusted 的定义2. 为

SpringBoot实现动态插拔的AOP的完整案例

《SpringBoot实现动态插拔的AOP的完整案例》在现代软件开发中,面向切面编程(AOP)是一种非常重要的技术,能够有效实现日志记录、安全控制、性能监控等横切关注点的分离,在传统的AOP实现中,切... 目录引言一、AOP 概述1.1 什么是 AOP1.2 AOP 的典型应用场景1.3 为什么需要动态插

Python调用另一个py文件并传递参数常见的方法及其应用场景

《Python调用另一个py文件并传递参数常见的方法及其应用场景》:本文主要介绍在Python中调用另一个py文件并传递参数的几种常见方法,包括使用import语句、exec函数、subproce... 目录前言1. 使用import语句1.1 基本用法1.2 导入特定函数1.3 处理文件路径2. 使用ex

Linux alias的三种使用场景方式

《Linuxalias的三种使用场景方式》文章介绍了Linux中`alias`命令的三种使用场景:临时别名、用户级别别名和系统级别别名,临时别名仅在当前终端有效,用户级别别名在当前用户下所有终端有效... 目录linux alias三种使用场景一次性适用于当前用户全局生效,所有用户都可调用删除总结Linux

Mysql虚拟列的使用场景

《Mysql虚拟列的使用场景》MySQL虚拟列是一种在查询时动态生成的特殊列,它不占用存储空间,可以提高查询效率和数据处理便利性,本文给大家介绍Mysql虚拟列的相关知识,感兴趣的朋友一起看看吧... 目录1. 介绍mysql虚拟列1.1 定义和作用1.2 虚拟列与普通列的区别2. MySQL虚拟列的类型2

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

MySQL不使用子查询的原因及优化案例

《MySQL不使用子查询的原因及优化案例》对于mysql,不推荐使用子查询,效率太差,执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,本文给大家... 目录不推荐使用子查询和JOIN的原因解决方案优化案例案例1:查询所有有库存的商品信息案例2:使用EX

java中VO PO DTO POJO BO DO对象的应用场景及使用方式

《java中VOPODTOPOJOBODO对象的应用场景及使用方式》文章介绍了Java开发中常用的几种对象类型及其应用场景,包括VO、PO、DTO、POJO、BO和DO等,并通过示例说明了它... 目录Java中VO PO DTO POJO BO DO对象的应用VO (View Object) - 视图对象