方案部署
本节将介绍如何进行深筐小零件方案部署,总体流程如下图所示。
视觉系统硬件搭建
视觉系统硬件搭建是将硬件设备(相机和工控机)集成到实际工作环境中,以支持视觉系统的正常运行。
在该阶段,你需要完成视觉系统硬件的安装与连接。详细信息请参考视觉系统硬件搭建。
机器人通信配置
机器人通信配置前,需先获取方案。请单击此处查看方案获取方法。
-
打开Mech-Vision软件。
-
在Mech-Vision欢迎页中单击从案例库新建按钮,打开案例库。
-
进入案例库中的典型案例分类,单击右上角的 图标以获取更多资源,并在弹出的窗口中单击确定按钮。
-
获取案例资源后,选择无序工件拣选分类下的深筐小零件,在下方填写方案名称和路径,最后单击创建按钮,并在弹出的窗口中单击确定按钮下载深筐小零件方案。
下载完成后,在Mech-Vision中将自动打开该方案。
在配置视觉工程前,需要完成梅卡曼德视觉系统与机器人侧(机器人、PLC 或上位机)的通信对接。
深筐小零件方案使用标准接口通信,具体操作方法请参考标准接口通信配置。
手眼标定
手眼标定是指建立相机坐标系与机器人坐标系对应关系的过程,将视觉系统确定的物体位姿转换为机器人坐标系下的位姿,从而引导机器人精准完成抓取任务。
请参考机器人手眼标定操作指南完成手眼标定。
每次安装相机后,或标定后相机与机器人的相对位置发生变化时,都需要重新进行手眼标定。 |
视觉工程配置
完成通信配置和手眼标定后,即可使用Mech-Vision进行视觉工程配置。
本方案中包含两个工程,分别是深筐内小零件和二次定位台上小零件。
深筐内小零件工程,用于识别并输出深筐内的小零件位姿。
二次定位台上小零件工程,用于识别并输出二次定位台上的小零件位姿。
下文将分别介绍这两个工程。
深筐内小零件
该视觉工程配置的流程如下图所示。
连接相机并采集图像
-
连接相机。
打开Mech-Eye Viewer,找到待连接的相机,单击连接按钮。
-
调节相机参数。
为确保相机采集到的2D图像清晰,点云无缺失,需调节相机参数。参数调节方法请参考PRO M相机参数参考指南。
-
采集图像。
相机连接成功且设置参数组后,即可开始采集工件图像。单击界面上方的 按钮,进行单次图像采集,此时即可查看采集到的工件2D图像和点云,确保2D图像清晰,点云无缺失且边缘清晰。合格的工件2D图像和点云分别如下图中左图、右图所示。
-
在Mech-Vision中连接相机。
单击从相机获取图像步骤,在界面右下角步骤参数中关闭虚拟模式,然后单击选择相机按钮。在弹出的窗口中单击某相机编号右侧的 图标,该图标变为 后,代表相机连接成功。相机连接成功后,单击右侧的参数组下拉框选择标定的参数组。
以上设置完成后即已连接真实相机,无需调节其他参数。单击从相机获取图像步骤右侧的 图标运行该步骤,如无报错即表示相机连接成功,并可正确采集图像。
3D工件识别(识别工件)
深筐小零件方案使用3D工件识别步骤识别工件。单击3D工件识别步骤界面的配置向导按钮,打开3D工件识别工具进行相关配置。总体配置流程如下图所示。
识别工件
点云预处理完成后,需从工件库中制作工件的点云模板,然后在3D工件识别工具中设置匹配相关参数,用于匹配点云模板。
-
制作工件模板。
-
制作点云模板并添加抓取点。单击打开工件库按钮,打开工件库,通过导入STL文件生成工件点云模板,并手动配置抓取点。
-
-
-
开启识别工件右侧的高级模式开关。
-
匹配模式:开启自动设置匹配模式开关。开启后,该步骤将自动调节粗匹配设置和精匹配设置参数。
-
粗匹配设置:为减少匹配耗时,需将粗匹配运行方式设置为自定义,将期望的模板点云点数设置为200,提高识别速度。
-
置信度设置:为提高识别工件的准确性,将置信度策略设置为手动,并调节以下参数:
-
将联合评分策略设置为考虑面和边缘。
-
将面匹配置信度阈值设置为0.5000,将边缘匹配置信度阈值设置为0.1000。
-
在左侧可视化窗口下方的识别结果报表处第一个下拉菜单处选择输出结果,面匹配置信度和边缘匹配置信度值均高于设置的阈值的工件将被保留。请根据现场实际情况检查识别结果。若存在误识别或漏识别的情况,请分别调高或者调低相应的阈值。
-
调节置信度策略参数时,需先检查将其设置为自动时的识别效果,若调节置信度阈值后的识别效果仍不满足现场识别需求,且可视化窗口下方的面匹配置信度和边缘匹配置信度值相差过大,推荐将置信度策略设置为手动,并调节相关参数。
-
-
-
输出-最大结果输出个数:在满足路径规划需求的前提下,尽量减少输出个数,减少匹配耗时。本方案中将最大输出结果个数设置为30。
-
上述参数设置完成后,单击运行步骤按钮,匹配效果如下图所示。
3D工件识别(识别料筐)
该方案使用3D工件识别步骤识别料筐。单击3D工件识别步骤界面的配置向导按钮,打开3D工件识别工具进行相关配置。总体配置流程如下图所示。
识别工件
点云预处理完成后,需从工件库中制作料筐的点云模板,然后在3D工件识别工具中设置匹配相关参数,用于匹配点云模板。
-
制作工件模板。
制作点云模板并添加抓取点。单击打开工件库按钮,打开工件库,通过相机采集点云生成点云模板,并手动配置抓取点。
-
设置识别相关参数。
-
匹配模式:开启自动设置匹配模式开关。
-
置信度设置:将置信度阈值设置为0.8,用于去除错误的匹配结果。
-
输出-最大结果输出个数:因目标物体是料筐,需将最大输出结果个数设置为1。
-
上述参数设置完成后,单击运行步骤按钮,匹配效果如下图所示。
调整位姿(工件位姿)
获取工件位姿后,需使用调整位姿V2步骤对位姿进行调整。单击调整位姿V2步骤界面的配置向导按钮,打开位姿调整工具进行位姿调整相关配置。总体配置流程如下图所示。
-
位姿转换。
为了输出工件在机器人坐标系下的位姿,需勾选将位姿转换至机器人坐标系,将工件位姿从相机坐标系转换至机器人坐标系。
-
调整工件位姿,使其Z轴方向朝上,Y轴指向机器人坐标系的X轴负方向,使机器人能够按照指定方向抓取工件,避免碰撞。
-
开启位姿调整的自定义模式。
-
设置翻转位姿,使翻转轴与目标方向夹角最小分类下的参数:将需要固定的轴设置为X轴,需要翻转的轴设置为Z轴,并将机器人坐标系下的Z轴正方向设置为目标方向。
-
设置旋转位姿,使旋转轴与目标方向夹角最小分类下的参数:将需要固定的轴设置为Z轴,需要旋转的轴设置为Y轴,并将机器人坐标系下的X轴负方向设置为目标方向。
-
-
位姿排序。
将排序类型设置为按位姿的XYZ值排序,将位姿的指定量设置为Z值,并以降序方式对位姿进行排序。
-
位姿过滤。
为了减少后续路径规划耗时,需根据位姿Z轴和参考方向之间的夹角过滤明显不可抓取的工件。本教程中,需把最大角度差设置为90°。
设置感兴趣区域,过滤感兴趣区域外的不可抓取的位姿。
-
通用设置。
将设置新增端口数量设置为1,该步骤将新增输入和输出端口各一个,连接3D工件识别步骤输出的工件名称,并将其输出到输出步骤。
调整位姿(料筐位姿)
获取料筐位姿后,需使用调整位姿V2步骤对位姿进行调整。单击调整位姿V2步骤界面的配置向导按钮,打开位姿调整工具进行位姿调整相关配置。总体配置流程如下图所示。
-
选择位姿处理策略。
因目标物体是盛放工件的深料筐,应勾选料筐选项。
-
位姿转换。
为了输出料筐在机器人坐标系下的位姿,需勾选将位姿转换至机器人坐标系,将料筐位姿从相机坐标系转换至机器人坐标系。
-
在机器人基坐标系下,沿Z轴正方向移动料筐位姿,手动将移动距离调整为-245mm,以将料筐位姿从料筐上表面向下移动至料筐中心,后续用于在Mech-Viz更新料筐碰撞模型的位置。
移动距离值 = -1 × 1/2 料筐高度。 -
角度过滤。
为了减少后续路径规划耗时,需根据位姿Z轴和参考方向之间的夹角过滤明显不可抓取的工件。本教程中,需把最大角度差设置为90°。
-
通用设置。
将设置新增端口数量设置为1,该步骤将新增输入和输出端口各一个,连接3D工件识别步骤输出的工件名称,并将其输出到输出步骤。
二次定位台上小零件
该视觉工程配置的流程如下图所示。
连接相机并采集图像
-
连接相机。
打开Mech-Eye Viewer,找到待连接的相机,单击连接按钮。
-
调节相机参数。
为确保相机采集到的2D图像清晰,点云无缺失,需调节相机参数。参数调节方法请参考PRO S相机参数参考指南。
-
采集图像。
相机连接成功且设置参数组后,即可开始采集工件图像。单击界面上方的 按钮,进行单次图像采集,此时即可查看采集到的工件2D图像和点云,确保2D图像清晰,点云无缺失且边缘清晰。合格的工件2D图像和点云分别如下图中左图、右图所示。
-
在Mech-Vision中连接相机。
单击从相机获取图像步骤,在界面右下角步骤参数中关闭虚拟模式,然后单击选择相机按钮。在弹出的窗口中单击某相机编号右侧的 图标,该图标变为 后,代表相机连接成功。相机连接成功后,单击右侧的参数组下拉框选择标定的参数组。
以上设置完成后即已连接真实相机,无需调节其他参数。单击从相机获取图像步骤右侧的 图标运行该步骤,如无报错即表示相机连接成功,并可正确采集图像。
3D工件识别(识别工件)
深筐小零件方案使用3D工件识别步骤识别工件。单击3D工件识别步骤界面的配置向导按钮,打开3D工件识别工具进行相关配置。总体配置流程如下图所示。
识别工件
点云预处理完成后,需从工件库中制作工件的点云模板,然后在3D工件识别工具中设置匹配相关参数,用于匹配点云模板。
-
制作工件模板。
-
制作点云模板并添加抓取点。单击打开工件库按钮,打开工件库,通过相机采集点云生成点云模板,并手动配置抓取点。
-
-
-
开启识别工件右侧的高级模式开关。
-
匹配模式:开启自动设置匹配模式开关。开启后,该步骤将自动调节粗匹配设置和精匹配设置参数。
-
粗匹配设置:为减少匹配耗时,需将粗匹配运行方式设置为高速,提高识别速度。
-
置信度设置:为提高识别工件的准确性,将置信度策略设置为手动,并调节以下参数:
-
将联合评分策略设置为考虑面和边缘。
-
将面匹配置信度阈值设置为0.8000,将边缘匹配置信度阈值设置为0.4000。
-
-
输出-最大结果输出个数:在满足路径规划需求的前提下,尽量减少输出个数,减少匹配耗时。本方案中将最大输出结果个数设置为10。
-
上述参数设置完成后,单击运行步骤按钮,匹配效果如下图所示。
调整位姿
获取工件位姿后,需使用调整位姿V2步骤对位姿进行调整。单击调整位姿V2步骤界面的配置向导按钮,打开位姿调整工具进行位姿调整相关配置。总体配置流程如下图所示。
-
位姿转换。
为了输出工件在机器人坐标系下的位姿,需勾选将位姿转换至机器人坐标系,将工件位姿从相机坐标系转换至机器人坐标系。
-
将方向调整设置为自动对齐,应用场景设置为Z轴对齐(上下料),使机器人能够按照指定方向抓取工件,避免碰撞。
-
位姿排序。
将排序类型设置为按位姿的XYZ值排序,将位姿的指定量设置为Z值,并以降序方式对位姿进行排序。
-
位姿过滤。
为了减少后续路径规划耗时,需根据位姿Z轴和参考方向之间的夹角过滤明显不可抓取的工件。本教程中,需把最大角度差设置为90°。
设置感兴趣区域,过滤感兴趣区域外的不可抓取的位姿。
-
通用设置。
将设置新增端口数量设置为1,该步骤将新增输入和输出端口各一个,连接3D工件识别步骤输出的工件名称,并将其输出到输出步骤。
路径规划
完成工件识别后,即可使用Mech-Viz进行路径规划,然后编写机器人程序用于抓取工件。
路径规划的配置流程如下图所示。
配置场景物体
配置场景物体的目的是还原真实现场场景,以此来辅助用户规划机器人运动路径。具体操作方法请参考配置场景物体。
在确保抓取可行性的基础上,应在严格还原真实作业环境的前提下配置场景物体。本方案中场景物体配置情况如下图所示:
配置末端工具
配置末端工具的目的是在三维仿真空间中显示末端工具的模型,并用于碰撞检测。具体操作方法请参考配置末端工具。
|
调整工作流程
工作流程指的是在Mech-Viz中以流程图形式搭建的机器人运动控制程序。场景物体和末端工具配置完成后,即可根据实际需求调整工程的工作流程。抓取工件时的逻辑处理流程图如下图所示。
Mech-Viz工程包含以下两个分支:
-
第一个分支对应Mech-Vision中识别深筐内小零件工程后续的抓取环节。使用视觉识别步骤触发该工程,将深筐内小零件位姿输出给Mech-Viz用于规划路径并执行放置到二次定位台的指令。
-
第二个分支对应Mech-Vision中识别二次定位台小零件工程后续的抓取环节。使用视觉识别步骤触发该工程,将二次定位台上小零件位姿输出给Mech-Viz用于规划路径并执行放置到对中台的指令。
-
当二次定位台上的小零件抓取完毕后,会重新运行开始分支一并循环整个流程,直至抓取完所有小零件,实现清筐。
工程的具体工作流程如下图所示。
其中,工作流程中起始和结束的两个定点移动步骤为示教点,不需要对外发送。其他移动步骤会对外发送路径点,每个筐内智能路径步骤对应两个路径点,分支1合计发送9个路径点,分支2合计发送7个路径点。
仿真与测试
单击工具栏中的仿真按钮,即可对搭建完成的Mech-Viz工程进行仿真,以测试视觉系统是否已成功搭建。
将工件随机摆放在料筐内,然后单击Mech-Viz工具栏的仿真按钮模拟抓取工件。每次抓取成功后需重新布置工件,循环仿真抓取10次。若10次仿真抓取均能顺利进行,即可判定视觉系统可正常工作。
若仿真过程中出现异常,请参考方案部署常见问题解决问题。
机器人抓放
机器人程序编写
若仿真效果满足预期,即可编写FANUC机器人抓放程序。
FANUC机器人样例程序MM_S10_Viz_Subtask可以基本满足本典型案例所需要的功能。你可以在样例程序基础上进行修改。关于该程序的解释详细,请参考S10样例程序解读。
修改说明
本样例由两个程序组成,其中子任务触发Mech-Viz工程运行并获取规划路径来抓取深筐内小零件,主任务负责根据规划路径移动机器人,且在机器人离开抓取区域时触发子任务运行,从而提前规划下一轮路径,以缩短节拍。基于样例程序,请参考如下步骤修改程序文件:
-
子任务
-
添加分支指令,触发相机拍照流程。
修改前 修改后(示例) 10: !trigger {product-viz} project ; 11: **CALL MM_START_VIZ(2,10)** ; 12: !get planned path, 1st argument ; 13: !(1) means getting pose in JPs ; 14: **CALL MM_GET_VIZ(1,51,52,53)** ;
10: !trigger {product-viz} project ; 11: CALL MM_START_VIZ(2,10) ; 12: WAIT .10(sec) ; 13: !(Branch_Num,Exit_Num)" ; 14: CALL MM_SET_BCH(1,1) ; 15: !get planned path, 1st argument ; 16: !(1) means getting pose in JPs ; 17: CALL MM_GET_VIZ(1,51,52,53) ;
-
添加转存规划路径指令,将所有返回的路径点转存到本地变量中。
Mech-Viz返回的规划路径包含九个路径点:入筐点、抓取接近点、抓取点、抓取离开点、出筐点、晃动点1、晃动点2、出筐点、放置点。样例程序只转存了三个路径点,因此需要添加转存规划路径指令。 修改前 修改后(示例) 22: CALL MM_GET_JPS(1,60,70,80) ; 23: CALL MM_GET_JPS(2,61,71,81) ; 24: CALL MM_GET_JPS(3,62,72,82) ;
25: CALL MM_GET_JPS(1,60,70,80) ; 26: CALL MM_GET_JPS(2,61,71,81) ; 27: CALL MM_GET_JPS(3,62,72,82) ; 28: CALL MM_GET_JPS(4,63,70,80) ; 29: CALL MM_GET_JPS(5,64,71,81) ; 30: CALL MM_GET_JPS(6,65,72,82) ; 31: CALL MM_GET_JPS(7,66,70,80) ; 32: CALL MM_GET_JPS(8,67,71,81) ; 33: CALL MM_GET_JPS(9,68,72,82) ;
-
-
主任务
-
设置工具坐标系。确认机器人示教器上的TCP与Mech-Viz软件中的TCP数据一致。将当前所选的工具坐标系号码设置为实际使用的夹爪所在的坐标系。
修改前 修改后(示例) 9: !set current tool NO. to 1 ; 10: UTOOL_NUM=1 ;
9: !set current tool NO. to 3 ; 10: UTOOL_NUM=3 ;
请将数字替换实际使用工具的编号,此处“3”仅作示例。 -
指定工控机IP地址和端口号。将CALL MM_INIT_SKT指令中的IP地址和端口号修改为工控机实际IP地址和端口号,确保与视觉系统中的设置一致。
修改前 修改后(示例) 16: CALL MM_INIT_SKT('8','127.0.0.1',50000,5) ;
16: CALL MM_INIT_SKT('8','127.1.1.2',50000,6) ;
-
配置入筐点、抓取接近点、抓取点、抓取离开点、出筐点、晃动点1、晃动点2、出筐点和放置点的位置寄存器编号。
修改前 修改后 32: !move to approach waypoint ; 33: !of picking ; 34:J PR[60] 50% FINE ; 35: !move to picking waypoint ; 36:J PR[61] 10% FINE ; ... 40: !move to departure waypoint ; 41: !of picking ; 42:J PR[62] 50% FINE ; 43: !move to intermediate waypoint ; 44: !of placing, and trigger {product-viz} ; 45: !project and get planned path in ; 46: !advance ; 47:J P[3] 50% CNT100 DB 10.0mm,CALL MM_S10_SUB ; 48: !move to approach waypoint ; 49: !of placing ; 50:L P[4] 1000mm/sec FINE Tool_Offset,PR[2] ; 51: !move to placing waypoint ; 52:L P[4] 300mm/sec FINE ;
l
32: !move to approach waypoint ; 33: !of picking ; 34: J PR[60] 100% CNT100 ; 35: J PR[61] 100% CNT100 ; 36: !move to picking waypoint ; 37: L PR[62] 200mm/sec FINE ; ... 42: !move to departure waypoint ; 43: !of picking ; 44: L PR[63] 500mm/sec CNT100 ; 45: J PR[64] 100% CNT100 ; 46: !Shake ; 47: J PR[65] 100% CNT40 ; 48: J PR[66] 100% CNT40 ; 49: J PR[65] 100% CNT40 ; 50: J PR[66] 100% CNT40 ; 51: !move to intermediate waypoint ; 52: !of placing, and trigger Mech-Viz ; 53: !project and get planned path in ; 54: !advance ; 55: J PR[67] 100% CNT40 ; 56: CALL MM_S10_SUB ; 57: !move to approach waypoint ; 58: !of placing ; 59: J PR[68] 100% FINE ;
在修改后的样例程序中,PR[60]为入筐点,PR[61]为抓取接近点,PR[62]为抓取点,PR[63]为抓取离开点,PR[64]为出筐点,PR[65]、PR[66]为晃动点,PR[67]为出筐点,PR[68]为放置点。 -
设置DO端口执行抓取的信号,以闭合夹具抓取工件。注意,DO指令应根据现场实际使用的DO端口号设置。
修改前 修改后(示例) 37: !add object grasping logic here, ; 38: !such as "DO[1]=ON" ; 39: PAUSE ;
38: !Add object grasping logic here ; 39: DO[107]=ON ; 40: DO[108]=OFF ; 41: WAIT .50(sec) ;
-
设置DO端口执行放置的信号,以放置工件。注意,DO指令应根据现场实际使用的DO端口号设置。
修改前 修改后(示例) 53: !add object releasing logic here, ; 54: !such as "DO[1]=OFF" ; 55: PAUSE ;
60: !add object releasing logic here, ; 61: !such as "DO[0]=OFF" ; 62: WAIT .50(sec) ; 63: DO[107]=OFF ; 64: DO[108]=ON ; 65: WAIT 1.00(sec) ;
-
将机器人移动至二次定位台抓取等待位。
修改前 修改后(示例) 56: !move to departure waypoint ; 57: !of placing ; 58:L P[4] 1000mm/sec FINE Tool_Offset,PR[2] ;
66: !move to departure waypoint ; 67: !of placing ; 68: !Move to HOME2 Position ; 69: J P[3:HOME2] 100% FINE ;
-
机器人抓取二次定位台上小零件的程序修改逻辑请参考上述修改说明,此处不再赘述。 |
抓取测试
为保证实际生产的稳定运行,需要运行修改后的样例程序,引导机器人测试抓取工件。具体方法请参考测试标准接口通信的操作。
进行抓取测试前,请先示教如下点位。
名称 | 变量 | 解析 |
---|---|---|
Home点 |
P[1] |
深筐中示教的初始位。初始位应远离待抓取物体及周边设备,且不遮挡相机视野。 |
拍照点 |
P[2] |
示教的相机拍照位。拍照位指相机采集图像时机器人所在的位置。在此位置,机器人手臂应不遮挡相机视野。 |
放置的过渡点 |
P[3:HOME2] |
二次定位台上示教的初始位。初始位应远离待抓取物体及周边设备,且不遮挡相机视野。 |
完成示教后,将工件摆放在下表所列场景中,依次使用机器人测试低速抓取。
抓取测试分为两个阶段,料筐内抓取和二次定位台抓取: