raulmur / ORB_SLAM

A Versatile and Accurate Monocular SLAM
http://webdiis.unizar.es/~raulmur/orbslam/
Other
1.53k stars 819 forks source link

Validate ORB SLAM with TUM Dataset #172

Open adayoegi opened 5 years ago

adayoegi commented 5 years ago

I am using mono ORB SLAM to run with TUM dataset. Everything works well except the groundtruth.txt provided starts with an offset (real world camera pose) while ORB SLAM outputs a relative pose change to its initial pose.

I tried to subtract every single value with the initial value in groundtruth, but cannot get a correct answer. For example, using rgbd_dataset_freiburg1_xyz dataset,

My KeyFrameTrajectory.txtstarts and ends with

1305031109.411329 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 1.0000000
...
1305031128.347423 -0.1738054 0.1043030 0.0929417 -0.0599872 -0.0735068 -0.0325272 0.9949574

The ground truth goes with

...
1305031109.4158 1.3097 0.8065 1.6132 0.6932 0.5932 -0.2755 -0.3028
...
1305031128.3455 1.2823 0.5845 1.4489 0.6715 0.6469 -0.2800 -0.2284
...

Thus we can see the angle of ground truth goes from [ 156.5623909, 133.9769335, -62.2229352 ] (a) to [ 142.3680597, 137.1524912, -59.3641947 ] (b) While the diff I get from ORB SLAM (from KeyFrameTrajectory.txt)is [ -6.8913988, -8.3826331, -3.7558409 ] (c)

Similarly, we can see that position of gt goes from [1.3097 0.8065 1.6132] (a) to [1.2823 0.5845 1.4489] (b), while the diff in ORB is [-0.1738054 0.1043030 0.0929417 ] (c)

In short, I cannot get (a) ~= (b) + (c). The equal sign only works in perfect, but in the example above they are even not close to approximations.

I am not sure if this is the nature of ORB SLAM, or is there anything wrong in my understanding?

P.S. I have looked into some other issues such as #28 , but did not get help from those info.

Any hints would be appreciative, thank you.