3D位置姿勢高精度推定(マルチモデル)

機能

複数のモデルを使用してシーン内の物体に対して位置姿勢の高精度推定を実行し、対象物のより正確な把持位置姿勢を出力します。

使用シーン

このステップは 3D位置姿勢低精度推定(マルチモデル) に出力された候補位置姿勢に基づいて実行し、さらに精確なマッチングをし、さらに正確な位置姿勢を出力します(把持位置姿勢として使用可能)。

入力と出力

../../../../_images/input_and_output35.png

パラメータの説明

パラメータのデバッグレベル

初期値:基本設定
オプション:基本設定、詳細設定
調整説明:二つのパラメータ調整レベルを設定可能:
  • Basic は基本設定で、一部のパラメータを調整できます。

  • Advanced は詳細設定で、より多くのパラメータを調整できます。

基本設定

ここで、基本設定(Basic)モードで調整可能なパラメータについて説明します。これらのパラメータは 詳細設定 でも調整できます。

モデルと把持位置姿勢の設定

モデルファイル(必須)
初期値:model.ply
調整説明:ply形式のモデル点群。複数のファイルパスを入力できます。ファイル名の間にセミコロンを入力してください。
幾何学的中心ファイル(必須)
調整説明:json形式の幾何学的中心ファイル。複数のファイルパスを入力できます。ファイル名の間にセミコロンを入力してください。
モデルラベルファイル(選択可能)
調整説明:json形式のモデルラベルファイル。複数のファイルパスを入力できます。ファイル名の間にセミコロンを入力してください。
調整の例:各パラメータにファイルを同じ順序で入力してください。 下図に示すように、 モデルラベルファイル に先にポジティブファイルパスを入力したら、 モデルファイル幾何学的中心 にも先にポジティブファイルパス(positive)を入力してください。
../../../../_images/model_labelfile.png

設定後に出力された点群は下図に示すように、物体の正面モデルも裏面モデルもシーンの点群に正確にマッチングできます。

../../../../_images/multiple_template_3dmatching.png

点群の点が位置する平面の方向を計算

点が位置する平面の方向の計算方法
初期値:Origin
調整説明:点群の点が位置する平面の方向を計算する方法は四つあります。実際の状況に応じて選択します。

オプション

調整説明

Origin

入力された点群の元の法線ベクトルを使用します。

StandardMode

CPUを使用して入力された点群の法線ベクトルを再計算します。モデルに法線ベクトルがない場合に使用することをお勧めします。目標点の付近に目標点にもっとも近いk個の点を検索して、PCA(主成分分析)を使用して最小の固有ベクトルを取得してこの点の法線ベクトルとします。

EdgeTangent

入力されたエッジ点群の接線を計算し、点群の接線の方向を法線ベクトルとします。輪郭が鏡像となる異なる物体を判別でき、平面形状の物体のエッジ点群をマッチングする場合に使用することをお勧めします。以下の二つの使用シーンがあります。

正面・裏面を判別します。 3D位置姿勢高精度推定(マルチモデル) ステップを使用できます。モデル点群は物体の正面・裏面モデルです。

正面・裏面を判別しません。 3D位置姿勢高精度推定 ステップだけを使用すればいいです。

EdgeNormal

入力されたエッジ点群の法線ベクトルを計算します。平面形状の物体のエッジ点群をマッチングする場合に使用することをお勧めします。

注釈

EdgeTangent または EdgeNormal を使用するとき、各エッジ点群に複数の物体がないこと、つまり各物体の点群がすでに分割されたことを確認してください。

選択された隣接点の数
初期値:10
調整説明:点が位置する平面の方向を計算するために使用する隣接点の数です。最小値は1です。
対応の設定
初期値: GMM
オプション: GMMnearest-neighbor
調整説明:一部マッチングの方法を選択します。モデル点群とシーンの点群をマッチングすれば、モデル点群は設定された範囲で移動したり回転したりして前のステップで取得したシーンの点群とマッチングします。
調整の例:ほとんどのシーンでは、GMM はより優れている外乱耐性とより速いマッチング速度を実現できるのでこのモードをお勧めします。ごく一部の場合に最近点( nearest-neighbor )モードを使用してもいいです。

GMMモードパラメータ設定

