整列して並べられたシャフトやバー

本節では、整列して並べられたシャフトやバーのプロジェクト使用について説明します。

ワーク

整列して並べられたシャフトやバー、金属製の円柱状

稼働距離

1200~3000mm

技術仕様

位置決め精度:±3mm

認識の成功率:99.9%以上

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

プロジェクト概要

このプロジェクトは、整列して並べられたシャフトやバーを対象とし、ほとんどのシャフト/バーの供給シーンに対応しています。

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

適用シーン

以下では、ワークと容器からプロジェクトの適用シーンについて説明します。

ワーク

シャフトやバーの特徴への対応状況は、下表のとおりです。

ワーク特徴

対応状況

サンプル図

ワーク種類

整列して並べ替え、一体的に配置されたシャフトやバーに対応

icon_1

バラ積みされたシャフトやバーには非対応

icon_2

形状寸法

円柱状に対応

icon_3

ワーク材質

金属製に対応し、ワーク表面の錆や少量の油汚れを許容

反射性

ワーク表面のわずかな反射性を許容

icon_4

点群品質

点群抜けが少なく、主要な特徴で点群抜けが10%以下の場合に対応

icon_5

ヒント

このプロジェクトでは、鋼棒のスーパーモデルを使用しています。鋼棒スーパーモデルで認識可能な鋼棒の例については、 付録 をご参照ください。

容器

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

容器特徴

対応状況

サンプル図

容器種類

パレットに対応

icon_6

箱にも対応、じょうご型の箱は推奨

icon_8

側壁に反射性を持つ箱、側壁が変形のある箱、プラスチックシート付き箱、グリッドのある箱などには非対応

icon_7

技術仕様

技術仕様は以下の通りです。

  • 位置決め精度:±3mm

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

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

注釈

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

プロジェクトの内容

レイアウト

セルのレイアウト

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

../../../_images/workstation_layout2.png

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

  1. AGVにより、シャフトやバーを載せるパレットが供給位置に配置されます。

  2. ロボットがビジョンシステムに撮影コマンドを送信し、箱内のシャフトやバーを撮影して認識し、ビジョンシステムがシャフトやバーの位置をロボットに送信します。

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

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

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

推奨型式

説明

カメラ

LSR L

推奨取り付け方式:Eye-to-Hand(固定/スライド式) 稼働距離:1200-3000mm

産業用PC

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

プロセッサー:CPU I7-9700

メモリ:16G

ハードディスク:256G SSD

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

WIFIモジュール

ロボットハンド

通常はV字型の磁気吸着式ハンドが採用されています。

磁気吸着式ハンドを下図に示します。

../../../_images/clamps_12.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_01.png
  1. 画像取得: シャフトやバーのカラー画像、深度画像を取得します。

  2. インスタンスセグメンテーション: ディープラーニングとシャフトやバーのスーパーモデルにより、シャフトやバーを認識します。

  3. 点群前処理とマスクが対応する点群の抽出: シャフトやバーの元の点群に対して前処理を行い、マスクが対応する点群を抽出します。

  4. 点群サイズと点群の数によるフィルタリング: 設定されたルールに従って要件を満たしていないシャフトやバーの点群を除去します。

  5. 3D位置姿勢推定: STLモデルから生成された点群モデルを元の点群とマッチングさせ、より正確な把持点を取得します。

  6. ディープラーニングによりマッチング軸のずれを補正: ディープラーニング機能により、マッチング軸のずれを補正します。

  7. 箱認識: 箱の上辺の中心位置姿勢を計算し、箱のROIと角度に従って不合格の箱の中心位置姿勢を除去します。

  8. 位置姿勢の処理とエラー防止: シャフトやバーの把持位置姿勢を変換・ソートし、設定されたルールに従って不合格の把持位置姿勢を除去します。

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

点群モデルと把持位置姿勢の設定方式

マッチングモデルは、一般的にSTLモデルから生成され、把持点はシャフトの中心に設定されます。

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

  • マッチング時に、軸方向のずれが生じる可能性があります。

  • 表面が滑らかなシャフトやバーの点群品質が悪いです。

  • ハンドの許容範囲が低く設計される場合、把持精度に対して高い要件があります。

  • ディープラーニング機能により、最高層のワークの認識漏れが発生することがあります。

プロジェクトの強さ

  1. 1つのプロジェクトにより、箱の位置決めとワーク認識を実現します。

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

  3. プロジェクトに含まれている多くのエラー防止ステップにより、プロジェクトの安定性を向上させることが可能です。

  4. 認識に関連するステップパラメータは繰り返し検証されており、高い認識安定性を実現します。

プロジェクト実装

注意事項

  • 異なるサイズのワークに対するハンドの互換性を考慮: セルに複数種類のワークがあり、ハンドが1つしかない場合は、複数のワークが一度に把持されたり、ハンドが個々のワークの把持に適していないことを避けるために、同じハンドで異なるサイズのワークを把持するときに互換性を考慮する必要があります。

  • ハンドの許容偏差はできるだけ大きく設計: 点群品質が悪い反射型ワークの場合、正常に把持するためにハンドの許容偏差をできるだけ大きく設計する必要があります。

  • 配置位置のための許容範囲: 配置位置は、長さ方向における大きな許容範囲を推奨します。利用可能な場合は±30mm以上、制限される場合は±10mmを推奨します。

  • ディープラーニングモデル: このプロジェクトでは、ディープラーニングのスーパーモデルを使用していますが、トレーニングに使用されるデータは限られています。ディープラーニングの効果が要件を満たしていない場合、データを取得し、スーパーモデルのトレーニングを反復させる必要があります。

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

