クローラシュー¶
本節では、クローラシューのプロジェクトについて説明します。
ワーク |
反射性が低い、表裏逆に並べ替えられた同種のクローラシュー |
容器 |
パレット |
稼働距離 |
1200~3000mm |
技術仕様 |
位置決め精度:±5mm |
認識の成功率:99.9%以上 |
|
ビジョンシステムの処理時間:6s以内 |
注釈
以下では、リブのある面を表側、リブのない滑らかな面を裏側とするように説明します。
プロジェクト概要¶
以下では、適用シーンと技術仕様から説明します。
プロジェクトの内容¶
レイアウト¶
セルのレイアウト¶
セルのレイアウトを下図に示します。
このセルでは、以下のような流れで作業します。
クローラシューは、手動フォークリフトで供給位置まで搬送されます。
ロボットがビジョンシステムに撮影コマンドを送信し、クローラシューを撮影して認識を行います。ビジョンシステムがクローラシューの位置情報をロボットに送信します。
ロボットがビジョンシステムによって送信されたクローラシューの位置情報に従って把持し、クローラシューを二回位置決めテーブルに配置します。
供給が完了するまで上記の流れを繰り返して実行します。
ビジョンシステムのハードウェア構成要素¶
推奨型番 |
説明 |
|
カメラ |
LSR L |
推奨取り付け方式:Eye-to-Hand 稼働距離:1200-3000mm |
産業用PC |
GPU(K-Q37MV-Q370)搭載標準機種 |
プロセッサー:CPU I7-9700 |
メモリ:16G |
||
ハードディスク:256G SSD |
||
グラフィックカード:1050 TI |
||
WIFIモジュール |
ロボットハンド¶
このプロジェクトによく使用されるハンドを下図に示します。
ハンド説明:
このプロジェクトで一般的に使用されるハンドは磁気吸着式ハンドです。剛体結合だと位置姿勢認識の精度が高すぎます。磁気吸着式ハンドは把持方向にクッションを設けるため、把持方向に一定の把持ずれを許容するだけでなく、ワークの認識時に小さな角度の認識ずれも許容することが可能です。さらに、磁気力を増やすことで、認識精度に対する要求も下げることができます。
ハンドのメリット:
把持方向にクッションを設けるため、把持の成功率を向上させることができます。
ビジョン関連説明¶
通信方式¶
標準インターフェース通信を使用することを推奨します。
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マッチング: 点群処理によって得られたクローラシューの表裏のエッジ点群モデルを、元の点群とマッチングさせ、より正確な把持位置姿勢を取得します。
位置姿勢の処理とソート: 把持位置姿勢を変換・ソートします。
結果出力: 現在のプロジェクトの結果をバックエンドサービスに送信します。
プロジェクトにおける難点¶
クローラシューの表裏を区別する必要があります。
クローラシュー同士が積み重ねられたため、一部のクローラシューに点群抜けがあります。
把持順序に対して高い要件があります。
ソリューションの強さ¶
エッジマッチングにより、点群モデルマッチングの精度向上を実現します。
最高層にある積み重ねられないクローラシューを認識可能です。
このプロジェクトに使用したハンドは把持方向にクッションを計けるため、把持の成功率を大幅に向上させることができます。
プロジェクト実装¶
注意事項¶
ディープラーニング:
このプロジェクトに搭載されているディープラーニングモデルはGPUモデルであるため、現場で実行するにはGPU搭載の産業用PCが必要です。
現場でこのプロジェクトを実行するときは、データを再取得し、ディープラーニングのトレーニングを再実行する必要があります。
その他の説明:
このプロジェクトは、表裏逆に並べ替えられたクローラシューのみに対応します。
供給するクローラシューはすべて裏側が上向きになっている場合、マルチモデルマッチングを単一モデルマッチングに切り替え、把持位置姿勢のソートロジックを調整できます。
パラメータ調整のアドバイス¶
マスクが対応する点群を抽出して処理¶
最高層点群を取得 :最高層のクローラシューの点群を取得し、下層の不要な点群の出力を抑えることが必要です。
2D方法による点群エッジを推定 :ワークのパレットパターンの高さが異なる場合は、異なる2D線幅のピクセル(初期値は15px)を設定する必要があります。ワークのパレットパターンの高さが低い場合(700mm以下)、マッチング効果に影響はありませんが、ワークのパレットパターンの高さが高い場合、抽出された点群エッジの幅が大きく変化し、マッチング効果に影響を与える可能性があります。
下図に示すように、左図のは抽出する点群、右図のは抽出された点群エッジとなります。
マルチモデルの3Dマッチング¶
3D位置姿勢高精度推定(マルチモデル) :リブのある面が上を向いている場合が正面であり、リブのない面が上を向いている場合が裏側である場合、マルチモデルの3Dマッチングにおいて次のことに注意する必要があります。
対応する モデルラベルファイル を設定し、対称回転軸を ROTATE_BY_Z に選択し、対称角度ステップサイズを 180.0° に設定する必要があります。
最高層に遮られないワークを把持する際にずれがないことを優先する必要があります。重なり合いが多い下層のワークについては、点群抜けがあるため、把持のずれが許容されます。
エッジ点群モデルは、表裏で別々に設定する必要があります。2D方法で線幅のあるエッジモデルを抽出する目的は、全体モデルマッチングでは長辺方向にずれが生じる可能性があるのに対し、クローラシューの長辺方向の精度を確保することです。
位置姿勢低精度推定の偏差が大きすぎて、位置姿勢高精度推定でさらに最適化できない場合は、偏差を小さくなるように位置姿勢低精度推定のパラメータを優先に調整することが推奨されます。調整する主なパラメータは ボクセル長さ と サンプリング間隔 となります。例えば、モデル点群を20mm間隔でサンプリングする場合、初期ボクセル長を10mmに設定し、マッチング効果に応じて最終ボクセル長を上下に微調整することが推奨されます。ボクセル長を小さく設定すると、マッチング偏差が生じる可能性が高くなります。
重複対象物を除去 : パラメータ 重複比率のしきい値 は、あまり小さく設定することはできませんので、0.04に設定することを推奨します。しきい値が小さすぎると、重なり合う点群が同時に除去されます。例えば、ワークが全部で2つあるが、2つのワークの点群が交差している場合、両方のワークの位置姿勢が除去されて出力されないという結果になります。
下図に示すように、右側の白い点群は、積み重ねられた状態と見なされ、除去されたワークとなります。
位置姿勢の処理とソート¶
最高層の位置姿勢を取得 :最高層のワークと下層のワーク(2層目、3層目など)に同時に正面ワークがある場合は、より高い層にあるワークのみを保持すれば問題ありません。裏面ワークの場合は同様に処理します。主な理由は、1層目と2層目に同時に正面ワークがある場合、この2つ層の把持位置姿勢を同時にソートすると混乱が生じるからです。
位置姿勢の向きに応じて表裏ワークをソート:このステップの組合せは、より高い層のワークの裏面の位置姿勢を入力することにより、この層のワークで優先的に把持する必要があるワークを出力できます。
ワークの積み方が固定であり、同じ層のワーク同士が積み重ねられた状態であるため、例えば、同じ層に4つのワークがあり、左右方向がパレットパターンの長辺である場合、左から右に、1番目のワークが2番目のワークに重なり、2番目のワークが3番目のワークに重なり...、左側の1番目のワークを優先的に把持する必要があります。
しかし、ワークを載せるパレットが180°回転して、左側にあった1番目のワークが右側の1番目ークになったとしたら、右側の1番目のワークが優先的に把持されることになります。 つまり、同じ層の裏面ワークを取得したら、ワークの向きから把持する方向を決めるだけでいいのです。
正面と裏面ワークの位置姿勢をマージした後に最高層の積み重ねられないワークの位置姿勢のみを出力:正面と裏面ワークの位置姿勢をマージして位置姿勢が1つしかない場合はそのまま出力できます。正面と裏面ワークの位置姿勢をマージすると、正面と裏面ワークの位置姿勢がそれぞれ1つあり、裏面ワークが最高層にある場合、重なり合いロジックに従って裏面ワークは正面のワークの位置姿勢よりも高く、リブ1つ分の高さを超える必要があります。それ以外の場合は正面ワークが最上層にあるはずです。
数値演算 :裏面ワークのZ値から、おおよそのリブの高さを引きます。
よくある問題と解決策¶
低い点群品質によるマッチングエラー¶
点群品質が低いためにマッチングに異常が発生した場合、マッチング異常の効果は下図のようになります。
この場合、以下のような手順で最適化できます。
カメラのパラメータを調整し、点群品質を向上させます。
点群抜けに従ってワークの点群モデルを最適化し、マッチングの安定性を向上させます。
最適化が完了後、マッチング効果は下図のようになります。
ディープラーニングの異常によるマッチングエラーや把持位置姿勢のソート異常¶
ディープラーニングの認識に異常が発生した場合、マッチングエラーや把持位置姿勢のソート異常が発生する可能性があります。この場合はディープラーニングモデルをトレーニングして反復させることができます。