マッチングモード
初期値:標準(Standard)
オプション:高速(HighSpeed)、標準(Standard)、高精度(HighPrecision)
調整説明:三つのマッチングモードがあります。プロジェクトに応じて選択してください。
HighSpeed:速度が最も速いですが、精度は低いです。
Standard:安定的に実行できるモード。
HighPrecision:高精度を実現できますが、速度が遅いです。
反復回数
初期値:30
調整説明:反復とは、条件を満たす結果が出るまである指定を繰り返し実行することです。反復回数とはこの過程に指令を実行する回数です。ここで設定するのは反復回数の上限で、大きく設定すればマッチングの実行回数も多くなり、かかる時間も長くなりますが、マッチングの精度が向上します。
標準偏差
初期値:0.005
調整説明:前のステップ( 3D位置姿勢低精度推定 )で処理された大まかな位置姿勢の偏差が大きい、即ち、シーンの点群とモデルの点群の偏差が大きい場合、 標準偏差 を大きくしてください。そうすると実行の速度も速くなります。
調整の例:大まかな位置姿勢の偏差に応じて設定します。大まかな位置姿勢の偏差よりも大きく設定したら、誤差が極めて大きい結果を出力することがあります。したがって普通は 0.01m 以下に設定してください。
標準偏差減衰の更新ステップサイズ
初期値:3
調整説明:マッチングの過程に、 標準偏差最小標準偏差 になるまで減衰する回数です。標準誤差が大きい場合に、減衰の回数が多いほど、減衰が安定的に実行できるようになります。普通、このパラメータを調整しなくてもいいです。
最小標準偏差
初期値:0.001
調整説明: 標準偏差 の最小値、つまり減衰後に達した最小値です。
反復に重みを使用
初期値:チェックを入れない
調整説明:チェックを入れれば、モデルの重みがアルゴリズムの反復に使用されるので、重みモデルをより正確にマッチングすることができます。

最近点モード(nearest-neighbor)パラメータ設定

反復設定

反復回数
初期値:30
調整説明:反復とは、条件を満たす結果が出るまである指定を繰り返し実行することです。反復回数とはこの過程に指令を実行する回数です。最近点モードでは、計算がアルゴリズムの精度要件を満たす時、反復は中止します。ここで設定するのは反復回数の上限で、大きくすればマッチングの実行回数も多くなり、かかる時間も長くなりますが、マッチングの精度が向上します。
最近点の検索半径
初期値:0.01
調整説明:最近点の検索半径を調整します。単位はmです。大まかな位置姿勢の偏差に応じて設定します。入力された大まかな位置姿勢の偏差が大きい場合に、つまりシーンの点群とモデル点群の偏差が大きい場合に、この値を大きくして最近点の検索範囲を広くします。これは、各点にそれぞれ最近点を検索するためです。大まかな位置姿勢の偏差よが小さい場合、この値を小さくしてください。最小値は ‘’0.001’’ です。 0.01m 以下に設定したら、一部の疎らな点に最近点を検索できなく、出力に結果に影響が出ることがあります。
調整の例:下図のbに示すように、大まかな位置姿勢の偏差が大きくて、このパラメータの最小値が 0.001 である場合に、不完全なマッチングの結果が出ます。下図のaに示すように、このパラメータを 0.01 に設定したら、検索範囲が広くなり、より完全なマッチング結果を出力することになります。
../../../../_images/nearestneighbor_smallradius.png
平均二乗誤差しきい値
初期値:0.001
調整説明:誤差の二乗和の平均値を調整します。反復するたびにこの値が記録され、その後の反復ステップの結果を比較するために使用されます。設定した値より小さい誤差の二乗和の平均値が出たら、期待された結果を取得したことになり、反復を中止します。
ウィンドウサイズ
初期値:10
調整説明:反復の過程に誤差の変動が小さい連続反復の回数で、最小値は3です。この値が小さすぎると一部だけの最適解が出てきて最終的なマッチング精度に影響が出る可能性があります。例えば、ウィンドウには3回連続の反復の結果しかない場合、この3回だけの反復の誤差を比較して誤差変動のトレンドを把握します。こうすれば全体でなく、一部だけの最適解を取得するかもしれません。
対応する点を表示
初期値:チェックを入れない
調整説明:チェックを入れたら、毎回反復実行中に対応する点を表示します。
複雑形状の対象物であるか
初期値:チェックを入れない
調整説明:対象物が複雑形状の物体(シンプルな幾何学的形状ではなく)で、かつ 反復ポイントペアの重みを自動的に計算 を使用すれば、 それにチェックを入れてください。
反復ポイントペアの重みを自動的に計算
初期値:チェックを入れない
調整説明:チェックを入れれば、反復ポイントペアの重みを自動的に計算します。マッチングの結果が良くない対象物にこれを使用することをお勧めします。

