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

[Feature request] Registration with constraints #409

Open
fferroni opened this issue Jun 25, 2018 · 17 comments
Open

[Feature request] Registration with constraints #409

fferroni opened this issue Jun 25, 2018 · 17 comments

Comments

@fferroni
Copy link

Hello,

Is it possible (or in the roadmap) to be able to add registration constraints to ICP / ransac? For example, if one is interested in registering a point cloud in only two directions, ignoring the third?

Thanks

@qianyizh
Copy link
Collaborator

Can you elaborate the use case? Just want to understand the background better to help us scope out the problem.

@fferroni
Copy link
Author

Say for example in the case of a 3D LIDAR scan taken on a ground-plane, where we have a 2D motion, and we are only interested in estimating the transformation in 2 of 3 possible directions.

@qianyizh
Copy link
Collaborator

Good point. I think this is a common use case. I encountered this problem myself too. Sometimes the scanner has a gyroscope which provides quite accurate gravity direction and sometimes the north direction too. In this case registration algorithms should be able to use such information.

I am changing the title to feature request. And I think this should be prioritized.

@qianyizh qianyizh changed the title [Question] Registration constraints [Feature request] Registration with constraints Jun 26, 2018
@nicolas-chaulet
Copy link
Contributor

Hi All,
Has there been some progress on that? I would actually be very interested in such feature and happy to help as well.

@qianyizh
Copy link
Collaborator

No progress based on my knowledge. Unless @syncle is working on something I don't know yet, :)

@YouYue123
Copy link
Contributor

YouYue123 commented Nov 5, 2019

Any plans to make this change?

Something like how cloudcompare did it would be nice

https://www.cloudcompare.org/doc/wiki/index.php?title=ICP

@germanros1987
Copy link
Contributor

It seems the feature request didn't gain enough momentum... It is in our roadmap but with low priority. This could be a nice contribution...

@YouYue123
Copy link
Contributor

I would like to contribute to this feature

But any idea about how to restrict the rotation constrain in Umeyama algorithm for transformation estimation? This is the method Open3D is using for point to point transformation estimation https://github.com/intel-isl/Open3D/blob/master/src/Open3D/Registration/TransformationEstimation.cpp#L60.

Or any other math model I can use for transformation estimation with constraints. I am a bit stuck there.

@germanros1987
Copy link
Contributor

@YouYue123 I guess the most straightforward option would be to re-implement the Umeyama algorithm in its least-square form and add some lagrangians to account for the constraints.

@qianyizh any feedback? Is there anything like that already out there?

@qianyizh
Copy link
Collaborator

I think @syncle has a plan to work on this.

@germanros1987
Copy link
Contributor

@qianyizh I think @syncle is going to have his plate full for the short-term. We should try to get this done.

Do you have a technical opinion about this?

@YouYue123
Copy link
Contributor

@germanros1987 will that be something like a Constrained Ordinary Linear Least Square with Lagrange multipliers? Here is what I found http://people.duke.edu/~hpgavin/cee201/constrained-least-squares.pdf

@qianyizh Let me know your thought on this option. That will help a lot thanks!

@germanros1987
Copy link
Contributor

@theNded you are the one working on topics related to this, so I am sending this ball your way.

@theNded
Copy link
Contributor

theNded commented Jul 25, 2020

@YouYue123 Hi, I think we only need to parameterize our rotation as 2D rotations (with only one parameter), while we retain the 3D translation. The critical point is that in many cases we don't know the axis to align to, since the 'world coordinate system' defined by LiDAR does not usually match the 'real world coordinate system' defined by gravity. This is also not easy to do automatically AFAIK. An option is to ask the user to input this calibration -- what do you think?

In other words, the function signature will look like ICP(pcd0, pcd1, axis=some 3d rotation axis). Internally, our rotation is represented by rodrigues(axis, theta) where theta is our parameterization. FYI: Rodrigues rotation formula.

@szx0112
Copy link

szx0112 commented Jul 29, 2021

Hi, any updates in this feature? I am a similar use case but requires to restrict the 3D translations, instead of the rotations, for each estimated pose.

@ssheorey
Copy link
Member

ssheorey commented Aug 3, 2021

Related: #3846

@madsherlock
Copy link

For the record, it appears someone implemented this feature, or something very similar, in a fork two years ago, to be used in AlignNet-3D.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests