【VM服务管家】VM4.2软件使用_5.4 工具类

news2024/11/17 17:33:29

目录

  • 1.2.1 平移旋转标定:平移旋转标定模块的使用方法
  • 1.2.2 旋转标定:旋转标定模块的使用方法
  • 1.2.3 单点抓取:单点抓取模块的使用方法
  • 1.2.4 单点纠偏:单点纠偏模块的使用方法
  • 1.2.5 单点对位:单点映射对位模块的使用方法
  • 1.2.6 流程配置:配置流程的输入、输出与显示的方法
  • 1.2.7 数据队列:多流程间传图及协作的方法
  • 1.2.8 脚本模块:脚本模块保存图像的方法
  • 1.2.9 创建基准:全局触发配置模块动作的方法
  • 1.2.10 条件检测:条件检测结果显示颜色为模块最终检测状态的方法

1.2.1 平移旋转标定:平移旋转标定模块的使用方法

描述
环境:VM4.2
现象:VM二次开发如何使用平移旋转标定模块?
解答
适用场景:单相机与机构(模组/机械手)的标定场景。
标定方式:单相机与机构做平移标定(9点标定)或平移旋转标定(12点标定)。前者适用于吸嘴与旋转轴共轴的场景,后者适用于吸嘴与旋转轴不共轴的场景)。
限制条件:不支持多相机联立坐标系。
模块界面如下:
在这里插入图片描述
在这里插入图片描述

(1)标定类型
确定标定类型是平移标定(九点标定)还是平移旋转标定(十二点标定)。平移标定如左下图:只需图像点和物理点;平移旋转标定如右下图:需要图像点、物理点、图像角度和物理角度。
在这里插入图片描述
在这里插入图片描述

(2)标定点获取
支持触发获取及手动输入两种方式。触发获取:需要订阅图像点和机构物理点作为输入参数;手动输入:手动填写图像点及物理点坐标。其中标定点输入支持按点和按坐标两种方式。
注意:由于手动输入模式缺少图像角度,故无法计算旋转一致性和左右手手性。
在这里插入图片描述
在这里插入图片描述

(3)相机模式:支持相机静止和相机运动两种模式。自由度:支持三种自由度,默认仿射模式。
在这里插入图片描述
在这里插入图片描述

(4)平移次数:默认9次可根据实际情况进行调整(4-16)。旋转次数:平移标定自动隐藏;平移旋转标定需手动输入,建议3次,可根据实际情况进行调整(3-16)。
在这里插入图片描述

(5)更新文件:默认不更新,开启后若进行一次标定,则会自动更新指定路径下的标定文件。标定文件路径:设置标定文件保存的路径(保存为xml格式)。
在这里插入图片描述

(6)示教(选择项,可关闭):开启后,若通讯触发字符与输入的外部触发字符相匹配,则将示教的基准图像坐标,示教点物理坐标,拍照位物理坐标(默认标定中心点坐标,如九点标定则为第五点坐标)保存至标定文件。
在这里插入图片描述

问题根因
不熟悉平移旋转标定模块。

1.2.2 旋转标定:旋转标定模块的使用方法

描述
环境:VM4.2
现象:VM二次开发如何使用旋转标定模块?
解答
适用场景:单相机与机构(模组/机械手)的旋转中心标定场景。
标定方式:相机静止时,机构带标定物旋转N次,相机运动时,机构带相机旋转N次,标定机构旋转轴中心坐标。
限制条件:保证运动是纯旋转(无平移),每次旋转角度需严格相等,旋转次数至少为3次。

模块界面如下:
在这里插入图片描述

(1)图像点
图像中特征点的像素坐标。输入支持按点和按坐标两种方式。
(2)物理旋转角度
机构每次旋转的角度值。
(3)旋转次数
机构旋转的次数。
(4)标定文件(如未加载平移标定文件,则无法标定旋转中心)
加载平移标定文件,支持.xml和.iwcal格式。刷新信号的填写说明为:空或0时,表示该模块读取标定文件后,便不再更新,一直使用第一次读取的标定文件;非零时,表示该模块运行时会读取该路径下的标定文件,当该路径下的标定文件发生更新时,模块读取的标定文件就是最新的。
(5)模块结果
模块结果包括模块状态、剩余标定次数、旋转轴图像点、旋转中心物理点、旋转像素平均误差、旋转真实平均误差。
在这里插入图片描述

模块状态:运行成功为1,运行失败为0
剩余标定次数:该值等于标定总次数减去标定已运行次数,值为0表示旋转标定结束
旋转轴图像点:旋转轴中心的像素坐标值
旋转中心物理点:旋转轴中心的物理坐标值
旋转像素平均误差:旋转标定的拟合平均误差,单位为像素
旋转真实平均误差:旋转标定的拟合平均误差,单位为平移标定的物理运动量(通常为mm)
问题根因
不熟悉旋转标定模块。

1.2.3 单点抓取:单点抓取模块的使用方法

描述
环境:VM4.2
现象:VM二次开发如何使用单点抓取模块?
解答
适用场景:单相机拍物料的抓取场景。
标定方式:单相机与机构做平移标定(9点标定)或平移旋转标定(12点标定)。前者适用于吸嘴与旋转轴共轴的场景,后者适用于吸嘴与旋转轴不共轴的场景)。
限制条件:不支持多相机联立坐标系、分离轴抓取、相机拍照位变化(可后接变量计算模块实现)等场景。
模块界面如下:
在这里插入图片描述在这里插入图片描述

(1)输入方式
确定标定类型是平移标定还是平移旋转标定,确定是按点输入还是按坐标输入。可以订阅前序模块的输出结果,也可以手动输入。
(2)像素点
在抓取场景中,需要依次输入图像基准点和图像运行点。
基准像素点的输入步骤如下图所示,输入方式需选择“按坐标”:
在这里插入图片描述

基准点创建成功时,弹窗如下图所示:
在这里插入图片描述

运行像素点的输入步骤如下图所示:
在这里插入图片描述

(3)示教抓取物理点:物料在基准位置时,机构抓取物料的绝对物理坐标
示教拍照物理点:物料在基准位置时,机构携带相机拍照的绝对物理坐标
如无需示教抓取物理点、示教拍照物理点,则手动输入0
在这里插入图片描述

(4)标定文件
在这里插入图片描述

加载本地标定文件,支持.xml和.iwcal格式。刷新信号的填写说明为:空或0时,表示该模块读取标定文件后,便不再更新,一直使用第一次读取的标定文件;非零时,表示该模块运行时会读取该路径下的标定文件,当该路径下的标定文件发生更新时,模块读取的标定文件就是最新的。
(5)模块结果
模块结果分为相对坐标及绝对坐标,绝对坐标为机构抓取的绝对物理位置。
在这里插入图片描述

问题根因
不熟悉单点抓取模块。

1.2.4 单点纠偏:单点纠偏模块的使用方法

描述
环境:VM4.2
现象:VM二次开发如何使用单点纠偏模块?
解答
适用场景:单相机拍物料的纠偏场景。
标定方式:单相机与机构做平移标定(9点标定)或平移旋转标定(12点标定)。前者适用于吸嘴与旋转轴共轴的场景,后者适用于吸嘴与旋转轴不共轴的场景)。
限制条件:不支持多相机联立坐标系、分离轴纠偏、相机拍照位变化(可后接变量计算模块实现)等场景。
模块界面如下:
在这里插入图片描述在这里插入图片描述

(1)输入方式
确定标定类型是平移标定还是平移旋转标定,确定是按点输入还是按坐标输入。可以订阅前序模块的输出结果,也可以手动输入。
(2)像素点
在纠偏场景中,需要依次输入图像基准点和图像运行点。
基准像素点的输入步骤如下图所示,输入方式需选择“按坐标”:
在这里插入图片描述

   基准点创建成功时,弹窗如下图所示: 

在这里插入图片描述

运行像素点的输入步骤如下图所示:
在这里插入图片描述

(3)示教物理点:物料在基准位置时的机构绝对物理坐标
如无需示教物理点,则手动输入0
在这里插入图片描述

(4)标定文件
在这里插入图片描述

加载本地标定文件,支持.xml和.iwcal格式。刷新信号的填写说明为:空或0时,表示该模块读取标定文件后,便不再更新,一直使用第一次读取的标定文件;非零时,表示该模块运行时会读取该路径下的标定文件,当该路径下的标定文件发生更新时,模块读取的标定文件就是最新的。
(5)模块结果
模块结果分为相对坐标及绝对坐标,绝对坐标为机构纠偏的绝对物理位置。
在这里插入图片描述

问题根因
不熟悉单点纠偏模块。

1.2.5 单点对位:单点映射对位模块的使用方法

描述
环境:VM4.2
现象:VM二次开发如何使用单点映射对位模块?
解答
适用场景:上相机拍目标,下相机拍对象的对位贴合场景。
标定方式:上相机到下相机做映射标定,下相机与机构做平移旋转标定(12点标定)。
限制条件:不支持单相机(循环)对位贴合,上、下相机各自基准对位等场景。
模块界面如下:
在这里插入图片描述在这里插入图片描述

(1)输入方式
确定是按点输入还是按坐标输入,可以订阅前序模块的输出结果,也可以手动输入。
(2)像素点
在单点映射对位场景中,需要依次输入对象像素点和目标像素点,输入方式选择“按坐标”:
在这里插入图片描述

给目标像素直线起点/终点的X、Y坐标订阅数值(映射后夹角会变化,因此需要将目标图像中指定直线映射到对象坐标系再求目标点的角度),输入如下图所示:
在这里插入图片描述

(3)示教抓理点:映射标定时机构反向吸取标定板的绝对物理坐标
如无需示教物理点,则手动输入0
在这里插入图片描述

(4)标定文件(映射标定文件将上相机中目标像素映射到下相机的像素坐标系中,N点标定文件是将下相机的像素坐标映射到机构的物理坐标系中)
在这里插入图片描述

加载本地标定文件,支持.xml和.iwcal格式。刷新信号的填写说明为:空或0时,表示该模块读取标定文件后,便不再更新,一直使用第一次读取的标定文件;非零时,表示该模块运行时会读取该路径下的标定文件,当该路径下的标定文件发生更新时,模块读取的标定文件就是最新的。
(5)模块结果
模块结果分为相对坐标及绝对坐标,绝对坐标为机构对位的绝对物理位置。
在这里插入图片描述

问题根因
不熟悉单点映射对位模块。

1.2.6 流程配置:配置流程的输入、输出与显示的方法

描述
环境:VM4.2
现象:如何在VM中给流程配置输入设置、输出设置与显示设置
解答
下面以在流程2订阅流程1中图像为例介绍配置流程输入、流程输出与显示设置
1、如图方案中存在两个流程,流程1与流程2 ,选择流程1前的小扳手
在这里插入图片描述

2、如图配置流程1的输出图像为图像源1的图像
在这里插入图片描述

3、在点击橘色箭头所指图标,将流程1与流程2连接。
在这里插入图片描述

4、再如步骤1将流程2的输入订阅为流程1是输出
在这里插入图片描述

5、然后在流程2中的任意模块的模块输入中就可以订阅到流程2的输入图像
在这里插入图片描述

6、同理可配置显示设置
在这里插入图片描述

问题根因
不熟悉VM配置流程输入、输出与显示的方法

1.2.7 数据队列:多流程间传图及协作的方法

描述
环境:VM4.2
现象:如何两个流程执行得到的图像拼接输出(流程1和流程2都执行完毕后,将两个流程输出的图像传输到流程3中拼接)?
解答
1 首先需要拖拽数据队列模块并配置需要入队的列,数据类型为IMAGE,然后配置触发流程(触发流程逻辑为所有队列都有数据时才会触发列表中的流程)。
在这里插入图片描述

2 配置流程1和流程2:流程1和流程2中配置发送数据模块,将图像数据传入数据队列。
在这里插入图片描述
在这里插入图片描述

3 配置流程3:流程3中配置接收数据模块,取出数据队列中的图像数据并拼接。
在这里插入图片描述

问题根因
不熟悉数据队列的使用方法。

1.2.8 脚本模块:脚本模块保存图像的方法

描述
环境:VM4.0及以上
现象:如何使用脚本模块保存前序模块传入的图像?
解答

C#
public bool Process()
{
    ImageData DetImg = new ImageData();
    GetImageValue("DetImg",ref DetImg);
    byte[] bytes = new byte[1024 * 1024];
    bytes = DetImg.Buffer;
        
    int wid = DetImg.Width;
    int hei = DetImg.Heigth;
    Mat src = new Mat();
    if (ImagePixelFormate.MONO8 == DetImg.PixelFormat)
    {
        int dataLen = wid * hei;
        src.Create(hei, wid, MatType.CV_8UC1);
        Marshal.Copy(DetImg.Buffer, 0, src.Ptr(0), dataLen);
    }
    else if (ImagePixelFormate.RGB24 == DetImg.PixelFormat)
    {
        int dataLen = wid * hei * 3;
        src.Create(hei, wid, MatType.CV_8UC3);
        Marshal.Copy(DetImg.Buffer, 0, src.Ptr(0), dataLen);
        Cv2.CvtColor(src, src, ColorConversionCodes.RGB2BGR);
    }
    string savePath = "E:\\Test";   // 存图路径
	  string imageName = "1.jpg";   // 存图名称
    if (!Directory.Exists(savePath))
    {
        Directory.CreateDirectory(savePath);
    }
    Cv2.ImWrite(savePath + "\\" + imageName, src);
    src.Release();
    return true;
}

问题根因
不熟悉使用脚本模块调用第三方库的方法。

1.2.9 创建基准:全局触发配置模块动作的方法

描述
环境:VM4.2
现象:如何通过全局触发模块动作?例如创建基准。
解答
1.打开单点抓取模块路径下的SinglePointGrabModuAlgorithmTab.xml配置文件,在Item集合下面加上Command节点。

<Command Name="BasicInit" NameSpace="Standard">
	<Description> BasicPoitnInit </Description>
      <DisplayName> BasicPoitnInit </DisplayName>
      <Visibility>Expert</Visibility>
      <AccessMode>Rw</AccessMode>
      <CustomVisible>False</CustomVisible>
	<SupportCommTrigger>True</SupportCommTrigger>
</Command>

在这里插入图片描述

2.保存配置文件,重新启动VM
可以在全局触发处配置模块动作处可以看到相应模块的动作,如果需要显示中文,将配置节点中的DisplayName属性的值添加到多语言。
在这里插入图片描述

问题根因
不熟悉如何配置从而触发模块动作

1.2.10 条件检测:条件检测结果显示颜色为模块最终检测状态的方法

描述
环境:VM4.2
现象:如何将条件检测结果显示颜色设置为模块最终检测状态?
在这里插入图片描述

解答
1.修改条件检测模块结果显示内容为条件检测结果。
在这里插入图片描述

2.修改条件检测模块IfModuleDisplay.xml文件的Status节点,将映射改为NIfResult.
在这里插入图片描述
在这里插入图片描述

问题根因
不熟悉模块xml文件的使用。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【PyTorch入门教程】1. 基础知识

