TCP 標準コマンド説明
本ドキュメントでは、TCP/IP プロトコルに基づく標準インターフェースコマンドを説明します。
コマンド一覧
RVS 2.0 の TCP 通信では、以下の標準コマンドをサポートしています。
コマンド説明
コマンドの送受信
ロボットまたは上位装置(クライアント)が RVS 2.0 ビジョンシステム(サーバー)へコマンドを送信し、ビジョンシステムは処理完了後に結果をロボットまたは上位装置へ返します。
注意
現在のバージョンは本ソフトウェアが TCP サーバーとして動作することのみサポート。
コマンドのデータ伝送形式
コマンドは ASCII と HEX の 2 種類のエンコーディング形式をサポートします。
ASCII
ASCII 形式の文字列では、半角カンマをデータ区切り文字として使用し、終端文字は \r です。本ドキュメントの例では、ASCII 形式を使用し、終端文字(\r)は省略しています。
たとえば、ロボットがビジョンシステムに 103 コマンドを送信する際、終端文字を含めた形式は次のとおりです。
103,1,2\r
HEX
HEX(16 進数)のバイト順にはビッグエンディアンとリトルエンディアンがあります。コマンド送信時のバイト長は固定で 64 です。64 に満たない場合は 0 で埋め、64 を超える場合は超過分をビジョンシステムが無視します。
ASCII 形式の文字列 "103,1,2" を例にすると、HEX のビッグエンディアン形式で送信する場合のコマンド形式は以下のとおりです。10 進数 103 は 16 進数 67 に対応し、そのビッグエンディアン表現は 00 00 00 67 です。
00 00 00 67 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
HEX のリトルエンディアン形式で送信する場合のコマンド形式は以下のとおりです。16 進数 67 のリトルエンディアン表現は 67 00 00 00 です。
67 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
コマンドのデータ単位
関節角の単位は度(°)。
ロボットフランジポーズまたはロボットツールポーズは位置と姿勢で構成:位置(XYZ 座標値)の単位はミリメートル(mm)、姿勢はオイラー角で表し、単位は度(°)。
101 コマンド: RVS 2.0 プロジェクトを実行
機能紹介
このコマンドは、指定された RVS 2.0 プロジェクトの実行を開始するために使用します。プロジェクト実行中、ビジョンシステムは撮影、画像処理、アルゴリズム解析を順に実行し、最終的に一連のグリップポイントを出力します。
注意
グリップポイント: システムが対象物として認識した情報単位です。各グリップポイントには、物体のポーズ、ラベル、サイズ、ユーザー定義データなどが含まれます。
呼び出し順序
プロジェクトで使用するパラメータレシピは実行前に設定する必要があるため、103 コマンド: パラメータレシピを切り替え を 101 コマンド より先に呼び出してください。
グリップポイントはプロジェクト実行後にのみ取得できるため、101 コマンド は 102 コマンド: ビジョン結果を取得 または 109 コマンド: ユーザーラベルデータを取得 より先に呼び出す必要があります。
送信フォーマット
101,RVS 2.0 プロジェクト番号,期待グリップポイント数,ロボットポーズタイプ,ロボットポーズ
パラメータ説明
パラメータ |
説明 |
|---|---|
RVS 2.0 プロジェクト番号 |
プロジェクトリストウィンドウで確認、プロジェクト名称の前の数字が番号。 |
期待グリップポイント数 |
取得したいグリップポイント数を指定します。 |
ロボットポーズタイプ |
ロボットポーズの入力形式を指定: |
ロボットポーズ |
ロボットポーズタイプに応じたデータを入力します。詳細は下表を参照してください。 |
ロボットポーズタイプとポーズデータ説明
ロボットポーズタイプ |
ロボットポーズフォーマット |
説明 |
適用シーン |
|---|---|---|---|
0 |
0,0,0,0,0,0(プレースホルダ。実際には無効) |
ビジョンシステムにロボットポーズを入力しません。 |
カメラが Eye To Hand 方式で取り付けられており、プロジェクトが事前撮影を必要としない場合に使用します。 |
2 |
ロボットの現在フランジポーズ |
ロボットの現在フランジポーズを入力し、ビジョンシステムがカメラ位置を計算するために使用します。 |
ほとんどのシーンで使用でき、特に Eye In Hand 方式に適しています。 |
返りフォーマット
101,状態コード
コマンドが正常に実行された場合、状態コードは 1102 です。異常時には対応するエラーコードを返します。詳細は RVS 2.0 エラー状態コード を参照してください。
コマンド例
例 1: Eye In Hand シーンでフランジポーズを入力する場合
ロボットが以下のコマンドを送信します。値 2 は、現在のフランジポーズをビジョンシステムへ入力することを表します。これにより、プロジェクト 1 の実行を開始します。
101,1,1,2,350.25,150.72,480.36,-179.88,0.12,90.05
ビジョンシステムはロボットへ以下の応答を返します。1102 は RVS 2.0 プロジェクトの起動成功を表します。
101,1102
例 2:Eye To Hand シーン、フランジポーズを入力しない
ロボットが以下のコマンドを送信します。ロボットポーズタイプ 0 を指定し、プロジェクト 1 の実行を開始します。
101,1,1,0,0,0,0,0,0,0
ビジョンシステムはロボットへ以下の応答を返します。1102 は RVS 2.0 プロジェクトの起動成功を表します。
101,1102
例 3:プロジェクト未登録エラー
ロボットが以下のコマンドを送信し、未登録のプロジェクト 2 を要求します。
101,2,1,0,0,0,0,0,0,0
ビジョンシステムはロボットへ以下の応答を返します。1011 は対象の RVS 2.0 プロジェクトが未登録であることを表します。
101,1011
102 コマンド: ビジョン結果を取得
機能紹介
このコマンドは、RVS 2.0 プロジェクト実行後に出力されたビジョン結果(一連のグリップポイント)を取得するために使用します。グリップポイントの物体ポーズ(ビジョン出力ステップの Any ポートデータに対応)は、ビジョンシステムによって対応するロボットのツールポーズへ変換済みです。
呼び出し順序
このコマンドは、101 コマンド: RVS 2.0 プロジェクトを実行 の成功後、かつ 109 コマンド: ユーザーラベルデータを取得 の後に呼び出す必要があります。このコマンドでデータを取得すると、ビジョン出力ステップのデータはクリアされます。
送信フォーマット
102,RVS 2.0 プロジェクト番号,今回取得したいグリップポイント数,グリップポイントのインデックス番号
RVS 2.0 プロジェクト番号
101 指令で実行したプロジェクト番号と一致する必要がある。
今回取得したいグリップポイント数(任意項目)
今回取得したいグリップポイント数を指定。値は正の整数。実際に出力可能なグリップポイントの数がその値より少ない場合は、全てを返す。それ以外の場合は、指定された数のグリップポイントのみを返す。
グリップポイントのインデックス番号(任意項目)
取得するグリップポイントのインデックス番号を指定、インデックスは 0 から開始。 たとえば、現在のグリップポイントが 3 つあり、そのうち 2 つを取得したい場合は、0,1 や 0,2、1,2 のように指定できます。
返りフォーマット
102,状態コード,すべてのグリップポイントを取得したか,グリップポイント数,予約フィールド,グリップポイント1(ツールポーズ, ラベル, 末端ツール番号),グリップポイント2(ツールポーズ, ラベル, 末端ツール番号),…
パラメータ |
説明 |
|---|---|
状態コード |
1100: 実行成功です。その他の値はエラーコードです。詳細は RVS 2.0 エラー状態コード を参照してください。 |
すべてのグリップポイントを取得したか |
0: まだすべてのグリップポイントを取得していません。 |
グリップポイント数 |
今回返すグリップポイント数。 |
予約フィールド |
現在は未使用で、固定値は 0 です。 |
グリップポイント |
各グリップポイントは 8 個のデータ で構成されます。 |
ツールポーズ変換説明
ビジョンシステムは、グリップポイントの物体ポーズ(つまりビジョン出力ステップの Any ポートデータ)を自動的に対応するロボットのツールポーズへ変換します。
RVS 2.0 の内部では四元数でポーズを表しますが、コマンド通信時には自動的にオイラー角形式へ変換されます。
コマンド例
例 1: 単一のグリップポイントを取得
プロジェクト実行後、合計 2 つのグリップポイントが生成され、2 回に分けて取得、毎回 1 つのグリップポイントを取得:
プロジェクトを実行
ロボットが 101 コマンドを送信し、プロジェクト 2 の実行を開始します。1 は、一度に 1 つのグリップポイントを取得したいことを表します。
101,2,1,2,352.10,148.33,479.85,-179.92,0.08,89.98
ビジョンシステムが実行成功を返す:
101,1102
第 1 のビジョン結果を取得
ロボットが 102 コマンドを送信し、1 つ目のグリップポイントを取得します。
102,2
ビジョンシステムが第 1 のグリップポイントを返す:
102,1100,0,1,0,125.48,320.76,85.21,179.95,0.03,-90.12,0,0
第 2 のビジョン結果を取得
ロボットが 102 コマンドを送信し、2 つ目のグリップポイントを取得します。
102,2
ビジョンシステムが第 2 のグリップポイントを返す:
102,1100,1,1,0,130.25,315.42,82.15,178.92,1.25,-88.76,0,0
例 2:一度に複数のグリップポイントを取得
2 つのグリップポイントを取得する例:
プロジェクトを実行
ロボットが 101 コマンドを送信し、プロジェクト 2 の実行を開始します。0 は、すべてのグリップポイントを取得したいことを表します。
101,2,0,2,352.10,148.33,479.85,-179.92,0.08,89.98
ビジョンシステムが実行成功を返す:
101,1102
ビジョン結果を取得
ロボットが 102 コマンドを送信し、グリップポイントを取得します。
102,2
ビジョンシステムが 2 つのグリップポイントを返す:
102,1100,1,2,0,125.48,320.76,85.21,179.95,0.03,-90.12,0,0,130.25,315.42,82.15,178.92,1.25,-88.76,0,0
例 3: ビジョン結果がない場合の応答
プロジェクトを実行
ロボットが 101 コマンドを送信し、プロジェクト 3 の実行を開始します。
101,3,1,2,355.00,152.50,481.20,-179.95,0.15,90.10
ビジョンシステムが実行成功を返す:
101,1102
ビジョン結果を取得
ロボットが 102 コマンドを送信します。
102,3
ビジョンシステムがエラーを返す(現在ビジョン結果なし):
102,1002
例 4: インデックスを指定してグリップポイントを取得
プロジェクト実行後に合計 3 つのグリップポイントが生成され、そのうち 2 つを取得したい場合を示します。ここでは、インデックス番号を指定して 1 つ目と 3 つ目のグリップポイントを取得します。
プロジェクトを実行
ロボットが 101 コマンドを送信し、プロジェクト 4 の実行を開始します。0 は、すべてのグリップポイントを取得したいことを表します。
101,4,0,2,351.20,149.60,478.40,-179.90,0.10,90.00
ビジョンシステムが実行成功を返す:
101,1102
インデックスを指定してビジョン結果を取得
ロボットが 102 コマンドを送信し、今回は 2 つのグリップポイントを取得するため、インデックス 0,2 を指定して 1 つ目と 3 つ目のグリップポイントを要求します。
102,4,2,0,2
ビジョンシステムが指定の 2 つのグリップポイントを返す:
102,1100,1,2,0,120.35,318.40,84.10,179.80,0.15,-89.95,1,0,133.72,309.18,81.64,178.55,1.02,-87.43,3,0
103 コマンド: パラメータレシピを切り替え
機能紹介
このコマンドは、RVS 2.0 プロジェクトで使用するパラメータレシピを切り替えるために使用します。
呼び出し順序
このコマンドは 101 コマンド: RVS 2.0 プロジェクトを実行 より前に呼び出す必要があります。
送信フォーマット
103,RVS 2.0 プロジェクト番号,パラメータレシピ番号
RVS 2.0 プロジェクト番号
プロジェクトリストウィンドウで確認できます。プロジェクト名の前に表示される数字が番号です。
パラメータレシピ番号
返りフォーマット
103,状態コード
コマンドが正常に実行された場合、状態コードは 1107 です。異常時には対応するエラーコードを返します。詳細は RVS 2.0 エラー状態コード を参照してください。
コマンド例
ロボットが以下のコマンドを送信し、プロジェクト 1 のパラメータレシピ番号を 2 に切り替えます。
103,1,2
ビジョンシステムが以下の結果を返した場合、コマンドは正常に実行されています。1107 は、プロジェクト 1 のパラメータレシピ番号が 2 に正常に切り替わったことを示します。
103,1107
ビジョンシステムが以下の結果を返した場合、コマンドは異常終了しています。1012 は、指定したパラメータレシピ番号に対応するレシピが存在しないことを示します。
103,1012
109 コマンド: ユーザーラベルデータを取得
機能紹介
このコマンドは、RVS 2.0 プロジェクトが定義するユーザーラベルデータ(ビジョン出力ステップの「ユーザーラベル」ピン入力に対応)を取得するために使用します。
呼び出し順序
このコマンドは 101 コマンド: RVS 2.0 プロジェクトを実行 の成功後に呼び出し、102 コマンド: ビジョン結果を取得 の前に呼び出します。
送信フォーマット
109,RVS 2.0 プロジェクト番号
RVS 2.0 プロジェクト番号
101 コマンドで実行したプロジェクト番号と一致している必要があります。
返りフォーマット
109,状態コード,予約フィールド,ユーザーラベル数,予約フィールド,ラベルデータ
パラメータ |
説明 |
|---|---|
状態コード |
1100: 実行成功です。その他の値はエラーコードです。詳細は RVS 2.0 エラー状態コード を参照してください。 |
ユーザーラベル数 |
ユーザーラベルの数。 |
ユーザーラベルデータ |
ユーザーラベルのデータ。 |
コマンド例
プロジェクトを実行
ロボットがビジョンシステムへ 101 コマンドを送信し、プロジェクト 1 の実行を開始します。
101,1,0,2,350.25,150.72,480.36,-179.88,0.12,90.05
ビジョンシステムがロボットへ成功応答を返します。
101,1102
ユーザーラベルデータを取得
ロボットがビジョンシステムへ 109 コマンドを送信します。
109,1
ビジョンシステムがロボットへ結果を返します。これはコマンド実行成功を表し、ビジョン出力 ステップの「ユーザーラベル」ピン入力が [1,2,3,4,5,6] であることを示します。
109,1100,0,6,0,1,2,3,4,5,6
110 コマンド: カスタムデータを取得
機能紹介
このコマンドは「ビジョン出力」ステップからカスタムポートのデータを取得するために使用し、必要に応じて入力ポートをカスタム設定できます。

