openpnp - Too many misdetects - retry and verify fiducial/nozzle tip detection
文章目录
- openpnp - Too many misdetects - retry and verify fiducial/nozzle tip detection
- 概述
- 笔记
- 环境光最好弱一些
- 在设备标定时,吸嘴上不要装绿色屏蔽片
- 如果吸嘴不在底部相机中间,先检查设置底部相机坐标
- 调整底部相机坐标
- 吸嘴校验的细节
- 底部相机坐标不对的原因
- 底部相机灯光要聚焦到PCB高度的位置
- END
openpnp - Too many misdetects - retry and verify fiducial/nozzle tip detection
概述
换了新X轴丝杠,重新标定了一次设备。
在底部相机高级校正时,报错如下:

根据提示,重新设定了底部相机坐标,重新校正了吸嘴NT1, NT2, 再进行底部相机高级校正就通过了。
应该和这个报错的调整不止一个,将相关的问题原因都记录一下。
对java不熟,没有去看源码单步调试。只是从问题现象上猜测可能的问题原因,能想到的可能相关的问题原因就不止一个了。
笔记
环境光最好弱一些
openpnp用的都是视觉识别(opencv),报错时,都是视觉识别报错。
当环境光比较强时(e.g. 白天,外面阳光挺好,没有拉窗帘),设备上开了底部相机灯光。
这时,曝光的参数可能随着环境光的不同(从上午墨迹到下午),有不同的效果。
这时进行设备标定,失败的概率大一些(主要是进行底部相机高级校正时)。
如果是白天进行设备标定,最好是将窗帘拉上,屋子里面暗一些较好。
此时,如果设置了openpnp的视觉参数(e.g. 相机曝光),设置的效果不会因为环境光的改变而改变。
在设备标定时,吸嘴上不要装绿色屏蔽片
当初发现底部相机识别元件时,吸嘴上方的28电机安装螺丝孔会影响图像识别。
于是定制了绿色屏蔽片(因为吸嘴就是绿色的,加绿色屏蔽片,背景会干净一些),尺寸(绿色不透明塑料圆片,中心有孔,外38mm,内10mm, 厚度2mm), 到手后,将塑料膜撕掉,用砂纸打磨了一下,防止反光。

但是这东西在设备校验过程中,离吸嘴比较近,在底部相机灯光的照射下,还是有点反光(在底部相机中心时,不怎么反光,在校验过程中,离开底部相机中心远一点时,绿片的外环有点反光,不知道是否影响底部相机高级校正的过程?)。
后来我将吸嘴上的绿色屏蔽片拿掉,再结合其他几点调整,标定过了。
不确定是不是加了绿色屏蔽片引起的问题,反正设备标定时,最好吸嘴不要戴上绿色屏蔽片。
等进入正常贴片流程时,用绿色屏蔽片应该是管用的,元件识别的背景都是绿色,背景会干净很多。
如果吸嘴不在底部相机中间,先检查设置底部相机坐标
底部相机校验吸嘴时的位置,都是PCB的高度。
先将吸嘴自动走到底部相机中心。


当校验吸嘴时,先将吸嘴定位到底部相机中心,如果看到吸嘴落到底后(PCB高度),如果吸嘴不在底板相机中心(不要求吸嘴正好在底部相机十字中心,至少底部相机十字要在吸嘴内壁的黑洞的圆形区域内),否则吸嘴校验大概率过不了。
调整底部相机坐标
将吸嘴的C1/C2角度归零
将吸嘴移动到底部相机十字上

学习记录当前吸嘴的位置。

然后就可以进行吸嘴的校验了,吸嘴一般都能校验通过。
吸嘴校验的细节

有时吸嘴校验不过去,这时要检查调整参数。
先确定"offset Threshold", 这个值默认是0.5,如果吸嘴校验失败,可以设置的大一些试试.e.g. 0.6, 0.7, 0.8
"Vision Diameter"是要识别的吸嘴内壁直径,可以按照实际尺寸调整一下。如果N1,N2上的吸嘴的归零位置不同,那么落在PCB位置的Z坐标也可能不同。这时,即使是2个同样型号的吸嘴(e.g. 都是503)装在N1,N2上,这里的尺寸也有差异。
“Vision Diameter"在设备标定时,是用向导提供的圆圈选择器选的像素值间接设置的这里的值。
如果单独调整"Vision Diameter”,要根据吸嘴内壁的实际尺寸调整一下实际的mm数值。
最终参数是否设置的合适,要拿此吸嘴的视觉管道编辑器看一下,如果识别到了吸嘴内壁,那就是OK的。


