Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to extend the registration pipelines #7159

Open
3 tasks done
freerafiki opened this issue Feb 4, 2025 · 0 comments
Open
3 tasks done

How to extend the registration pipelines #7159

freerafiki opened this issue Feb 4, 2025 · 0 comments
Labels

Comments

@freerafiki
Copy link

Checklist

My Question

Hi,
I worked around this issue for a while, but I think I want to give it a try. I would love to be able to customize the registration pipelines in the open3d library (which I think are amazing and a very good point for using this library over others).

Idea

I want to change the registration so that it can be constrained (or the objective can be extended, but this could be a later step).
Personally, I am working with python and I am less proficient in C++, so I would love to be able to do this through the python bindings API without changing and writing C++ code. Once everything works, we can see how to translate/port it. I am willing to work on this.

Long Version

Background/Issues Check

I am also aware of these issues:

Question

So, to my question. Mostly, I thought about how to do it, and wanted to understand if I am in the right direction.

Checking the documentation, I see that a registration (for example, registration_icp) relies on a TransformationEstimation, which could be extended/customized. The TransformationEstimation only needs to implement 3 methods (__init__, compute_rmse and compute_transformation) as far as I understand, so it seems doable.

If I would just create a ConstrainedTransformationEstimation which accepts one axis as a parameter, and just ignore that axis (when doing compute_transformation, just use the other two axis?), would that be enough to actually perform a 2D registration on a pointcloud?
Should I use the pipelines as a reference, for example the doppler-icp-registration.py?

I am a bit afraid that the correspondences may cause some issues if the correct transformation would need the third dimension. But to me changing the TransformationEstimation seems the way to go (as it is changed between the standard ICP and the colored ICP for example in the tutorial).

Apart from this, I am not understanding where exactly the correspondences (point 1 of Understanding-ICP-Algorithm) are calculated (in each iteration of the ICP), could you point me out (so that can also be changed).

TL;DR

  1. If I would just create a ConstrainedTransformationEstimation (extending TransformationEstimation) which accepts one axis as a parameter, and just ignore that axis (when doing compute_transformation, just use the other two axis?), would that be enough to actually perform a 2D registration on a pointcloud?
    Should I use the pipelines as a reference, for example the doppler-icp-registration.py?
  2. could you point me out where exactly the correspondences are calculated (in each iteration of the ICP)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant