クローラシュー

本節では、クローラシューのプロジェクトについて説明します。

ワーク

反射性が低い、表裏逆に並べ替えられた同種のクローラシュー

容器

パレット

稼働距離

1200~3000mm

技術仕様

位置決め精度:±5mm

認識の成功率:99.9%以上

ビジョンシステムの処理時間:6s以内

注釈

以下では、リブのある面を表側、リブのない滑らかな面を裏側とするように説明します。

プロジェクト概要

以下では、適用シーンと技術仕様から説明します。

適用シーン

以下では、ワークと容器から適応シーンを説明します。

ワーク

クローラシューの特徴への対応状況は、下表のどおりです。

ワーク特徴

対応状況

サンプル図

供給方式

整列された状態で供給するワークに対応

icon_1

バラ積みされた状態で供給するワークには非対応

形状寸法

リブ付き、フラット状

icon_2

ワーク材質

合金鋼

反射性

低い反射性のワークに対応

icon_3

点群品質

点群抜けが少ないワーク(主要な特徴の点群抜けは5%以下)に対応

icon_4

点群抜けが激しいワークには非対応

icon_5

容器

容器特徴への対応状況は、下表のどおりです。

容器特徴

対応状況

サンプル図

容器種類

パレット

icon_6

技術仕様

詳細は以下の通りです。

  • 位置決め精度:±5mm

  • 認識の成功率:99.9%以上

  • ビジョンシステムの処理時間:6s以内

注釈

ビジョンシステムの処理時間とは、カメラで画像を取得してから対象物の位置姿勢を出力するまでの時間です。

プロジェクトの内容

レイアウト

セルのレイアウト

セルのレイアウトを下図に示します。

../../../_images/workstation_layout3.png

このセルでは、以下のような流れで作業します。

  1. クローラシューは、手動フォークリフトで供給位置まで搬送されます。

  2. ロボットがビジョンシステムに撮影コマンドを送信し、クローラシューを撮影して認識を行います。ビジョンシステムがクローラシューの位置情報をロボットに送信します。

  3. ロボットがビジョンシステムによって送信されたクローラシューの位置情報に従って把持し、クローラシューを二回位置決めテーブルに配置します。

  4. 供給が完了するまで上記の流れを繰り返して実行します。

ビジョンシステムのハードウェア構成要素

推奨型番

説明

カメラ

LSR L

推奨取り付け方式:Eye-to-Hand 稼働距離:1200-3000mm

産業用PC

GPU(K-Q37MV-Q370)搭載標準機種

プロセッサー:CPU I7-9700

メモリ:16G

ハードディスク:256G SSD

グラフィックカード:1050 TI

WIFIモジュール

ロボットハンド

このプロジェクトによく使用されるハンドを下図に示します。

../../../_images/clamps_13.png

ハンド説明:

このプロジェクトで一般的に使用されるハンドは磁気吸着式ハンドです。剛体結合だと位置姿勢認識の精度が高すぎます。磁気吸着式ハンドは把持方向にクッションを設けるため、把持方向に一定の把持ずれを許容するだけでなく、ワークの認識時に小さな角度の認識ずれも許容することが可能です。さらに、磁気力を増やすことで、認識精度に対する要求も下げることができます。

ハンドのメリット:

  • 把持方向にクッションを設けるため、把持の成功率を向上させることができます。

ビジョン関連説明

通信方式

標準インターフェース通信を使用することを推奨します。

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

標準インターフェース通信については、 標準インターフェース通信 をご参照ください。

プロジェクト説明

このプロジェクトでは、ディープラーニングと複数モデルマッチングを組み合わせて使用しており、主に以下の手順で行われます。

../../../_images/project_overall_framework_02.png
  1. 画像取得: クローラシューのカラー画像、深度画像を取得します。

  2. インスタンスセグメンテーション: ディープラーニングにより、画像からクローラシューを認識し、そのマスクをピクセル単位で取得します。

  3. マスクが対応する点群を抽出して処理: クローラシューのマスクが対応する点群を抽出し、点のフィルタリング、点群クラスタリングおよび点群マージなどの処理を行います。

  4. 複数モデルの3Dマッチング: 点群処理によって得られたクローラシューの表裏のエッジ点群モデルを、元の点群とマッチングさせ、より正確な把持位置姿勢を取得します。

  5. 位置姿勢の処理とソート: 把持位置姿勢を変換・ソートします。

  6. 結果出力: 現在のプロジェクトの結果をバックエンドサービスに送信します。

プロジェクトにおける難点

  • クローラシューの表裏を区別する必要があります。

  • クローラシュー同士が積み重ねられたため、一部のクローラシューに点群抜けがあります。

  • 把持順序に対して高い要件があります。

ソリューションの強さ

  • エッジマッチングにより、点群モデルマッチングの精度向上を実現します。

  • 最高層にある積み重ねられないクローラシューを認識可能です。

  • このプロジェクトに使用したハンドは把持方向にクッションを計けるため、把持の成功率を大幅に向上させることができます。

プロジェクト実装

注意事項

ディープラーニング:

  • このプロジェクトに搭載されているディープラーニングモデルはGPUモデルであるため、現場で実行するにはGPU搭載の産業用PCが必要です。

  • 現場でこのプロジェクトを実行するときは、データを再取得し、ディープラーニングのトレーニングを再実行する必要があります。

その他の説明:

  • このプロジェクトは、表裏逆に並べ替えられたクローラシューのみに対応します。

  • 供給するクローラシューはすべて裏側が上向きになっている場合、マルチモデルマッチングを単一モデルマッチングに切り替え、把持位置姿勢のソートロジックを調整できます。