注意
図の上部にある
poses、labels、sizes、offsetsなどのプリセットポートデータは、カスタムデータには含まれません。「ビジョン出力」ステップの ポートタイプ パラメータは「カスタム」に設定する必要があり、
posesポートが存在する必要があります。
呼び出し順序
このコマンドは、101 コマンド: RVS 2.0 プロジェクトを実行 が正常にプロジェクトを実行した後に呼び出す必要があります。
送信フォーマット
110,RVS 2.0 プロジェクト番号
RVS 2.0 プロジェクト番号
101 コマンドで実行したプロジェクト番号と一致している必要があります。
返りフォーマット
110,状態コード,すべてのビジョンポイントを取得したか,カスタムデータの数,ポーズ,ラベル,カスタムデータ項目1,…,カスタムデータ項目N
状態コード
コマンドが正常に実行された場合、状態コードは 1100 です。異常時には対応するエラーコードを返します。詳細は RVS 2.0 エラー状態コード を参照してください。
すべてのビジョンポイントを取得したか
0:まだすべてのビジョンポイントを取得していません。
1:すべてのビジョンポイントを取得しました。
注釈
ロボットがこのコマンドを 1 回実行すると、ビジョンシステムから 1 つのビジョンポイントに対応するポーズとカスタムデータのみを取得できます。複数のビジョンポイントのカスタムデータを取得する場合は、このコマンドを複数回実行してください。
プログラム作成時には、このパラメータ値が 1 かどうかを判断することで、すべてのビジョンポイントを取得したかどうかを確認できます。値が 0 の場合は、値が 1 になるまでこのコマンドを再度呼び出してください。
このコマンドを呼び出した後、ビジョンシステムが 10 秒以内に処理結果を返さない場合は、タイムアウトエラー状態コードが返されます。RVS 2.0 ツールバーの「ロボット通信設定」>「次へ」>「詳細設定」で、「Vision データ取得タイムアウト時間」を必要に応じて変更できます。
カスタムデータの数
すべてのカスタムポートデータの列次元数の合計です。たとえば、「ビジョン出力」ステップのポートデータが以下のデータで構成されており、customData1 と customData2 がカスタムポートで、列次元数がそれぞれ 3 と 2 の場合、カスタムデータの数は 3+2=5 になります。
ポート名 |
poses |
labels |
カスタムデータ項目1 |
カスタムデータ項目2 |
|---|---|---|---|---|
ポートデータ |
[ |
[ |
[ |
[ |
[0, 0, 0, 1, 0, 0, 0], |
"0", |
[0, 0, 1], |
[0, 0], |
|
[0, 0, 0, 1, 0, 0, 0], |
"1" |
[1, 0, 0] |
[1, 1] |
|
] |
] |
] |
] |
|
行次元数(リスト内の要素数) |
2 |
2 |
2 |
2 |
列次元数(リスト内の単一要素の次元数) |
7 |
1 |
3 |
2 |
ポーズ
1 つのビジョンポイントのロボットツールポーズです。ビジョンシステムは、ビジョンポイントの物体ポーズ(つまり「ビジョン出力」ステップの poses ポートデータ)を自動的に対応するロボットツールポーズへ変換します。変換プロセスは以下のとおりです。
物体ポーズを四元数形式からオイラー角形式に変換します。
物体ポーズを X 軸周りに 180° 回転させ、Z 軸が下を向くようにします。
ラベル
1 つのビジョンポイントのラベルです。
注釈
ラベルは整数形式の文字列である必要があります。
ラベル情報がない場合は、ラベル値はデフォルトで 0 になります。
カスタムデータ項目
1 つのビジョンポイントのすべてのカスタムポートのデータで、その数は カスタムデータの数 と一致します。カスタムデータ項目は、カスタムポート名のアルファベット順(A—Z)に並べられます。
たとえば、「ビジョン出力」ステップの各ポートのデータが下の表のようになっている場合、ロボットが取得する 1 つ目のビジョンポイントの カスタムデータ項目 は [0, 0, 1] と [0, 0]、2 つ目のビジョンポイントの カスタムデータ項目 は [1, 0, 0] と [1, 1] です。
ポート名 |
poses |
|||
|---|---|---|---|---|
ポートデータ |
[ |
[ |
[ |
[ |
[0, 0, 0, 1, 0, 0, 0], |
"0", |
[0, 0, 1], |
[0, 0], |
|
[0, 0, 0, 1, 0, 0, 0], |
"1" |
[1, 0, 0] |
[1, 1] |
|
] |
] |
] |
] |
|
1 つ目のビジョンポイント |
[0, 0, 0, 1, 0, 0, 0] |
0 |
[0, 0, 1] |
[0, 0] |
2 つ目のビジョンポイント |
[0, 0, 0, 1, 0, 0, 0] |
1 |
[1, 0, 0] |
[1, 1] |
コマンド例
プロジェクトの「ビジョン出力」ステップの各ポートデータが下図のようになっているとします。次に、101 コマンド——プロジェクトを実行 と 110 コマンド——カスタムデータを取得 を使って、カスタムポートのデータを取得する手順を示します。
ロボットがビジョンシステムへ 101 コマンドを送信し、すべてのビジョンポイント(合計 2 つ)の取得を要求します。
101,1,0,0
ビジョンシステムが実行成功を返します。
101,1102
ロボットがビジョンシステムへ 110 コマンドを送信し、1 つ目のビジョンポイントのすべてのデータを取得します。
110,1
ビジョンシステムが結果を返します。ここで、カスタムデータ項目は 11 と 21 です。
110,1100,0,2,1150.1272,-297.2476,-55.0715,-0.1087,-1.6156,-176.1518,1,11,21
ロボットが再度ビジョンシステムへ 110 コマンドを送信し、2 つ目のビジョンポイントのすべてのデータを取得します。
110,1
ビジョンシステムが結果を返します。ここで、1 はすべてのビジョンポイントを取得したことを示し、カスタムデータ項目は 12 と 22 です。
110,1100,1,2,592.6891,-256.7424,-56.6007,0.0723,1.1348,-176.355,2,12,22
501 コマンド: RVS 2.0 プロジェクトに物体寸法を入力
機能紹介
このコマンドは、RVS 2.0 プロジェクトに物体寸法を入力するために使用します。入力した物体寸法は「物体寸法を読み取り」ステップの ボックスサイズ設定 パラメータの値になります。下図を参照してください。

このコマンドを使用する場合、RVS 2.0 プロジェクトには「物体寸法を読み取り」ステップが 1 つだけ存在する必要があります。それ以外の場合、ビジョンシステムはエラーを返します。
呼び出し順序
このコマンドは、101 コマンド: RVS 2.0 プロジェクトを実行 より前に呼び出す必要があります。
送信フォーマット
501,RVS 2.0 プロジェクト番号,物体寸法X,物体寸法Y,物体寸法Z
RVS 2.0 プロジェクト番号
プロジェクトリストウィンドウで確認できます。プロジェクト名の前に表示される数字が番号です。
物体寸法X/Y/Z
物体の長さ、幅、高さで、単位はミリメートル(mm)です。寸法値は「物体寸法を読み取り」ステップで読み取られ、X 軸上の長さ、Y 軸上の長さ、Z 軸上の長さ にそれぞれ書き込まれます。
返りフォーマット
501,状態コード
状態コード
コマンドが正常に実行された場合、状態コードは 1108 です。異常時には対応するエラーコードを返します。詳細は RVS 2.0 エラー状態コード を参照してください。
コマンド例
ロボットがビジョンシステムへ以下のコマンドを送信し、プロジェクト 1 の物体寸法を X=100 mm、Y=200 mm、Z=300 mm に設定します。
501,1,100,200,300
ビジョンシステムがロボットへ以下の結果を返した場合、コマンドは正常に実行されています。1108 は、プロジェクト 1 の物体寸法が X=100 mm、Y=200 mm、Z=300 mm に正常に設定されたことを示します。
501,1108
901 コマンド: システム状態を取得
機能紹介
このコマンドは、RVS 2.0 プロジェクトが準備完了かどうかを確認するために使用します。
送信フォーマット
901
返りフォーマット
901,状態コード
状態コード
コマンドが正常に実行された場合、状態コードは 1101 です。異常時には対応するエラーコードを返します。詳細は RVS 2.0 エラー状態コード を参照してください。
コマンド例
ロボットがビジョンシステムへ 901 コマンドを送信します。
901ビジョンシステムが結果を返します。1101 は RVS 2.0 プロジェクトが準備完了であることを示します。
901,1101