通い箱¶
本節では、通い箱のプロジェクトについて説明します。
ワーク |
整列させ、複数段に積み重ねられた直方体のプラスチック製のフタなし通い箱で、反射性が低く、点群抜けが20%以下 |
容器 |
パレット |
稼働距離 |
1200~3500mm |
技術仕様 |
位置決め精度:±4mm |
認識の成功率:99.9%以上 |
|
ビジョンシステムの処理時間:4s以内 |
プロジェクト概要¶
以下では、適用シーンと技術仕様から説明します。
プロジェクトの内容¶
レイアウト¶
セルのレイアウト¶
セルのレイアウトを下図に示します。
このセルでは、以下のような流れで作業します。
AGVにより、通い箱がデパレタイジング位置に搬送されます。
ロボットが撮影コマンドをビジョンシステムに送信し、通い箱を撮影して認識を行います。ビジョンシステムは通い箱の位置をロボットに送信します。
ロボットがビジョンシステムによって送信された通い箱の位置に従ってデパレタイジングし、通い箱をコンベアに配置します。
供給が完了するまで上記の流れを繰り返して実行します。
ビジョンシステムのハードウェア構成要素¶
推奨型番 |
説明 |
|
カメラ |
DEEP |
推奨取り付け方式:Eye-to-Hand 稼働距離:1200-3500mm |
産業用PC |
GPU非搭載の標準機種 |
プロセッサー:CPU I5-12400 |
メモリ:16G DDR4 |
||
ハードディスク:256G SSD |
||
電源:DC24V 7.5A |
||
システム:Windows 10 21H1 |
||
WIFIモジュール |
ロボットハンド¶
このプロジェクトでは、通常、左右クランプ式ハンドと隣辺クランプ式ハンドを使用しています。密集している通い箱をデパレタイジングする場合、隣辺クランプ式ハンドの使用を推奨します。
左右クランプ式ハンド¶
左右クランプ式ハンドを下図に示します。
ハンド説明:
このハンドは、2枚のクランププレートによって通い箱を把持できます。
ハンドのメリット:
様々なサイズの通い箱に対応します。
箱との接触面は柔らかい素材でできているため、クッション効果があり、通い箱の変形を抑えることができます。
ハンドのデメリット:
密集している通い箱のデパレタイジングに対応しません。
隣辺クランプ式ハンド¶
隣辺クランプ式ハンドを下図に示します。
ハンド説明:
このハンドは、まず通い箱の隣接する2辺を把持し、把持した後、パレットフックを下げてから通い箱を四方で把持し、配置位置の上方に到達するとパレットフックを開いて通い箱を配置します。
ハンドのメリット:
密集している通い箱のデパレタイジングが可能です。
様々なサイズの通い箱に対応します。
箱との接触面は柔らかい素材でできているため、クッション効果があり、通い箱の変形を抑えることができます。
ハンドのデメリット:
重量が大きい(50kgなど)通い箱の把持に対応しません。
ビジョン関連説明¶
通信方式¶
標準インターフェース通信を使用することを推奨します。
1. Mech-Visionレシピの切替 |
|||
ロボット -> 産業用PC |
送信コマンド |
Mech-Visionプロジェクト番号 |
レシピ番号 |
103 |
Mech-Visionプロジェクトリストでプロジェクト名の左側の数字 |
1~99 |
|
サンプル |
103, 1, 2 |
||
産業用PC -> ロボット |
受信コマンド |
ステータスコード |
|
103 |
1107:レシピの切替に成功 1012:Mech-Visionレシピ番号がない |
||
サンプル |
103, 1107 |
2. Mech-Vizプロジェクトを起動 |
|||
ロボット -> 産業用PC |
送信コマンド |
位置姿勢のタイプ |
ロボット位置姿勢 |
201 |
0:位置姿勢送信しない 1:Mech-Vizに送信された位置姿勢が関節角度とフランジ位置姿勢の形式 2:ロボット側でカスタマイズされた関節角度 |
ロボットの現在の関節角度とフランジ位置姿勢(「位置姿勢のタイプ」が1の場合) |
|
サンプル |
201, 1, 0, -20.632, -107.812, 0, -92.818, 0.003 |
||
産業用PC -> ロボット |
受信コマンド |
ステータスコード |
|
201 |
2103:実行成功 2008:プロジェクト実行エラー ...... |
||
サンプル |
201, 2103 |
2. Mech-Viz分岐を選択 |
|||
ロボット -> 産業用PC |
送信コマンド |
分岐ステップID |
分岐の出口番号 |
203 |
このパラメータは分岐選択を行うステップを指定するために使用され、正の整数である必要があります |
このパラメータはプロジェクトが「メッセージによって異なる分岐を実行」ステップのどの出口から実行を続けることを指定するために使用され、正の整数である必要があります。 |
|
サンプル |
203, 1, 1 |
||
産業用PC -> ロボット |
受信コマンド |
ステータスコード |
|
203 |
2105:実行成功 2018:分岐出口番号が無効 ...... |
||
サンプル |
203, 2105 |
4. 計画経路を取得(推奨) |
||||||
ロボット -> 産業用PC |
送信コマンド |
経路点タイプ |
||||
205 |
1:経路点がロボットの関節角度の形式で返された 2:経路点がロボットのTCP位置姿勢の形式で返された |
|||||
サンプル |
205, 1 |
|||||
産業用PC -> ロボット |
受信コマンド |
ステータスコード |
送信が完了しているかどうか |
経路点の数 |
「ビジョン処理による移動」の位置 |
経路点 |
205 |
2100:実行成功 2007:経路計画に失敗 ...... |
0:経路におけるすべての経路点が送信されていない 1:経路におけるすべての経路点が送信された |
デフォルト範囲は0~20で、20以上の経路点がある場合はこのコマンドを繰り返して実行してください |
「ビジョン処理による移動」の経路点が経路全体における位置 |
位置姿勢, ラベル, 速度 |
|
サンプル |
205, 2100, 1, 2, 2, 8.307, 15.163, -142.177, -2.775, -31.440, -96.949, 0, 64 |
5. ビジョン目標点を取得(Mech-Vizを使用しない場合に使用、推奨しない) |
||||||
ロボット -> 産業用PC |
送信コマンド |
Mech-Visionプロジェクト番号 |
||||
102 |
Mech-Visionプロジェクトリストでプロジェクト名の左側の数字 |
|||||
サンプル |
102, 1 |
|||||
産業用PC -> ロボット |
受信コマンド |
ステータスコード |
送信が完了しているかどうか |
TCP数 |
予約語 |
ビジョン目標点 |
102 |
1100:実行成功 1102:ビジョン結果なし ...... |
0:すべてが送信されていない 1:すべて送信された |
デフォルト範囲:0~20 |
この予約語が使われていないため、初期値は0です |
位置姿勢, ラベル, 速度 |
|
サンプル |
102, 1100, 1, 1, 0, 95.780, 644.567, 401.101, 91.120, -171.130, 180.0, 0, 0 |
標準インターフェース通信については、 標準インターフェース通信 をご参照ください。
プロジェクト説明¶
このプロジェクトは下図のような流れで行います。
画像取得: 通い箱のカラー画像、深度画像を取得します。
点群前処理: 通い箱の元の点群を前処理し、通い箱の上辺の点群を抽出して、その後の処理時間を短縮させます。
3D位置姿勢推定: エッジ点群モデルを、点群前処理によって取得された通い箱の上辺のエッジ点群とマッチングさせ、把持の候補位置姿勢を取得します。
位置姿勢のエラー防止: 設定されたルールに従って不合格の把持位置姿勢を除去し、プロジェクト実行中に認識漏れや誤認識などがないかどうかを判断します。
位置姿勢の処理: 把持位置姿勢を変換・ソートします。
結果出力: 現在のプロジェクトの結果をバックエンドサービスに送信します。
点群モデルと把持位置姿勢の設定方式¶
モデル設定:
設定方法:ステップ 2D方法による点群エッジを推定 を使用して点群のエッジモデルを抽出し、このステップのパラメータ 2D線の幅 を2pxに設定します。
理由:点群品質が高い場合、2Dエッジテンプレートは3Dエッジモデルよりも高い位置姿勢マッチング精度を実現します。また、2Dエッジテンプレートは、3Dエッジモデルと比較して、点群モデルの線幅を設定することができるため、マッチング処理中に2Dエッジテンプレートがより安定します。
把持位置姿勢の設定:
設定方法:ドラッグ&ドロップ方式で設定します。 マッチングモデル・把持位置姿勢エディタ で把持位置姿勢を追加することができます。
理由:通い箱は一般的に標準的な直方体なので、把持位置姿勢へのドラッグ&ドロップが容易で、ドラッグ精度が現場での把持条件を満たしています。
プロジェクトにおける難点¶
通い箱が密集している場合、「点群前処理」のステップの組合せで異なる通い箱の点群を区別することが難しいです。
一部の通い箱の点群品質が悪く、点群抜けがあり、点群の表面変動が大きいです。
一部のプロジェクトでは、通い箱のピッキング精度に対して高い要件があります。例えば、Z軸が通い箱の表面に垂直で上向きの場合、Z軸周りの把持位置姿勢の偏差が0.5未満であることが要求されます。
プロジェクトの強さ¶
エッジマッチングにより、認識精度の向上を実現します。
誤認識や認識漏れを防止するためのステップの追加により、プロジェクト実行の安定性を向上させることが可能です。
このプロジェクトに使用したハンドは、密集している通い箱のデパレタイジングに対応可能です。
プロジェクト実装¶
注意事項¶
このプロジェクトでは、クランプ式ハンドが使用されます。下図のように、通い箱同士が密集している場合、ピッキングの際に隣接する通い箱に衝突しないようにクランプ式ハンドを設計する必要があります。
パラメータ調整のアドバイス¶
点群前処理¶
点群クラスタリング :ノイズを除去し、通い箱のエッジ点群を保持するために、 点のフィルタリング と「点群クラスタリング」のステップパラメータを調整する必要があります。通い箱に対象物が含まれる場合、「点群クラスタリング」を使用して、エッジ点群と対象物の点群を区別する必要があります。そうしないと、エッジ点群の抽出効果に影響が出ます。
最高層の点群を取得 :通い箱の上辺のエッジ点群のみを取得します。
2D方法による点群エッジを推定 :通い箱の上辺の内側の完全な点群を取得します。
3D位置姿勢推定¶
位置姿勢のある軸を指定された方向に向ける :ロボットハンドの不要な回転を抑えるため、補正方法を ROTATION 、調整する軸を X 、対称角度を 180° 、X軸の基準方向を -1.0000 に設定します。
位置姿勢のエラー防止¶
3D ROI内の位置姿勢を取得 :3D ROI外の位置姿勢を除去するには、3D ROIの設定が必要です。
基準方向との角度によって位置姿勢が有効かどうかを検証 :ステップパラメータの 基準方向 を変更します。
認識漏れや誤認識の有無の判断:認識漏れや誤認識の有無を確認するために、通い箱の最高層から抽出されたエッジ点群の投影と単一の通い箱の投影を比較する必要があります。
点群前処理 で通い箱の上辺の点群だけを抽出することはできない場合(入力点群には通い箱の中の対象物点群も含まれているので)、このエラー防止のためのステップの組合せは削除して他の有効なエラー防止策を選択する必要があります。
よくある問題と解決策¶
問題1¶
説明:ステップ 2D方法による点群エッジを推定 により、通い箱の上辺の内側から抽出された点群は少ないです。
解決策:ステップ 2D方法による点群エッジを推定 のパラメータ モルフォロジー操作の設定 を適切に設定します。例えば、膨張カーネルサイズと収縮カーネルサイズが21pxの場合、エッジ点群を下図の左側に示します。膨張カーネルサイズと収縮カーネルサイズが5pxの場合、エッジ点群を下図の右側に示します。
問題2¶
説明:位置姿勢のマッチングにズレがあります。
解決策:まず 3D位置姿勢推定 のステップの組合せに入力された点群品質を確認します。点群品質が悪い場合は、通い箱の内のエッジ点群を完全に抽出できるように 点群前処理 のステップの組合せを最適化する必要があります。次に、 3D位置姿勢低精度推定(V2) 、 3D位置姿勢高精度推定 のパラメータを最適化し、「3D位置姿勢低精度推定(V2)」のパラメータ サンプリングされたモデルの期待点数 と ボクセル長さ(パラメータのデバッグレベルが詳細設定の場合にのみ表示) を優先的に調整します。
問題3¶
説明:点群の品質が悪い、あるいは通い箱の中の対象物が通い箱の上辺のエッジを隠しているため、 2D方法による点群エッジを推定 ステップで通い箱のエッジ点群を抽出することができません。
解決策:モデル全体を使用してマッチングを行います。