Open magicbycalvin opened 3 years ago
Hey @magicbycalvin thanks for pointing it out! I will look into this.
Without this typo, the point-to-plane metric will converge more slowly than the point-to-point metric. I understand that the point-to-plane metric will be much better than the point-to-point under many conditions. But, we cannot say it is always better. It is normal that we find some exceptions.
Ok, so the way I understand the math there is that we linearlize not at the current position in its absolute sense, but with respect to the "displacement" from the current position. So we aim to find the Jacobian of our function at the optimum, i.e., at 0 displacement, thus we linearize at 0. Does this make sense?
Ok, so the way I understand the math there is that we linearlize not at the current position in its absolute sense, but with respect to the "displacement" from the current position. So we aim to find the Jacobian of our function at the optimum, i.e., at 0 displacement, thus we linearize at 0. Does this make sense?
I read through the code carefully, mainly the "icp_least_squares" function. Note that we always prepare_system for the original P and Q, not the iteratively-updated P and Q. In the loop we've been constantly updating x with dx, so we are continously moving in the landscape, which means after iteration two, we are at a different location than the (0,0,0) right? The linearization method is to find a moving direction based on the local landscape around the point where we are currently at. So I think maybe 'theta' is correct.
Actually I think this is a very tricky details. If one change the prepare_system to accept P_copy rather thant the P, then maybe '0' is correct. But if we do this, other parts of the code needs to be changed.
Anyway, the weird thing is, either '0' or 'theta' makes a good-looking chi_values plot.
'theta' is correct! When making the example data, modify pi/4 to pi/3. The original '0' makes a fast degrading error curve but plateau to a very large value. The animation shows the fitting stucks at some point. However, changing to 'theta' would make a perfect alignment.
Greetings,
The Jacobian function in the icp.ipynb file on line "In [14]" uses the derivative of the rotation matrix at a constant angle of zero rather than the derivative of the rotation matrix at the current angle. Because of this, I suspect that the Jacobian may be approximating about the wrong point.
Should my math be correct, I would recommend replacing the zero with the variable "theta".