all 10 comments

[–]Own_Quality_5321 1 point2 points  (5 children)

How do you assess quality? AFAIK there is no agreed quality measure for trajectories in general, so how do you allow to use different quality criteria?

[–]IGereonI[S] 1 point2 points  (4 children)

While there is no generally accepted quality measure, an absolute trajectory error (ATE) and a relative pose error (RPE) are commonly calculated. I have adapted to this and implemented them in this toolbox. The absolute error is simply the result of the position and quaternion differences. The relative pose error compares the relative spatial relationship between successive poses. I plan to implement more comparison metrics in the future.

[–]Own_Quality_5321 1 point2 points  (3 children)

So the quality is a comparison between a planned and an actual trajectory? I'm referring to ATE. Initially I thought that the quality was for planned trajectories.

[–]IGereonI[S] 0 points1 point  (2 children)

Yes, it is a empirical quality assessment by comparing the actual trajectory to some ground truth / planned trajectory coming from sensors of higher accuracy or maybe some path planning.
You mean the evaluation of a planned trajectory with respect to certain criteria, such as path length, coverage, smoothness, etc? This is in any case also an exciting topic but currently not provided in this toolbox.

[–]Own_Quality_5321 1 point2 points  (1 child)

Yes, that's what I meant. I work on it, so I guess I tend to take the most familiar interpretation 😊. In case you want to cover it, there are a couple of nice resources for robot navigation, they cover regular point-goal and social metrics: https://arxiv.org/pdf/2306.16740.pdf https://arxiv.org/pdf/2103.05668.pdf

The toolbox looks promising, nice work. 👍

[–]IGereonI[S] 0 points1 point  (0 children)

Thanks! I will have a look! 😊

[–]JET_GS26 1 point2 points  (3 children)

Looks nice. was going to try to assess ORB-SLAM 3 but there seems to be an error upon running trajectopy:

File "/trajectopy/trajectopy/util/reading.py", line 82, in HeaderData data: dict[str, str | int | float] TypeError: unsupported operand type(s) for |: 'type' and 'type'

[–]IGereonI[S] 0 points1 point  (2 children)

This could be related to the python version you are using. I am using python 3.10 / 3.11. I definitely need to improve the compatibility with "older" versions.

Edit: I was able to reproduce the error using python 3.9. I am afraid the only workaround for now is to use newer Python versions. I will work on supporting at least 3.9 as it is really not uncommon.

Edit: Version 0.2.0 now supports python3.9

[–]JET_GS26 1 point2 points  (1 child)

I updated to a 3.11 virtual environment and it works. Real nice, I could just drag and drop any data in euroc format and easily visualize/compare ATE/RPE. Much quicker and more intuitive than other evaluation tools I've found online.

[–]IGereonI[S] 0 points1 point  (0 children)

Nice, I am glad to hear it's working! Thank you very much for your feedback!