欢迎关注 【LearnOpenCV: PyTorch入门教程】 PyTorch入门&#xff1a;Ch1 基础知识 PyTorch入门&#xff1a;[Ch2 使用预训练模型进行图像分类] PyTorch入门&#xff1a;[Ch3 使用迁移学习进行图像分类] PyTorch入门&#xff1a;[Ch4 使用ONNX和Caffe2进行模型推理] PyTorch入门…

中国机器人及人工智能大赛

报名 报名网站&#xff1a;https://www.caairobot.com 报名时&#xff0c;请在队伍名称后边添加任务后缀&#xff0c;比如&#xff0c;“诚朴-A”表明 队伍名称诚朴队&#xff0c;报名完成任务 A 然后在大赛官方 QQ 群 633244198&#xff08;智慧农业-机器人及人工智能大赛&…

力扣刷题215.数组中的第K个最大元素

215.数组中的第K个最大元素 215.数组中的第K个最大元素题目描述思路暴力解法堆排序快速排序 215.数组中的第K个最大元素 215. 数组中的第K个最大元素 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素…

Postman+Java springboot演示 get post put delete请求并携带(路径 路径问号后 json 表单)参数形式

我们先创建一个java的springboot工程 在项目中 找到启动类的位置目录 在项目创建一个类 叫 user 我是想将 user 当做一个属性类的 按规范来讲 我们可以创建一个entity包 然后在下面去创建属性类 但这里 我们不想搞那么麻烦了 毕竟只是练习一下 然后 user参考代码如下 package…

【Java校招面试】基础知识(五)——GC

目录 前言一、基础概念二、垃圾回收算法三、垃圾收集器四、引用后记 前言 本篇主要介绍Java垃圾回收机制——GC的相关内容。 “基础知识”是本专栏的第一个部分&#xff0c;本篇博文是第五篇博文&#xff0c;如有需要&#xff0c;可&#xff1a; 点击这里&#xff0c;返回本专…

【重新定义matlab强大系列五】函数filloutliers检测并替换数据中的离群值

&#x1f517; 运行环境&#xff1a;matlab &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&#x1f917;&#x1f91…

PyCharm下载、安装、注册以及简单使用【全过程讲解】

在使用PyCharm IDE之前&#xff0c;请确保自己的计算机里面安装了Python解释器环境&#xff0c;若没有下载和安装可以看看我之前的文章>>>Python环境设置>>>或者还可以观看视频讲解。 注意&#xff1a;本文软件的配置方式仅供个人学习使用&#xff0c;如有侵…

有研究员公开了一个解析并提取 Dell PFS BIOS 固件的工具(下)

导语&#xff1a;研究员公开了一个解析并提取 Dell PFS BIOS 固件的工具。 Apple EFI IM4P分配器 介绍 解析苹果多个EFI固件.im4p文件&#xff0c;并将所有检测到的EFI固件分割为单独的SPI/BIOS映像。 使用 你可以拖放或手动输入包含Apple EFI IM4P固件的文件夹的完整路径。…

【VM服务管家】VM4.2平台SDK_6.3 控件嵌入类

目录 2.3.1 渲染控件&#xff1a;渲染控件上自定义图形的方法2.3.2 参数控件&#xff1a;参数配置控件绑定模块的方法2.3.3 控件颜色&#xff1a;控件颜色修改方法2.3.4 独立控件&#xff1a;二次开发单独显示Group的方法2.3.5 取流控件&#xff1a;实时取流控件的使用方法2.3.…

【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 23页论文及实现代码

【2023年第十一届泰迪杯数据挖掘挑战赛】B题&#xff1a;产品订单的数据分析与需求预测 23页论文及实现代码 相关链接 &#xff08;1&#xff09;建模方案 【2023年第十一届泰迪杯数据挖掘挑战赛】B题&#xff1a;产品订单的数据分析与需求预测 建模及python代码详解 问题一…

python为什么长期霸占榜首

Python霸占榜首 只因它真的很强 Python&#xff0c;年龄可能比很多读者都要大&#xff0c;但是它在更新快速的编程界却一直表现出色&#xff0c;甚至有人把它比作是编程界的《葵花宝典》&#xff0c;只是Python的速成之法相较《葵花宝典》有过之而无不及。 Python简洁&#x…

【Hello Network】UDP协议

作者&#xff1a;小萌新 专栏&#xff1a;网络 作者简介&#xff1a;大二学生 希望能和大家一起进步 本篇博客简介&#xff1a;简单介绍传输层和UDP协议 UDP协议 传输层端口号端口号范围划分知名端口号端口号与进程netstat与iostatpidof UDP协议UDP协议格式udp的数据封装udp的数…

2.2磁盘分区

2.2 磁盘分区 一个磁盘可以被划分为多个分区&#xff0c;有一个磁盘并且将他们划分为C;D;E盘&#xff0c;那个C,D,E就是分区&#xff08;partition&#xff09;。 2.2.1 磁盘连接的方式与设备文件名的关系 个人计算机常见的磁盘接口有两种&#xff0c;分别是SATA与SAS接口&…

精品:Stimulsoft Forms 2023.2.2

Stimulsoft Forms 是一种用于创建、编辑、填写、发布、分发交互式表单和收集结果的工具。我们的产品可嵌入到应用程序中&#xff0c;并允许您创建各种自定义填充模板。丰富的功能使模板具有真正的交互性。用户会收到 PDF 格式的可填写表格&#xff0c;他们可以在任何支持此格式…

ZooKeeper安装与配置集群

简介: ZooKeeper是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务&#xff0c;是Google的Chubby一个开源的实现&#xff0c;是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件&#xff0c;提供的功能包括&#xff1a;配置维护、域名服务、分布…

ChatGPT初尝试——合并Excel表格【AI版】

ChatGPT真的能提升生产力吗&#xff1f;【AI版】 无意间的刷到的视频一、提需求二、ChatGPT用Python编写代码三、意外的解释四、ChatGPT改用Java编写代码五、GPT第二次生成Java代码尾巴 无意间的刷到的视频 晚上在家刷视频&#xff0c;突然看到一个在讲关于AI编程的视频&#…

网络安全:网络信息安全的概述.

网络安全&#xff1a;网络信息安全的概述 网络信息安全是一门涉及计算机科学&#xff0c;网络技术&#xff0c;通信技术、密码技术、信息安全技术、应用数学、数论、信息论等多种学科的综合性学科。 它主要是指网络系统的硬件、软件及其系统中的数据受到保护&#xff0c;不受…

深度学习 -- Pytorch学习 数据集API Dataset与DataLoader 重载鸢尾花数据集

前言 在模型训练的步骤中&#xff0c;数据的部分非常重要&#xff0c;它的过程主要分为数据收集、数据划分、数据读取、数据预处理。 数据收集的有原始样本和标签(Img&#xff0c;label) 数据集的划分需要分为训练集、验证集、测试集。 训练集负责训练模型&#xff0c;验证集…

C++基础知识快速入门

目录 一, 命名空间 1.1命名空间使用命名空间中成员该如何使用呢&#xff1f; 1.2 命名空间其他2种使用方式&#xff1a; 1. using 将其中一个成员引入 2. using namespace 二&#xff0c;C输入&输出 &#xff08;简单运用&#xff09; 2. 1 头文件 2. 2 cout 与 …

2023年软件测试常见面试题100%问必背全套教程

随着数字化时代的到来&#xff0c;软件测试越来越受到重视。在未来的几年里&#xff0c;软件测试将继续成为信息技术领域中的热门职业之一。如果你是一名正在寻找或准备进入软件测试行业的人&#xff0c;那么这套常见面试题全套教程对你来说会非常有用。 这套教程旨在帮助你了…