Add Doppler ICP Registration Documentation#7425
Add Doppler ICP Registration Documentation#7425heethesh wants to merge 2 commits intoisl-org:mainfrom
Conversation
|
Check out this pull request on See visual diffs & provide feedback on Jupyter Notebooks. Powered by ReviewNB |
|
@ssheorey this PR is ready for a review |
There was a problem hiding this comment.
Pull request overview
This PR adds comprehensive documentation for the Doppler ICP registration algorithm and fixes a typo in the parameter name goemetric_kernel to geometric_kernel.
Changes:
- Added Doppler ICP tutorial documentation with algorithm explanation, mathematical formulation, parameter descriptions, and example code comparing Doppler ICP with point-to-plane ICP
- Added Hexsel2022 reference citation for the Doppler ICP algorithm
- Fixed typo:
goemetric_kernel→geometric_kernelin Python binding, example script, and tutorial notebook
Reviewed changes
Copilot reviewed 4 out of 5 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| examples/python/pipelines/doppler_icp_registration.py | Fixed typo in parameter name from goemetric_kernel to geometric_kernel |
| docs/tutorial/reference.rst | Added Hexsel2022 citation for Doppler ICP algorithm |
| docs/jupyter/t_pipelines/t_icp_registration.ipynb | Added comprehensive Doppler ICP documentation including algorithm explanation, requirements, parameter descriptions, and example code comparing with point-to-plane ICP; also removed trailing whitespace |
| cpp/pybind/t/pipelines/registration/registration.cpp | Fixed typo in Python binding parameter name from goemetric_kernel to geometric_kernel |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| "\n", | ||
| "- **`period`** (double, default: 0.1): Time period in seconds between the source and target point clouds. This is used to compute the velocity implied by the transformation. For sequential scans, multiply the base period by the frame difference (e.g., `period * (target_idx - source_idx)`).\n", | ||
| "\n", | ||
| "- **`lambda_doppler`** (double, default: 0.01): Weight parameter `λ ∈ [0, 1]` that balances the geometric and Doppler terms in the objective function `(1-λ)E_G + λE_D`. A smaller value (e.g., 0.01) emphasizes geometric constraints, while a larger value increases the influence of Doppler measurements. Emprirically 0.01 is a good default value.\n", |
There was a problem hiding this comment.
Corrected spelling of 'Emprirically' to 'Empirically'.
| "- **`lambda_doppler`** (double, default: 0.01): Weight parameter `λ ∈ [0, 1]` that balances the geometric and Doppler terms in the objective function `(1-λ)E_G + λE_D`. A smaller value (e.g., 0.01) emphasizes geometric constraints, while a larger value increases the influence of Doppler measurements. Emprirically 0.01 is a good default value.\n", | |
| "- **`lambda_doppler`** (double, default: 0.01): Weight parameter `λ ∈ [0, 1]` that balances the geometric and Doppler terms in the objective function `(1-λ)E_G + λE_D`. A smaller value (e.g., 0.01) emphasizes geometric constraints, while a larger value increases the influence of Doppler measurements. Empirically 0.01 is a good default value.\n", |
| "\n", | ||
| "- **Source point cloud** with:\n", | ||
| " - `dopplers` attribute: Measured Doppler or radial velocities for each point.\n", | ||
| " - `directions` attribute: Unit direction vectors from sensor to each point (normalized point positions). The direction vectors must correspond the raw range measurements (without any motion compensation or undistortion applied).\n", |
There was a problem hiding this comment.
Missing 'to' between 'correspond' and 'the'. Should be 'must correspond to the raw range measurements'.
| " - `directions` attribute: Unit direction vectors from sensor to each point (normalized point positions). The direction vectors must correspond the raw range measurements (without any motion compensation or undistortion applied).\n", | |
| " - `directions` attribute: Unit direction vectors from sensor to each point (normalized point positions). The direction vectors must correspond to the raw range measurements (without any motion compensation or undistortion applied).\n", |
|
Hi @heethesh can you check the generated documentation in CI? The Checks tab near the top -> Documentation (on left) -> Summary -> Artifacts (right) -> download. |
Type
Motivation and Context
Checklist:
python util/check_style.py --applyto apply Open3D code styleto my code.
updated accordingly.
results (e.g. screenshots or numbers) here.
Description
goemetric_kerneltogeometric_kernelin Python binding, example script, and notebook.