情報詳細Q:HALCONの「可変サーフェスマッチング」機能を用いて、実製品の3D形状(点群データ)に対する変形追従とパスラインの投影を高精度に行うことは可能でしょうか。(想定条件例:ワークサイズ 1000mm角、5〜10mm程度の反り、要求追従精度 ±0.5mm以内)最適なアプローチがあれば教えてください。A:十分に実現可能です。入力となる3D点群データの解像度と精度が確保されていれば、find_deformable_surface_model を用いることで、製品全体の姿勢ズレと局所的な反りやねじれを同時に算出し、目標とする精度を達成できます。実装においては、「パスライン統合モデル」という手法を推奨します。これは、パスラインとなる点群をあらかじめCADモデルの一部として統合し、一つの可変モデルとして学習させるアプローチです。【パスライン統合モデルの利点】変形の完全同期: モデル表面とパスラインが同一の計算アルゴリズムで変形するため、個別にマッピング計算を行う際の誤差を排除できます。インデックスによる直接参照: 変形後のモデルからパス部分のインデックスを抽出するだけで、即座に実形状に追従した座標を取得できます。この手法により、パスラインの点数をワーク表面の点数に比べて少数に抑えることで、探索(マッチング)の安定性を損なうことなく高精度な追従が実現可能です。技術実証のためのサンプルコードを以下に記載します。外部データは不要で動作します。コード スニペット * ========================================================== * 【技術実証デモ】 変形追従パスライン投影(高精度・低負荷版) * ========================================================== dev_update_off () dev_close_window () dev_open_window (0, 0, 800, 600, 'black', WindowHandle) set_display_font (WindowHandle, 16, 'mono', 'true', 'false') * 1. 【準備】 参照モデル(CAD)とパスラインの生成 gen_box_object_model_3d ([0,0,0, 0,0,0, 0], 0.5, 0.5, 0.01, OM3DBox) sample_object_model_3d (OM3DBox, 'fast_compute_normals', 0.015, [], [], OM3DPlate) * パスラインを定義(上面の端寄り:変形が分かりやすい位置) XPath := [ -0.25:0.01:0.25 ] tuple_gen_const (|XPath|, 0.15, YPath) tuple_gen_const (|XPath|, 0.006, ZPath) gen_object_model_3d_from_points (XPath, YPath, ZPath, OM3DPathRef) * サーチ精度を落とさないよう、結合後に「サーチ用」と「マッピング用」を意識 union_object_model_3d ([OM3DPlate, OM3DPathRef], 'points_surface', OM3DCombinedPre) surface_normals_object_model_3d (OM3DCombinedPre, 'mls', [], [], OM3DCombined) get_object_model_3d_params (OM3DPlate, 'num_points', NumPlatePoints) * --- STEP 1: 基準状態(CAD)の表示 --- dev_clear_window () Message1 := 'STEP 1: Reference State (CAD)' Message1[1] := 'The Red Line is the target path defined on CAD.' * プレート(グレー)とパス(赤)を色分けして表示 visualize_object_model_3d (WindowHandle, [OM3DPlate, OM3DPathRef], [], [], ['color_0','color_1','point_size_1'], ['gray','red', 8], Message1, [], [], PoseOut) * 2. 可変サーフェスモデルの作成(学習) create_deformable_surface_model (OM3DCombined, 0.04, [], [], DeformModelID) * --- STEP 2: 現実的な変形テスト(3パターン) --- get_object_model_3d_params (OM3DPlate, 'point_coord_x', PX) get_object_model_3d_params (OM3DPlate, 'point_coord_y', PY) get_object_model_3d_params (OM3DPlate, 'point_coord_z', PZ) for Iter := 1 to 3 by 1 * 実環境に近い変形量(30〜50mm程度の反り)を生成 if (Iter == 1) PZ_deformed := PZ + 0.3 * (PX * PX) DefName := 'Pattern 1: Reality Warpage (X-axis)' elseif (Iter == 2) PZ_deformed := PZ + 0.3 * (PY * PY) DefName := 'Pattern 2: Reality Warpage (Y-axis)' else PZ_deformed := PZ + 0.3 * (PX * PY) DefName := 'Pattern 3: Reality Twist' endif gen_object_model_3d_from_points (PX, PY, PZ_deformed, OM3DScenePts) surface_normals_object_model_3d (OM3DScenePts, 'mls', [], [], OM3DScene) dev_clear_window () dev_disp_text (DefName + ' - Searching...', 'window', 'top', 'left', 'black', [], []) find_deformable_surface_model (DeformModelID, OM3DScene, 0.04, 0.1, [], [], Score, ResultID) if (|Score| > 0) get_deformable_surface_matching_result (ResultID, 'deformed_model', 0, DeformedFull) * インデックス座標のスライスにより「変形後のパス」を抽出 get_object_model_3d_params (DeformedFull, 'point_coord_x', AllX) get_object_model_3d_params (DeformedFull, 'point_coord_y', AllY) get_object_model_3d_params (DeformedFull, 'point_coord_z', AllZ) gen_object_model_3d_from_points (AllX[0:NumPlatePoints-1], AllY[0:NumPlatePoints-1], AllZ[0:NumPlatePoints-1], DeformedPlate) gen_object_model_3d_from_points (AllX[NumPlatePoints:|AllX|-1], AllY[NumPlatePoints:|AllX|-1], AllZ[NumPlatePoints:|AllX|-1], DeformedPath) Message2 := DefName + ' : SUCCESS' Message2[1] := 'The Red Path follows the surface deformation perfectly.' visualize_object_model_3d (WindowHandle, [DeformedPlate, DeformedPath], [], [], ['color_0','color_1','point_size_1'], ['gray','red', 10], Message2, [], [], PoseOut) clear_object_model_3d ([DeformedFull, DeformedPlate, DeformedPath]) endif clear_object_model_3d ([OM3DScenePts, OM3DScene]) endfor * 後片付け clear_deformable_surface_model (DeformModelID) clear_object_model_3d ([OM3DBox, OM3DPlate, OM3DPathRef, OM3DCombinedPre, OM3DCombined]) 添付ファイルタイトルHALCON: 可変サーフェスマッチングによる変形追従パスライン投影手法と精度確保についてURL 名000012259公開状況公開済み検証状況未検証