把持と配置を実行

本ガイドでは、簡単な把持・配置ロジックを構築するためのロボットプログラムの書き方を習得できます。

本ガイドでは、ロボットアプリケーションは以下の機能を実装しています。

  • プログラムを実行するたびに、Mech-Visionプロジェクトは1回実行させます。

  • Mech-Visionプロジェクトを1回実行すると、1つのビジョンポイント(TCP位置姿勢)が返されます。

  • ロボットは、返されたビジョン結果と事前定義済みの把持・配置経路に基づいて、ワークの把持と配置を完了します。

動画:プログラムのデバッグと実行

通信概要

以下では、YaskawaロボットとMech-Mindビジョンシステム間の通信の基本原理について説明します。

YaskawaロボットとMech-Mindビジョンシステムは、TCP Socketプロトコル(データ形式はASCII文字列)に基づく標準インターフェースを使用して相互に通信します。その中、ロボットはTCPクライアントとし、ビジョンシステムはTCPサーバーとします。ロボットとビジョンシステム間の通信フローを下図に示します。

tcp communication diagram

プログラミング説明

以下では、Yaskawaロボットの把持・配置アプリケーションを作成するための基礎知識について説明します。

把持・配置アプリケーションを作成する目的は、ロボットとビジョンシステム間の標準インターフェース通信を行うことと、ビジョンシステムによりロボットの把持・配置作業を可能にすることです。このアプリケーションには、TCP接続の確立/切断、データ転送、ロボット動作とDO制御など、様々な機能が含まれています。把持・配置アプリケーションを作成するためのコマンドには、Yaskawaロボットのコマンドと標準インターフェースコマンドの2種類があります。

Yaskawaロボットのコマンド

Yaskawaロボットのコマンドとは、YaskawaロボットのINFORMロボット言語でサポートされているコマンドで、入出力コマンド、制御コマンド、演算コマンド、移動コマンド、シフトコマンド、およびその他の追加コマンドなどが含まれます。簡単な把持・配置アプリケーションを作成するためのコマンド説明については、 Yaskawaロボットのよく使うコマンド説明 をご参照ください。

標準インターフェースコマンド

標準インターフェースコマンドとは、標準インターフェースを使用したYaskawaロボットでサポートされているコマンドのことで、ビジョンシステムとの標準インターフェース通信に使用されます。これにはTCP Socket通信やデータ交換などの機能に関するコマンドが含まれます。Yaskawaロボットがサポートしている標準インターフェースコマンドの詳細については、 Yaskawaロボットの標準インターフェースコマンド説明 をご参照ください。

Yaskawaロボットがサポートしている標準インターフェースコマンドは、ロボットに読み込まれたフォアグラウンドプログラム(Job)に組み込まれています。フォアグラウンドプログラムがロボットに読み込まれた後 、Yaskawaロボットのコマンド CALL を使用してフォアグラウンドプログラムを呼び出すことで、標準インターフェースコマンドの呼び出しを実現します。例えば、 CALL JOB:MM_OPEN_SOCKET のようなコマンドを使用します。

把持・配置アプリケーションの作成方法

把持・配置アプリケーションを作成する最も簡単な方法は、既存のサンプルプログラムを基に修正し、デバッグすることです。

Mech-Mindビジョンシステムと併用可能な把持・配置アプリケーションを迅速に作成するために、Mech-Mindは3つのサンプルプログラムを提供しています。本ガイドでは、最初のサンプルプログラムを基に修正とデバッグを行います。このサンプルは簡単な把持と配置を実現しています。一度にビジョンシステム(Mech-Visionのみ)から1つのみのビジョンポイントを取得し、把持と配置を行います。

サンプルコードは以下の通りです。

