Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to get rotation error? #62

Closed
WongRZ opened this issue Jun 25, 2018 · 6 comments
Closed

How to get rotation error? #62

WongRZ opened this issue Jun 25, 2018 · 6 comments
Labels

Comments

@WongRZ
Copy link

WongRZ commented Jun 25, 2018

Dear author,
Through command "evo_ape euroc", i can get the translation error of my own trajectory with ground-truth. But what about rotation error, how can i get it. Can you give me a hint?
Thanks a lot.

@MichaelGrupp
Copy link
Owner

MichaelGrupp commented Jun 25, 2018

Hi,

this can be done with the --pose_relation argument (default: trans_part). There are three pose relation arguments for the rotation error:

  • angle_rad: angle in radians
  • angle_deg: angle in degrees
  • rot_part: unitless, uses a matrix norm for the rotation matrix part of the pose

Formulas for this are documented in the Jupyter notebook: https://github.com/MichaelGrupp/evo/blob/master/notebooks/metrics.py_API_Documentation.ipynb

An interesting mathematical property of these rotation metrics is that the values only differ by scale :)


In my opinion it makes usually more sense to measure the relative angular error than the absolute one, for example the angular drift per meter: evo_rpe tum <ref> <estimate> --pose_relation angle_deg --delta 1.0 --delta_unit m

@WongRZ
Copy link
Author

WongRZ commented Jun 25, 2018

Thanks a lot, dear author. Another question is, the difference between absolute pose error and relative pose error in this app. And why do you think it makes usually more sense to measure the relative angular error than the absolute one.
Thanks again.

@MichaelGrupp
Copy link
Owner

Take a look at the documentation (Wiki, Jupyter notebooks). The concept of absolute and relative error is also covered in papers like:

J. Sturm, N. Engelhard, F. Endres, W. Burgard, D. Cremers: 
A Benchmark for the Evaluation of RGB-D SLAM Systems 
In Proc. of the International Conference on Intelligent Robot Systems (IROS), 2012.

@WongRZ
Copy link
Author

WongRZ commented Jun 26, 2018

Thanks. I used "evo_ape euroc -r rot_part" command to calculate the rotate errors. But the results are unexpected. Neither the result of ORB_SLAM2 nor my own result was right. The RMSE of them are more than 70 degrees. I think the format of my file may be wrong. But I'm just following the TUM format, the same as the ORB_SLAM's. Attached is the result of ORB_SLAM, would you please try it? This is the ORB_SLAM's result of EuRoC V101 dataset:
CameraTrajectory.txt
The printscreen of the result:
2018-06-26 09-49-39

@MichaelGrupp
Copy link
Owner

MichaelGrupp commented Jun 26, 2018

This is probably related to #23

The different coordinate frames of groundtruth and SLAM (IMU, camera) are problematic if you do absolute rotation comparisons without properly transforming everything into a common frame beforehand. One of the reasons why relative error is better in that case.

@chenwinki
Copy link

@MichaelGrupp Dear author : I use "evo_rpe tum data.tum clean.tum -a --delta 1.0 --delta_unit m --pose_relation angle_deg -p" to computer angular drift per meter ,but the result id not unexpected:
2018-07-04 11-50-19
2018-07-04 11-50-57
and the estimate file :
clean.txt
reference file :
data.txt
Could you give me some hint ? thank you very much!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants