把持と配置を実行
本ガイドでは、まずこのソリューションで実現される把持・配置フローを理解し、その後、把持と配置フローの設定方法について説明します。
把持と配置フロー
このソリューションでは、下図のようなフローで把持・配置を実行します。
このソリューションでは、ロボットが固定位置(位置決めテーブルなど)からボルトを把持し、Mech-Visionで出力されたワークの位置姿勢を組立ての目標位置として使用します。 |
通信ソリューション
上記の流れにおいて、「ロボットがカメラをトリガーして撮影し、把持位置姿勢を取得する」には、ロボットとビジョンシステムが標準インターフェース通信方式を使用する必要があります。また、標準インターフェースとビジョンシステムの連携方法は Mech-Visionを使用してビジョン結果を取得 となります。
この連携方法を使用するには、ロボットプログラムの作成が必要となります。把持と配置フローを設定 を参照して、ロボットプログラムの作成を完了してください。
把持と配置フローを設定
把持と配置フローを実現するには、以下の設定を順に完了する必要があります。
ロボットパラメータの設定とロボットプログラムの作成
Yaskawaロボットの標準インターフェースサンプルプログラム MM_S1_Vis_Basic は、このソリューションで必要な機能を基本的に満たします。このサンプルプログラムを基にして変更を加えることができます。MM_S1_Vis_Basicサンプルプログラムの詳細な説明については、サンプルプログラム解説 をご参照ください。
サンプルプログラムに基づき、ロボット側で以下の操作を行います。
-
ティーチング法で初期位置(Home位置)を設定します。
ロボットを設定された初期位置に移動させます。初期位置は、把持するワークや周辺機器から離れ、カメラの視野を遮らないようにする必要があります。完了後、この時点のロボットの位置姿勢を変数 C00000に記録します。
-
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"
-
ロボットハンドを開くためのDOポート信号を設定します。DOコマンドは、現場で実際に使用されているDOポート番号に従って設定する必要があります。
'open gripper DOUT OT#(14) ON DOUT OT#(15) OFF
-
ティーチング法で固定把持点を設定します。
ロボットを設定された固定把持点に移動させます。この位置は画像撮影位置でもあります。この位置では、ロボットアームがカメラ視野を遮らないようにする必要があります。完了後、この時点のロボットの位置姿勢を変数 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
-
固定位置からボルトを把持するために、ロボットハンドを閉じるDOポート信号を設定します。DOコマンドは、現場で実際に使用されているDOポート番号に従って設定する必要があります。
'close gripper DOUT OT#(14) OFF DOUT OT#(15) ON
-
ティーチング法で組立ての経路上の中間点を設定します。
変更前 変更後(例) 'move to intermediate waypoint of 'picking MOVJ C00002 VJ=50.00
'move to intermediate waypoint of 'assembly MOVJ C00002 VJ=50.00
-
組立てに関連するコマンドのコメントを変更します。
変更前 変更後(例) '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
-
ボルトをピン穴に配置するために、ロボットハンドを開く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
-
サンプルプログラムから、配置に関連するコードを削除します。
'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
-
ティーチング法で初期位置(Home位置)を設定します。
ロボットを設定されたHome位置に移動させ、ロボットの位置姿勢を変数C00003に記録します。
ロボットの組み立てをテストするステップ実行
組立ての効果を確認するためには、以下の手順に従って実行します。
-
ティーチペンダントのキーをPLAYに合わせると、再生モード になります。
-
ティーチペンダントの SERVO ON READY を押し、青い RUN ボタンを押します。
-
ロボットは自動的にロボットプログラムを実行し、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ビジョンシステムによる組立てのアプリケーションの導入が完了しました。