NOP
'*****************************
'FUNCTION:simple pick and place
'with Mech-Vision
'mechmind, 2022-5-27
'*****************************
'clear I50 to I69
CLEAR I050 20
'Initialize p variables
SUB P070 P070
SUB P071 P071
'set  200mm to Z
SETE P070 (3) 200000
'move to the home position
MOVJ VJ=80.00
'move to the camera position
MOVJ VJ=80.00 PL=0
'set ip address of IPC
CALL JOB:MM_INIT_SOCKET ("192.168.170.22;50000;1")
TIMER T=0.20
CALL JOB:MM_OPEN_SOCKET
'set vision recipe
CALL JOB:MM_SET_MODEL ("1;1")
TIMER T=0.20
'Run vision project
CALL JOB:MM_START_VIS ("1;0;2")
TIMER T=1.00
'get result from Vis
CALL JOB:MM_GET_VISDATA ("1;50;51;52")
TIMER T=0.20
PAUSE IF I052<>1100
'set the first pos to P071;
'set labels to I61;
'set speed to I62;
CALL JOB:MM_GET_POSE ("1;71;61;62")
SFTON P070
MOVJ P071 VJ=50.00
SFTOF
MOVL P071 V=80.0 PL=0
'enable gripper
DOUT OT#(1) ON
SFTON P070
MOVJ P071 VJ=50.00
SFTOF
MOVJ VJ=80.00
'drop point
MOVJ VJ=80.00 PL=0
'release gripper
DOUT OT#(1) OFF
CALL JOB:MM_CLOSE_SOCKET
END

上記のサンプルプログラムによって作成された把持・配置ロジックを下図に示します。

program build workflow

下表は、把持・配置ロジックの各ステップと修正が必要な部分を示します。

ステップ コード 詳細

変数初期化

NOP

'clear I50 to I69
CLEAR I050 20
'Initialize p variables
SUB P070 P070
SUB P071 P071
'set  200mm to Z
SETE P070 (3) 200000

プログラムに使用される整数型変数と位置型変数を初期化します。通常の場合、対応するコードの修正は必要ありません。

初期位置に移動

'move to the home position
MOVJ VJ=80.00

ロボットTCPを設定された初期位置に移動させます。初期位置はロボット動作の開始位置だけでなく、安全な位置でもあります。この位置で、ロボットが把持する対象物や周囲の機器から離れ、カメラの視野を遮らないようにする必要があります。
このステップでは、初期位置の設定が必要です。

画像撮影位置に移動

'move to the camera position
MOVJ VJ=80.00 PL=0

ロボットTCPを設定された画像撮影位置に移動させます。画像撮影位置とは、カメラが画像を撮影したときにロボットがいる位置を指します。この位置では、ロボットハンドがカメラ視野を遮らないようにする必要があります。
このステップでは、画像撮影位置を設定する必要があります。

通信確立

'set ip address of IPC
CALL JOB:MM_INIT_SOCKET ("192.168.170.22;50000;1")
TIMER T=0.20
CALL JOB:MM_OPEN_SOCKET

通信パラメータを初期化し、ビジョンシステムとのTCP Socket通信を確立します。
このステップでは、「通信初期化」コマンド(MM_INIT_SOCKET)のパラメータ(IPCのIPアドレスとポート)を調整する必要があります。

Mech-Visionプロジェクトによるビジョン認識

'set vision recipe
CALL JOB:MM_SET_MODEL ("1;1")
'Run vision project
CALL JOB:MM_START_VIS ("1;0;2")

まずMech-Visionパラメータレシピ(複数種類のワークの場合)を切り替え、Mech-Visionプロジェクトの実行をトリガーしてワークの把持位置姿勢を取得します。本ガイドでは、1種類のワークのみを処理するため、パラメータレシピの切り替えは必要あません。
このステップでは、「Mech-Visionパラメータレシピの切り替え」コマンド(MM_SET_MODEL)をコメントアウトし、「Mech-Visionプロジェクトを実行」コマンドのパラメータを調整する必要があります。

ビジョンポイントを取得

'get result from Vis
CALL JOB:MM_GET_VISDATA ("1;50;51;52")
TIMER T=0.20
PAUSE IF I052<>1100
'set the first pos to P071;
'set labels to I61;
'set speed to I62;
CALL JOB:MM_GET_POSE ("1;71;61;62")

Mech-Visionからビジョンポイントを取得し、ビジョンポイントの位置姿勢、位置姿勢が対応するラベルと速度値を変数に保存します。
本ガイドでは、ロボットは一度にMech-Visionから1つのビジョンポイントを取得します。サンプルコードは、変更せずにそのまま使用できます。

アプローチ点に移動

SFTON P070
MOVJ P071 VJ=50.00
SFTOF

ロボットTCPをアプローチ点に移動させ、画像撮影位置から把持点までの移動中に、ロボットがシーンの物体(コンテナなど)と衝突するのを防ぎます。

サンプルプログラムでは、把持点(P071)より200mm上方(アプローチ点)にロボットTCPを移動させます。アプローチ点から把持点の距離が小さすぎる場合、変数P070のZ軸値を変更することができます。

