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
Support singular ICP steps in PointToPlane(Cov)ErrorMinimizer #149
Support singular ICP steps in PointToPlane(Cov)ErrorMinimizer #149
Conversation
Something was confusing me about the current algorithm when writing this patch: This is confusing me:
Is it some magical detail about point to plain ICP that it still makes sense to use LLT here? |
ok, there is a lot of action on the pull request this week. Could you put me in context of what is the "singular ICP steps" problem. I lost track of what it is and when it happen. As for the |
This PR has time, I guess. This case can happen if two point clouds do not determine certain aspects of the transformation for registration (as e.g. when the reference cloud is planar; as in the added unit test). About the symmetry of I read the definition of wF in A = wF * F^T wrongly. In fact it is wF = F * W with the diagonal weighting matrix W. I thought of W * F (probably mislead by the name) and that would make A asymmetric. Btw, if this is true one could get rid of the entire wF matrix by writing I believe, one could make it even faster and get entirely rid of F and wF (if I'm not mistaken): I could try that with another PR. Would that be useful? |
Awesome, I could correct Hannes on some math stuff. I'll have to put that in my CV now ;) Everything that can speed up the computation is welcome. If it start to be too compact to be readable, please add comment to explain what is going on. It would be very good if the notation could follow a bit the document I sent you, so I can understand what is going on. As for this PR, it looks good to me. Do you have any more concerns or we are ready to go? |
:). Yes, this PR is ready from my side. |
…intToPlaneErrorMinimizer Support singular ICP steps in PointToPlane(Cov)ErrorMinimizer
Thanks Hannes |
Unfortunately it is not clear to me what the right solution for this problem is (see https://github.com/ethz-asl/libpointmatcher/compare/fix/supportSingularICPStepsInPointToPlaneErrorMinimizer?expand=1#diff-51b8a83999c74513d51e6839db229186R188).
Both suggested ways work nicely for me, though. Maybe a priority (user provided) based algorithm could be the right way.
In https://github.com/ethz-asl/libpointmatcher/compare/fix/supportSingularICPStepsInPointToPlaneErrorMinimizer?expand=1#diff-51b8a83999c74513d51e6839db229186R207 there as a new exception introduced for the case that this does not work. It should cover possible implementation failures. In particular it could be that I guessed wrongly when filling in the specification gaps of Eigen's FullPivHouseholderQr algorithm.