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.rhkb.cn/news/437478.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

平面电磁波(解麦克斯韦方程)

注意无源代表你立方程那个点xyzt处没有源,电场磁场也是这个点的。 j电流面密度,电流除以单位面积,ρ电荷体密度,电荷除以单位体积。 j方程组有16个未知数,每个矢量有三个xyz分量,即三个未知数,…

人口普查管理系统基于VUE+SpringBoot+Spring+SpringMVC+MyBatis开发设计与实现

目录 1. 系统概述 2. 系统架构设计 3. 技术实现细节 3.1 前端实现 3.2 后端实现 3.3 数据库设计 4. 安全性设计 5. 效果展示 ​编辑​编辑 6. 测试与部署 7. 示例代码 8. 结论与展望 一个基于 Vue Spring Boot Spring Spring MVC MyBatis 的人口普查管理…

加密与安全_TOTP 一次性密码生成算法

文章目录 PreTOTP是什么TOTP 算法工作原理TOTP 生成公式TOTP 与 HOTP 的对比Code生成TOTP验证 TOTP使用场景小结 TOTP 与 HOTP 的主要区别TOTP 与 HOTP应用场景比较TOTP 与 HOTP安全性分析 Pre 加密与安全_HTOP 一次性密码生成算法 https://github.com/samdjstevens/java-tot…

微信小程序服务端API安全鉴权统一调用封装

目录 一、序言二、前置准备1、获取小程序AppID和AppSecret2、下载对称加密密钥3、下载加签私钥4、下载验签证书 三、加解密封装1、相关基础类2、加解密工具类 四、HTTP调用封装五、微信服务端API网关调用封装1、基础类2、属性类和工具类3、枚举类4、网关核心调用抽象类5、网关核…

毕业论文设计javaweb+VUE高校教师信息管理系统

目录 一、系统概述 二、功能详解 1. 教师管理 2. 部门管理 3. 奖惩管理 4. 业绩管理 5. 培训管理 6. 报表查询 三、总结 四、示例代码 1 前端VUE 2 后端SpringBootjava 3 数据库表 随着教育信息化的发展,传统的手工管理方式已经不能满足现代学校对教师…

自动驾驶系列—自动驾驶发展史介绍

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

PyCharm开发工具的安装和基础使用

打开官网:https://www.jetbrains.com/ 切换中文语言, 点击开发者工具 → 选择PyCharm, 点击下载, 初学者下载免费使用的社区版(community)就够了, 点击下载, 点击下一步&am…

高性能架构—存储高性能

1 📊关系型数据库 存储技术飞速发展,关系型数据的ACID特性以及强大的SQL查询让其成为各种业务系统的关键和核心存储系统。 很多场景下的高性能设计最核心的就是关系型数据库的设计,很多数据库厂商再优化和提升单个数据库服务器的性能方面做了…

Java Web应用升级故障案例解析

在一次Java Web应用程序的优化升级过程中,从Tomcat 7.0.109版本升级至8.5.93版本后,尽管在预发布环境中验证无误,但在灰度环境中却发现了一个令人困惑的问题:新日志记录神秘“失踪”。本文深入探讨了这一问题的排查与解决过程&…

激光切割机适用材质有哪些

激光切割机是一种利用激光束对各种材料进行高精度、高速度切割的机器设备。其适用材质广泛,包括但不限于以下两大类: 一、金属材料 不锈钢:激光切割机较容易切割不锈钢薄板,使用高功率YAG激光切割系统,切割不锈钢板的…

大厂面试真题-说一下Mybatis的缓存

首先看一下原理图 Mybatis提供了两种缓存机制:一级缓存(L1 Cache)和二级缓存(L2 Cache),旨在提高数据库查询的性能,减少数据库的访问次数。注意查询的顺序是先二级缓存,再一级缓存。…

死锁的成因与解决方案

目录 死锁的概念与成因 栗子 死锁的情况 哲学家问题 如何避免死锁 必要条件 死锁的解决方案 总结 死锁的概念与成因 多个线程同时被阻塞,他们中的其中一个或者全部都在等待某个资源的释放,导致线程无限期被阻塞,程序无法停止 栗子 我和美女a出去吃饺子,吃饺子要醋和酱油…

高中教辅汇总【35GB】

文章目录 一、资源概览二、资源亮点三、获取方式 一、资源概览 这份教辅资源汇总,精心搜集了高中各学科的海量教辅资料,总容量高达35GB,覆盖了语文、数学、英语、物理、化学、生物、历史、地理、政治等所有必修及选修科目。从基础知识点到难…

ros2 自定义工作空间添加source

新建一个工作空间:ros2 create pkg~~~~~~~~~~~~ colcon build之后 ,在install文件夹里面有一个 setup,bash文件 将这个文件添加到 bashrc gedit .bashrc 这样 在一个新终端中可以直接运行ros2 run package name (包名) 可执行…

针对考研的C语言学习(2019链表大题)

题目解析: 【考】双指针算法,逆置法,归并法。 解析:因为题目要求空间复杂度为O(1),即不能再开辟一条链表,因此我们只能用变量来整体挪动原链表。 第一步先找出中间节点 typedef NODE* Node; Node find_m…

鸿蒙NEXT开发-自定义构建函数(基于最新api12稳定版)

注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下 如果大家觉得博主文章写的好的话,可以点下关注,博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…

基于Word2Vec和LSTM实现微博评论情感分析

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有:中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等,曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝,拥有2篇国家级人工智能发明专利。 社区特色…

css动态边框

参考&#xff1a; Clip-path实现按钮流动边框动画_在线clip-path-CSDN博客 https://www.5axxw.com/questions/simple/9ju5yt#google_vignette <div class"bottom-top-item-centent bottom-top-item-left"><vue-seamless-scroll :data"listLeftData&q…

【算法】链表:206.反转链表(easy)

系列专栏 《分治》 《模拟》 《Linux》 目录 1、题目链接 2、题目介绍 3、解法&#xff08;快慢指针&#xff09; 解题步骤&#xff1a; 关键点&#xff1a; 复杂度分析&#xff1a; 4、代码 1、题目链接 206. 反转链表 - 力扣&#xff08;LeetCode&#xff09; …

如何用JavaScript编写一个简单的计数器

在网页开发中&#xff0c;计数器是一种常见的功能&#xff0c;它可以帮助我们记录点击次数、显示时间等。下面我将介绍如何在HTML页面中使用JavaScript实现一个基本的计数器。如图&#xff1a; 1、 创建HTML结构 首先&#xff0c;我们需要创建一个基础的HTML结构来容纳我们的计…