feat: Implement FPFH+RANSAC global pre-alignment (Task 6)
This commit is contained in:
@@ -25,3 +25,19 @@
|
||||
- Verified hybrid mode behavior (vertical structure inclusion and fallback).
|
||||
- Verified full mode behavior.
|
||||
- Verified SOR preprocessing effectiveness.
|
||||
|
||||
## Task 4: TukeyLoss Robust Kernel Support
|
||||
- Added `robust_kernel` and `robust_kernel_k` to `ICPConfig`.
|
||||
- Implemented TukeyLoss application in `pairwise_icp` for both Point-to-Plane and Generalized ICP.
|
||||
- Verified that TukeyLoss correctly handles outliers in synthetic tests, maintaining convergence accuracy.
|
||||
- Default behavior remains backward-compatible with `robust_kernel="none"`.
|
||||
|
||||
## Task 6: FPFH+RANSAC Global Pre-alignment
|
||||
- Implemented `compute_fpfh_features` and `global_registration` using Open3D RANSAC.
|
||||
- Added `global_init` flag to `ICPConfig` (default False).
|
||||
- Integrated global registration into `refine_with_icp` as a pre-alignment step before pairwise ICP.
|
||||
- Added safety checks: global registration result is only used if fitness > 0.1 and the resulting transform is within `max_rotation_deg` and `max_translation_m` bounds relative to the initial extrinsic guess.
|
||||
- Verified with synthetic tests:
|
||||
- `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.
|
||||
|
||||
Reference in New Issue
Block a user