ポイントペアの除去設定

異常ポイントペア除去
初期値:チェックを入れない
調整説明:最近点を検索する過程に複数のポイントペアが生じるので、この機能を使用してポイントペアをフィルタリングします。 チェックを入れれば、この機能を使用して下記の ポイントペア除去シグマ複数しきい値ポイントペア角度差のしきい値 パラメータを調整して異常ポイントペアを除去します。チェックを外すと、この二つのパラメータは機能しません。
ポイントペア除去シグマ複数しきい値
初期値:1.0000
調整説明:シグマ複数しきい値とは、ポイントペアの距離の分散の倍数です。ポイントペアの距離によってフィルタリングを行います。距離がこの値を超えたポイントペアは除去されます。
ポイントペア角度差のしきい値
初期値:45°
調整説明:ポイントペアの法線ベクトルの角度差がこの値を超えたら、このポイントペアは除去されます。
反復で重みを使用
初期値:チェックを入れない
調整説明:チェックを入れれば、モデルの重みがアルゴリズムの反復に使用されるので、重みモデルをより正確にマッチングすることができます。
重複ポイントペア除去
初期値:チェックを入れない
調整説明:チェックを入れれば、重複ポイントペアを除去して 重複点群タイプ除去 は有効になります。モデル点群の点数がシーンの単一物体の点数より多い場合に使用することをお勧めします。
重複点群タイプ除去
初期値:MinDis
オプション:MinDis,GlobalMin
調整説明:ポイントペアの重複対応を除去します。二つの方式があります。
MinDis 対応が重複するポイントペアの間の距離を計算し、距離が最も小さいポイントペアを保持して残りのポイントペアを除去します。
GlobalMin 対応が重複するポイントペアの間の距離の平均値を基準として、この平均値との差が最も小さいポイントペアを保持して、残りのポイントペアを除去します。

サンプリング設定

サンプリング間隔
初期値:0.005
調整説明:モデルとシーンの点群ダウンサンプリングのためのサンプリング間隔です。この値を高くすれば、サンプリングによって取得する点群は少なくなり、モデルマッチングの精度も低下します。
調整の例: 下記の2つの画像はそれぞれ 0.01280.01 に設定したときに取得した点群を示します。白いのは入力されたシーンの点群です。二枚の画像を比較してみれば、サンプリング間隔を小さく設定すれば(上の画像)、より正確な結果が出力されることが分かります。
../../../../_images/3d_matching_sampling.png
../../../../_images/multiple_template_3dfinematching.png
検索点数
初期値:20
調整説明: パラメータの調整レベル を「詳細設定」にしたときにこのパラメータを調整できます。互換性のためにこのパラメータを保持し、サンプリングの過程に検索する点数を調整するために使用します。

検証設定

信頼度しきい値
初期値:0.5
調整範囲:[0,+∞)
調整説明:結果を検証して得たスコアがこの値より大きい場合に、この結果を有効とし、保持して出力します。この値を大きくすれば、より正確なマッチング結果を保持することになります。
結果評価の検索半径
初期値:0.01 m
調整範囲:[0,+∞)
調整説明:信頼度を計算するときの検索半径です。物体の点群によって設定します。疎らな点群に対して大きく設定してください。

出力設定

単一点群の出力結果の数
初期値:1
調整説明:大きくしたらより多くのマッチング結果を出力します。
調整の例:下図は初期値で、1つの点群から 1 の結果を出力しています。
../../../../_images/multiple_singleoutput.png

このパラメータを 4 に設定すると、下図のように、より多くのマッチング結果が出力されるようになります。

../../../../_images/multiple_fouroutput.png

結果の可視化設定

マッチング結果を表示
初期値:チェックを入れる
調整説明:チェックを入れれば、出力されたモデルとシーンの点群が表示されます。

詳細設定

ここでは、詳細設定(Advanced)に追加された調整可能なパラメータについて説明します。基本設定(Basic)と重なる内容は、 基本設定 をご参照ください。

対称性設定