'set  200mm to Z
SETE P070 (3) 200000

把持点に移動

MOVL P071 V=80.0 PL=0

ロボットTCPを把持点(P071)に移動させます。

サンプルプログラムでは、ロボットTCPはアプローチ点から把持点まで直線移動させます。サンプルコードは、変更せずにそのまま使用できます。

DO設定による把持

'enable gripper
DOUT OT#(1) ON

ロボットハンドを開いてワークを把持します。

本ガイドで使用されるロボットハンドは、汎用出力信号2がオンになると開いた状態に保持されます。したがって、ここでは汎用出力信号を2に設定する必要があります。汎用出力信号は実際の状況に応じて設定する必要があります。

離れる点に移動

SFTON P070
MOVJ P071 VJ=50.00
SFTOF

ロボットTCPを離れる点に移動させ、ワーク把持後にロボットがシーンの物体(コンテナなど)と衝突するのを防ぎます。

サンプルプログラムでは、把持点(P071)より200mm上方(離れる点)にロボットTCPを移動させます。離れる点から把持点の距離が小さすぎる場合、変数P070のZ軸値を変更することができます。

'set  200mm to Z
SETE P070 (3) 200000
把持位置姿勢のZ軸のオフセットとして、アプローチ点と離れる点の両方に共通の変数P070のZ軸値を使用します。もし変数P070のZ軸値を変更する場合、その2つの点に影響が及びます。

中間点に移動

MOVJ VJ=80.00 PL=0

ロボットTCPを設定された中間点に移動させ、ロボットがシーンの物体と衝突するのを防ぎます。

このステップでは、中間点の設定が必要です。実際の状況に応じて中間点をさらに追加することができます。

配置位置に移動

'drop point
MOVJ VJ=80.00 PL=0

ロボットTCPを設定された配置位置に移動させます。

このステップでは、配置位置の設定が必要です。

DO設定による配置

'enable gripper
DOUT OT#(1) OFF

ロボットハンドを閉じてワークを配置します。

本ガイドで使用されているロボットハンドは、汎用出力信号1がオンになると閉じられ、ワークの配置を行います。したがって、ここでは汎用出力信号1のステータスをONに設定する必要があります。汎用出力信号の番号とステータスは、実際の状況に応じて設定する必要があります。

通信終了

CALL JOB:MM_CLOSE_SOCKET
END

TCP Socket通信を切断します。サンプルコードは、変更せずにそのまま使用できます。

サンプルプログラムの詳細については、 サンプルプログラムの解説 をご参照ください。

サンプルプログラムの修正とデバッグ

このサンプルプログラムで使用されているロボット位置姿勢は、TCP位置姿勢となります。サンプルプログラムの修正とデバッグを行う前に、ツールID(01など)を把持のためのロボットハンドの番号に切り替え、このツールのTCP設定を完了する必要があります。

サンプルプログラムを開く

把持・配置のサンプルプログラムの修正とデバッグを行うには、まずはサンプルプログラムを開きます。

  1. ONLINE MODE では、 Main Menu から JOB  SELECT JOB を選択し、インストールされているプログラム一覧が表示されます。

  2. mm_sample プログラムをクリックして選択し、 SELECT を押して開きます。

サンプルプログラム冒頭のコードは変数の初期化に使用され、通常は変更する必要はありません。

初期位置に移動

ロボットTCPを設定された初期位置に移動させます。ここではロボットの初期位置を設定する必要があります。

下記のコードの修正が必要です。

'move to the home position
MOVJ VJ=80.00

ロボットの初期位置を設定するには、以下の操作を実行します。

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

  2. 手動でロボットをプログラムによって設定された初期位置に移動させます。

  3. ティーチペンダントの ▼ キーを押して「MOVJ VJ=80.00」行を選択し、MODIFYキーを押します。その後、ENTERキーを押し、初期位置の位置姿勢をロボットの現在のTCP位置姿勢に変更します。

    「VJ=80.00」は関節運動の速度が80%であることを示します。その他のパラメータの調整は必要ありません。

画像撮影位置に移動

ロボットTCPを設定された画像撮影位置に移動させます。ここでは、ロボットの画像撮影位置を設定する必要があります。

下記のコードの修正が必要です。

'move to the camera position
MOVJ VJ=80.00 PL=0

画像撮影位置を設定するには、以下の操作を実行します。

  1. ティーチモード では、手動でロボットを画像撮影位置に移動させます。

  2. ティーチペンダントの ▼ キーを押して「MOVJ VJ=80.00 PL=0」行を選択し、MODIFYを押します。その後、ENTERキーを押し、画像撮影位置をロボットの現在のTCP位置姿勢に変更します。

    「VJ=80.00」は関節運動の速度が80%で、「PL=0」は位置レベルが0であることを示します。この2つのパラメータを調整する必要はありません。位置レベルは、ロボットをティーチ位置に設定した際のその位置への接近度を調整するために使用されます。値の範囲は0から8で、値が小さいほど位置はより近くになります。

通信確立

ビジョンシステムとのTCP接続を確立します。このステップでは、「通信初期化」コマンド(MM_INIT_SOCKET)のパラメータ(IPCのIPアドレスとポート)を調整する必要があります。

以下のサンプルコードの修正が必要です。

'set ip address of IPC
CALL JOB:MM_INIT_SOCKET ("192.168.170.22;50000;1")
TIMER T=0.20
CALL JOB:MM_OPEN_SOCKET

「通信初期化」コマンドのパラメータを設定するには、以下の手順を実行します。

  1. ティーチモードでは、ティーチペンダントの ▼ キーを押して「CALL JOB:MM_INIT_SOCKET ("192.168.170.22;50000;1")」行を選択し、SELECTキーを押します。

  2. ティーチペンダントパネルのソフトキーボードを使用して「192.168.170.22」と「50000」をそれぞれIPCのIPアドレスとポートに変更し、パネルのOKを押して変更を保存します。

Mech-Visionプロジェクトによるビジョン認識

Mech-Visionプロジェクトを実行してビジョン処理による認識を行い、ビジョン結果を出力します。

ここでは、「Mech-Visionプロジェクトを実行」コマンドのパラメータを変更する必要があります。本ガイドは1種類のワークのみを処理するため、「Mech-Visionパラメータレシピの切り替え」コマンドをコメントアウトする必要もあります。

以下のサンプルコードの修正が必要です。

CALL JOB:MM_SET_MODEL ("1;1")
'Run vision project
CALL JOB:MM_START_VIS ("1;0;2")

「Mech-Visionパラメータレシピの切り替え」コマンドをコメントアウトし、「Mech-Visionプロジェクトを実行」コマンドのパラメータを変更するには、以下の手順を実行します。

  1. ティーチモードでは、ティーチペンダントの ▼ キーを押して「CALL JOB:MM_SET_MODEL ("1;1")」行を選択し、EDITタブをクリックします。その後、COMMENT OUTを選択してティーチペンダントのSELECTキーを押します。

    複数種類のワークが含まれるプロジェクトでは、パラメータレシピを使用する必要があります。この場合、2番目のパラメータを現在のワークに対応するパラメータレシピの番号に変更する必要があります。
  2. ティーチペンダントの ▼ キーを押して「CALL JOB:MM_START_VIS ("1;0;2")」行を選択し、SELECTキーを押します。

  3. ティーチペンダントパネルのソフトキーボードを使用して「MM_START_VIS」コマンドのパラメータ(例えば、1;1;0)を変更し、パネルのOKをクリックして変更を保存します。

    • 1:Mech-Visionプロジェクト番号です。本ガイドで使用されているプロジェクトの番号が1であるため、変更する必要はありません。

    • 0:このサンプルプログラムでは、一度にMech-Visionから1つのビジョンポイントを取得するため、この値を1に変更する必要があります。

    • 2:このサンプルプログラムでは、ロボットの位置姿勢をMech-Visionに送信する必要がないため、この値を0に変更する必要があります。

ビジョンポイントを取得

Mech-Visionからビジョン結果を取得し、ビジョン結果の取得が成功したかどうかを判断します。取得に成功すると、ビジョンポイントの位置姿勢は位置型変数P071に格納され、この位置姿勢が対応するラベルデータは整数型変数I061に格納され、この位置姿勢が対応する移動速度が整数型変数I062に格納されます。

下記のコードは、修正せずにそのまま使用できます。

'get result from Vis
CALL JOB:MM_GET_VISDATA ("1;50;51;52")
PAUSE IF I052<>1100
'set the first pos to P071;
'set labels to I61;
'set speed to I62;
CALL JOB:MM_GET_POSE ("1;71;61;62")

アプローチ点に移動

ロボットTCPをアプローチ点に移動させます。

  • 把持点に到達する過程で、ロボットハンドとコンテナや他のワークとの衝突を避けるため、ロボットTCPは通常、把持点の真上のある距離(アプローチ点と呼ばれる)まで移動させ、その位置から把持点まで直線運動させます。

  • 把持位置姿勢のZ軸の値をオフセットし、アプローチ点の位置姿勢を取得できます。

下記のコードは、修正せずにそのまま使用できます。本ガイドでは、Z軸のオフセット値を200mmに設定します。実際の状況に応じて設定する必要があります。

'set  200mm to Z
SETE P070 (3) 200000
...
SFTON P070
MOVJ P071 VJ=50.00
SFTOF

把持点に移動

ロボットTCPはアプローチ点から把持点まで直線移動させます。

下記のコードは、修正せずにそのまま使用できます。

MOVL P071 V=80.0 PL=0

DO設定による把持

本ガイドでは、開閉式のロボットハンドが使用されており、出力信号による制御します。出力信号2をオンにするとロボットハンドが開き、出力信号1をオンにするとロボットハンドが閉じます。

出力信号2をオンにすることでロボットハンドを開き、ワークの把持を実現します。したがって、出力信号の番号を2に設定する必要があります。

以下のサンプルコードの修正が必要です。

'enable gripper
DOUT OT#(1) ON

出力信号の番号を2に変更するには、以下の手順を実行します。

  1. ティーチモードでは、ティーチペンダントの ▼ キーを押して「DOUT OT#(1) ON」行を選択し、SELECTキーを押します。

  2. 出力信号「1」を「2」に変更し、パネルのOKをクリックして確定します。

離れる点に移動

ロボットTCPは把持点から、離れる点まで直線移動させます。

  • ロボットハンドが把持後に離れる際、コンテナや他のワークとの衝突を避けるため、ロボットTCPを把持点の真上の一定距離(離れる点と呼ばれる)まで直線移動させ、その位置から離れて配置するのが一般的です。

  • 把持位置姿勢のZ軸の値をオフセットし、離れる点の位置姿勢を取得できます。

  • 通常、アプローチ点と離れる点は同じ場所にあります。このサンプルプでは、アプローチ点と離れる点は、ともに把持点の真上200mmの位置にあります。

下記のコードは、修正せずにそのまま使用できます。

'set  200mm to Z
SETE P070 (3) 200000
...

SFTON P070
MOVJ P071 VJ=50.00
SFTOF

中間点に移動

ロボットTCPを設定された配置位置に移動させます。

ロボットとシーンの衝突を避けるため、離れる点と配置位置の間に中間点を追加します。ここでは、1つの中間点のみを追加します。実際の応用シーンでは、配置経路を最適化するためにさらに中間点を追加することができます。

下記のコードの修正が必要です。

MOVJ VJ=80.00

中間点を設定するには、以下の手順を実行します。

  1. ティーチモードでは、手動でロボットを適切な中間点に移動させます。

  2. ティーチペンダントの ▼ キーを押して「MOVJ VJ=80.00」行を選択し、MODIFYを押します。その後、ENTERキーを押し、中間点をロボットの現在のTCP位置姿勢に変更します。

配置位置に移動

ロボットTCPを設定された配置位置に移動させます。

下記のコードの修正が必要です。

'drop point
MOVJ VJ=80.00 PL=0

ロボットの配置位置を設定するには、以下の手順を実行します。

  1. ティーチモードでは、手動でロボットを適切な配置位置に移動させます。

  2. ティーチペンダントの ▼ キーを押して「MOVJ VJ=80.00 PL=0」行を選択し、MODIFYを押します。その後、ENTERキーを押し、配置位置をロボットの現在位置姿勢に変更します。

DO設定による配置

出力信号1をオンにすることでロボットハンドを閉じ、ワークの配置を実現します。

対応するコートは以下の通りです。出力信号1をオンにするために、「OFF」を「ON」に変更する必要があります。

'release gripper
DOUT OT#(1) OFF

通信終了

このサンプルでは、一回の把持と配置のみを行います。したがって、一回の把持・配置が完了した後、「MM_CLOSE_SOCKET」コマンドを呼び出して通信接続を切断する必要があります。

CALL JOB:MM_CLOSE_SOCKET

これで、このサンプルプログラムの修正が完了しました。次にプログラムの実行をテストします。

プログラムの実行をテスト

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

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

    ロボットは把持・配置アプリケーションを自動的に実行し、ワークの把持と配置を完了します。

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

これで、簡単な把持・配置アプリケーションの作成が完了しました。

参考情報

Yaskawaロボットのよく使うコマンド

より詳しい情報は、Yaskawaロボットの《YRC1000/YRC1000micro/DX200 INFORM 取扱説明書》をご参照ください。

コマンド 詳細 プログラミング文法

NOP

プログラムの開始コマンドであり、何の操作も実行しません。

NOP

NOP

'

コードのコメントアウトを実行します。

' コメントアウトする文字列

'Run vision project

END

プログラムは終了します。

END

END

CLEAR

データ2で指定された数に従って、データ1で指定された番号以降の変数の内容をゼロにします。

CLEAR <データ1> <データ2>

CLEAR I050 20
変数I50からI69(合計20個)をゼロにします。

SUB

データ1からデータ2を引き、結果をデータ1に保存します。

SUB <データ1> <データ2>

SUB P070 P070
位置型変数P070から位置型変数P070を引き、結果を変数P070に保存します。

SETE

データ2をデータ1に設定する位置型変数の要素となります。

SETE <データ1> <データ2>

SETE P070 (3) 200000
変数P070のZ座標値に、オフセット200000(ミクロン単位、200mmに相当)を増加させます。

MOVJ

関節補間(関節運動方式)によりティーチ位置に移動します。対象位置に移動する際、ロボットの経路を制限しない場合に使用されます。

MOVJ ロボットティーチ位置のファイル番号 VJ = 関節運動の速度(%)

MOVJ VJ=80.00
ロボットは関節運動でティーチ位置に移動します。

MOVL

直線補間(直線運動方式)によりティーチ位置に移動します。直線経路に従って、ティーチング後の位置に移動します。

MOVL ロボットティーチ位置のファイル番号 V=TCP速度(mm/秒) PL=位置ラベル(0~8)

MOVL P071 V=80.0 PL=0
ロボットは直線運動でP071によって指定された位置に移動します。

CALL

指定したプログラムを呼び出します。

CALL JOB:呼び出されるプログラム

CALL JOB:MM_OPEN_SOCKET
標準インターフェースコマンド「MM_OPEN_SOCKET」を呼び出してTCP接続を構築します。

TIMER

指定した時間まで待機します。

TIMER T=時間(秒単位)

TIMER T=0.20
ロボットは0.2秒待機します。

PAUSE

プログラムの実行を一時停止します。

PAUSE IF

PAUSE IF I052<>1100
変数I052の値が1100でない場合、プログラムの実行は一時停止されます。

IF

アクション(動作)を実行する際に、ある条件が成立しているかどうかを判断して、適切な処理を行います。これは、他の処理コマンドの後に追加して使用されます。

IF <対象1>演算子(=、<>など) <対象1>

PAUSE IF I052<>1100
変数I052の値が1100でない場合、プログラムの実行は一時停止されます。

SFTON

並進移動を開始します。並進移動の量は、座標系内のX、Y、Zの増分値であり、位置型変数に設定されます。

SFTON 位置型変数の番号

SETE P070 (3) 200000
...
SFTON P070
MOVJ P071 VJ=50.00
SFTOF

ロボットが関節運動で把持点(P071)の200mm上(アプローチ点)まで移動します。

SFTOF

並進移動を終了します。通常、SFTONとペアで使用されます。

SFTOF

SFTOF

DOUT

汎用出力信号のオン/オフを切り替えます。

DOUT OT#(出力信号) ON/OFF

DOUT OT#(1) ON
汎用出力信号1がオンになります。
DOUT OT#(1) OFF
汎用出力信号1がオフになります。

