情報詳細Q:サーフェスマッチングで上手くマッチングしません。考えられる原因は何でしょうか。A:サーフェスマッチングでうまくマッチングしない場合、下記を確認してください。①モデルの確認■外れ値の確認 create_surface_model でサンプリングされた点群は、 get_surface_model_param により、値 'sampled_model' を使って取得できます。 オブジェクトモデルの輪郭をなす点群に極端な外れ値が含まれている場合はRelSamplingDistanceなどを調整して取り除くようにします。 ただし、RelSamplingDistance を減らすと、サンプリングされる点の数が増え安定性が向上しますが、処理速度が遅くなります。 逆にRelSamplingDistance を増やすと、点の数が減り安定性が低下しますが、処理速度が速くなります。■スケールの確認 read_object_modelやセンサーから取得した点群データがミリメートルなのかメートルなのか、単位を確認してください。 シーンのデータとモデルの間でスケールが異なっているとマッチングに失敗してしまいます。■法線の向きの確認 サーフェスマッチングは点群の法線を使用するため、シーンとモデルで法線の向きを合わせる必要があります。 CADデータを使用する際には特に注意が必要で、read_object_modelで読み込む際に'invert_normals'というパラメータを有効化することで、 法線の方向を逆向きにして読み込むことができます。■法線の長さの確認 サーフェスマッチングに使用する3Dオブジェクトにあらかじめ法線が設定されている場合、法線の長さが1である必要があります。②マッチング結果の確認■どの段階までマッチングしているのか確認する find_surface_modelのマッチングは3段階で行われています。 a.概略マッチング:シーン内のオブジェクトモデルインスタンスの大まかな姿勢が 検索されます。 b.概略姿勢修正:手順2では、前の手順で検出した大まかな姿勢をさらに修正します。 c.精密姿勢修正: 前の手順で検出された姿勢を正確に修正します。 a→b→cの順に詳細なマッチングになりますので、どの段階でマッチングしていないのかを確認し、パラメータを調整します。 b(概略姿勢修正)は、デフォルトで有効です。無効にするには、 一般パラメーター 'sparse_pose_refinement' を 'false' に設定します。c(精密姿勢修正)はデフォルトで有効です。無効にするには、一般パラメーター 'dense_pose_refinement' を'false' に設定します。 ※ a、b、cで返ってくるScoreの値も異なりますので、小さなスコアで確認するとわかりやすいかと思います。 (モデルが大きかったりたくさん検出されたりすると時間かかるので注意が必要です)添付ファイルタイトルサーフェスマッチングでうまくマッチングしないURL 名000004748公開状況公開済み検証状況公開済み