方案部署
本节将介绍如何进行长条型钣金件方案部署,总体流程如下图所示。
视觉系统硬件搭建
视觉系统硬件搭建是将硬件设备(相机和工控机)集成到实际工作环境中,以支持视觉系统的正常运行。
在该阶段,你需要完成视觉系统硬件的安装与连接。详细信息请参考视觉系统硬件搭建。
机器人通信配置
机器人通信配置前,需先获取方案。请单击此处查看方案获取方法。
-
打开Mech-Vision软件。
-
在Mech-Vision欢迎页中单击从案例库新建按钮,打开案例库。
-
进入案例库中的典型案例分类,单击右上角的 图标以获取更多资源,并在弹出的窗口中单击确定按钮。
-
获取案例资源后,选择有序工件拣选分类下的长条型钣金件,在下方填写方案名称和路径,最后单击创建按钮,并在弹出的窗口中单击确定按钮下载长条型钣金件方案。
下载完成后,在Mech-Vision中将自动打开该方案。
在配置视觉工程前,需要完成梅卡曼德视觉系统与机器人侧(机器人、PLC 或上位机)的通信对接。
长条型钣金件方案使用标准接口通信,具体操作方法请参考标准接口通信配置。
手眼标定
手眼标定是指建立相机坐标系与机器人坐标系对应关系的过程,将视觉系统确定的物体位姿转换为机器人坐标系下的位姿,从而引导机器人精准完成抓取任务。
请参考机器人手眼标定操作指南完成手眼标定。
|
视觉工程配置
完成通信配置和手眼标定后,即可使用Mech-Vision进行视觉工程配置。
本方案中包含三个工程,分别是料筐定位,拍照点定位和工件定位。
-
料筐定位工程,使用LSR XL相机拍照,用于定位摆放长条型钣金件的料筐。
-
拍照点定位工程,使用LSR XL相机拍照,用于定位PRO S相机拍照点并输出该拍照点位置,引导机器人到达拍照点。
-
工件定位工程,使用PRO S相机拍照,用于识别并输出工件位姿进行路径规划,引导机器人抓取工件。
下文将分别介绍这三个工程。
料筐定位
该视觉工程配置的流程如下图所示。
连接相机并采集图像
-
连接相机。
打开Mech-Eye Viewer,找到待连接的相机,单击连接按钮。
-
调节相机参数。
为确保相机采集到的2D图像清晰,点云无缺失,需调节相机参数。参数调节方法请参考LSR XL相机参数参考指南。
-
采集图像。
相机连接成功且设置参数组后,即可开始采集工件(料筐)图像。单击界面上方的 按钮,进行单次图像采集,此时即可查看采集到的工件(料筐)2D图像和点云,确保2D图像清晰,点云无缺失且边缘清晰。合格的工件(料筐)2D图像和点云分别如下图中左图、右图所示。
-
在Mech-Vision中连接相机。
单击从相机获取图像步骤,在界面右下角步骤参数区关闭虚拟模式,然后单击选择相机按钮。
在弹出的窗口中单击某相机编号右侧的 图标,该图标变为 后,代表相机连接成功。相机连接成功后,单击右侧的参数组下拉框选择标定的参数组。
以上设置完成后即已连接真实相机,无需调节其他参数。单击从相机获取图像步骤右侧的 图标运行该步骤,如无报错即表示相机连接成功,并可正确采集图像。
3D工件识别
该方案使用3D工件识别步骤识别料筐。单击3D工件识别步骤界面的配置向导按钮,打开3D工件识别工具进行相关配置。总体配置流程如下图所示。
识别工件
点云预处理完成后,需从工件库中制作料筐的点云模板,然后在3D工件识别工具中设置匹配相关参数,用于匹配点云模板。
-
制作工件模板。
制作点云模板并添加抓取点。单击打开工件库按钮,打开工件库,通过导入处理后的点云生成点云模板和抓取点。抓取点和物体中心点保持一致。
-
设置识别相关参数。
-
匹配模式:关闭自动设置匹配模式开关,并将粗匹配模式设置为边缘匹配,精匹配模式设置为面匹配。
-
输出-最大结果输出个数:因目标物体是料筐,需将最大输出结果个数设置为1。
-
上述参数设置完成后,单击运行步骤按钮,匹配效果如下图所示。
调整位姿
获取工件位姿后,需使用步骤组合调整位姿对位姿进行调整,双击该步骤组即可看到其中包含的各个步骤。调整位姿V2步骤界面的配置向导按钮,打开位姿调整工具进行位姿调整相关配置。
-
位姿转换。
为了输出料筐在机器人坐标系下的位姿,需勾选将位姿转换至机器人坐标系,将料筐位姿从相机坐标系转换至机器人坐标系。
-
位姿调整。
-
开启位姿调整的自定义模式。
-
设置沿指定方向移动位姿分类下的参数:在物体坐标系下,沿Z轴方向移动料筐位姿,移动距离设置为外部步骤输入,以将料筐位姿从料筐上表面向下移动至料筐中心,后续用于在Mech-Viz更新料筐碰撞模型的位置。
-
该步骤组合中,读取物体尺寸步骤将读取料筐的尺寸,分解物体尺寸步骤输出的料筐的Z值将用于计算调整位姿V2步骤中的移动距离。
-
移动距离值 = -1 × 1/2 料筐高度。
-
-
-
位姿排序。
将排序类型设置为按位姿的XYZ值排序,将位姿的指定量设置为Z值,并以降序方式对位姿进行排序。
-
通用设置。
将设置新增端口数量设置为0,无需新增端口。
拍照点定位
该视觉工程配置的流程如下图所示。
连接相机并采集图像
-
连接相机。
打开Mech-Eye Viewer,找到待连接的相机,单击连接按钮。
-
调节相机参数。
为确保相机采集到的2D图像清晰,点云无缺失,需调节相机参数。参数调节方法请参考LSR XL相机参数参考指南。
-
采集图像。
相机连接成功且设置参数组后,即可开始采集工件图像。单击界面上方的 按钮,进行单次图像采集,此时即可查看采集到的工件2D图像和点云,确保2D图像清晰,点云无缺失且边缘清晰。合格的工件2D图像和点云分别如下图中左图、右图所示。
-
在Mech-Vision中连接相机。
单击从相机获取图像步骤,在界面右下角步骤参数区关闭虚拟模式,然后单击选择相机按钮。
在弹出的窗口中单击某相机编号右侧的 图标,该图标变为 后,代表相机连接成功。相机连接成功后,单击右侧的参数组下拉框选择标定的参数组。
以上设置完成后即已连接真实相机,无需调节其他参数。单击从相机获取图像步骤右侧的 图标运行该步骤,如无报错即表示相机连接成功,并可正确采集图像。
前景分割及点云预处理
为减少背景点云对识别的干扰,提升工件识别稳定性和准确性,需使用前景分割及点云预处理步骤组合识别工件掩膜、获取最高层工件点云和工件边缘点云。
前景分割
为减少背景点云对识别的干扰,提升识别稳定性,需使用前景分割步骤组合识别工件掩膜并提取工件点云。双击步骤组合(前景分割及点云预处理)步骤框打开各个步骤。
-
在深度学习模型包推理步骤中,导入前景分割模型包(可单击此处下载)。
单击配置向导按钮,打开深度学习模型包管理窗口,单击导入模型包按钮,导入下载好的前景分割模型包。
-
标注图像。准备一张料筐内铺满工件的图像,在步骤参数区提示图设置分类下,单击提示图工具右侧的打开编辑器按钮打开提示图工具窗口。
在标注图像标签页单击右上方获取图像按钮,再单击页面左上方的 按钮,使用多边形工具标注工件掩膜,标注工件掩膜时需避开料筐掩膜和背景掩膜。
完成后单击右下角的保存按钮并切换至运行推理标签页,单击右下角的运行步骤按钮,识别效果如下图所示。
3D匹配
使用3D匹配步骤定位长条型钣金件,并输出工件抓取点的位姿和标签。在右侧步骤参数区调节以下参数:
-
制作工件模板。在模板设置分类下,单击工件库按钮,打开工件库,根据现场工件的特征,通过导入处理后的点云生成点云模板和抓取点。抓取点和物体中心点保持一致。
-
在参数调试等级分类下,将参数调试等级设置为专家。
-
调节粗匹配设置分类下的参数:运行方式保留默认值标准,关闭自动设置单个点云输出个数开关,并将单个点云输出结果个数值改为40,采样后的场景点云点数上线保留默认值1000000。
-
调节精匹配设置分类下的参数:运行方式和偏差矫正能力分别保留默认值标准和小,关闭自动设置单个点云输出个数开关,并将单个点云输出结果个数值改为20。
上述参数设置完成后,单击运行步骤按钮,匹配效果如下图所示。
调整位姿
获取工件位姿后,需使用调整位姿V2步骤对位姿进行调整,统一工件的X轴朝向,并调整PRO S相机的拍照点。单击调整位姿V2步骤界面的配置向导按钮,打开位姿调整工具进行位姿调整相关配置。总体配置流程如下图所示。
-
位姿转换。
为了输出工件在机器人坐标系下的位姿,需勾选将位姿转换至机器人坐标系,将工件位姿从相机坐标系转换至机器人坐标系。
-
位姿调整。
-
开启位姿调整的自定义模式。
-
设置旋转位姿,使旋转轴与目标方向夹角最小分类下的参数:为方便后续调整位姿,需统一工件位姿的朝向。将需要固定的轴设置为Z轴,需要旋转的轴设置为X轴,并将机器人坐标系下的X轴正方向设置为目标方向。
-
因PRO S相机视野较小,为使其能在最佳拍照距离拍出符合要求的照片,需调节两次沿指定方向移动位姿分类下的参数:
-
设置沿指定方向移动位姿分类下的参数:因PRO S相机视野较小,需将工件位姿由工件中心移动到工件的一端。在物体坐标系下,沿X轴方向移动位姿,并将移动距离值设置为手动输入,值为501mm。
-
设置沿指定方向移动位姿分类下的参数:为使PRO S相机在最佳拍照距离拍照,需将拍照点位姿移动到工件上方。在机器人基坐标系坐标系下,沿Z轴正方向移动位姿,并将移动距离值设置为手动输入,值为1000mm。
请根据实际场景设置上述两个移动距离的值,以便PRO S相机达到最佳的拍照效果。设置完成后,拍照时应满足以下两个条件:
-
料筐不遮挡工件。
-
拍摄到的料筐部分尽量小,减少料筐壁反射的影响。
-
-
-
-
位姿排序。
将排序类型设置为按位姿的XYZ值排序,将位姿的指定量设置为Z值,并以降序方式对位姿进行排序。
-
通用设置。
将设置新增端口数量设置为1,该步骤将新增输入和输出端口各一个,连接3D匹配步骤输出的抓取点信息,并将其输出到输出步骤。
识别并抓取工件
该视觉工程配置的流程如下图所示。
连接相机并采集图像
-
连接相机。
打开Mech-Eye Viewer,找到待连接的相机,单击连接按钮。
-
调节相机参数。
为确保相机采集到的2D图像清晰,点云无缺失,需调节相机参数。参数调节方法请参考PRO S相机参数参考指南。
-
采集图像。
相机连接成功且设置参数组后,即可开始采集工件图像。单击界面上方的 按钮,进行单次图像采集,此时即可查看采集到的工件2D图像和点云,确保2D图像清晰,点云无缺失且边缘清晰。合格的工件2D图像和点云分别如下图中左图、右图所示。
-
在Mech-Vision中连接相机。
单击从相机获取图像步骤,在界面右下角步骤参数中关闭虚拟模式,然后单击选择相机按钮。在弹出的窗口中单击某相机编号右侧的 图标,该图标变为 后,代表相机连接成功。相机连接成功后,单击右侧的参数组下拉框选择标定的参数组。
以上设置完成后即已连接真实相机,无需调节其他参数。单击从相机获取图像步骤右侧的 图标运行该步骤,如无报错即表示相机连接成功,并可正确采集图像。
点云预处理
为去除干扰点云,获取最高层点云,提取工件边缘点云和面点云,需要使用步骤组合点云预处理。在右侧步骤参数区调节相关参数:
-
设置3D ROI。 单击提取3D ROI内点云分类下的打开编辑器按钮设置3D ROI。设置时需去除干扰点云,仅保留工件点云,同时需在四周保留一定的余量。
-
设置获取最高层点云分组下层高参数的值,以仅获取最高层工件的点云。
设置完成后,单击该步骤组合框右上方的单步运行按钮,提取工件边缘点云和获取最高层工件点云的效果分别如下图中左图和右图所示。
3D匹配
根据工件一端的点云,使用3D匹配步骤,采用边缘匹配的方式定位长条型钣金件,并输出工件抓取点信息。在右侧步骤参数区调节以下参数:
-
制作工件模板。在模板设置分类下,单击工件库按钮,打开工件库,根据现场工件的特征,通过导入处理后的点云生成点云模板和抓取点。工件中心点设置在点云的物体中心,抓取点设置在工件的一端。
和前两个工程不同,此处抓取点不在工件的物体中心点,而在工件的一端。 -
在参数调试等级分类下,将参数调试等级设置为专家。
-
调节粗匹配设置分类下的参数:运行方式保留默认值标准,开启自动设置单个点云输出个数开关,采样后的场景点云点数上线保留默认值1000000。
-
调节精匹配设置分类下的参数:运行方式和偏差矫正能力分别保留默认值标准和小,开启自动设置单个点云输出个数开关。
-
调节额外精匹配分类下的参数:开启使用额外精匹配开关,运行方式和偏差矫正能力分别保留默认值标准和小。
上述参数设置完成后,单击运行步骤按钮,匹配效果如下图所示。
调整位姿
获取工件位姿后,需使用调整位姿V2步骤对位姿进行调整,将工件位姿由工件一端移到工件中心,并对位姿进行排序和过滤。单击调整位姿V2步骤界面的配置向导按钮,打开位姿调整工具进行位姿调整相关配置
-
位姿转换。
为了输出工件在机器人坐标系下的位姿,需勾选将位姿转换至机器人坐标系,将工件位姿从相机坐标系转换至机器人坐标系。
-
将方向调整设置为自动对齐,应用场景设置为Z轴对齐(上下料),使机器人能够按照指定方向抓取工件,避免碰撞。
-
在物体坐标系下,沿X轴方向移动料筐位姿,手动将移动距离调整为-659mm,以将工件位姿从工件一端移动到工件中心。
移动距离值 = -1 × 1/2 工件长度。 -
位姿排序。
将排序类型设置为按位姿的XYZ值排序,将位姿的指定量设置为Z值,并以降序方式对位姿进行排序。
-
位姿过滤。
为了减少后续路径规划耗时,需根据机器人基坐标系下位姿Z轴和参考方向之间的夹角过滤明显不可抓取的工件。本教程中,需把最大角度差设置为30°。
-
通用设置。
将设置新增端口数量设置为1,该步骤将新增输入和输出端口各一个,连接3D匹配步骤输出的抓取点信息,并将其输出到输出步骤。
路径规划
完成工件识别后,即可使用Mech-Viz进行路径规划,然后编写机器人程序用于抓取工件。
路径规划的配置流程如下图所示。
配置场景物体
配置场景物体的目的是还原真实现场场景,以此来辅助用户规划机器人运动路径。具体操作方法请参考配置场景物体。
在确保抓取可行性的基础上,应在严格还原真实作业环境的前提下配置场景物体。本方案中场景物体配置情况如下图所示:
配置末端工具
配置末端工具的目的是在三维仿真空间中显示末端工具的模型,并用于碰撞检测。具体操作方法请参考配置末端工具。
|
调整工作流程
工作流程指的是在Mech-Viz中以流程图形式搭建的机器人运动控制程序。场景物体和末端工具配置完成后,即可根据实际需求调整工程的工作流程。该工程的具体工作流程如下图所示。
Mech-Viz工程包含以下三个分支:
-
第一个分支对应Mech-Vision中料筐定位工程。使用视觉识别步骤触发该工程,识别料筐位姿并更新场景物体信息。
-
第二个分支对应Mech-Vision中拍照点定位工程。使用视觉识别步骤触发该工程,计算并输出相机的拍照点,用于引导机器人到达该位置。
-
第三个分支对应Mech-Vision中工件定位工程。使用视觉识别步骤触发该工程,将长条型钣金件的位姿输出给Mech-Viz用于规划路径和引导机器人抓取工件。
仿真与测试
单击工具栏中的仿真按钮,即可对搭建完成的Mech-Viz工程进行仿真,以测试视觉系统是否已成功搭建。
将工件有序摆放在料筐内,然后单击Mech-Viz工具栏的仿真按钮模拟抓取工件。每次抓取成功后需重新布置工件,循环仿真抓取10次。若10次仿真抓取均能顺利进行,即可判定视觉系统可正常工作。
若仿真过程中出现异常,请参考方案部署常见问题解决问题。
机器人抓放
机器人程序编写
若仿真效果满足预期,即可编写KUKA机器人抓放程序。
FANUC机器人样例程序MM_S2_Viz_Basic可以基本满足本典型案例所需要的功能。你可以在样例程序基础上进行修改。关于该程序的解释详细,请参考S2样例程序解读。
修改说明
基于样例程序,请参考如下步骤修改程序文件:
-
设置工具坐标系和基础坐标系。
修改前 修改后(示例) ;set current tool no. to 1 BAS(#TOOL,1) ;set current base no. to 0 BAS(#BASE,0)
;set current tool no. to 2 BAS(#TOOL,2) ;set current base no. to 0 BAS(#BASE,0)
请将数字替换实际使用工具的编号,此处“2”和“0”仅作示例。 -
指定工控机IP地址。在将机器人标准接口程序烧录到库卡机器人时,XML_Kuka_MMIND.xml配置文件也一同进行了烧录。你也可以在烧录前将配置文件中的IP地址和端口修改后工控机IP地址和端口。如果尚未修改,你可以打开MM_Init_Socket指令对应的XML_Kuka_MMIND.xml文件,并将其中的IP地址和端口更新为工控机IP地址和端口。
-
添加分支指令并选择需要运行的分支,触发Mech-Viz工程。
修改前 修改后(示例) ;trigger {product-viz} project MM_Start_Viz(2,init_jps)
!trigger {product-viz} project ; MM_Start_Viz(2,init_jps) ;Set_Branch MM_Set_Branch(1,1)
-
请参考此处添加指令,用于选择分支二和分支三,执行Mech-Viz工程。
-
Mech-Viz工程三个分支的配合关系如下:
-
机器人程序先选择分支一,执行Mech-Viz工程以触发料筐定位视觉工程,从而输出料筐位姿。
-
如果有料筐位姿输出,机器人程序再选择分支二,执行Mech-Viz工程以触发拍照点定位视觉工程,从而输出相机拍照位。
-
如果有相机拍照位输出,机器人程序将控制机器人移动到拍照位。此时,机器人程序再选择分支三,执行Mech-Viz工程以触发工件定位视觉工程,从而为机器人输出规划的无碰撞抓取路径。
-
-
-
设置DO端口执行抓取的信号,以闭合夹具抓取工件。注意,DO指令应根据现场实际使用的DO端口号设置。
修改前 修改后(示例) ;add object grasping logic here, such as "$OUT[1]=TRUE" halt
;add object grasping logic here, such as "$OUT[2]=TRUE" $OUT[2]=TRUE halt
-
设置DO端口执行放置的信号,以放置工件。注意,DO指令应根据现场实际使用的DO端口号设置。
修改前 修改后(示例) ;add object releasing logic here, such as "$OUT[1]=FALSE" halt
;add object grasping logic here, such as "$OUT[2]=FALSE" $OUT[2]=FALSE halt
抓取测试
为保证实际生产的稳定运行,需要运行修改后的样例程序,引导机器人测试抓取工件。具体方法请参考测试标准接口通信的操作。
进行抓取测试前,请先示教Home点。即示教的初始位。初始位应远离待抓取物体及周边设备,且不遮挡相机视野。
完成示教后,将工件摆放在下表所列场景中,依次使用机器人测试低速抓取。
抓取测试分为以下三个阶段: