方案部署

您正在查看最新版本(V2.1.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图像清晰,点云无缺失,需调节相机参数。参数调节方法请参考LSR L相机参数参考指南

  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. 制作工件模板。

    单击打开工件库按钮,打开工件库,通过导入STL文件生成工件点云模板,并手动配置抓取点

  2. 设置识别相关参数

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

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

    • 额外精匹配:开启使用额外精匹配开关,对匹配结果进行第二次面模板精匹配,提高Z向抓取精度。

    • 置信度设置:将置信度策略设置为手动,将联合评分策略设置为考虑面和边缘,并将面匹配置信度阈值设置为较高值,如0.8,用于去除错误的匹配结果。

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

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

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

vision target object recognition effect

配置步骤端口

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

为了确保工件被机器人顺利抓取,需调整该工件的物体中心点,使其Z轴方向指向上方。在选择端口下选择物体中心点相关端口,并勾选预处理后的点云选项,并单击保存按钮。设置完成后3D工件识别步骤新增了对应的输出端口。

3D工件识别(识别料筐)

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

vision 3d target object recognition overall

点云预处理

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

  1. 设置识别区

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

  2. 调节参数

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

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

vision bin point cloud preprocessing effect

识别工件

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

  1. 制作工件模板。

    制作点云模板并添加抓取点。单击打开工件库按钮,打开工件库,通过相机采集点云生成点云模板,并手动配置抓取点

  2. 设置识别相关参数。

    • 匹配模式:开启自动设置匹配模式开关。

    • 置信度设置:将置信度阈值设置为0.7,用于去除错误的匹配结果。

    • 输出-最大结果输出个数:因目标物体是料筐,需将最大输出结果个数设置为1

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

vision bin recognition effect

配置步骤端口

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

为获取真实的料筐位置信息,在选择端口下勾选物体中心点相关端口选项并单击保存按钮。设置完成后3D工件识别步骤新增了对应的输出端口,如下图所示。

vision bin general settings effect

调整位姿(工件位姿)

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

vision adjust poses overall
  1. 位姿转换

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

  2. 位姿方向调整

    方向调整设置为指向参考点需要指向的轴设置为Z轴,使机器人能够按照指定方向抓取工件,避免碰撞。

  3. 位姿排序

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

  4. 角度过滤

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

  5. 通用设置。

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

调整位姿(料筐位姿)

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

vision adjust bin poses overall
  1. 选择位姿处理策略。

    因目标物体是盛放工件的深料筐,应勾选料筐选项。

  2. 位姿转换

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

  3. 沿指定方向移动位姿

    机器人基坐标系下,沿Z轴正方向移动料筐位姿,手动将移动距离调整为-285mm,以将料筐位姿从料筐上表面向下移动至料筐中心,后续用于在Mech-Viz更新料筐碰撞模型的位置。

    移动距离值 = -1 × 1/2 料筐高度。
  4. 角度过滤

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

  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 normal picking

机器人异常抓取方式(从工件两端吸取)如下图所示:

viz anormal picking

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

viz adjust workflow non master

仿真与测试

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

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

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

机器人抓放

机器人程序编写

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

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

修改说明

基于样例程序,请参考如下步骤修改程序文件:

  1. 定义工具中心点。

    修改前 修改后(示例)
      TOOL gripper ;set TCP
      point tcp1 = trans(0,37.517,390.13,-15,0,0)
      TOOL tcp1 ;set TCP
  2. 设置DO端口添加夹具控制逻辑,将夹具状态初始化。

    修改前 修改后(示例)
      /
      signal 10,-9;set do off
  3. 指定工控机IP地址和端口号。将MM_Init_Socket指令中的IP地址和端口号修改为工控机实际IP地址和端口号,确保与视觉系统中的设置一致。

    修改前 修改后(示例)
      ;Set ip address of IPC
      call mm_init_skt(127,0,0,1,50000)
      ;Set ip address of IPC
      call mm_init_skt(128,1,1,2,60000)
  4. 触发Mech-Viz工程运行,先切换分支3重置码垛记录,再切换分支1开始视觉识别,并根据获取Mech-Viz工程规划的抓取路径的状态码确定是否需要切换分支2进行视觉识别。

    修改前 修改后
      ;Run Viz project
      call mm_start_viz(1,#start_viz) ;(2,#start_viz) used for ETH viz initial position
      twait 0.1
      ;set branch exitport
      ;call mm_set_branch(1,1)
      ;get planned path
      call mm_get_vizdata(2,pos_num,vispos_num,ret1)
      ;Init Palletizing
      CALL mm_start_viz(2,#start_viz);(2,#start_viz) used for ETH viz initial position
      TWAIT 0.1
      call mm_set_branch(7,3);init Palletizing
      TWAIT 0.1
      CALL mm_start_viz(2,#start_viz);(2,#start_viz) used for ETH viz initial position
      TWAIT 0.1
      call mm_set_branch(7,1)
    10 flag =1
      CALL mm_get_vizdata(1,pos_num,vispos_num,ret1)
      IF ret1<>2100 THEN
        CALL mm_start_viz(2,#start_viz);(2,#start_viz) used for ETH viz initial position
        TWAIT 0.1
        call mm_set_branch(7,2)
        flag =2
        CALL mm_get_vizdata(1,pos_num,vispos_num,ret1)
  5. 在获得状态码 2100(表示成功获得Mech-Viz规划的路径)后,将机器人移动到示教的拍照点。

    修改前 修改后(示例)
      /
      JMOVE #camera_capture;move to camera_capture position
  6. 使机器人沿规划的路径移动到抓取点,并设置DO端口添加执行抓取的信号,以闭合夹具抓取工件。

    修改前 修改后(示例)
      ;follow the planned path to pick
      for count =1 to pos_num
        speed speed[count]
        LMOVE movepoint[count]
        if count == vispos_num then
            ;add object grasping logic here
      ;follow the planned path to pick
      JMOVE #movepoint[1]
      JMOVE #movepoint[2]
      JMOVE #movepoint[3]
      JMOVE #movepoint[4]
      LMOVE #movepoint[5]
      BREAK
      signal 9,-10;set do on
      TWAIT 0.2
      LMOVE #movepoint[6]
      LMOVE #movepoint[7]
  7. 根据flag结果确定下一步操作,flag=2时,执行丢件操作,否则进行正常放置流程。

    修改前 修改后
      /
      IF flag ==2 then
        break
        signal 10,-9;set do off
        twait 0.2
        JMOVE #movepoint[8]
        JMOVE #movepoint[9]
        TWAIT 2
      ELSE
        JMOVE #movepoint[8]
        end
      CALL mm_start_viz(2,#start_viz);(2,#start_viz) used for ETH viz initial position
      TWAIT 0.1
      call mm_set_branch(7,1)
    
    ;go to drop location
        if flag ==1 then
          JMOVE #movepoint[9]
          JMOVE #movepoint[10]
          break
          signal 10,-9
          twait 0.2
          JMOVE #movepoint[11]
        end
  8. 设置DO端口执行放置的信号,以放置工件。注意,DO指令应根据现场实际使用的DO端口号设置。

    修改前 修改后(示例)
      ;add object releasing logic here
      signal 10,-9;set do on
  9. 插入循环语句实现循环抓放。

    修改前 修改后(示例)
      /
      JMOVE #camera_capture;move to camera_capture position
      GOTO 10

参考:修改后的样例程序

.PROGRAM vision_sample_2()
;----------------------------------------------------------
;* FUNCTION:simple pick and place with Mech-Viz
;* mechmind
;----------------------------------------------------------
  accuracy 1 always
  speed 30 always
  point tcp1 = trans(0,37.517,390.13,-15,0,0)
  TOOL tcp1 ;set TCP
  signal 10,-9;set do off
  Home ;move robot home position
  JMOVE camera_capture ;move to camera_capture position
  break
  pos_num = 0
  ;Set ip address of IPC
  call mm_init_skt(128,1,1,2,60000)
  twait 0.1
  ;Set vision recipe
  ;call mm_switch_model(1,1)
  ;Init Palletizing
  CALL mm_start_viz(2,#start_viz);(2,#start_viz) used for ETH viz initial position
  TWAIT 0.1
  call mm_set_branch(7,3);init Palletizing
  TWAIT 0.1
  CALL mm_start_viz(2,#start_viz);(2,#start_viz) used for ETH viz initial position
  TWAIT 0.1
  call mm_set_branch(7,1)
10 flag =1
  CALL mm_get_vizdata(1,pos_num,vispos_num,ret1)
  IF ret1<>2100 THEN
    CALL mm_start_viz(2,#start_viz);(2,#start_viz) used for ETH viz initial position
    TWAIT 0.1
    call mm_set_branch(7,2)
    flag =2
    CALL mm_get_vizdata(1,pos_num,vispos_num,ret1)
  if ret1 <> 2100
    JMOVE #camera_capture;move to camera_capture position
  end
  for count=1 to pos_num
    call mm_get_pose(count,&movepoint[count],label[count],speed[count])
  end
  ;follow the planned path to pick
  JMOVE #movepoint[1]
  JMOVE #movepoint[2]
  JMOVE #movepoint[3]
  JMOVE #movepoint[4]
  LMOVE #movepoint[5]
  BREAK
  signal 9,-10;set do on
  TWAIT 0.2
  LMOVE #movepoint[6]
  LMOVE #movepoint[7]
  IF flag ==2 then
    break
    signal 10,-9;set do off
    twait 0.2
    JMOVE #movepoint[8]
    JMOVE #movepoint[9]
    TWAIT 2
  ELSE
    JMOVE #movepoint[8]
    end
  CALL mm_start_viz(2,#start_viz);(2,#start_viz) used for ETH viz initial position
  TWAIT 0.1
  call mm_set_branch(7,1)

;go to drop location
    if flag ==1 then
      JMOVE #movepoint[9]
      JMOVE #movepoint[10]
      break
      twait 0.2
      JMOVE #movepoint[11]
    end
  signal 10,-9;set do on
  JMOVE #camera_capture;move to camera_capture position
  GOTO 10
END

抓取测试

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

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

名称 变量 解析

工具中心点

TCP

由位姿变量gripper定义,请使用示教器示教。

Home点

home

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

拍照点

camera_capture

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

放置的过渡点

movepoint[8]

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

放置点

movepoint[11]

放置工件的目标点。

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

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

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

工件摆放状态

图示

工件横向摆放在料筐中间

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 来确保您在访问本网站时不会被跟踪或记住。