サンプルプログラムの解説

  • NOP

    意味:プログラムの実行を開始します。

  • 'clear I50 to I69
    CLEAR I050 20

    意味:整数型変数I50からI69の値をゼロにします。本ガイドでは、I50からI69の変数はステータス、数量、ラベル値を保存するために使用されます。

  • 'Initialize p variables
    SUB P070 P070
    SUB P071 P071

    意味:位置型変数P070とP071の値をゼロにします。本ガイドでは、変数P071は把持位置姿勢を保存するために使用されます。把持点に対するアプローチ点と離れる点のZ軸のオフセットは、変数P070のZ軸値に保存されます。

  • 'set  200mm to Z
    SETE P070 (3) 200000

    意味:把持点に対するアプローチ点と離れる点のZ軸のオフセットをP070変数のZ軸値として保存します。単位はミクロンです。本ガイドでは、オフセットの初期値は200000ミクロン、即ち200ミリメートルとなります。

  • 'move to the home position
    MOVJ VJ=80.00

    意味:ロボットTCPを設定された初期位置に移動させます。「VJ=80.00」は関節運動の速度が80%であることを示します。ここでは初期位置の設定が必要です。

  • 'move to the camera position
    MOVJ VJ=80.00 PL=0

    意味:ロボットTCPを設定された画像撮影位置に移動させます。「VJ=80.00」は関節運動の速度が80%で、「PL=0」は位置レベルが0であることを示します。位置レベルは、ロボットをティーチ位置に設定した際のその位置への接近度を調整するために使用されます。値の範囲は0から8で、値が小さいほど位置はより近くになります。

  • 'set ip address of IPC
    CALL JOB:MM_INIT_SOCKET ("192.168.170.22;50000;1")

    意味:通信パラメータ(IPCのIPアドレスとポート)を初期化します。

  • TIMER T=0.20

    意味:ロボットは0.2秒待機します。

  • CALL JOB:MM_OPEN_SOCKET

    意味:TCP Socket通信接続を確立します。

  • 'set vision recipe
    CALL JOB:MM_SET_MODEL ("1;1")

    意味:プロジェクトのパラメータレシピを切り替えます。プロジェクトは複数種類のワークを処理する場合、パラメータレシピの使用が必要になります。

  • 'Run vision project
    CALL JOB:MM_START_VIS ("1;0;2")

    意味:Mech-Visionプロジェクトの実行をトリガーし、ビジョン処理による認識を行います。「MM_START_VIS」コマンドのパラメータを正しく設定する必要があります。

  • 'get result from Vis
    CALL JOB:MM_GET_VISDATA ("1;50;51;52")

    意味:ビジョンポイントを取得し、ビジョンポイントの送信が完了したかどうかのステータス、返された位置姿勢の数、コマンドのステータスコードをそれぞれ変数I050~I052に保存します。

  • PAUSE IF I052<>1100

    意味:コマンドのステータスコード(I052変数値)が1100(正常実行完了のコード)でない場合、プログラムの実行は中止されます。

  • 'set the first pos to P071;
    'set labels to I61;
    'set speed to I62;
    CALL JOB:MM_GET_POSE ("1;71;61;62")

    意味:取得されたビジョン結果から、最初の位置姿勢とそれに対応するラベルおよび移動速度データをP071、I061、I062に保存します。後続の呼び出しに使用されます。

  • SFTON P070
    MOVJ P071 VJ=50.00
    SFTOF

    意味:並進移動コマンドにより、ロボットTCPを関節運動で画像撮影位置からアプローチ点に移動させます。把持点に対するアプローチ点のZ軸のオフセットは、変数P070のZ軸値によって決まります。

  • MOVL P071 V=80.0 PL=0

    意味:ロボットTCPは直線運動で把持点(変数P071によって指定された位置)に移動させます。TCP移動速度は80mm/sであり、位置ラベルは0です。

  • 'enable gripper
    DOUT OT#(1) ON

    意味:出力信号1をオンにすることで、ロボットハンドを制御してワークを把持します。汎用出力信号は実際の状況に応じて設定する必要があります。

  • SFTON P070
    MOVJ P071 VJ=50.00
    SFTOF

    意味:並進移動コマンドにより、ロボットTCPは直線運動で離れる点に移動させます。把持点に対する離れる点のZ軸のオフセットは、変数P070のZ軸値によって決まります。

  • MOVJ VJ=80.00

    ロボットTCPを設定された中間点に移動させ、ロボットがシーンの物体と衝突するのを防ぎます。ここでは中間点を設定する必要があります。

  • 'drop point
    MOVJ VJ=80.00 PL=0

    ロボットTCPを設定された中間点に移動させ、ロボットがシーンの物体と衝突するのを防ぎます。ここでは中間点を設定する必要があります。

  • 'release gripper
    DOUT OT#(1) OFF

    意味:出力信号1をオフにし、ロボットハンドを制御してワークを配置します。実際の応用シーンでは、実際の状況に応じて出力信号の番号やステータスを変更する必要があります。

  • CALL JOB:MM_CLOSE_SOCKET

    意味:TCP Socket通信接続を切断します。

  • END

    意味:プログラムは終了します。

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

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