ソリューションの実装
本節では、長方形の板金部品ソリューションの実装手順を説明します。まとめて言えば以下の流れに沿って進めます。
ビジョンシステムのハードウェア設置
ビジョンシステムのハードウェア設置は、ハードウェア機器(カメラおよびIPC)を実際の動作環境に統合し、ビジョンシステムの正常な動作をサポートするプロセスです。
この段階では、ビジョンシステムのハードウェアの取り付けと接続を完了させます。詳細については、ビジョンシステムのハードウェア設置 をご参照ください。
ロボット通信設定
ロボット通信設定を行う前に、ソリューションを取得します。クリックしてソリューション取得方法を確認します。
-
Mech-Vision を起動します。
-
Mech-Vision のようこそ画面で ソリューションライブラリから新規作成 をクリックし、ソリューションライブラリを開きます。
-
ソリューションライブラリの代表的な導入事例を選択し、右上の
アイコンをクリックしてさらに多くのリソースをダウンロードします。それから表示されたウィンドウで確認をクリックします。 -
リソースを取得した後、整列して並べられたワークのピッキングの長方形の板金部品を選択して作成ボタンをクリックし、表示されたウィンドウに確認ボタンをクリックします。
ダウンロードした後、Mech-Vision ではこのソリューションは自動的に開かれます。
Mech-Mind ビジョンシステムとロボット側(ロボット、PLC もしくは上位システム)との通信を構築します。
長方形の板金部品ソリューションでは、標準インターフェース通信を使用します。詳細な手順説明は、標準インターフェース通信ご参照ください。
ハンド・アイ・キャリブレーション
ハンド・アイ・キャリブレーションとは、カメラ座標系とロボット座標系との対応関係を求めることを指します。ビジョンシステムにより取得した対象物の位置姿勢をロボット座標系に変換し、それによってロボットが正確に把持作業を完了するように制御します。
ハンド・アイ・キャリブレーションの使用ガイドを参考にして実行してください。
|
ビジョンプロジェクトの設定
通信設定とハンド・アイ・キャリブレーションを完了させたあと、Mech-Vision を使用してビジョンプロジェクトを設定します。
本ソリューションには、コンテナの位置決めと撮影位置の決定、ワークの位置決めの 3つのプロジェクトで構成されます。
-
まずはコンテナの位置決めプロジェクトでは LSR XL カメラで撮影し、部品を入れたコンテナを位置決めます。
-
次は撮影位置の決定プロジェクトで、LSR XL カメラで撮影し、PRO S カメラの撮影位置を決定して出力し、ロボットを撮影位置に移動します。
-
最後はワークの位置決めプロジェクトで、PRO S カメラで撮影し、部品の位置姿勢を認識・出力して把持経路を計画し、ロボットの把持をガイドします。
これからそれぞれ説明します。
コンテナの位置決め
ビジョンプロジェクトの設定手順を下図に示します。
カメラを接続して画像を取得
-
使用するカメラを接続します。
Mech-Eye Viewer で接続するカメラを見つけて接続をクリックします。
-
カメラパラメータを調整します。
高品質で点群が完全な 2D 画像を取得するためにパラメータを調整します。詳細な調整方法は、LSR XL パラメータをお読みください。
-
画像を取得します。
カメラを接続してパラメータグループを設定した後、部品(コンテナ)の写真を撮ります。上部の
ボタンをクリックして一回だけ撮影します。すると部品(コンテナ)の 2D 画像と点群が表示されます。画像がはっきり見られて点群が完全でエッジもはっきりしているか確認します。使える 2D 画像と点群の例は以下にようです。
-
Mech-Vision でカメラを接続します。
カメラから画像を取得ステップをクリックして選択し、ステップパラメータで仮想モードをオフにして、カメラを選択をクリックします。
表示される画面で接続するカメラの右にある
アイコンをクリックします。アイコンが
に変わったらカメラの接続が完了です。それから右のパラメータグループを選択します。これでカメラ実機の接続が完了です。これ以上パラメータを調整する必要はありません。カメラから画像を取得ステップの右の
アイコンをクリックしてこのステップを実行します。エラーメッセージが表示されなければ、カメラが正常に接続されて画像を撮影できることになります。
ワーク認識
本ソリューションではワーク認識ステップを使用してコンテナ箱を認識します。ワーク認識ステップの設定ツールをクリックしてワーク認識設定ウィンドウで設定を進めます。主な設定フローは下図に示します。
点群前処理
点群前処理を行い、各パラメータを調整してデータを前処理し、元の点群をより鮮明にします。これにより、認識精度と効率を向上させることができます。
点群前処理した後、実行ボタンをクリックします。以下のような結果が出てきます。
ワーク認識
点群前処理が完了した後、ワークライブラリでコンテナの点群モデルを作成し、ワーク認識ツールでモデルのマッチングに関連するパラメータを設定します。
-
ワークのモデルを作成します。
点群モデルを作成して把持位置姿勢を追加します。ワークライブラリを開く をクリックしてワークライブラリを開きます。処理された点群をインポートして点群モデルと把持位置姿勢を生成します。ワーク中心点と把持位置姿勢を一致させます。
-
物体認識に関するパラメータを設定します。
-
マッチングモード:マッチングモードを自動的に設定をオフにし、低精度マッチングモードをエッジマッチングに設定し、高精度マッチングモードをサーフェスマッチングに設定します。
-
出力-出力結果の最大数:コンテナを認識するので出力結果の最大数を 1 に設定します。
-
それから、ステップを実行ボタンをクリックします。以下のような結果が出てきます。
位置姿勢を調整
ワークの位置姿勢を取得してからステップの組合せ位置姿勢を一括調整を実行して位置姿勢を調整します。ステップの組合せをダブルクリックするとその内のステップが表示されます。位置姿勢を一括調整(V2)の設定ツールをクリックして位置姿勢調整ツールを開いて設定を行います。
-
ロボット座標系におけるコンテナ位置姿勢を出力するために、位置姿勢をロボット座標系に変換をチェックして変換を行います。
-
-
位置姿勢調整のカスタムを選択します。
-
指定方向に沿って位置姿勢を移動のパラメータを設定します。対象物座標系の Z軸方向に沿ってコンテナ位置姿勢を移動し、移動距離を外部ステップによる入力に設定します。これによってコンテナ位置姿勢をコンテナの上表面から下へと、コンテナ中心に移動し、後続の流れで Mech-Viz で使用し、コンテナの衝突モデル位置を更新します。
-
このステップの組合せの内、対象物の寸法を読み込むステップはコンテナのサイズを読み取り、対象物の寸法を分解から出力されたコンテナの Z 値は位置姿勢を一括調整(V2)の移動距離を計算するために使用します。
-
移動距離値 = -1 × 1/2 コンテナ高さ
-
-
-
位置姿勢ソートを位置姿勢のX/Y/Z値でソートに、位置姿勢の指定値を Z値に、「ソート順序」を降順に設定します。
-
共通設定。
新規ポート数を設定を 0 に設定します。ポートを追加しません。
撮影位置の決定
ビジョンプロジェクトの設定手順を下図に示します。
カメラを接続して画像を取得
-
使用するカメラを接続します。
Mech-Eye Viewer で接続するカメラを見つけて接続をクリックします。
-
カメラパラメータを調整します。
高品質で点群が完全な 2D 画像を取得するためにパラメータを調整します。詳細な調整方法は、LSR XL パラメータをお読みください。
-
画像を取得します。
カメラを接続してパラメータグループを設定した後、対象物の写真を撮ります。上部の
ボタンをクリックして一回だけ撮影します。すると対象物の 2D 画像と点群が表示されます。画像がはっきり見られて点群が完全でエッジもはっきりしているか確認します。使える 2D 画像と点群の例は以下にようです。
-
Mech-Vision でカメラを接続します。
カメラから画像を取得ステップをクリックして選択し、ステップパラメータで仮想モードをオフにして、カメラを選択をクリックします。
表示される画面で接続するカメラの右にある
アイコンをクリックします。アイコンが
に変わったらカメラの接続が完了です。それから右のパラメータグループを選択します。これでカメラ実機の接続が完了です。これ以上パラメータを調整する必要はありません。カメラから画像を取得ステップの右の
アイコンをクリックしてこのステップを実行します。エラーメッセージが表示されなければ、カメラが正常に接続されて画像を撮影できることになります。
前景分割と点群の前処理
背景の点群から認識への干渉を回避し、正確で安定して認識するために、ステップの組合せ前景の分割と点群前処理を実行して部品のマスクを認識して最上段の部品点群とエッジ点群を取得します。
前景の分割
背景の点群から認識への干渉を回避し、安定して認識するために、ステップの組合せ前景の分割を実行して部品のマスクを認識して部品点群を取得します。ステップの組合せ(前景分割と点群の前処理)をダブルクリックしてステップを表示します。
-
ディープラーニングモデルパッケージを推論ステップで前景分割モデルパッケージ(クリックしてダウンロード)をインポートします。
設定ツールボタンをクリックしてディープラーニングモデル管理ウィンドウを開きます。インポートをクリックしてダウンロードした前景分割モデルパッケージをインポートします。
-
画像にラベルを付けます。部品を満載したコンテナの画像を使用します。ステップパラメータのプロンプト設定のプロンプト作成ツールの右にあるエディタを開くボタンをクリックしてプロンプトツールウィンドウを開きます。
ラベル付け画面の右上の画像を取得ボタンをクリックしてから左上の
をクリックし、ポリゴンツールを使用してラベルを付けます。部品のマスクを作成する時にコンテナと背景のマスクに重ねないようにしてください。ラベル付け完了後、右下の保存をクリックして推論画面に切り替えます。右下のステップを実行をクリックします。すると以下のような画面が表示されます。
点群前処理
メイン画面に戻ります。ステップパラメータパネルでパラメータを調整してノイズを除去して最高層の部品点群を取得し、部品 2D 画像からエッジ点群を抽出します。
-
3D ROIを設定します。 3D ROI内の点群を抽出のエディタを開くをクリックして 3D ROIを設定します。設定時に干渉になる点群を除去し、部品とコンテナの点群だけを残すとともに、それらの周辺にある程度の点群も残します。
-
点群クラスタリングのクラスターの最小点数を設定します。実際の状況に応じて調整してください。ほとんどの場合に、ノイズの点数より多く、部品点群の点数より少なくします。これでノイズを除去して部品点群を残します。
-
最高層の点群を取得グループの層の高さを設定し、最高層の点群だけを取得します。
設定完了後、このステップ組合せの右上のシングルステップを実行ボタンをクリックします。すると以下のような画面が表示されます。
3Dマッチング
3Dマッチングステップを実行して部品を位置決めし、かつ把持位置姿勢とラベルを出力します。右のステップパラメータパネルで以下のパラメータを調整します。
-
ワークのモデルを作成します。モデル設定のワークライブラリを開くをクリックしてワークライブラリを開きます。ワークの特徴に応じて処理された点群をインポートして点群モデルと把持位置姿勢を生成します。ワーク中心点と把持位置姿勢を一致させます。
-
パラメータ調整のパラメータ調整レベルを上級に設定します。
-
低精度マッチングの設定のパラメータを調整します。実行モードを標準のままにして、単一点群の出力数を自動的に設定をオフに、単一点群の出力結果の数 を 40 に、サンプリングされたシーンの点群の最大点数を 1000000 のままにします。
-
高精度マッチングの設定のパラメータを調整します。実行モードと偏差補正能力をそれぞれ標準と低レベルのままに、単一点群の出力数を自動的に設定をオフに、単一点群の出力結果数を 20 に設定します。
それから、ステップを実行ボタンをクリックします。以下のような結果が出てきます。
位置姿勢を調整
ワークの位置姿勢を取得した後、位置姿勢を一括調整(V2)ステップを実行して位置姿勢を調整し、ワークの X 方向を揃えてから PRO S カメラの撮影位置を調整します。位置姿勢を一括調整(V2)の設定ツールをクリックして位置姿勢調整ツールを開いて設定を行います。主な設定フローは下図に示します。
-
ロボット座標系におけるワーク位置姿勢を出力するために、位置姿勢をロボット座標系に変換をチェックして変換を行います。
-
-
位置姿勢調整のカスタムモードをオンにします。
-
回転軸と目標方向との角度が最小になるように位置姿勢を回転をチェックして調整します。固定する軸を Z軸に、回転する軸を X軸に指定し、ロボット座標系における X軸の正方形を目標方向として設定します。
-
PRO S カメラの視野は対象物全体をカバーできないので、撮影位置で要求を満たした画像を取得するために指定方向に沿って位置姿勢を移動のパラメータを二回調整します。
-
一回目の指定方向に沿って位置姿勢を移動パラメータ調整では、ワーク位置姿勢をワークの中心から端に移します。移動方向を対象物座標系の X軸に設定し、移動距離を手動入力に指定して 501mm を入力します。
-
二回目の指定方向に沿って位置姿勢を移動パラメータ調整であは、撮影位置をワーク上方に移します。移動方向をロボット座標系の Z軸の正方向に設定し、移動距離を手動入力に指定して 1000mm を入力します。
上記の移動距離入力値は例です。実際の状況に応じて値を入力してください。設定完了後、以下のことを確認してください。
-
コンテナがワークを遮断することはありません。
-
コンテナ反射の干渉を回避するためにコンテナをできるだけ視野に入れないようにしてください。
-
-
-
-
位置姿勢ソートを位置姿勢のX/Y/Z値でソートに、位置姿勢の指定値を Z値に、「ソート順序」を降順に設定します。
-
共通設定。
「共通設定」パネルに進み、新規ポート数を設定を 1 に設定します。このステップに入力ポートと出力ポートは 1つずつ追加されます。3Dマッチングの把持位置姿勢の情報出力ポートを出力ステップに接続します。
ワークを認識・把持
ビジョンプロジェクトの設定手順を下図に示します。
カメラを接続して画像を取得
-
使用するカメラを接続します。
Mech-Eye Viewer で接続するカメラを見つけて接続をクリックします。
-
カメラパラメータを調整します。
高品質で点群が完全な 2D 画像を取得するためにパラメータを調整します。詳細な調整方法は、PRO S パラメータをお読みください。
-
画像を取得します。
カメラを接続してパラメータグループを設定した後、対象物の写真を撮ります。上部の
ボタンをクリックして一回だけ撮影します。すると対象物の 2D 画像と点群が表示されます。画像がはっきり見られて点群が完全でエッジもはっきりしているか確認します。使える 2D 画像と点群の例は以下にようです。
-
Mech-Vision でカメラを接続します。
カメラから画像を取得ステップをクリックして選択し、ステップパラメータで仮想モードをオフにして、カメラを選択をクリックします。表示される画面で接続するカメラの右にある
アイコンをクリックします。アイコンが
に変わったらカメラの接続が完了です。それから右のパラメータグループを選択します。これでカメラ実機の接続が完了です。これ以上パラメータを調整する必要はありません。カメラから画像を取得ステップの右の
アイコンをクリックしてこのステップを実行します。エラーメッセージが表示されなければ、カメラが正常に接続されて画像を撮影できることになります。
点群前処理
干渉になる点群を除去して最高層の点群を取得し、ワークのエッジ点群・サーフェス点群を取得するために、ステップの組合せ点群前処理を実行します。右のステップパラメータパネルで以下のパラメータを調整します。
-
3D ROIを設定します。 3D ROI内の点群を抽出のエディタを開くをクリックして 3D ROIを設定します。設定時に干渉になる点群を除去し、部品の点群だけを残すとともに、それらの周辺にある程度の点群も残します。
-
最高層の点群を取得グループの層の高さを設定し、最高層の点群だけを取得します。
設定完了後、ステップ組合せの右上のシングルステップ実行ボタンをクリックします。すると以下のようにワークのエッジ点群(左図)と最高層ワーク点群(右)を取得します。
3Dマッチング
ワークの端の点群に合わせて 3Dマッチングステップを実行します。エッジマッチング方法でワークを位置決めして把持位置姿勢の情報を出力します。右のステップパラメータパネルで以下のパラメータを調整します。
-
ワークのモデルを作成します。モデル設定のワークライブラリを開くをクリックしてワークライブラリを開きます。ワークの特徴に応じて処理された点群をインポートして点群モデルと把持位置姿勢を生成します。ワークの中心点を中心に、把持位置姿勢を端に設定します。
前の 2つのステップと異なり、ここでは把持位置姿勢をワークの中心ではなくて端に設定します。 -
パラメータ調整のパラメータ調整レベルを上級に設定します。
-
低精度マッチングの設定のパラメータを調整します。実行モードを標準のままにして、単一点群の出力数を自動的に設定をオンに、サンプリングされたシーンの点群の最大点数を 1000000 のままにします。
-
高精度マッチングの設定のパラメータを調整します。実行モードと偏差補正能力をそれぞれ標準と低レベルのままに、単一点群の出力数を自動的に設定をオンにします。
-
追加の高精度マッチング のパラメータを調整します。有効化ボタンをオンにして実行モードと偏差補正能力をそれぞれ標準と低レベルのままにします。
それから、ステップを実行ボタンをクリックします。以下のような結果が出てきます。
位置姿勢を調整
ワーク位置姿勢を取得した後、位置姿勢を一括調整(V2)ステップを実行してそれを調整します。ワークの位置姿勢を端から中心に移して順付けとフィルタリングを行います。位置姿勢を一括調整(V2)の設定ツールをクリックして位置姿勢調整ツールを開いて設定を行います。
-
ロボット座標系におけるワーク位置姿勢を出力するために、位置姿勢をロボット座標系に変換をチェックして変換を行います。
-
方向調整の自動合わせを選択し、適用シーンを Z軸方向合わせ(部品供給)に設定して、ロボットが指定方向に沿ってワークを把持するようにします。衝突を回避できます。
-
対象物座標系の X軸方向に沿ってコンテナ位置姿勢を移動し、手動で移動距離を -659mm に調整してワーク位置姿勢を端から中心へ移します。
移動距離値 = -1 × 1/2 ワークの長さ -
位置姿勢ソートを位置姿勢のX/Y/Z値でソートに、位置姿勢の指定値を Z値に、「ソート順序」を降順に設定します。
-
後続の経路計画にかかる時間を短縮するために、ロボット座標系における位置姿勢の Z 軸と基準方向との角度によって把持できないワーク位置姿勢を除去します。最大角度差を 30°に設定します。
-
共通設定。
「共通設定」パネルに進み、新規ポート数を設定を 1 に設定します。このステップに入力ポートと出力ポートは 1つずつ追加されます。3Dマッチングの把持位置姿勢の情報出力ポートを出力ステップに接続します。
経路計画
ワーク認識を完了された後、Mech-Viz で経路計画とロボットのプログラムを作成して把持を実行します。
以下のように経路計画を設定します。
シーンの物体の設定
シーンの物体を設定する目的は、実際の作業現場を再現することで、ロボットの移動経路を計画できるようにすることです。詳細な説明は、シーンの物体の設定をお読みください。
できる限り実際の現場を再現するように設定します。ここでは以下のように設定します。
ロボットハンドモデルの設定
ロボットハンドを仮想空間に表示して衝突検出に使用するためにロボットハンドモデルを設定します。詳細な説明は、ロボットハンドの設定をお読みください。
|
ワークフローを構築
ワークフローとは、Mech-Viz でフローチャートの形式で作成されたロボット動作制御プログラムです。シーンの物体とロボットハンドを設定した後、ワークフローを調整します。プロジェクトのワークフローは下図に示します。
Mech-Viz プロジェクトには以下の 3つの分岐があります。
-
1つ目は Mech-Vision のコンテナの位置決めプロジェクトを実行します。ビジョン処理による認識ステップを実行してプロジェクトをトリガーし、コンテナ位置姿勢を認識してシーンの物体情報を更新します。
-
2つ目は Mech-Vision の撮影位置の決定プロジェクトを実行します。ビジョン処理による認識ステップを実行してプロジェクトをトリガーし、カメラの撮影位置を計算して出力します。これによりロボットをこの位置にガイドします。
-
3つ目は Mech-Vision のワークの位置決めプロジェクトを実行します。ビジョン処理による認識ステップを実行してプロジェクトをトリガーし、ワークの位置姿勢を Mech-Viz に出力して経路計画とロボットの把持ガイドを行います。
シミュレーションと試行
ツールバーのシミュレートをクリックすると、Mech-Viz プロジェクトをシミュレートし、ビジョンシステムを確認することができます。
ワークを整列して配置して Mech-Viz ツールバーのシミュレートボタンをクリックして把持をシミュレートします。把持するたびにワークを再配置が必要です。シミュレーションを繰り返し、10回の把持をテストします。10 回のテストですべての把持が成功した場合、ビジョンシステムの構築に問題がないと判断できます。
シミュレーションに異常が発生した場合、よくある課題を参考にして解決してください。
ロボットの把持と配置
ロボットプログラムを作成
シミュレーションの効果に問題がなければ、FANUC ロボット把持・配置プログラムを作成することになります。
FANUC の標準インターフェースサンプルプログラム MM_S2_Viz_Basic は、このソリューションに適用できます。このサンプルプログラムを基にして変更を加えることができます。より詳細な説明は、S2 サンプルプログラム説明をお読みください。
変更時の注意事項
サンプルプログラムを基にして以下の通り変更を行います。
-
TCP 座標系とベース座標系を設定します。
変更前 変更後(例) ;set current tool no. to 1 BAS(#TOOL,1) ;set current base no. to 0 BAS(#BASE,0)
;set current tool no. to 2 BAS(#TOOL,2) ;set current base no. to 0 BAS(#BASE,0)
数字を実際に使用するロボットハンドの番号に変更します。ここでは「2」と「0」は例です。 -
IPCのIPアドレスを指定します。KUKAロボットに標準インターフェースプログラムを読み込む際に、XML_Kuka_MMIND.xmlの設定ファイルも同時に読み込まれます。読み込む前に、設定ファイル内のIPアドレスとポートをIPCのIPアドレスとポートに変更することもできます。まだ変更していない場合は、MM_Init_Socketコマンドに対応するXML_Kuka_MMIND.xmlファイルを開き、その中のIPアドレスとポートをIPCのIPアドレスとポートに更新してください。
-
ブランチのコマンドを追加して実行するブランチを選択し、Mech-Viz プロジェクトをトリガーします。
変更前 変更後(例) ;trigger {product-viz} project MM_Start_Viz(2,init_jps)!trigger {product-viz} project ; MM_Start_Viz(2,init_jps) ;Set_Branch MM_Set_Branch(1,1)-
ここで追加するコマンドが参照できます。ブランチ2とブランチ3を選択して Mech-Viz プロジェクトを実行します。
-
Mech-Viz プロジェクトの3つのブランチは以下のように稼働します。
-
ロボットプログラムはブランチ1を選択して Mech-Viz プロジェクトをトリガーし、コンテナの位置決めを実行することでコンテナの位置姿勢を出力します。
-
コンテナ位置姿勢を出力する場合にロボットプログラムはブランチ2を選択して Mech-Viz プロジェクトをトリガーし、撮影位置の決定を実行することで撮影位置を出力します。
-
撮影位置を出力する場合にロボットプログラムはロボットをその位置にガイドします。それからロボットプログラムはブランチ3を選択して Mech-Viz プロジェクトをトリガーし、ワークの位置決めを実行することで計画済み把持経路(衝突回避)をロボットに出力します。
-
-
-
ワークを把持するためにグリッパを閉じる DO ポート信号を設定します。DOコマンドは、現場で実際に使用されているDOポート番号に従って設定する必要があります。
変更前 変更後(例) ;add object grasping logic here, such as "$OUT[1]=TRUE" halt
;add object grasping logic here, such as "$OUT[2]=TRUE" $OUT[2]=TRUE halt
-
ワークを配置するためにグリッパを開く DO ポート信号を設定します。DOコマンドは、現場で実際に使用されているDOポート番号に従って設定する必要があります。
変更前 変更後(例) ;add object releasing logic here, such as "$OUT[1]=FALSE" halt
;add object grasping logic here, such as "$OUT[2]=FALSE" $OUT[2]=FALSE halt
把持テスト
実際の生産の安定性を確保ために、変更されたサンプルプログラムを実行してロボットによる把持を試行します。詳細な説明については、標準インターフェース通信をテストをお読みください。
テストの前に、初期位置をティーチングします。つまり最初にティーチングする位置を教示します。初期位置は、把持するワークや周辺機器から離れ、カメラの視野を遮らないようにする必要があります。
ティーチング完了後、以下の表に示すようにワークを配置してからロボットを低い速度で動かして把持します。
3つの段階に分けて把持します。