feat: add point extraction functions and ICPConfig region
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
## 2026-02-10T09:45:00Z Session bootstrap
|
||||
- Initial notepad created for full-icp-pipeline execution.
|
||||
- Baseline code references verified in `aruco/icp_registration.py` and `refine_ground_plane.py`.
|
||||
|
||||
## Task 2: Point Extraction Functions
|
||||
|
||||
### Learnings
|
||||
- Open3D's `remove_statistical_outlier` returns a tuple `(pcd, ind)`, where `ind` is the list of indices. We only need the point cloud.
|
||||
- `estimate_normals` with `KDTreeSearchParamHybrid` is robust for mixed geometry (floor + walls).
|
||||
- Hybrid extraction strategy:
|
||||
1. Extract floor band (spatial filter).
|
||||
2. Extract vertical points (normal-based filter: `abs(normal · floor_normal) < 0.3`).
|
||||
3. Combine using boolean masks on the original point set to avoid duplicates.
|
||||
- `extract_scene_points` provides a unified interface for different registration strategies (floor-only vs full-scene).
|
||||
|
||||
### Decisions
|
||||
- Kept `extract_near_floor_band` as a standalone function for backward compatibility and as a helper for `extract_scene_points`.
|
||||
- Used `mode='floor'` as default to match existing behavior.
|
||||
- Implemented `preprocess_point_cloud` to encapsulate downsampling and SOR, making the pipeline cleaner.
|
||||
- Added `region` field to `ICPConfig` to control the extraction mode in future tasks.
|
||||
Reference in New Issue
Block a user