chore(icp): relax ICPConfig defaults per Oracle recommendations

This commit is contained in:
2026-02-10 16:44:13 +00:00
parent dae6d939e4
commit 7bdc5d6024
2 changed files with 17 additions and 6 deletions
@@ -41,3 +41,14 @@
- `test_compute_fpfh_features`: Validates feature dimension and count.
- `test_global_registration_known_transform`: Confirms RANSAC can recover a known large transform (30 deg rotation).
- `test_refine_with_icp_global_init_success`: End-to-end test showing global init can recover from a very bad initial guess (90 deg error) where local ICP would fail.
## Task 8: Relax ICPConfig defaults
- Relaxed defaults for ICPConfig to improve convergence and allow more flexible corrections.
- New defaults:
- min_fitness: 0.15
- min_overlap_area: 0.5
- gravity_penalty_weight: 2.0
- max_correspondence_distance_factor: 2.5
- max_translation_m: 0.3
- max_rotation_deg: 10.0
- Verified with 36 passing tests and clean basedpyright (0 errors, though many warnings due to missing stubs).
+6 -6
View File
@@ -25,14 +25,14 @@ class ICPConfig:
max_iterations: list[int] = field(default_factory=lambda: [50, 30, 14])
method: str = "point_to_plane" # "point_to_plane" or "gicp"
band_height: float = 0.3 # Near-floor band height in meters
min_fitness: float = 0.3 # Min ICP fitness to accept pair
min_overlap_area: float = 1.0 # Min XZ overlap area in m^2
min_fitness: float = 0.15 # Min ICP fitness to accept pair
min_overlap_area: float = 0.5 # Min XZ overlap area in m^2
overlap_margin: float = 0.5 # Inflate bboxes by this margin (m)
overlap_mode: str = "xz" # 'xz' or '3d'
gravity_penalty_weight: float = 10.0 # Soft constraint on pitch/roll
max_correspondence_distance_factor: float = 1.4
max_rotation_deg: float = 5.0 # Safety bound on ICP delta
max_translation_m: float = 0.1 # Safety bound on ICP delta
gravity_penalty_weight: float = 2.0 # Soft constraint on pitch/roll
max_correspondence_distance_factor: float = 2.5
max_rotation_deg: float = 10.0 # Safety bound on ICP delta
max_translation_m: float = 0.3 # Safety bound on ICP delta
region: str = "floor" # "floor", "hybrid", or "full"
robust_kernel: str = "none" # "none" or "tukey"
robust_kernel_k: float = 0.1