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

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

相关文章

MySQL 临时表与复制表操作全流程案例

《MySQL临时表与复制表操作全流程案例》本文介绍MySQL临时表与复制表的区别与使用,涵盖生命周期、存储机制、操作限制、创建方法及常见问题,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小... 目录一、mysql 临时表(一)核心特性拓展(二)操作全流程案例1. 复杂查询中的临时表应用2. 临时

MySQL 数据库表与查询操作实战案例

《MySQL数据库表与查询操作实战案例》本文将通过实际案例,详细介绍MySQL中数据库表的设计、数据插入以及常用的查询操作,帮助初学者快速上手,感兴趣的朋友跟随小编一起看看吧... 目录mysql 数据库表操作与查询实战案例项目一:产品相关数据库设计与创建一、数据库及表结构设计二、数据库与表的创建项目二:员

99%的人都选错了! 路由器WiFi双频合一还是分开好的专业解析与适用场景探讨

《99%的人都选错了!路由器WiFi双频合一还是分开好的专业解析与适用场景探讨》关于双频路由器的“双频合一”与“分开使用”两种模式,用户往往存在诸多疑问,本文将从多个维度深入探讨这两种模式的优缺点,... 在如今“没有WiFi就等于与世隔绝”的时代,越来越多家庭、办公室都开始配置双频无线路由器。但你有没有注

C#中的Drawing 类案例详解

《C#中的Drawing类案例详解》文章解析WPF与WinForms的Drawing类差异,涵盖命名空间、继承链、常用类及应用场景,通过案例展示如何创建带阴影圆角矩形按钮,强调WPF的轻量、可动画特... 目录一、Drawing 是什么?二、典型用法三、案例:画一个“带阴影的圆角矩形按钮”四、WinForm

深入解析Java NIO在高并发场景下的性能优化实践指南

《深入解析JavaNIO在高并发场景下的性能优化实践指南》随着互联网业务不断演进,对高并发、低延时网络服务的需求日益增长,本文将深入解析JavaNIO在高并发场景下的性能优化方法,希望对大家有所帮助... 目录简介一、技术背景与应用场景二、核心原理深入分析2.1 Selector多路复用2.2 Buffer

setsid 命令工作原理和使用案例介绍

《setsid命令工作原理和使用案例介绍》setsid命令在Linux中创建独立会话,使进程脱离终端运行,适用于守护进程和后台任务,通过重定向输出和确保权限,可有效管理长时间运行的进程,本文给大家介... 目录setsid 命令介绍和使用案例基本介绍基本语法主要特点命令参数使用案例1. 在后台运行命令2.

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

Java Stream流之GroupBy的用法及应用场景

《JavaStream流之GroupBy的用法及应用场景》本教程将详细介绍如何在Java中使用Stream流的groupby方法,包括基本用法和一些常见的实际应用场景,感兴趣的朋友一起看看吧... 目录Java Stream流之GroupBy的用法1. 前言2. 基础概念什么是 GroupBy?Stream

RabbitMQ消费端单线程与多线程案例讲解

《RabbitMQ消费端单线程与多线程案例讲解》文章解析RabbitMQ消费端单线程与多线程处理机制,说明concurrency控制消费者数量,max-concurrency控制最大线程数,prefe... 目录 一、基础概念详细解释:举个例子:✅ 单消费者 + 单线程消费❌ 单消费者 + 多线程消费❌ 多

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使