パラメータ調整のアドバイス

マスクが対応する点群を抽出して処理

../../../_images/point_filter_and_clustering.png
  • 最高層点群を取得 :最高層のクローラシューの点群を取得し、下層の不要な点群の出力を抑えることが必要です。

  • 2D方法による点群エッジを推定 :ワークのパレットパターンの高さが異なる場合は、異なる2D線幅のピクセル(初期値は15px)を設定する必要があります。ワークのパレットパターンの高さが低い場合(700mm以下)、マッチング効果に影響はありませんが、ワークのパレットパターンの高さが高い場合、抽出された点群エッジの幅が大きく変化し、マッチング効果に影響を与える可能性があります。

    下図に示すように、左図のは抽出する点群、右図のは抽出された点群エッジとなります。

../../../_images/estimate_point_cloud_edges_by_2d_method1.png

マルチモデルの3Dマッチング

  • 3D位置姿勢高精度推定(マルチモデル) :リブのある面が上を向いている場合が正面であり、リブのない面が上を向いている場合が裏側である場合、マルチモデルの3Dマッチングにおいて次のことに注意する必要があります。

    • 対応する モデルラベルファイル を設定し、対称回転軸を ROTATE_BY_Z に選択し、対称角度ステップサイズを 180.0° に設定する必要があります。

    • 最高層に遮られないワークを把持する際にずれがないことを優先する必要があります。重なり合いが多い下層のワークについては、点群抜けがあるため、把持のずれが許容されます。

    • エッジ点群モデルは、表裏で別々に設定する必要があります。2D方法で線幅のあるエッジモデルを抽出する目的は、全体モデルマッチングでは長辺方向にずれが生じる可能性があるのに対し、クローラシューの長辺方向の精度を確保することです。

    • 位置姿勢低精度推定の偏差が大きすぎて、位置姿勢高精度推定でさらに最適化できない場合は、偏差を小さくなるように位置姿勢低精度推定のパラメータを優先に調整することが推奨されます。調整する主なパラメータは ボクセル長さサンプリング間隔 となります。例えば、モデル点群を20mm間隔でサンプリングする場合、初期ボクセル長を10mmに設定し、マッチング効果に応じて最終ボクセル長を上下に微調整することが推奨されます。ボクセル長を小さく設定すると、マッチング偏差が生じる可能性が高くなります。

  • 重複対象物を除去 : パラメータ 重複比率のしきい値 は、あまり小さく設定することはできませんので、0.04に設定することを推奨します。しきい値が小さすぎると、重なり合う点群が同時に除去されます。例えば、ワークが全部で2つあるが、2つのワークの点群が交差している場合、両方のワークの位置姿勢が除去されて出力されないという結果になります。

    下図に示すように、右側の白い点群は、積み重ねられた状態と見なされ、除去されたワークとなります。

../../../_images/remove_overlapped_objects.png

位置姿勢の処理とソート

  • 最高層の位置姿勢を取得 :最高層のワークと下層のワーク(2層目、3層目など)に同時に正面ワークがある場合は、より高い層にあるワークのみを保持すれば問題ありません。裏面ワークの場合は同様に処理します。主な理由は、1層目と2層目に同時に正面ワークがある場合、この2つ層の把持位置姿勢を同時にソートすると混乱が生じるからです。

  • 位置姿勢の向きに応じて表裏ワークをソート:このステップの組合せは、より高い層のワークの裏面の位置姿勢を入力することにより、この層のワークで優先的に把持する必要があるワークを出力できます。

    ワークの積み方が固定であり、同じ層のワーク同士が積み重ねられた状態であるため、例えば、同じ層に4つのワークがあり、左右方向がパレットパターンの長辺である場合、左から右に、1番目のワークが2番目のワークに重なり、2番目のワークが3番目のワークに重なり...、左側の1番目のワークを優先的に把持する必要があります。

    しかし、ワークを載せるパレットが180°回転して、左側にあった1番目のワークが右側の1番目ークになったとしたら、右側の1番目のワークが優先的に把持されることになります。 つまり、同じ層の裏面ワークを取得したら、ワークの向きから把持する方向を決めるだけでいいのです。

  • 正面と裏面ワークの位置姿勢をマージした後に最高層の積み重ねられないワークの位置姿勢のみを出力:正面と裏面ワークの位置姿勢をマージして位置姿勢が1つしかない場合はそのまま出力できます。正面と裏面ワークの位置姿勢をマージすると、正面と裏面ワークの位置姿勢がそれぞれ1つあり、裏面ワークが最高層にある場合、重なり合いロジックに従って裏面ワークは正面のワークの位置姿勢よりも高く、リブ1つ分の高さを超える必要があります。それ以外の場合は正面ワークが最上層にあるはずです。

  • 数値演算 :裏面ワークのZ値から、おおよそのリブの高さを引きます。

よくある問題と解決策

低い点群品質によるマッチングエラー

点群品質が低いためにマッチングに異常が発生した場合、マッチング異常の効果は下図のようになります。

../../../_images/before_match.png

この場合、以下のような手順で最適化できます。

  1. カメラのパラメータを調整し、点群品質を向上させます。

  2. 点群抜けに従ってワークの点群モデルを最適化し、マッチングの安定性を向上させます。

最適化が完了後、マッチング効果は下図のようになります。

../../../_images/after_match.png

ディープラーニングの異常によるマッチングエラーや把持位置姿勢のソート異常

ディープラーニングの認識に異常が発生した場合、マッチングエラーや把持位置姿勢のソート異常が発生する可能性があります。この場合はディープラーニングモデルをトレーニングして反復させることができます。