gicp icon indicating copy to clipboard operation
gicp copied to clipboard

Consistency of gradient tolerance in GICPOptimizer class

Open blackccpie opened this issue 5 years ago • 1 comments

Hi, I recently asked myself about the consistency of the gradient tolerance parameter of the GICPOptimizer class:

https://github.com/avsegal/gicp/blob/367fd96063d4923df2475b7f1cf32c696de4dfd9/optimize.cpp#L143

In some of my tests, I had to use a lower tolerance of 1e-3 to reach correct convergence. My feeling is that with tolerance set to 1e-2, the convergence is sais to be reached, whereas in terms of position it's ok but not in terms of rotation. Maybe I missed something, but I find it quite cumbersome to check for the norm of a 6Dof vector mixing positions and euler angles gradients. Wouldn't it be better to check separately for the positions and angles gradients?

There's also an ongoing discussion in PCL issue #3813.

Could you help me on this point?

Thx

blackccpie avatar Apr 01 '20 09:04 blackccpie

In hindsight I would say the right approach would be to use a Gauss-Newton based optimization which automatically scales the gradient using the gradient: step = E.g. H^_1 . In that case the norm of the step size is unit-less and can be tested for convergence.

The original code was written as a proof of concept and so the convergence parameter was simply set low enough for both angle and translation to convergence (at the expense of extra iterations).

avsegal avatar Apr 21 '20 16:04 avsegal