把持と配置を実行

現在ご覧いただいているのは未リリースのバージョンです(V2.1.0)。異なるバージョンを参照する場合は、画面右上のボタンから切り替えが可能です。

■ ご利用中のバージョンが分からない場合はお気軽にサポート窓口までご連絡ください。

本ガイドでは、まずこのソリューションで実現される把持・配置フローを理解し、その後、把持と配置フローの設定方法について説明します。

把持と配置フロー

このソリューションでは、下図のようなフローで把持・配置を実行します。

picking workflow
このソリューションでは、ロボットが固定位置(位置決めテーブルなど)からボルトを把持し、Mech-Visionで出力されたワークの位置姿勢を組立ての目標位置として使用します。

通信ソリューション

上記の流れにおいて、「ロボットがカメラをトリガーして撮影し、把持位置姿勢を取得する」には、ロボットとビジョンシステムが標準インターフェース通信方式を使用する必要があります。また、標準インターフェースとビジョンシステムの連携方法は Mech-Visionを使用してビジョン結果を取得 となります。

この連携方法を使用するには、ロボットプログラムの作成が必要となります。把持と配置フローを設定 を参照して、ロボットプログラムの作成を完了してください。

把持と配置フローを設定

把持と配置フローを実現するには、以下の設定を順に完了する必要があります。

picking workflow config

ロボットパラメータの設定とロボットプログラムの作成

Yaskawaロボットの標準インターフェースサンプルプログラム MM_S1_Vis_Basic は、このソリューションで必要な機能を基本的に満たします。このサンプルプログラムを基にして変更を加えることができます。MM_S1_Vis_Basicサンプルプログラムの詳細な説明については、サンプルプログラム解説 をご参照ください。

サンプルプログラムに基づき、ロボット側で以下の操作を行います。

  1. ティーチング法で初期位置(Home位置)を設定します。

    ロボットを設定された初期位置に移動させます。初期位置は、把持するワークや周辺機器から離れ、カメラの視野を遮らないようにする必要があります。完了後、この時点のロボットの位置姿勢を変数 C00000に記録します。

  2. IPCのIPアドレスを指定します。MM_Init_Socket コマンドのIPアドレスとポート番号を、IPCの実際のIPアドレスとポート番号に変更します。

    変更前 変更後(例)
    'initialize communication
    'parameters (initialization is
    'required only once)
    CALL JOB:MM_INIT_SOCKET ARGF"192.168.170.22;50000;1"
    'initialize communication
    'parameters (initialization is
    'required only once)
    CALL JOB:MM_INIT_SOCKET ARGF"192.168.10.40;50000;1"
  3. ロボットハンドを開くためのDOポート信号を設定します。DOコマンドは、現場で実際に使用されているDOポート番号に従って設定する必要があります。

    'open gripper
    DOUT OT#(14) ON
    DOUT OT#(15) OFF
  4. ティーチング法で固定把持点を設定します。

    ロボットを設定された固定把持点に移動させます。この位置は画像撮影位置でもあります。この位置では、ロボットアームがカメラ視野を遮らないようにする必要があります。完了後、この時点のロボットの位置姿勢を変数 C00001に記録します。

    変更前 変更後(例)
    'move to image-capturing position
    MOVJ C00001 VJ=50.00 PL=0
    'move to fixed position of picking
    MOVJ C00001 VJ=20.00 PL=0
  5. 固定位置からボルトを把持するために、ロボットハンドを閉じるDOポート信号を設定します。DOコマンドは、現場で実際に使用されているDOポート番号に従って設定する必要があります。

    'close gripper
    DOUT OT#(14) OFF
    DOUT OT#(15) ON
  6. ティーチング法で組立ての経路上の中間点を設定します。

    変更前 変更後(例)
    'move to intermediate waypoint of
    'picking
    MOVJ C00002 VJ=50.00
    'move to intermediate waypoint of
    'assembly
    MOVJ C00002 VJ=50.00
  7. 組立てに関連するコマンドのコメントを変更します。

    変更前 変更後(例)
    'move to approach waypoint of
    'picking
    SFTON P070
    MOVL P071 V=166.6 PL=0
    SFTOF
    'move to picking waypoint
    MOVL P071 V=50.0 PL=0
    
    ...
    
    'move to departure waypoint of
    'picking
    SFTON P070
    MOVL P071 V=166.6 PL=0
    SFTOF
    'move to approach waypoint of
    'assembly
    SFTON P070
    MOVL P071 V=166.6 PL=0
    SFTOF
    'move to assembly waypoint
    MOVL P071 V=50.0 PL=0
    
    ...
    
    'move to departure waypoint of
    'assembly
    SFTON P070
    MOVL P071 V=166.6 PL=0
    SFTOF
  8. ボルトをピン穴に配置するために、ロボットハンドを開くDOポート信号を設定します。DOコマンドは、現場で実際に使用されているDOポート番号に従って設定する必要があります。

    変更前 変更後(例)
    'add object grasping logic here,
    'such as DOUT OT#(1) ON
    PAUSE
    'add object releasing logic here,
    'such as DOUT OT#(1) ON
    DOUT OT#(15) OFF
    DOUT OT#(14) ON
    PAUSE
  9. サンプルプログラムから、配置に関連するコードを削除します。

    'move to intermediate waypoint of
    'placing
    MOVJ C00003 VJ=50.00
    'move to approach waypoint of
    'placing
    MOVL C00004 V=166.6 PL=0
    'move to placing waypoint
    MOVL C00005 V=50.0 PL=0
    'add object releasing logic here,
    'such as DOUT OT#(1) OFF
    PAUSE
    'move to departure waypoint of
    'placing
    MOVL C00006 V=166.6 PL=0
  10. ティーチング法で初期位置(Home位置)を設定します。

    ロボットを設定されたHome位置に移動させ、ロボットの位置姿勢を変数C00003に記録します。

ロボットの組み立てをテストするステップ実行

組立ての効果を確認するためには、以下の手順に従って実行します。

  1. ティーチペンダントのキーをPLAYに合わせると、再生モード になります。

    run program 1
  2. ティーチペンダントの SERVO ON READY を押し、青い RUN ボタンを押します。

    run program 2
    run program 3
  3. ロボットは自動的にロボットプログラムを実行し、1つのワークの把持と配置を完了します。

    ロボットの動作経路にご注意ください。緊急時には緊急停止ボタンを押してください。

ロボットが正常にワークを把持し、配置することができれば、プログラムが正しく設定されていることが確認されます。

繰り返し組立てを実現するためのループ文を挿入

ロボットが一回の組立てを正常に完了できることを確認した後、プログラムにループ文を挿入して、繰り返し組立てを実現します。

以下のループ文を追加してください。

LOOP
   'move to fixed position of picking
   MOVJ C00001 VJ=20.00 PL=0

   ...

   MOVJ C00003 VJ=50.00
END LOOP

参考:変更後のサンプルプログラム

最終的に変更されたサンプルプログラムは以下の通りです。

NOP
'--------------------------------
'FUNCTION: trigger Mech-Vision
'project and get vision result
'Mech-Mind, 2023-12-25
'--------------------------------
'clear I50 to I69
CLEAR I050 20
'initialize p variables
SUB P070 P070
SUB P071 P071
'set 100mm to z of P070
SETE P070 (3) 100000
'move to robot home position
MOVJ C00000 VJ=50.00
'initialize communication
'parameters (initialization is
'required only once)
CALL JOB:MM_INIT_SOCKET ARGF"192.168.10.40;50000;1"
'open gripper
DOUT OT#(14) ON
DOUT OT#(15) OFF
LOOP
   'move to fixed position of picking
   MOVJ C00001 VJ=20.00 PL=0
   'close gripper
   DOUT OT#(14) OFF
   DOUT OT#(15) ON
   'open socket connection
   CALL JOB:MM_OPEN_SOCKET
   MOVL P110 V=25.0
   'trigger NO.1 Mech-Vision project
   CALL JOB:MM_START_VIS ARGF"1;0;2;30"
   'get vision result from NO.1
   'Mech-Vision project
   CALL JOB:MM_GET_VISDATA ARGF"1;51;52"
   'check whether vision result has
   'been got from Mech-Vision
   'successfully
   IFTHENEXP I052<>1100
      'add error handling logic here
      'according to different error
      'codes
      'e.g.: I052=1003 means no point
      'cloud in ROI
      'e.g.: I052=1002 means no
      'vision result
      PAUSE
   ENDIF
   'close socket connection
   CALL JOB:MM_CLOSE_SOCKET
   'save first vision point data to
   'local variables
   CALL JOB:MM_GET_POSE ARGF"1;71;61;62"
   'move to intermediate waypoint of
   'assembly
   MOVJ C00002 VJ=50.00
   'move to approach waypoint of
   'assembly
   SFTON P070
   MOVL P071 V=166.6 PL=0
   SFTOF
   'move to assembly waypoint
   MOVL P071 V=50.0 PL=0
   'add object releasing logic here,
   'such as DOUT OT#(1) ON
   DOUT OT#(15) OFF
   DOUT OT#(14) ON
   PAUSE
   'move to departure waypoint of
   'assembly
   SFTON P070
   MOVL P071 V=166.6 PL=0
   SFTOF
   'move back to robot home position
   MOVJ C00003 VJ=50.00’move to fixed position of picking
   MOVJ C00001 VJ=20.00 PL=0
   'close gripper
   DOUT OT#(14) OFF
   DOUT OT#(15) ON
   'open socket connection
   CALL JOB:MM_OPEN_SOCKET
   MOVL P110 V=25.0
   'trigger NO.1 Mech-Vision project
   CALL JOB:MM_START_VIS ARGF"1;0;2;30"
   'get vision result from NO.1
   'Mech-Vision project
   CALL JOB:MM_GET_VISDATA ARGF"1;51;52"
   'check whether vision result has
   'been got from Mech-Vision
   'successfully
   IFTHENEXP I052<>1100
      'add error handling logic here
      'according to different error
      'codes
      'e.g.: I052=1003 means no point
      'cloud in ROI
      'e.g.: I052=1002 means no
      'vision result
      PAUSE
   ENDIF
   'close socket connection
   CALL JOB:MM_CLOSE_SOCKET
   'save first vision point data to
   'local variables
   CALL JOB:MM_GET_POSE ARGF"1;71;61;62"
   'move to intermediate waypoint of
   'assembly
   MOVJ C00002 VJ=50.00
   'move to approach waypoint of
   'assembly
   SFTON P070
   MOVL P071 V=166.6 PL=0
   SFTOF
   'move to assembly waypoint
   MOVL P071 V=50.0 PL=0
   'add object releasing logic here,
   'such as DOUT OT#(1) ON
   DOUT OT#(15) OFF
   DOUT OT#(14) ON
   PAUSE
   'move to departure waypoint of
   'assembly
   SFTON P070
   MOVL P071 V=166.6 PL=0
   SFTOF
   'move back to robot home position
   MOVJ C00003 VJ=50.00
END LOOP
END

これで、3Dビジョンシステムによる組立てのアプリケーションの導入が完了しました。

Mech-Mindは、お客様のプライバシーを重視しています

このサイトでは最高の体験を提供するために Cookie を使用しています。サイトの閲覧を続ける場合、Cookie の使用に同意したことになります。「拒否する」を選択すると、このサイトを訪れた際に追跡や記憶が行われないように単独の Cookie が使用されます。