インスタンスセグメンテーション

  • 画像の明るさと色バランサー :2D画像が暗すぎる場合は、このステップの 輝度係数 パラメータを調整することで明るさを増すことができます。現場のデバッグでは、2D画像が適度に明るくなるように照明条件とカメラパラメータを調整する必要があります。

  • ディープラーニングモデルパッケージを推論(Mech-DLK 2.2.0+) :ディープラーニングとスーパーモデルにより、シャフトやバーを認識します。ディープラーニングの認識に問題が発生した場合、画像を取得し、モデルのトレーニングを反復させ、ROIを正しく設定する必要があります。

点群前処理とマスクが対応する点群の抽出

../../../_images/extract_3d_points_in_3d_roi1.png
  • 点群前処理 :点群前処理によりノイズを除去し、マスクが対応する点群を抽出します。

../../../_images/point_cloud_preprocessing.png

点群サイズと点群の数によるフィルタリング

  • しきい値によって数値を二項分類 :ワークの長辺(下図1)と短辺(下図2)の最小サイズを設定する必要があります。ワークの長辺または短辺のサイズが最小サイズより小さい場合、対応するワークの点群とマスクを除去する必要があります。

../../../_images/dichotomize_values_by_threshold1.png
  • 点群が要求を満たすかどうかを検証 :点数がルールに合わない点群や対応するマスクを除外するために、パラメータ 最小点数しきい値最大点数しきい値 を設定する必要があります。

3D位置姿勢推定

  • 3D位置姿勢高精度推定 :信頼度のしきい値を0に設定する必要があり、変更することはできません。その後のステップは、マッチングスコアに従ってスコアの低いワーク位置姿勢を除去することが可能です。主な目的は、マッチング過程において出力されたワーク位置姿勢が、インスタンスセグメンテーションによって認識されたマスクと一対一で対応することです。また、マッチング偏差を小さくするために、関連するパラメータを最適化する必要があります。

../../../_images/3d_fine_matching1.png

ディープラーニングによりマッチング軸のずれを補正

../../../_images/convert_2d_points_to_3d_points.png

箱認識

このプロジェクトでは、平面位置姿勢を計算することで箱の位置姿勢を計算します。実際の状況に応じて箱認識の方法を選択できます。このステップの組合せは、箱の上辺の中心位置姿勢を計算するために使用され、サイズとROIの設定、角度のエラー防止にも対応可能です。

../../../_images/dichotomize_values_by_threshold_3.png

位置姿勢の処理とエラー防止

  • 位置姿勢を指定方向に移動 (箱中心位置姿勢から一定距離にある位置姿勢):パラメータ 並進距離 は、基準点のオフセット長さとして設定する必要があります。

  • 位置姿勢を指定方向に移動 (箱の中心位置姿勢、Mech-Vizに箱の位置姿勢を更新するために使用):パラメータ 並進距離 は、箱の上面から箱の中心のオフセット距離として設定する必要があります。

  • 最高層の位置姿勢を取得 :パラメータ 層の高さ を設定する必要があります。

  • 3D位置姿勢をソート :パラメータ ソート方式 を設定する必要があります。

  • 数値リストをクイック作成 :パラメータ 数値リスト をワークの直径に設定する必要があります。

  • 直方体内の点群を抽出 (「積み重ねられたワークの位置姿勢を除去」のステップの組合せ):パラメータ 箱の寸法設定 を調整し、ワーク自身の点群ではなく、ワークの上方にある点群を抽出する必要があります。

../../../_images/extract_3d_points_in_cuboid_2.png

よくある問題と解決策

ディープラーニング認識エラー

ディープラーニングによりシャフトやバーの認識に問題が発生した場合、以下のような方法で解決できます。

  • ディープラーニングモデルを再度トレーニングし、データを再取得する必要があります。

  • ステップの組合せ「ディープラーニングのマスクによりマッチング軸のずれを補正」を削除します。

付録

以下では、鋼棒スーパーモデルで認識可能なワークをさらに詳しく説明します。

水平方向に配置

反射性を持つワーク

ワークの表面にある程度の反射性を持つ場合、鋼棒スーパーモデルで認識可能な鋼棒の例を下表に示します。

反射性を持つワーク

icon_1_1

icon_1_2

icon_1_3

icon_1_4

icon_1_5

icon_1_6

icon_1_7

icon_1_8

icon_1_9

icon_1_10

icon_1_11

icon_1_12

icon_1_13

icon_1_14

icon_1_15

icon_1_16

icon_1_17

icon_1_18

icon_1_19

icon_1_20

反射しないワーク

ワークの表面に反射性を持たない場合、鋼棒スーパーモデルで認識可能な鋼棒の例を下表に示します。

反射性を持たないワーク

icon_2_1

icon_2_2

icon_2_3

icon_2_4

icon_2_5

icon_2_6

icon_2_7

icon_2_8

垂直方向に配置

ワークが垂直方向に配置される場合、鋼棒スーパーモデルで認識可能な鋼棒の例を下表に示します。

垂直方向に配置

icon_3_1

バラ積み状態で供給するワーク

ワークがバラ積み状態で供給する場合、鋼棒スーパーモデルで認識可能な鋼棒の例を下表に示します。

バラ積み状態で供給するワーク

icon_4_1

icon_4_2

icon_4_3

icon_4_4

icon_4_5

icon_4_6

icon_4_7

icon_4_8

icon_4_9