feat: initial commit - massive-cloud point cloud processing system

This commit is contained in:
2026-05-27 09:51:42 +00:00
commit 16811100d1
391 changed files with 78338 additions and 0 deletions

View File

@@ -0,0 +1,13 @@
# Parameter sweep over point cloud density.
matrix:
sampling.spacing_mm:
- 0.25
- 0.5
- 1.0
- 2.0
- 5.0
fixed:
sampling.method: poisson_disk
noise.sigma_mm: 0.5
transform.rotation_deg: 3.0
transform.translation_mm: 5.0

View File

@@ -0,0 +1,34 @@
# Full cartesian product. WARNING: 4 * 5 * 8 * 4 * 4 = 2560 runs.
# Use only when you have time and disk.
matrix:
sampling.method:
- uniform_area
- poisson_disk
- adaptive
- grid_spacing
sampling.spacing_mm:
- 0.25
- 0.5
- 1.0
- 2.0
- 5.0
noise.sigma_mm:
- 0.0
- 0.25
- 0.5
- 1.0
- 2.0
- 4.0
- 10.0
- 20.0
transform.rotation_deg:
- 1.0
- 3.0
- 5.0
- 10.0
transform.translation_mm:
- 0.5
- 1.0
- 5.0
- 10.0
fixed: {}

View File

@@ -0,0 +1,47 @@
# Sweep matrix for the lu1-AF4 coupler panel STP. Total 9 runs.
stp_path: D:/myDocuments/PKU/high_speed_train_proj/lu1-M000004835653_AF4_ASMP072708187_N_AF4.stp
matrix:
noise.sigma_mm: [0.0, 0.5, 2.0]
transform.rotation_deg: [1.0, 3.0, 10.0]
fixed:
sampling.method: poisson_disk
sampling.spacing_mm: null
sampling.num_points: 500000
sampling.seed: 42
scan_simulator.enabled: true
scan_simulator.view_origin: [10000.0, 0.0, 0.0]
scan_simulator.hpr_radius_mm: 200000.0
noise.seed: 43
transform.translation_mm: 5.0
transform.seed: 44
cad.locating_hole_radius_mm: [14.0, 18.0]
cad.central_hole_radius_min_mm: 80.0
detection.grid_pixel_mm: 2.0
detection.fill_bg_below_mm2: 100.0
detection.hole_min_area_mm2: 600.0
detection.hole_max_area_mm2: 5000.0
detection.locating_hole_radius_mm: [14.0, 22.0]
detection.panel_min_area_ratio: 0.15
detection.rectangle_aspect_tol: 0.40
detection.circle_fit.method: algebraic_then_lsq
detection.circle_fit.inlier_residual_mm: 1.5
roi.hole_dilate_mm: 5.0
roi.central_hole_dilate_mm: 10.0
roi.edge_buffer_mm: 8.0
roi.chamfer_normal_dot_min: 0.80
roi.outlier_z_score: 3.0
plane_fit.ransac_iterations: 300
plane_fit.ransac_inlier_thresh_mm: auto
plane_fit.min_inlier_ratio: 0.5
plane_fit.enforce_nx_positive: true
metrics.right_axis_sign: 1
denoise.steps:
- type: passthrough
bbox_padding_mm: 50.0
- type: voxel
voxel_mm: 1.0
- type: statistical
nb_neighbors: 20
std_ratio: 2.5

View File

@@ -0,0 +1,74 @@
# Deflection-recovery sweep: vary the INJECTED panel-deflection angle and
# verify the algorithm reads it back. Single-axis at a time so the
# response of theta_right and theta_ref can be analysed independently.
stp_path: D:/myDocuments/PKU/high_speed_train_proj/lu1-M000004835653_AF4_ASMP072708187_N_AF4.stp
matrix:
panel_deflection.theta_right_deg: [0.0, 0.1, 0.3, 0.5, 1.0, 2.0]
fixed:
panel_deflection.enabled: true
panel_deflection.theta_ref_deg: 0.0
sampling.method: poisson_disk
sampling.spacing_mm: null
sampling.num_points: 500000
sampling.seed: 42
scan_simulator.enabled: true
scan_simulator.view_origin: [10000.0, 0.0, 0.0]
scan_simulator.hpr_radius_mm: 200000.0
noise.enabled: true
noise.sigma_mm: 0.05
noise.mode: isotropic
noise.seed: 43
transform.enabled: true
transform.rotation_deg: 0.5
transform.translation_mm: 2.0
transform.rotation_axis: random
transform.translation_dir: random
transform.seed: 44
cad.locating_hole_radius_mm: [14.0, 18.0]
cad.central_hole_radius_min_mm: 80.0
cad.linear_deflection_mm: 0.5
cad.angular_deflection_rad: 0.1
detection.panel_normal_seed: pca
detection.grid_pixel_mm: 2.0
detection.fill_bg_below_mm2: 100.0
detection.hole_min_area_mm2: 600.0
detection.hole_max_area_mm2: 5000.0
detection.locating_hole_radius_mm: [14.0, 22.0]
detection.panel_min_area_ratio: 0.15
detection.rectangle_aspect_tol: 0.40
detection.circle_fit.method: algebraic_then_lsq
detection.circle_fit.inlier_residual_mm: 1.5
roi.hole_dilate_mm: 5.0
roi.central_hole_dilate_mm: 10.0
roi.edge_buffer_mm: 8.0
roi.chamfer_normal_dot_min: 0.80
roi.outlier_z_score: 3.0
plane_fit.ransac_iterations: 300
plane_fit.ransac_inlier_thresh_mm: auto
plane_fit.min_inlier_ratio: 0.5
plane_fit.enforce_nx_positive: true
metrics.right_axis_sign: 1
metrics.angle_clamp_deg: 0.0
registration.method: kabsch_four_holes
registration.refuse_if_residual_above_mm: 5.0
denoise.steps:
- type: passthrough
bbox_padding_mm: 50.0
- type: voxel
voxel_mm: 0.5
- type: statistical
nb_neighbors: 20
std_ratio: 2.5

View File

@@ -0,0 +1,73 @@
# Point-cloud density sweep: fix deflection + noise, vary num_points to
# show how many points the algorithm needs.
stp_path: D:/myDocuments/PKU/high_speed_train_proj/lu1-M000004835653_AF4_ASMP072708187_N_AF4.stp
matrix:
sampling.num_points: [200000, 350000, 500000, 750000, 1000000]
fixed:
panel_deflection.enabled: true
panel_deflection.theta_right_deg: 0.5
panel_deflection.theta_ref_deg: 0.3
sampling.method: poisson_disk
sampling.spacing_mm: null
sampling.seed: 42
scan_simulator.enabled: true
scan_simulator.view_origin: [10000.0, 0.0, 0.0]
scan_simulator.hpr_radius_mm: 200000.0
noise.enabled: true
noise.sigma_mm: 0.05
noise.mode: isotropic
noise.seed: 43
transform.enabled: true
transform.rotation_deg: 0.5
transform.translation_mm: 2.0
transform.rotation_axis: random
transform.translation_dir: random
transform.seed: 44
cad.locating_hole_radius_mm: [14.0, 18.0]
cad.central_hole_radius_min_mm: 80.0
cad.linear_deflection_mm: 0.5
cad.angular_deflection_rad: 0.1
detection.panel_normal_seed: pca
detection.grid_pixel_mm: 2.0
detection.fill_bg_below_mm2: 100.0
detection.hole_min_area_mm2: 600.0
detection.hole_max_area_mm2: 5000.0
detection.locating_hole_radius_mm: [14.0, 28.0] # wider window for low-density tests
detection.panel_min_area_ratio: 0.15
detection.rectangle_aspect_tol: 0.40
detection.circle_fit.method: algebraic_then_lsq
detection.circle_fit.inlier_residual_mm: 1.5
roi.hole_dilate_mm: 5.0
roi.central_hole_dilate_mm: 10.0
roi.edge_buffer_mm: 8.0
roi.chamfer_normal_dot_min: 0.80
roi.outlier_z_score: 3.0
plane_fit.ransac_iterations: 300
plane_fit.ransac_inlier_thresh_mm: auto
plane_fit.min_inlier_ratio: 0.5
plane_fit.enforce_nx_positive: true
metrics.right_axis_sign: 1
metrics.angle_clamp_deg: 0.0
registration.method: kabsch_four_holes
registration.refuse_if_residual_above_mm: 5.0
denoise.steps:
- type: passthrough
bbox_padding_mm: 50.0
- type: voxel
voxel_mm: 0.5
- type: statistical
nb_neighbors: 20
std_ratio: 2.5

View File

@@ -0,0 +1,73 @@
# Noise sweep: fix the panel deflection at (theta_right=0.5°, theta_ref=0.3°)
# and vary Gaussian noise sigma to characterise robustness.
stp_path: D:/myDocuments/PKU/high_speed_train_proj/lu1-M000004835653_AF4_ASMP072708187_N_AF4.stp
matrix:
noise.sigma_mm: [0.0, 0.025, 0.05, 0.1, 0.2, 0.5]
fixed:
panel_deflection.enabled: true
panel_deflection.theta_right_deg: 0.5
panel_deflection.theta_ref_deg: 0.3
sampling.method: poisson_disk
sampling.spacing_mm: null
sampling.num_points: 500000
sampling.seed: 42
scan_simulator.enabled: true
scan_simulator.view_origin: [10000.0, 0.0, 0.0]
scan_simulator.hpr_radius_mm: 200000.0
noise.enabled: true
noise.mode: isotropic
noise.seed: 43
transform.enabled: true
transform.rotation_deg: 0.5
transform.translation_mm: 2.0
transform.rotation_axis: random
transform.translation_dir: random
transform.seed: 44
cad.locating_hole_radius_mm: [14.0, 18.0]
cad.central_hole_radius_min_mm: 80.0
cad.linear_deflection_mm: 0.5
cad.angular_deflection_rad: 0.1
detection.panel_normal_seed: pca
detection.grid_pixel_mm: 2.0
detection.fill_bg_below_mm2: 100.0
detection.hole_min_area_mm2: 600.0
detection.hole_max_area_mm2: 5000.0
detection.locating_hole_radius_mm: [14.0, 22.0]
detection.panel_min_area_ratio: 0.15
detection.rectangle_aspect_tol: 0.40
detection.circle_fit.method: algebraic_then_lsq
detection.circle_fit.inlier_residual_mm: 1.5
roi.hole_dilate_mm: 5.0
roi.central_hole_dilate_mm: 10.0
roi.edge_buffer_mm: 8.0
roi.chamfer_normal_dot_min: 0.80
roi.outlier_z_score: 3.0
plane_fit.ransac_iterations: 300
plane_fit.ransac_inlier_thresh_mm: auto
plane_fit.min_inlier_ratio: 0.5
plane_fit.enforce_nx_positive: true
metrics.right_axis_sign: 1
metrics.angle_clamp_deg: 0.0
registration.method: kabsch_four_holes
registration.refuse_if_residual_above_mm: 5.0
denoise.steps:
- type: passthrough
bbox_padding_mm: 50.0
- type: voxel
voxel_mm: 0.5
- type: statistical
nb_neighbors: 20
std_ratio: 2.5

View File

@@ -0,0 +1,78 @@
# Sampling-strategy sweep: 4 methods × same other settings, so the saved
# intermediates per run/<method>/02_sampled.ply, 03_noisy.ply, ... can be
# compared apples-to-apples.
stp_path: D:/myDocuments/PKU/high_speed_train_proj/lu1-M000004835653_AF4_ASMP072708187_N_AF4.stp
matrix:
sampling.method:
- uniform_area
- poisson_disk
- adaptive
- grid_spacing
fixed:
panel_deflection.enabled: true
panel_deflection.theta_right_deg: 0.5
panel_deflection.theta_ref_deg: 0.3
sampling.spacing_mm: null
sampling.num_points: 500000
sampling.seed: 42
scan_simulator.enabled: true
scan_simulator.view_origin: [10000.0, 0.0, 0.0]
scan_simulator.hpr_radius_mm: 200000.0
noise.enabled: true
noise.sigma_mm: 0.05
noise.mode: isotropic
noise.seed: 43
transform.enabled: true
transform.rotation_deg: 0.5
transform.translation_mm: 2.0
transform.rotation_axis: random
transform.translation_dir: random
transform.seed: 44
cad.locating_hole_radius_mm: [14.0, 18.0]
cad.central_hole_radius_min_mm: 80.0
cad.linear_deflection_mm: 0.5
cad.angular_deflection_rad: 0.1
detection.panel_normal_seed: pca
detection.grid_pixel_mm: 2.0
detection.fill_bg_below_mm2: 100.0
detection.hole_min_area_mm2: 600.0
detection.hole_max_area_mm2: 5000.0
detection.locating_hole_radius_mm: [14.0, 22.0]
detection.panel_min_area_ratio: 0.15
detection.rectangle_aspect_tol: 0.40
detection.circle_fit.method: algebraic_then_lsq
detection.circle_fit.inlier_residual_mm: 1.5
roi.hole_dilate_mm: 5.0
roi.central_hole_dilate_mm: 10.0
roi.edge_buffer_mm: 8.0
roi.chamfer_normal_dot_min: 0.80
roi.outlier_z_score: 3.0
plane_fit.ransac_iterations: 300
plane_fit.ransac_inlier_thresh_mm: auto
plane_fit.min_inlier_ratio: 0.5
plane_fit.enforce_nx_positive: true
metrics.right_axis_sign: 1
metrics.angle_clamp_deg: 0.0
registration.method: kabsch_four_holes
registration.refuse_if_residual_above_mm: 5.0
denoise.steps:
- type: passthrough
bbox_padding_mm: 50.0
- type: voxel
voxel_mm: 0.5
- type: statistical
nb_neighbors: 20
std_ratio: 2.5

View File

@@ -0,0 +1,16 @@
# Parameter sweep over Gaussian noise sigma.
matrix:
noise.sigma_mm:
- 0.0
- 0.25
- 0.5
- 1.0
- 2.0
- 4.0
- 10.0
- 20.0
fixed:
sampling.method: poisson_disk
sampling.spacing_mm: 1.0
transform.rotation_deg: 3.0
transform.translation_mm: 5.0

View File

@@ -0,0 +1,12 @@
# Parameter sweep over sampling methods (other knobs fixed at default).
matrix:
sampling.method:
- uniform_area
- poisson_disk
- adaptive
- grid_spacing
fixed:
sampling.spacing_mm: 1.0
noise.sigma_mm: 0.5
transform.rotation_deg: 3.0
transform.translation_mm: 5.0

View File

@@ -0,0 +1,16 @@
# Parameter sweep over GT rigid transform magnitude.
matrix:
transform.rotation_deg:
- 1.0
- 3.0
- 5.0
- 10.0
transform.translation_mm:
- 0.5
- 1.0
- 5.0
- 10.0
fixed:
sampling.method: poisson_disk
sampling.spacing_mm: 1.0
noise.sigma_mm: 0.5