認識する部品が局所対称性を持つ場合、局所最適解を回避するために、対称性を設定する必要があります。幾何学的中心点の軸を回転軸として指定することにより、モデルは設定された軸を中心に回転してマッチングし、最適なマッチング結果を取得します。

対称回転軸
初期値:ROTATE_BY_Z
オプション:ROTATE_BY_X、 ROTATE_BY_Y、 ROTATE_BY_Z
調整説明:このパラメータは、幾何学的中心の回転軸を選択するために使用されます。
対称角度ステップサイズ
初期値:360°
調整説明:対称角度を調整します。 最小回転角最大回転角 に変更する角度ステップサイズです。
調整の例:対象物が対称軸を中心に60°回転する前後で同じように見える場合、その対称角度ステップサイズは60°です。
最小回転角
初期値:-180°
調整説明:最小回転角を調整します。
最大回転角
初期値:180°
調整説明:最大回転角を調整します。
調整の例

下図に示すクランクシャフトの場合、その主要部分、つまりボックス内の部分は、Y軸に沿って180°対称です。

../../../../_images/3d_fine_matching_add_example11.png
../../../../_images/3d_fine_matching_add_example21.png

対称性が設定されていない場合、下図に示すように、局所的な形状が類似しているため、マッチング結果が局所最適になり、マッチングエラーが発生する可能性があります。

../../../../_images/3d_fine_matching_add_example31.png

エラー結果を分析すると、モデルはクランクシャフトの中間部分のみにマッチングします。モデルがマッチング中に180°回転した後にマッチングを試行すると、クランクシャフト全体がマッチングします。また、そのマッチングスコアは、回転前のマッチングスコアよりも高くなければなりません。そうすれば、正しい結果を得ることができます。

下図に示すように、対称回転軸をROTATE_BY_Y(幾何学的中心点のY軸)に設定し、対称角度ステップサイズを180°に設定すると、正しいマッチング結果が得られます。

../../../../_images/3d_fine_matching_add_example41.png

検証時のモデルの重み

認識する部品の「主体」が類似して「局所」だけが異なった場合、モデルの「局所」の重みを大きくして「局所」のマッチングの結果を出力します。

モデルの重みファイル
調整説明:このファイル(ply形式)は元の点群モデルファイルにある一部の点群です。この一部の点群は高い重みがあり、 重み値 を使用して設定します。現場では扱う部品に応じて選択します。
重み値
初期値:2.0
調整説明:点群に重み値を設定します。単位はありません。大まかな点群の重み係数がいずれも 1 とすれば、目標点群にこのパラメータを設定したら、目標点群の重み係数は \(1 X このパラメータ\) になり、後続のマッチングステップでそれを強調することになります。
重み設定の検索半径
初期値:0.0030
調整説明:点群の重みを増加する過程に検索半径を設定します。重みの設定は元のモデル点群に対する処理で、モデル点群をマッチングに使用する前にダウンサンプリングするため、重みを設定する点は位置変動、またはロスすることがあります。ロスした点の付近の点に対して重みを設定する過程に検索半径を設定する必要があり、この検索半径はこのパラメータを使用して設定します。

検証設定

結果評価時の点から法線ベクトルへの角度偏差を考慮
初期値:チェックを入れない
調整説明:チェックを入れれば、位置姿勢を検証する過程に対応するポイントペアの法線ベクトルの角度差を考慮しますので、出力の数が少なくなりますが精度が高くなります。
スコアに対応する点がシーンの点群に占める比例をかける
初期値:チェックを入れない
調整説明:チェックを入れれば、マッチングのスコアに「対応する点がシーンの点群に占める比例」をかけます。1つの点群に複数の物体位置姿勢がある場合に適していません。

結果の可視化設定

サンプリングされたモデル点群を表示
初期値:チェックを入れない
調整説明:チェックを入れれば、出力の結果にサンプリングされたモデル点群が表示されます。現場の状況に応じて設定します。
サンプリングされたシーンの点群を表示
初期値:チェックを入れない
調整説明:チェックを入れれば、出力の結果にサンプリングされたシーンの点群が表示されます。現場の状況に応じて設定します。
モデルとシーンの点群の対応関係を表示
初期値:チェックを入れない
調整説明:チェックを入れれば、出力の結果にモデルとシーンの点群の対応関係が表示されます。現場の状況に応じて設定します。