Skip to content

Revert Eigen::EulerAngles use

Nicolas Cadart requested to merge fix/RevertEigenEulerAnglesUse into master

rpy = rot.eulerAngles(2, 1, 0).reverse() returns angles in range [-PI:PI]x[-PI:PI]x[0:PI]. rpy = Eigen::EulerAnglesZYXd(rot).angles().reverse() returns angles in range [-PI:PI]x[-PI:PI]x[-PI:PI]. But these are bad. For first range, yaw angle cannot be negative : this leads to un-necessary non trivial RPY decomposition, and to unstable optimization result as we are not optimizing around 0. For second ranges, there exist several RPY decomposition for the same rotation (one of them being non-trivial too). Therefore the optimization may also be unstable by oscillating between them. We prefer to output angles in range [-PI:PI]x[-PI/2:PI/2]x[-PI:PI] : we allow negative values to avoid oscillation artefacts, and minimize the pitch angle to fix representation.

This revert changes brought by commit dff3cbdb in MR #34.

A real solution would be to use quaternions instead of these messy euler angles representations. Issue #8 has been opened.

Edited by Nicolas Cadart

Merge request reports