Closed George-Gi closed 5 years ago
I'm not sure what you mean exactly, but take into account that the axis is normalized to [-180, 180] degrees. So sign flips can happen when the values are close to 180 degrees.
Yes I know that they are normalized, however if pitch is 90 deg as it shows, then the car should point to the sky, also roll has very high values and the car does not do roll at all, am I misunderstanding something?
Dunno, which sequence is this?
That's sequence 00, I've been having the same issues.
For that plot I've used the ground truth data as provided from KITTI, that means in their camera coordinate system. That's why the plot is rotated. It also means that when the car turns left or right, the change is reflected in the pitch, since the y-axis is pointing to the ground. So because the car obviously moves on a relatively flat road it's obviously not possible for the roll and yaw angles to spike so steeply and not to this extent.
However following the sequnce trajectory, even the pitch is not entirely correct. I sadly don't have the plot right now, but I'll try to explain. The car makes right turn(pitch +90 deg), then a left (0 deg), left (-90 deg), right (0 deg), left (-90 deg). So far it's completely true. Then it makes another two lefts and the pitch goes to 0 and then to 90 degrees, in other words starts turning in the wrong direction.
Interestingly enough while I was trying to transform the ground truth data to the lidar coordinate system I got very interesting results:
For the transformation I multiplied the poses with two rotational matrices in order to rotate the axes. First of all I rotated by 90 degrees w.r.t. the y-axis and then by -90 degrees w.r.t the x-axis.
The rotation matrices that I used:
R_y:
0 0 1
0 1 0
-1 0 0
R_x: 1 0 0 0 0 1 0 -1 0
As you can see in the pictures, after the transformation all angles have reasonable metrics (bear in mind they don't correspond exactly to the ones in the first pictures, because of the rotation). However I can't explain why the amplitude were affected when I just rotated the trajectory. They also seem to correspond correctly to the ones I got from ALOAM (the SLAM alogrithm that I used for comparison), however the raw and yaw angles start from -90 deg (although that might be because of the rotation itself, I'm not sure).
And a further question: are the roll, pitch and yaw relevant for the APE, RPE?
roll, pitch and yaw relevant for the APE, RPE?
In this code RPY angles are only used for this one plot in evo_traj
.
Rotation in general is relevant in APE or RPE depending on your choice of --pose_relation
. The math is described briefly here: https://github.com/MichaelGrupp/evo/blob/master/notebooks/metrics.py_API_Documentation.ipynb
So it looks like the problem is that the names "roll pitch yaw" interpretation is not what you expect here.
As I said, here I also just use it for this one plot. This is done using a more or less arbitrarily chosen sxyz rotation order by default as specified by the transformations.py module. This might not necessarily be the right order for any case. In the KITTI case of a camera frame mounted on a car, szxy makes probably more sense, then the plot looks like this:
But: Besides visualization I wouldn't care too much about RPY for anything serious, it's a very weak 3d rotation representation for various reasons.
So it looks like the problem is that the names "roll pitch yaw" interpretation is not what you expect here.
As I said, here I also just use it for this one plot. Thi is done using a more or less arbitrarily chosen sxyz rotation order by default as specified by the transformations.py module. This might not necessarily be the right order for any case. In the KITTI case of a camera frame mounted on a car, szxy makes probably more sense, then the plot looks like this:
Alright!! This makes sense now. Then that has to be changed in the code. I have installed a non-editable version with only executables. Can i install an editable version using
pip install --editable . --upgrade --no-binary evo
on top of it?
Also is this the same case for ape and rpe?
But: Besides visualization I wouldn't care too much about RPY for anything serious, it's a very weak 3d rotation representation for various reasons.
But the values that it takes and the comparison of results were affected i guess??
Can i install an editable version using pip install --editable . --upgrade --no-binary evo on top of it?
It should just replace the installed one.
But the values that it takes and the comparison of results were affected i guess??
Nope. Rotational error calculation is not based on RPY, see the link to the math above or the code.
Okay, I will try it. Thank you!!
Hi @MichaelGrupp @Roshnee I have the same problem with rotation angles for KITTI here. I changed the axis as you mentioned earlier to SZXY but it still doesn't work (the values are not real). cloud you please tell me how did you manage to fix that and where to modify in the code? thanks.
FYI: This was added as a configuration option, no change in the code needed anymore.
evo_config set euler_angle_sequence szxy
evo_config show | grep euler -A2
I would like to ask if anyone can translate the rotation results for the KITTI dataset. I get the following:
Yaw is fine, however I can't understand why pitch and roll get such high values. The thing is that they get these values even in the provided groundtruth data.