evo icon indicating copy to clipboard operation
evo copied to clipboard

Rotations don't match after alignment

Open qinjunj opened this issue 1 year ago • 2 comments

Hi there. I'm applying -a to align two trajectories when plotting them. However, this alignment only works for the xyz part (shown in the first two pics), but not the rotation part (as in the last two pics). xyz_na xyz_a rpy_na rpy_a

From the last two pictures, I can see that the rotation part (roll, pitch, yaw) will be better aligned if I switch roll and pitch, and probably make some rotation around the yaw axis. I understand that this will not be taken care of by the Umeyama algorithm because it is based on minimizing the difference in the xyz part only #299. What I'm not sure is, does this misalignment imply that the rotation has a different coordinate system as the xyz part? If so, is it valid if I transform the rotation part manually in the way stated above?

Thanks for any guidance!

qinjunj avatar Dec 22 '23 22:12 qinjunj

In this case, you would need to investigate the orientations in your data. For example you could enable pose axis markers to see them in plots: https://github.com/MichaelGrupp/evo/wiki/Plotting#coordinate-axis-markers

...and/or use the RPE or APE with --pose_relation angle_deg to check the rotation errors between the two trajectories.

MichaelGrupp avatar Jan 05 '24 19:01 MichaelGrupp

I have the same problem (Umeyama ONLY aligns positions instead of rotation) with evaluation using EVO in TextSLAM, inducing the wrong RPE results.

In response to this, I've developed a complementary solution for EVO that addresses the problem. You can use and find the details in the GitHub project: https://github.com/SJTU-ViSYS/SLAM_Evaluation/.

LeeBY68 avatar Jan 14 '24 23:01 LeeBY68