Consistency of gradient tolerance in GICPOptimizer class
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
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).