openpnp - 底部相机高级校正的参数设置

文章目录

    • openpnp - 底部相机高级校正的参数设置
    • 概述
    • 笔记
    • 修改 “Radial Lines Per Calibration Z” 的方法
    • 不同 “Radial Lines Per Calibration Z”的校验结果
    • 不同 “Radial Lines Per Calibration Z”的设备校验动作的比较
    • 总结
    • 备注
    • END

openpnp - 底部相机高级校正的参数设置

概述

将X轴丝杠的平行度调整了(openpnp - 丝杠安装调整的总结).
这次X轴的调整后的平行度(X轴丝杠和轴导轨),用起来丝滑,从左到右,力道一致,洁癖患者表示满意和开心。

因为设备的机械部分被动了,所以设备必须重新标定。
我用的自己修改的版本(主要是修改了西门子飞达的通讯超时问题(openpnp - SlotSchultzFeeder source code bugfix))
在这里插入图片描述

走到最后一步,进行底部相机高级校正,过不去。
主要是如下参数设置的不合适,主要影响校验是否能通过的参数为"Radial Lines Per Calibration Z(Z方向校验时的径向线数量)"
在这里插入图片描述
“Radial Lines Per Calibration Z” 默认是32.
当相机是官方推荐的100W的摄像头时,这个值为32是没问题的。openpnp的研发估计也是按照默认值来测试的.
当摄像头是更高像素时(e.g. 我现在用的是1600W像素/2320x1744/30FPS/MJPG的摄像头),这个参数为32就无法通过底部相机高级校验。
当“Radial Lines Per Calibration Z” 默认是32,报错提示说,校验结果重合度比预期值差的太多,需要将 “Radial Lines Per Calibration Z” 的值设置的更大些再试试。具体要设置大到哪里,提示中没说。

笔记

修改 “Radial Lines Per Calibration Z” 的方法

在这里插入图片描述
找到底部相机参数页
切到高级校正页
先勾选第一行的 "Enable"复选框,这样,下面的“Radial Lines Per Calibration Z”就可以改了。
改好“Radial Lines Per Calibration Z”值后,再去掉第一行的"enable"的勾,这样就可以进行底部相机高级校正了。
底部相机高级叫正时的值,就按照我们填写的值来。

不同 “Radial Lines Per Calibration Z”的校验结果

尝试将 “Radial Lines Per Calibration Z” 改为64,报错,提示为"扭曲度太大,请将扭曲度清0".
我去,这咋清除? 我只是openpnp的用户啊…

尝试将“Radial Lines Per Calibration Z” 改为16,报错,提示为"坐标不可达",一看那个坐标,120xxmm, 早已经不在设备的可用坐标内。

“Radial Lines Per Calibration Z”根据提示,肯定要改大的,改成64就太大了。
观察了一下“Radial Lines Per Calibration Z”的默认值32,这是8的倍数啊。

那尝试将默认值加个8,改为40试试。
试了一下, OK.

不同 “Radial Lines Per Calibration Z”的设备校验动作的比较

底部相机高级校验原理 - 通过在底部相机可视范围内,移动NT1,NT2, 得到Z轴和NT1,NT2的垂直度补偿。
如果底部相机高级校验时的分步动作导致NT1,NT2都不在底部相机可视范围内,这动作就失去了效果。

“Radial Lines Per Calibration Z”的默认值32,NT1,NT2的移动,大部分都在底部相机的可视范围内,有少许操作移动后,不在底部相机视野内。

“Radial Lines Per Calibration Z”的值 = 64,NT1,NT2的移动,全部都在底部相机的可视范围内,明显NT1,NT2的校验移动范围很小。

“Radial Lines Per Calibration Z”的值 = 16,NT1,NT2的移动,大部分都不在底部相机的可视范围内,明显NT1,NT2的校验移动范围超大,大部分操作都无法得到底部相机中的NT1,NT2移动后的图像(这明显是校验操作无效了)。

“Radial Lines Per Calibration Z”的值 = 40,NT1,NT2的移动,全部都在底部相机的可视范围内,且NT1,NT2的校验移动范围比较大。

总结

“Radial Lines Per Calibration Z”是用来控制NT1,NT2在底部相机视野中移动范围大小的值。
要选择一个合适的“Radial Lines Per Calibration Z”值,使NT1,NT2的校验活动范围在底部相机视野内,又能使NT1,NT2有效移动范围最大。
这样才能产生底部相机高级校正需要的有效数据。

