evo
evo copied to clipboard
Alignment and Coordinate System
I have been going over the issues and tutorials but I am still a little confused about the relationship between ATE, RPE, alignments, and coordinate systems.
Based on my understanding, Umeyama alignment uses only translations to compute scale, translation, and rotation. This means that as long as both our pred and GT camera poses are similar handedness (left hand / right hand), running Umeyama alignment will align the translations.
However, Umeyama alignment does not seem to fix rotation. I tried to visualize this (shown below), by using umeyama to find groundtruth R,t, scale. I orient each individual camera rotation using the found R.
Even though the trajectory is aligned, the individual camera coordinates seemsto be wrong. Is this expected behavior? I suppose it is possible that umeyama finds a wrong rotation as long as the translation is minimized. But I suppose this does not affect RPE metric calculation because that uses delta transformations (local coordinate system).
-
Is this understanding correct? Is my observation of incorrect camera orientation despite aligned camera translation possible?
-
How does coordinate orientation come into play here (eg. opengl vs opencv). Must I make sure my GT and pred cameras are in the same format for both APE and RPE? Since they differ by a rigid transformation, I suppose Umeyama Alignment will take care of this?
Thank you so much for any guidance or help provided in understanding this!
Umeyama alignment does not seem to fix rotation
This is correct. The job of the alignment methods here is to allow different kinds of evaluations, not to fix the poses inside trajectories. For example in case of Umeyama alignment, it does a rigid (or similarity) transform of the whole trajectory that allows to measure how similar two trajectories are. If the trajectories have different orientations after such an alignment, it's not an issue of the alignment or evaluation metric. Instead, the purpose of any evaluation metric is exactly to highlight such issues. Alignment is just an (optional) part of how the metric is calculated.
In your concrete case, it seems like the two trajectories can be well aligned (in the sense that they describe a similar global path). The orientations of individual poses are however different. In that case, you can either ignore rotations or use it as a hint that you might be comparing two different things (e.g. two different tracking frames), have an error in the pose estimation or sth. else. The exact reason is for you to figure out.