減速機ハウジング¶
本節では、整列して並べられた減速機ハウジングのプロジェクト使用について説明します。
ワーク |
整列して並べられた同種の減速機ハウジング |
稼働距離 |
1000~1500mm |
技術仕様 |
位置決め精度:±1mm |
認識の成功率:99.9%以上 |
|
ビジョンシステムの処理時間:4s以内 |
プロジェクト概要¶
以下では、適用シーンと技術仕様から説明します。
適用シーン¶
以下では、ワーク、容器や照明条件から適用シーンについて説明します。
ワーク¶
減速機ハウジングへの対応状況は、下表のどおりです。
ワーク特徴 |
対応状況 |
サンプル図 |
供給方式 |
整列して並べられた減速機ハウジングに対応 |
|
バラ積み、かつ密集している減速機ハウジングには非対応 |
||
形状寸法 |
特殊形状と直方体の減速機ハウジングに対応 |
|
ワーク材質 |
ねずみ鋳鉄やアルミニウム合金など、粗く加工された金属部品 |
|
反射性 |
ワーク表面にある程度の反射性を許容 |
|
点群品質 |
上表面の特徴点群の激しい抜けには非対応 |
|
積み方 |
単段や複数段に整列して並べられた状態に対応 |
|
ハウジングと同様の形状の穴があるパーテーションにハウジングが埋め込まれている場合には非対応(点群クラスタリングの妨げになる可能性あり) |
容器¶
容器への対応状況は下表のどおりです。
容器特徴 |
対応状況 |
サンプル図 |
容器種類 |
パレットは推奨 |
|
深い箱にも対応可能 |
||
箱側壁 |
金属製側壁や金属製メッシュの側壁に対応 |
|
反射性のある側壁やプラスチックフィルム付きの側壁には非対応 |
||
箱側壁の変形 |
箱の変形を許容(箱の動的検出の場合を除く) |
|
パーテーション |
パーテーション、プラスチックパネル、透明パーテーションに対応、油汚れやへこみのあるパーテーションにも対応可能 |
|
変形のあるパーテーションには非対応 |
||
点群品質 |
適切なパーテーションまたはパーテーション特徴点群が必要 |
プロジェクトの内容¶
レイアウト¶
セルのレイアウト¶
セルのレイアウトを下図に示します。
このセルでは、以下のような流れで作業します。
ハウジングを供給位置に移動させた後、カメラがロボットと一緒に事前設定された撮影位置まで移動し、ハウジングの認識を行います。
ビジョンシステムにより、ロボットはパレットに載せるハウジングを把持し、指定位置に配置します。
上記の流れを繰り返し、撮影して把持します。1つ段のハウジングの把持が完了したら、ロボットはパーテーションを把持して指定位置に配置します。
パレット上のすべてのハウジングとパーテーションの把持が完了するまで、上記の流れを繰り返します。
ビジョンシステムのハードウェア構成要素¶
推奨型番 |
説明 |
|
カメラ |
Pro S Enhanced |
取り付け方式:Eye-in-Hand 稼働距離:1000~1500mm |
LSR L |
取り付け方式:Eye-to-Hand 稼働距離:2000~2500mm |
|
産業用PC |
GPU非搭載の標準機種 (Q6WMV-B-1A1) |
プロセッサー:CPU I5-12400 |
メモリ:16G DDR4 |
||
ハードディスク:256G SSD |
||
電源:DC24V 7.5A |
||
システム:Windows 10 21H1 |
||
WIFIモジュール |
ロボットハンド¶
ハンド説明:
このプロジェクトに一般的に使用されるハンドは、クランプ式ハンドとピン位置決めクランプ式ハンドの2種類があります。通常はピン位置決めクランプ式ハンドが推奨されています。
ハンド設計の注意事項:
ハンドにピンや位置決めピンがある場合、ピンまたは位置決めピンとピン穴の間のクリアランスは適度であるべきです。 また、位置決めピンのみでワークを把持するべきではありません。より安定した把持装置を使用して、同時に把持することが必要です。
位置決めピンは強度を持たせ、ピンの面取りを大きくすることで、位置決めをガイドする役割を果たす必要があります。
ハンドは、把持や配置の際に、隣のワークと衝突しないようにする必要があります。
クランプ式ハンド¶
クランプ式ハンドを下図に示します。
ハンド説明: このハンドはシリンダーによってジョーを制御し、ハウジングの凹と凸の特徴部分を把持します。この種類のハンドは、配置に高い精度が要求されないプロジェクトに適しています。
ハンドのメリット:
一般的に把持精度は±2mm程度が要求され、ある程度の把持ずれを許容し、安定した把持を実現します。
ロボット側のTCP設定が簡単で、ティーチング方法で把持位置姿勢の追加も容易です。
ハンドのデメリット:
このハンドは、ワーク同士間に一定の距離が必要で、そうでない場合は衝突する可能性があります。
このハンドの把持・位置決め精度は、高い配置精度が要求されるプロジェクトに使用するには十分ではありません。
ピン位置決めクランプ式ハンド¶
ピン位置決めクランプ式ハンドを下図に示します。
ハンド説明: このハンドは、位置決めピンをワークの対応するピン穴に挿入して、ワークを把持します。この種類のハンドは、高い配置位置の精度が求められるプロジェクトに適しています。
ハンドのメリット:
より高い把持精度、位置決め精度が求められています。
ハンドのデメリット:
ティーチペンダントでロボットを操作するのは不便です。
ビジョン関連説明¶
通信方式¶
標準インターフェース通信を使用することを推奨します。
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 |
標準インターフェース通信については、 標準インターフェース通信 をご参照ください。
Adapter通信を使用する場合は、別途開発する必要があります。
ロボット -> 産業用PC |
送信コマンド |
Mech-Visionプロジェクト番号 |
ワーク型番 |
|
“P”:撮影リクエスト |
1~9 |
1~99 |
||
サンプル |
P, 1, 2 |
|||
説明 |
撮影コマンド,プロジェクト番号1,ワーク型番2 |
|||
産業用PC -> ロボット |
ステータスコード |
ワーク型番 |
ワークの表裏 |
把持位置姿勢 |
0:認識成功 1:ワークなし 2:認識失敗 |
1~99 |
1:前面 2:裏面 |
X,Y,Z,A,B,C |
|
サンプル |
102, 1100, 1, 1, 0, 95.780, 644.567, 401.101, 91.120, -171.130, 180.0, 0, 0 |
|||
説明 |
撮影成功, ワーク型番1,裏面,把持位置姿勢 1.574 , -0.443 , -1.122 , 43.12 , -24.25 ,179.66 |
プロジェクト説明¶
このプロジェクトは下図のような流れで処理を行います。サーフェスマッチングにより、供給するハウジングの角度の違いに応じて、2種類の角度のモデルを自動的に選択してサーフェスマッチングを行います。
画像取得: ハウジングのカラー画像と深度画像を取得します。
点群前処理: 安定したワーク表面の点群を取得するために使用されます。
0度/180度マッチング: 供給するワークは同じ角度である場合、0度マッチングのみを選択すれば問題ありません。2つの角度がある場合、0度/180度マッチングを選択できます。
位置姿勢の処理とエラー防止: 把持位置姿勢を変換・ソートし、出力される位置姿勢の有効性を確認するために使用されます。
経路計画: ロボットの把持経路を計画します。
結果出力: 現在のプロジェクトの結果をバックエンドサービスに送信します。
点群モデルと把持位置姿勢の設定方式¶
このプロジェクトではサーフェスマッチングを採用しています。把持精度を向上させるために、供給するハウジングの角度に応じて2つの角度のモデルを選択してマッチングを行い、位置姿勢をそれぞれ出力することができます。
ハンドの設計が複雑で、正確にドラッグするのが容易でないため、 ティーチペンダントでロボットを移動させて把持位置姿勢を追加 してください。
ソリューションの強さ¶
「点群前処理」のステップの組合せの使用により、安定したシーンの点群を取得できます。
サーフェスマッチングを採用しており、多種多様な類似のハウジングに対して検証を行い、高い認識安定性を実現します。
同じ方向でも異なる方向でも供給するワークに対応可能なマッチング戦略を提供しており、高い柔軟性を実現します。
完全な点群と位置姿勢のエラー防止ステップが組み込まれています。
プロジェクトにおける難点¶
供給するワークに対する要件が高く、一般的に整列して並べることが要求されます。
反射しないワーク表面と高品質の点群が求められています。
表と裏を交互に積み重ねたハウジングを、適宜認識する必要があります。
プロジェクト実装¶
パラメータ調整のアドバイス¶
点群前処理¶
点群ダウンサンプリング :シーンの点群の点数は、その後の処理を高速化するために、 サンプリング間隔 を設定して適切な範囲(100000以内が推奨)に減らす必要があります。
点のフィルタリング :通常、 NormalsFilter 方法でノイズを除去します。完全な上面点群を得るために、下部構造に接続されているワーク上面のノイズをフィルタリングできますが、ワーク点群が完全になるように注意する必要があります。
ロボット座標系における最高層の点群を取得
0度/180度マッチング¶
「0度/180度」は、文字通り角度を指しているわけではありません。供給するワークがすべて同じ角度であれば0度とみなされ、供給するワークが2つの角度であれば、それぞれ異なる角度のワークを合わせるために2つの点群モデル(0度/180度)を作成する必要があります。
このステップの組合せの マッチングモード のドロップダウンバーから Match0 を選択すれば、0度のモデルでマッチングを行います。 Match0And180 を選択すれば、0度と180度のモデルを同時に使用してマッチングを行います。この2つのモデルには、 ティーチペンダントでロボットを移動させて把持位置姿勢を追加 する必要があります。
3D位置姿勢低精度推定(V2) : マッチングモード を サーフェスマッチング に設定することを推奨します。また、 サンプリングされたモデルの期待点数 を 1000 に設定するか、正確なマッチングを前提として現場の実際状況に合わせて調整することも可能です。
3D位置姿勢高精度推定 : 点が位置する平面の方向の計算方法 を Origin(入力点群の法線ベクトルを直接使用) に設定し、 サンプリング間隔 を 1.000mm に設定し、 信頼度しきい値 を 0.700 以上に設定し、 結果評価の検索半径 を 5.000mm 以下に設定することを推奨します。上記のパラメータを設定した後、点群が完全なワークを正確に、かつ、ズレなくマッチングさせる必要があります。
位置姿勢の処理¶
位置姿勢を一括調整 :ワークがカメラ座標系における位置姿勢を ロボット座標系 に変換するために、位置姿勢編集ツールで 座標系変換タイプ を カメラからロボットへ に設定し、 ソートタイプ を 位置姿勢の並進ベクトルの基準方向への投影距離でソート または 位置姿勢のXYZトによってソート(位置姿勢の指定量はZ) に設定する必要があります。
基準方向との角度によって位置姿勢が有効かどうかを検証 :パラメータ 位置姿勢の指定軸 を X に設定し、基準方向の X値 を -1.0000 または 1.0000 に設定し、 角度の最大差 を 45° に設定する必要があります。これにより、位置姿勢の指定軸と基準方向のX軸との角度に従って0度または180度程度のワークを保持します。
よくある問題と解決策¶
「3D位置姿勢高精度推定」ステップの出力結果なし¶
「点群前処理」のステップの組合せによって出力された点群が正常であるかどうかを確認します。
出力された点群が正常でない場合、 点群クラスタリング と 最高層の点群を取得 の出力結果と元の深度画像が正常であるかどうかを確認します。
出力された点群が正常である場合、ステップ「3D位置姿勢低精度推定(V2)」の可視化出力結果を確認します。 3D位置姿勢低精度推定(V2) の可視化結果が異常な場合、 サンプリングされたモデルの期待点数 と 参考点のサンプリングステップサイズ パラメータが適切に設定されているかどうかを確認します。
3D位置姿勢低精度推定(V2) で正常な出力結果が得られ、 3D位置姿勢高精度推定 で結果が得られない場合、 標準偏差 、 信頼度しきい値 、 結果評価の検索半径 のパラメータが適切に設定されているかどうかを確認します。
ワークの把持ずれ¶
ロボットがワークを把持する際にずれが生じる場合、次のような確認できます。
規則的な偏差なのか、不規則な偏差なのかを確認します。
現在のマッチング結果に偏差がないか、明らかなズレがないか確認します。
ワーク単体の認識精度を確認します。
カメラの外部パラメータの精度を確認します。
上記が正しいことを確認したら、改めてロボットの精度とTCPの精度を確認する必要があります。