“Radial Lines Per Calibration Z”的合适值和底部相机的像素有关,要根据自己采用的摄像头的像素值来选择。
如果“Radial Lines Per Calibration Z”默认的32不能通过底部相机高级校正,那就需要自己改“Radial Lines Per Calibration Z”到一个合适值。
如果底部相机像素低(e.g. 100W, 200W),“Radial Lines Per Calibration Z”的值就加的少一点。
如果底部相机像素高(e.g. 800W, 1600W),“Radial Lines Per Calibration Z”的值就加的多一点。
每次调整的值别太大,不要超过8. 如果校验通不过,再尝试调整一个新值。
但是底部相机高级校正的时间是真的长,只能干等着,真是熬人…
如果自己设备通过了校验,最好将“Radial Lines Per Calibration Z”记录备份下来,谁能保证这台设备不需要下一次标定呢?

大家一般都是openpnp的用户,很少有同学去用代码单步调试吧? 作为程序员的我们都知道,如果自己不是设计者,目标工程中的很多知识点和设计思路缺失,不好弄啊,有点改不动(即使只是想看看问题的原因,大概率也找不出来,如果想找出来,需要投入时间,达到作者在目标工程中表现出的水平才行。主要是看有没有刚需,如果有刚需,那就当自己是openpnp的研发,按部就班的按照计划搞就行)。

so 一般情况下,只能通过实验来猜测一些怪里怪气的问题背后的原因, 只要肯实验和肯思考,一般都能解决这种软件的使用性问题。

备注

"底部相机高级矫正"感觉有bug.
虽然通过了底部相机高级矫正,但是归零后,自动归零和吸嘴校验(NT1, NT2)大概率会失败。
如果重新做底部相机和NT1的偏移设置,就要取消掉“底不相机高级矫正”的使能, 那"底部相机高级矫正"不白忙活了么?
且重新做底部相机和NT1的偏移设置,因为不在对应的设置阶段,好像不咋对啊。

好多同学标定设备时,都不做底部相机高级矫正,直接相信自己设备机械安装精度符合要求,挺无奈的。
设备标定过程中的每个进化阶段,我对.openpnp2目录都做了备份。

琢磨了一会,算了,我贴板子的openpnp配置版本,也不做底部相机高级矫正了,得不偿失。
好像底部相机高级矫正后,很多参数都不对了。

END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/887277.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

学籍管理平台|在线学籍管理平台系统|基于Springboot+VUE的在线学籍管理平台系统设计与实现(源码+数据库+文档)

在线学籍管理平台系统 目录 基于SpringbootVUE的在线学籍管理平台系统设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大…

Linux·进程概念(下)

1. 进程优先级 优先级就是获得某种资源的先后顺序,因为CPU资源是有限的,因此各个进程之间要去争取CPU的资源。 那么针对Linux操作系统下的PCB中,也就是task_struct结构体中,使用了int类型的变量记录了每个进程的优先级属性&#x…

“米哈游悄然布局未来科技:入股星海图,共绘具身智能机器人新篇章“

米哈游悄然入股具身智能机器人公司:技术布局与未来展望 近日,米哈游阿尔戈科技有限公司宣布入股具身智能机器人公司星海图,这一消息在行业内引起了广泛关注。米哈游,这家以游戏开发而闻名的企业,近年来正逐步扩大其在人工智能和新兴科技领域的投资布局,此次入股星海图正是…

数组指针和指针数组

引用:【数组指针】 仅此一篇 让你深刻理解数组指针-CSDN博客 b站:【动画讲解C语言指针-14-数组指针和指针数组】 https://www.bilibili.com/video/BV1Qj421U75U/?share_sourcecopy_web&vd_sourced59dcee6044af8fc880b46b581c3f58a 指向数组和指向…

Windows Ubuntu下搭建深度学习Pytorch训练框架与转换环境TensorRT

Windows Ubuntu下搭建深度学习Pytorch训练框架与转换环境TensorRT JetBrains2024(IntelliJ IDEA、PhpStorm、RubyMine、Rider……)安装包Anaconda Miniconda安装.condarc 文件配置镜像源查看conda的配置和源(channel)自定义conda虚拟环境路径conda常用命…

双指针:滑动窗口

题目描述 给定两个字符串 S 和 T,求 S 中包含 T 所有字符的最短连续子字符串的长度,同时要求时间复杂度不得超过 O(n)。 输入输出样例 输入是两个字符串 S 和 T,输出是一个 S 字符串的子串。样例如下: 在这个样例中&#xff0c…

在树莓派上部署开源监控系统 ZoneMinder

原文:https://blog.iyatt.com/?p17425 前言 自己搭建,可以用手里已有的设备,不需要额外买。这套系统的源码是公开的,录像数据也掌握在自己手里,不经过不可控的三方。 支持设置访问账号 可以保存录像,启…

C++中,如何使你设计的迭代器被标准算法库所支持。

iterator(读写迭代器) const_iterator(只读迭代器) reverse_iterator(反向读写迭代器) const_reverse_iterator(反向只读迭代器) 以经常介绍的_DList类为例,它的迭代…

QT--基础

将默认提供的程序都注释上意义 0101.pro QT core gui #QT表示要引入的类库 core:核心库 gui:图形化界面库 #如果要使用其他库类中的相关函数,则需要加对应的库类后,才能使用 greaterThan(QT_MAJOR_VERSION, 4): QT wid…

算法: 二分查找题目练习

文章目录 二分查找二分查找在排序数组中查找元素的第一个和最后一个位置搜索插入位置x 的平方根山脉数组的峰顶索引寻找峰值寻找旋转排序数组中的最小值点名 总结精华模版 二分查找 二分查找 没啥可说的,轻轻松松~ class Solution {public int search(int[] nums, int target…

栈的介绍与实现

一. 概念与结构 栈:⼀种特殊的线性表,其只允许在固定的⼀端进⾏插⼊和删除元素操作。进⾏数据插⼊和删除操作的⼀端称为栈顶,另⼀端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out的原则。 压栈:栈的插…

二叉树进阶学习——从前序和中序遍历序列构造二叉树

1.题目解析 题目来源:105.从前序与中序遍历序列构造二叉树——力扣 测试用例 2.算法原理 首先要了解一个概念 前序遍历:按照 根节点->左子树->右子树的顺序遍历二叉树 中序遍历:按照 左子树->根节点->右子树的顺序遍历二叉树 题目…

在 Kali Linux 中安装 Impacket

步骤 1:更新系统 打开终端并确保你的系统是最新的: sudo apt update && sudo apt upgrade -y 步骤 2:安装依赖 在安装 Impacket 之前,你需要确保安装了 Python 和一些必要的依赖。通常,Kali 已经预装了 Pytho…

影刀RPA实战:Excel拆分与合并工作表

1.影刀操作excel的优势 Excel,大家都不陌生,它是微软公司推出的一款电子表格软件,它是 Microsoft Office 套件的一部分。Excel 以其强大的数据处理、分析和可视化功能而闻名,广泛应用于商业、教育、科研等领域。可以说&#xff0…

YOLO11改进|注意力机制篇|引入ELA注意力机制

目录 一、【ELA】注意力机制1.1【ELA】注意力介绍1.2【ELA】核心代码 二、添加【ELA】注意力机制2.1STEP12.2STEP22.3STEP32.4STEP4 三、yaml文件与运行3.1yaml文件3.2运行成功截图 一、【ELA】注意力机制 1.1【ELA】注意力介绍 这篇论文的作者通过分析Coordinate Attention(C…

Java Supplier和Consumer接口

Supplier 在Java中,Supplier接口是一个重要的函数式接口,它属于java.util.function包,Supplier通常用于延迟计算或生成值的场景。Supplier接口是一个泛型接口,其get()方法不接受任何参数但返回一个泛型类型T的值。 这个接口被注解…

STM32新建工程-基于库函数

目录 一、创建一个新工程 二、为工程添加文件和路径 三、创建一个main.c文件,并调试 四、修改一些配置 五、用库函数进行写程序 1、首先加入一些库函数和头文件 2、编写库函数程序 一、创建一个新工程 我这里选择STM32F103C8的型号,然后点击OK。 …

Maven下载、安装与环境配置详解:从零开始搭建高效Java开发环境

下载 官方网站:http://maven.apache.org/ 下载页面:http://maven.apache.org/download.cgi 官网 下载页面 注:本教程使用的是3.3.9版本的maven。 安装 maven安装包下载完成后是一个压缩文件,如下图所示: 我们需要将…

java 数据存储方式

1. 变量存储 这是最基本的数据存储方式,通过声明变量来存储数据。变量可以是基本数据类型(如int、float、char等),也可以是引用数据类型(如对象、数组等)。变量存储的数据通常存储在内存中,随着…

Redis --- 第三讲 --- 通用命令

一、get和set命令 Redis中最核心的两个命令 get 根据key来取value set 把key和value存储进去 redis是按照键值对的方式存储数据的。必须要先进入到redis客户端。 语法 set key value : key和value都是字符串。 对于上述这里的key value 不需要加上引号&#…