如果吸嘴的视觉管道编辑器看一下,如果识别到了吸嘴内壁。但是吸嘴校验不过,那就是底部相机坐标不对,没其他原因了(暂时是这么认理解的)。
底部相机坐标不对的原因
我只发现一个原因,都是在设备标定中才出现此问题,只能怀疑是openpnp的bug.
正常使用中,如果吸嘴都是正常同心度(质量由厂家保证,设备贴头没有发生过撞刀),底部相机位置自己没换过(e.g. 换底部相机灯光引起的底部相机重新安装),没有发生过底部相机坐标不对的情况。
底部相机灯光要聚焦到PCB高度的位置
每个人的设备都不同,底部相机灯光市面上卖的产品,都是固定角度的(e.g. 0度,10度,45度,90度),如果直接买来,装在自己设备上不一定合适, 必须要合理的设计(由机械结构保证灯光聚焦的点)。
设计原则: 吸嘴落在底部相机中心上方的高度和PCB高度一致,此时,底部相机灯光要聚焦在吸嘴上才行。调整底部相机焦距,使吸嘴成为焦点目标。此时,只有吸嘴最清晰,其他元素(包括吸嘴座都是虚化的)。这时,如果底部相机聚焦在吸嘴上,会使吸嘴内壁看的更清晰,也会使吸嘴的外环颜色和吸嘴内壁的差别更大,更利于视觉识别。
受限于已有机械结构,我做了一个钣金件,4面贴上COB灯带, 使光线角度大致为75~80度,照向吸嘴。

底部相机高级矫正时,吸嘴会在底部相机可视区域内来回活动。如果吸嘴落到相机灯光的机械结构高度内, 需要自己测试估算一下,不要让吸嘴的移动范围和灯光的机械结构发生碰撞。大概给吸嘴留的校验活动空间为5倍的吸嘴安装圆柱的正方形区域(e.g. 吸嘴圆柱直径是15mm, 那么留给吸嘴的活动范围应该为15x(1 + 2 + 2) = 75mm, 也就是给吸嘴留一个75mm x 75mm的空间就行, 这样即使是吸嘴扎到了底部相机灯光机械结构的高度内部,也不会在底部相机高级校验过程中发生撞刀的事故)。
END
相关文章:
openpnp - Too many misdetects - retry and verify fiducial/nozzle tip detection
文章目录 openpnp - Too many misdetects - retry and verify fiducial/nozzle tip detection概述笔记环境光最好弱一些在设备标定时,吸嘴上不要装绿色屏蔽片如果吸嘴不在底部相机中间,先检查设置底部相机坐标调整底部相机坐标 吸嘴校验的细节底部相机坐…...
不与最大数相同的数字之和
不与最大数相同的数字之和 C语言代码C 语言代码Java语言代码Python语言代码 💐The Begin💐点点关注,收藏不迷路💐 输出一个整数数列中不与最大数相同的数字之和。 输入 输入分为两行: 第一行为N(N为接下来数的个数&…...
CSS学习记录11
CSS布局 - display属性 display属性是用于控制布局的最终要的CSS属性。display 属性规定是否/如何显示元素。每个HTML元素都有一个默认的display值,具体取决于它的元素类型。大多数元素的默认display值为block 或 inline。 块级元素(block element&…...
D95【python 接口自动化学习】- pytest进阶之fixture用法
day95 pytest的fixture详解(二) 学习日期:20241210 学习目标:pytest基础用法 -- pytest的fixture详解(二) 学习笔记: fixture(autouseTrue) func的autouse是TRUE时,所有函数方法…...
Abaqus断层扫描三维重建插件CT2Model 3D V1.1版本更新
更新说明 Abaqus AbyssFish CT2Model3D V1.1版本更新新增对TIF、TIFF图像文件格式的支持。本插件用户可免费获取升级服务。 插件介绍 插件说明: Abaqus基于CT断层扫描的三维重建插件CT2Model 3D 应用案例: ABAQUS基于CT断层扫描的细观混凝土三维重建…...
隐式对象和泛型
implicit object 作用: case class DatabaseConfig(driver:String,url:String)//作为函数的隐士参数的默认值implicit object MySqlDefault extends DatabaseConfig("mysql","localhost:443")def getConn(implicit config: DatabaseConfig):Uni…...
CSS的颜色表示方式
以下介绍几种常见的CSS颜色表示方式: 颜色名称 html和css规范中定义了147种可用的颜色名用的相对较少 16进制表示 css三原色:红、绿、蓝16进制的颜色值: #rrggbb16进制整数规定颜色成分,所有的值均介于 00 - ff 之间ÿ…...
单链表常见面试题 —— LeetCode
一.删除链表中与val相等的所有节点 1.题目描述 ----- 203. 移除链表元素 - 力扣(LeetCode) 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 列表中的节点数目在范…...
Pydantic中的discriminator:优雅地处理联合类型详解
Pydantic中的discriminator:优雅地处理联合类型详解 引言1. 什么是discriminator?2. 基本使用示例3. discriminator的工作原理4. 更复杂的实际应用场景5. 使用建议6. 潜在陷阱和注意事项结论最佳实践 引言 在Python的类型系统中,有时我们需要…...
pgloader SQLSERVER -> PostgreSQL 配置文件样例
pgloader 是什么?安装和基本用户法可以去其他同道的blog上去看,这里不占用网络空间了。刚开始用官方的文档读起还是很费劲的,所以把常用的配置例子放在这里。 官方文档:https://pgloader.readthedocs.io/en/latest/index.html 迁…...
APP、小程序对接聚合广告平台,有哪些广告变现策略?
开发者对接聚合广告平台,可以让自身流量价值最大化,获得更多的广告曝光机会,对接单一的广告联盟容易造成广告填充不足,收益不稳定的问题。#APP广告变现# APP开发者根据应用的生命周期、用户特征和产品定位,选择最适合…...
HarmonyOs DevEco Studio小技巧39-模拟器的使用
使用环境 模拟器在本地计算机上创建和运行,在运行和调试应用/元服务时可以保持良好的流畅性和稳定性,但是需要耗费一定的计算机资源,具体的运行环境要求为: 系统类型 运行环境要求 Windows(X86) Windows 10 企业版、专业版或教…...
【C语言】浮点数的原理、整型如何转换成浮点数
众所周知C语言中浮点数占四个字节,无论在32位或者64位机器上。不免会发出疑问四个字节是怎么计算出小数的呢?其实物理存放还是按照整型存放的。 IEEE 754 单精度浮点数格式 浮点数在计算机中是使用 IEEE 754 标准进行表示的。在 IEEE 754 标准中&#…...
TesseractOCR-GUI:基于WPF/C#构建TesseractOCR简单易用的用户界面
前言 前篇文章使用Tesseract进行图片文字识别介绍了如何安装TesseractOCR与TesseractOCR的命令行使用。但在日常使用过程中,命令行使用还是不太方便的,因此今天介绍一下如何使用WPF/C#构建TesseractOCR简单易用的用户界面。 普通用户使用 参照上一篇教…...
Elasticsearch高性能实践
前言 本方案主要从运维层面分析es是实际生产使用过程中的参数优化,深入理解es各个名词及含义,深入分析es的使用过程中应注意的点,详细解释参数设置的原因以及目的,主要包括系统层面,参数层面。除此之外,优…...
软件测试--录制与回放脚本
准备工作 安装phpstudy 配置两个内容 放demo44文件夹 在浏览器输入http://localhost/demo44/index.html,出现如图所示的网站 输入用户名和密码 步骤一:打开Virtual User Generator,点击新建,点击new 步骤二:点击如下…...
nodejs 06.npm的使用以及package.json详解
一.npm(npm | Home)的介绍 npm(Node Package Manager)是一个node.js的包管理工具,允许用户下载安装更新分享node.js包 二.npm相关命令以及作用 1.npm init -y 这条命令主要是当项目中没有package.json这个文件的时候生成package.json这个文件 2.npm i / npm install (包名) 这条…...
如何使用WinCC DataMonitor基于Web发布浏览Excel报表文档
本文介绍使用 WinCC DataMonitor 的 "Excel Workbooks" 功能,通过 Excel 表格显示 WinCC 项目的过程值、归档变量值和报警归档消息。并可以通过 Web 发布浏览访问数据 1.WinCC DataMonitor是什么 ? DataMonitor 是 SIMATIC WinCC 工厂智能中…...
颜色的基本处理
数码相机能够获取彩色图像,但相机的色彩处理是一个非常复杂的过程,是非常重要的。 此过程生产制造商在细节方面都是不公布的,但是基本的概念是相同的。当相机捕捉一个真实场景时,是怎么还原成人眼所看到的图像呢? 1.R…...
跟李笑来学美式俚语(Most Common American Idioms): Part 66
Most Common American Idioms: Part 66 前言 本文是学习李笑来的Most Common American Idioms这本书的学习笔记,自用。 Github仓库链接:https://github.com/xiaolai/most-common-american-idioms 使用方法: 直接下载下来(或者clone到本地…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
