方案部署

您正在查看V2.0.0版本的文档。如果您想查阅其他版本的文档,可以点击页面右上角“切换版本”按钮进行切换。

■ 如果您想使用最新版本,可以从梅卡曼德下载中心下载。

■ 如果您不确定当前使用的产品是哪个版本,请随时联系梅卡曼德技术支持。

本节将介绍如何进行小型钣金件方案部署,总体流程如下图所示。

solution configuration overview

视觉系统硬件搭建

视觉系统硬件搭建是将硬件设备(相机和工控机)集成到实际工作环境中,以支持视觉系统的正常运行。

在该阶段,你需要完成视觉系统硬件的安装与连接。详细信息请参考视觉系统硬件搭建

机器人通信配置

机器人通信配置前,需先获取方案。请单击此处查看方案获取方法。
  1. 打开Mech-Vision软件。

  2. 在Mech-Vision欢迎页中单击从案例库新建按钮,打开案例库。

  3. 进入案例库中的典型案例分类,单击右上角的 get resource 图标以获取更多资源,并在弹出的窗口中单击确定按钮。

  4. 获取案例资源后,选择无序工件拣选分类下的小型钣金件,在下方填写方案名称和路径,最后单击创建按钮,并在弹出的窗口中单击确定按钮下载小型钣金件方案。

    下载完成后,在Mech-Vision中将自动打开该方案。

在配置视觉工程前,需要完成梅卡曼德视觉系统与机器人侧(机器人、PLC 或上位机)的通信对接。

小型钣金件方案使用标准接口通信,具体操作方法请参考标准接口通信配置

手眼标定

手眼标定是指建立相机坐标系与机器人坐标系对应关系的过程,将视觉系统确定的物体位姿转换为机器人坐标系下的位姿,从而引导机器人精准完成抓取任务。

请参考机器人手眼标定操作指南完成手眼标定。

每次安装相机后,或标定后相机与机器人的相对位置发生变化时,都需要重新进行手眼标定。

视觉工程配置

完成通信配置和手眼标定后,即可使用Mech-Vision进行视觉工程配置。

视觉工程配置的流程如下图所示。

vision overall

连接相机并采集图像

  1. 连接相机。

    打开Mech-Eye Viewer,找到待连接的相机,单击连接按钮。

    vision click connect camera
  2. 调节相机参数。

    为确保相机采集到的2D图像清晰,点云无缺失,需调节相机参数。参数调节方法请参考PRO S相机参数参考指南

  3. 采集图像。

    相机连接成功且设置参数组后,即可开始采集工件图像。单击界面上方的 vision click capture icon 按钮,进行单次图像采集,此时即可查看采集到的工件2D图像和点云,确保2D图像清晰,点云无缺失且边缘清晰。合格的工件2D图像和点云分别如下图中左图、右图所示。

    vision image and cloud
  4. 在Mech-Vision中连接相机。

    单击从相机获取图像步骤,在界面右下角步骤参数中关闭虚拟模式,然后单击选择相机按钮。

    vision select camera

    在弹出的窗口中单击某相机编号右侧的 vision connect camera before icon 图标,该图标变为 vision connect camera after icon 后,代表相机连接成功。相机连接成功后,单击右侧的参数组下拉框选择标定的参数组,如下图所示。

    vision connect camera

    以上设置完成后即已连接真实相机,无需调节其他参数。单击从相机获取图像步骤右侧的 vision run step camera icon 图标运行该步骤,如无报错即表示相机连接成功,并可正确采集图像。

3D工件识别

小型钣金件方案使用3D工件识别步骤识别工件。单击3D工件识别步骤界面的配置向导按钮,打开3D工件识别工具进行相关配置。总体配置流程如下图所示。

vision 3d target object recognition overall

点云预处理

点云预处理阶段,需调整各参数对数据进行预处理,使原始点云更加清晰,从而提高识别的准确度和效率。

  1. 设置识别区

    设置有效的识别区,将干扰因素屏蔽在区域外,提升识别效率。

  2. 调节参数

    设置边缘提取效果噪声抑制级别点过滤参数,滤除杂点。

点云预处理完成后,单击运行步骤按钮,预处理效果如下图所示。

vision point cloud preprocessing effect

识别工件

点云预处理完成后,需从工件库中制作工件的点云模板,然后在3D工件识别工具中设置匹配相关参数,用于匹配点云模板。

  1. 制作工件模板。

  2. 设置识别相关参数

    • 开启识别工件右侧的高级模式开关。

    • 匹配模式:开启自动设置匹配模式开关。开启后,该步骤将自动调节粗匹配设置精匹配设置参数。

    • 粗匹配设置:为减少匹配耗时,需将粗匹配运行方式设置为自定义,将期望的模板点云点数设置为300

    • 置信度设置:将置信度策略设置为自动,将置信度阈值设置为0.5,用于去除错误的匹配结果。

    • 输出-最大结果输出个数:在满足路径规划需求的前提下,尽量减少输出个数,减少匹配耗时。本方案中将最大输出结果个数设置为20

    • 去除重叠物体位姿、去除压叠物体位姿:为了去除重叠、压叠的识别结果,打开启用去重叠功能启用去压叠功能开关,并将各自的阈值设置为30%20%

上述参数设置完成后,单击运行步骤按钮,匹配效果如下图所示。

vision target object recognition effect

配置步骤端口

完成工件识别后,需配置步骤端口,为Mech-Viz提供视觉结果和点云,用于路径规划和碰撞检测。

由于后续步骤中需要对抓取点进行相关处理,在选择端口下勾选抓取点相关端口选项。为识别和定位料筐,需勾选预处理后的点云选项。最后单击保存按钮。设置完成后3D工件识别步骤新增了对应的输出端口,如下图所示。

vision general settings effect

定位料筐

由于料筐形状近似为矩形,可直接使用案例库教学示例3D定位分组下的标准料筐定位步骤组合对料筐进行定位,无需制作点云模板。

  • 字符串列表:即料筐在Mech-Viz中的名称,用于更新料筐位置。

  • 移动距离:将料筐位姿从料筐上表面向下移动至料筐中心,此方案中应将移动距离设置为-57.5mm。

    移动距离值 = -1 × 1/2 料筐高度
  • 运行该步骤组合,定位料筐并将料筐位姿发送到Mech-Viz,并更新料筐位置。

调整位姿

获取工件位姿后,需使用调整位姿V2步骤对位姿进行调整。单击调整位姿V2步骤界面的配置向导按钮,打开位姿调整工具进行位姿调整相关配置。总体配置流程如下图所示。

vision adjust poses overall
  1. 位姿转换

    为了输出工件在机器人坐标系下的位姿,需勾选将位姿转换至机器人坐标系,将工件位姿从相机坐标系转换至机器人坐标系。

  2. 位姿排序

    排序类型设置为按位姿的XYZ值排序,将位姿的指定量设置为Z值,并以降序方式对位姿进行排序。

  3. 角度过滤

    为了减少后续路径规划耗时,需根据位姿Z轴和参考方向之间的夹角过滤明显不可抓取的工件。本教程中,需把最大角度差设置为70°

  4. 过滤感兴趣区域之外的位姿

    根据实际情况设置3D ROI,以过滤不在3D ROI内的错误的工件位姿。

  5. 通用设置。

    设置新增端口数量设置为1,该步骤将新增输入和输出端口各一个,连接3D工件识别步骤输出的抓取点信息,并将其输出到输出步骤。

输出工件信息

使用输出步骤,将抓取点、抓取点信息、预处理后的点云、料筐名称、料筐位姿等信息输出到Mech-Viz,用于进行路径规划。

路径规划

完成工件识别后,即可使用Mech-Viz进行路径规划,然后编写机器人程序用于抓取工件。

路径规划的配置流程如下图所示。

viz overall

配置场景物体

配置场景物体的目的是还原真实现场场景,以此来辅助用户规划机器人运动路径。具体操作方法请参考配置场景物体

在确保抓取可行性的基础上,应在严格还原真实作业环境的前提下配置场景物体。本方案中场景物体配置情况如下图所示:

viz scene objects configuration effect

配置末端工具

配置末端工具的目的是在三维仿真空间中显示末端工具的模型,并用于碰撞检测。具体操作方法请参考配置末端工具

  • 为了减少制作末端工具碰撞模型所需的操作时间,在创建凸包时无需完全复原模型,可根据模型的实际情况有选择地忽略部分细节。

  • 制作夹指部分时应当力求精细,确保其形态能高度还原实物,以保证碰撞检测的准确性。对于距离抓取点(工件)部分较远的机械结构,可以简化处理,使用长方体凸包来替代复杂的结构设计,以提高效率。下图中左图为原始模型,右图为简化后模型。

    viz end tool configuration effect

调整工作流程

工作流程指的是在Mech-Viz中以流程图形式搭建的机器人运动控制程序。场景物体和末端工具配置完成后,即可根据实际需求调整工程的工作流程。抓取工件时的逻辑处理流程图如下图所示。

viz adjust workflow overall

使用标准接口通信时,工程的具体工作流程如下图所示。

viz adjust workflow non master

其中,工作流程中起始和结束的两个定点移动步骤为示教点,不需要对外发送。其他移动步骤会对外发送路径点,每个筐内智能路径步骤对应两个路径点,合计共发送5个路径点。

仿真与测试

单击工具栏中的仿真按钮,即可对搭建完成的Mech-Viz工程进行仿真,以测试视觉系统是否已成功搭建。

将工件随机摆放在料筐内,然后单击Mech-Viz工具栏的仿真按钮模拟抓取工件。每次抓取成功后需重新布置工件,循环仿真抓取10次。若10次仿真抓取均能顺利进行,即可判定视觉系统可正常工作。

若仿真过程中出现异常,请参考方案部署常见问题解决问题。

机器人抓放

机器人程序编写

若仿真效果满足预期,即可编写FANUC机器人抓放程序。

FANUC机器人样例程序MM_S10_Viz_Subtask可以基本满足本典型案例所需要的功能。你可以在样例程序基础上进行修改。关于MM_S10_Viz_Subtask程序的解释详细,请参考样例程序解读

修改说明

本样例由两个程序组成,其中子任务负责触发Mech-Viz工程运行并获取规划路径;主任务负责根据规划路径移动机器人,且在机器人离开抓取区域时触发子任务运行,从而提前规划下一轮路径,以缩短节拍。基于样例程序,请参考如下步骤修改程序文件:

  • 子任务

    1. 添加转存规划路径指令,将所有返回的路径点转存到本地变量中。

      Mech-Viz返回的规划路径包含五个路径点:入筐点、抓取接近点、抓取点、抓取离开点、出筐点。样例程序只转存了三个路径点,因此需要添加转存规划路径指令。
      修改前 修改后(示例)
        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) ;
        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(4,63,73,83) ;
        26:  CALL MM_GET_JPS(5,64,74,84) ;
  • 主任务

    1. 设置工具坐标系。确认机器人示教器上的TCP与Mech-Viz软件中的TCP数据一致。将当前所选的工具坐标系号码设置为实际使用的夹爪所在的坐标系。

      修改前 修改后(示例)
        11:  !set current tool NO. to 1 ;
        12:  UTOOL_NUM=1 ;
        11:  !set current tool NO. to 3 ;
        12:  UTOOL_NUM=3 ;
      请将数字替换实际使用工具的编号,此处“3”仅作示例。
    2. 指定工控机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) ;
    3. 配置入筐点、抓取接近点和抓取点的位置寄存器编号。

      修改前 修改后
        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    ;
        32:  !move to approach waypoint ;
        33:  !of picking ;
        34:J PR[60] 50% FINE    ;
        35:J PR[61] 50% FINE    ;
        36:  !move to picking waypoint ;
        37:J PR[62] 10% FINE    ;
        ...
        42:  !move to departure waypoint ;
        43:  !of picking ;
        44:J PR[63] 50% FINE    ;
        45:J PR[64] 50% FINE    ;
      在修改后的样例程序中,PR[60]为入筐点,PR[61]为抓取接近点,PR[62]为抓取点,PR[63]为抓取离开点,PR[64]为出筐点。
    4. 设置DO端口执行抓取的信号,以闭合夹具抓取工件。注意,DO指令应根据现场实际使用的DO端口号设置。

      修改前 修改后(示例)
        37:  !add object grasping logic here, ;
        38:  !such as "DO[1]=ON" ;
        39:  PAUSE ;
        38:  !add object grasping logic here, ;
        39:  !such as "DO[1]=ON" ;
        40:  PAUSE ;
        41:  DO[1]=ON ;
    5. 设置DO端口执行放置的信号,以放置工件。注意,DO指令应根据现场实际使用的DO端口号设置。

      修改前 修改后(示例)
        53:  !add object releasing logic here, ;
        54:  !such as "DO[1]=OFF" ;
        55:  PAUSE ;
        56:  !add object releasing logic here, ;
        57:  !such as "DO[0]=OFF" ;
        58:  PAUSE ;
        59:  DO[0]=OFF ;

