You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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:
[Feature request] Registration with constraints #409
This is the most similar. The registration by constraining the rotation. Although the end of that discussion is that there is one implementation (this commit from this fork), it seems limited to setting the z-axis to zero, and it would be nice to be able to have some freedom on the constraints.
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
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?
could you point me out where exactly the correspondences are calculated (in each iteration of the ICP)
The text was updated successfully, but these errors were encountered:
Checklist
main
branch).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:
This is the most similar. The registration by constraining the rotation. Although the end of that discussion is that there is one implementation (this commit from this fork), it seems limited to setting the z-axis to zero, and it would be nice to be able to have some freedom on the constraints.
This one is about stitching point cloud, so it is still a similar problem (constrained transformation), but did not reach any point
This is also interesting, as it would need a different constraint, pushing for a more flexible solution (not just setting some values to 0)
Again, in this case with static sensor it was solved, but could be seen as part of the same problem.
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
andcompute_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 doingcompute_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
ConstrainedTransformationEstimation
(extending TransformationEstimation) which accepts one axis as a parameter, and just ignore that axis (when doingcompute_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
?correspondences
are calculated (in each iteration of the ICP)The text was updated successfully, but these errors were encountered: