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

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

相关文章

vue监听属性watch的用法及使用场景详解

《vue监听属性watch的用法及使用场景详解》watch是vue中常用的监听器,它主要用于侦听数据的变化,在数据发生变化的时候执行一些操作,:本文主要介绍vue监听属性watch的用法及使用场景... 目录1. 监听属性 watch2. 常规用法3. 监听对象和route变化4. 使用场景附Watch 的

使用MapStruct实现Java对象映射的示例代码

《使用MapStruct实现Java对象映射的示例代码》本文主要介绍了使用MapStruct实现Java对象映射的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、什么是 MapStruct?二、实战演练:三步集成 MapStruct第一步:添加 Mave

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

Java 缓存框架 Caffeine 应用场景解析

《Java缓存框架Caffeine应用场景解析》文章介绍Caffeine作为高性能Java本地缓存框架,基于W-TinyLFU算法,支持异步加载、灵活过期策略、内存安全机制及统计监控,重点解析其... 目录一、Caffeine 简介1. 框架概述1.1 Caffeine的核心优势二、Caffeine 基础2

Java 中的 equals 和 hashCode 方法关系与正确重写实践案例

《Java中的equals和hashCode方法关系与正确重写实践案例》在Java中,equals和hashCode方法是Object类的核心方法,广泛用于对象比较和哈希集合(如HashMa... 目录一、背景与需求分析1.1 equals 和 hashCode 的背景1.2 需求分析1.3 技术挑战1.4

Java中实现对象的拷贝案例讲解

《Java中实现对象的拷贝案例讲解》Java对象拷贝分为浅拷贝(复制值及引用地址)和深拷贝(递归复制所有引用对象),常用方法包括Object.clone()、序列化及JSON转换,需处理循环引用问题,... 目录对象的拷贝简介浅拷贝和深拷贝浅拷贝深拷贝深拷贝和循环引用总结对象的拷贝简介对象的拷贝,把一个

Java中最全最基础的IO流概述和简介案例分析

《Java中最全最基础的IO流概述和简介案例分析》JavaIO流用于程序与外部设备的数据交互,分为字节流(InputStream/OutputStream)和字符流(Reader/Writer),处理... 目录IO流简介IO是什么应用场景IO流的分类流的超类类型字节文件流应用简介核心API文件输出流应用文

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3