参考:修改后的样例程序

  • 子任务

   1:  !-------------------------------- ;
   2:  !FUNCTION: run Mech-Viz project ;
   3:  !and get planned path in subtask ;
   4:  !(run together with ;
   5:  !MM_S10_Viz_Subtask) ;
   6:  !Mech-Mind, 2023-12-25 ;
   7:  !-------------------------------- ;
   8:   ;
   9:  F[11]=(ON) ;
  10:  !trigger Mech-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) ;
  15:  !check whether planned path has ;
  16:  !been got from Mech-Viz ;
  17:  !successfully ;
  18:  IF (R[53]=2100) THEN ;
  19:  !save waypoints of the planned ;
  20:  !path to local variables one ;
  21:  !by one ;
  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(4,63,73,83) ;
  26:  CALL MM_GET_JPS(5,64,74,84) ;
  27:  ENDIF ;
  28:  F[11]=(OFF) ;
  • 主任务

   1:  !-------------------------------- ;
   2:  !FUNCTION: run Mech-Viz project ;
   3:  !and get planned path in subtask ;
   4:  !(run together with ;
   5:  !MM_S10_Sub) ;
   6:  !Mech-Mind, 2023-12-25 ;
   7:  !-------------------------------- ;
   8:   ;
   9:  !set current uframe NO. to 0 ;
  10:  UFRAME_NUM=0 ;
  11:  !set current tool NO. to 3 ;
  12:  UTOOL_NUM=3 ;
  13:  !initialize communication ;
  14:  !parameters(initialization is ;
  15:  !required only once) ;
  16:  CALL MM_INIT_SKT('8','127.1.1.2',50000,6) ;
  17:  !move to robot home position ;
  18:J P[1] 100% FINE    ;
  19:  RUN MM_S10_SUB ;
  20:  LBL[1:LOOP] ;
  21:  !move to wait position for ;
  22:  !picking ;
  23:L P[2] 1000mm/sec FINE    ;
  24:  !wait until subtask program ;
  25:  !finished ;
  26:  WAIT (F[11]=OFF)    ;
  27:  !check whether planned path has ;
  28:  !been got from Mech-Viz ;
  29:  !successfully ;
  30:  IF R[53]<>2100,JMP LBL[99] ;
  31:  !follow the planned path to pick ;
  32:  !move to approach waypoint ;
  33:  !of picking ;
  34:J PR[60] 50% FINE    ;
  35:J PR[61] 50% FINE    ;
  36:  !move to picking waypoint ;
  37:J PR[62] 10% FINE    ;
  38:  !add object grasping logic here, ;
  39:  !such as "DO[1]=ON" ;
  40:  PAUSE ;
  41:  DO[1]=ON ;
  42:  !move to departure waypoint ;
  43:  !of picking ;
  44:J PR[63] 50% FINE    ;
  45:J PR[64] 50% FINE    ;
  46:  !move to intermediate waypoint ;
  47:  !of placing, and trigger Mech-Viz ;
  48:  !project and get planned path in ;
  49:  !advance ;
  50:J P[3] 50% CNT100 DB   10.0mm,CALL MM_S10_SUB    ;
  51:  !move to approach waypoint ;
  52:  !of placing ;
  53:L P[4] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  54:  !move to placing waypoint ;
  55:L P[4] 300mm/sec FINE    ;
  56:  !add object releasing logic here, ;
  57:  !such as "DO[0]=OFF" ;
  58:  PAUSE ;
  59:  DO[0]=OFF ;
  60:  !move to departure waypoint ;
  61:  !of placing ;
  62:L P[4] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  63:  !move back to robot home position ;
  64:J P[1] 100% FINE    ;
  65:  JMP LBL[1] ;
  66:  END ;
  67:   ;
  68:  LBL[99:vision error] ;
  69:  !add error handling logic here ;
  70:  !according to different ;
  71:  !error codes ;
  72:  !e.g.: status=2038 means no ;
  73:  !point cloud in ROI ;
  74:  PAUSE ;

抓取测试

为保证实际生产的稳定运行,需要运行修改后的样例程序,引导机器人测试抓取工件。具体方法请参考测试标准接口通信的操作。

进行抓取测试前,请先示教如下点位。

名称 变量 解析

Home点

P[1]

示教的初始位。初始位应远离待抓取物体及周边设备,且不遮挡相机视野。

拍照点

P[2]

示教的相机拍照位。拍照位指相机采集图像时机器人所在的位置。在此位置,机器人手臂应不遮挡相机视野。

放置的过渡点

P[3]

过渡点用于保证机器人平滑移动,同时避免一些不必要的碰撞。

放置点

P[4]

放置工件的目标点。

完成示教后,将工件摆放在下表所列场景中,依次使用机器人测试低速抓取。

抓取测试分为以下三个阶段:

第一阶段:单工件抓取测试

工件摆放状态

图示

工件正面朝上,摆放在料筐中间

picking test 1

工件反面朝上,摆放在料筐中间

picking test 2

工件侧面朝上,摆放在料筐中间

picking test 3

工件摆放在料筐角落

picking test 4

picking test 5

第二阶段:相邻工件干扰测试

工件摆放状态

图示

工件相互勾连

picking test 6

工件相互压叠

picking test 7

第三阶段:真实场景抓取测试

工件摆放状态

图示

参考真实场景,工件乱序摆放

picking test 8

若在上述抓取测试场景中,机器人均可成功抓取工件,即可判定已成功部署视觉系统。

我们重视您的隐私

我们使用 cookie 为您在我们的网站上提供最佳体验。继续使用该网站即表示您同意使用 cookie。如果您拒绝,将使用一个单独的 cookie 来确保您在访问本网站时不会被跟踪或记住。