maplab
maplab copied to clipboard
Trajectory generate by ROVIOLI in Localization mode seems even worse than ROVIOLI in VIO mode
Hi, all I want to compare the trajectory generated by ROVIOLI in Localization mode and in VIO mode. So I do the following steps:
- download dataset MH_04_difficult.bag
- run ROVIOLI in VIO mode using MH_04_difficult.bag and save trajectory in EuRoc format.
- use maplab_console Preparing a single-session map and generate a summary map for Localization mode.
- run ROVIOLI in Localization mode and save trajectory in EuRoc format.
- use evo to plot trajectory in VIO mode and in Localization mode. Following picture shows the result.
blue line is the trajectory in Localization mode green line is the trajectory in VIO mode dotted line is groundtruth it seems the trajectory even worse in Localization mode, so I want to ask what's the problem?
Hi @LeoKingBUAA, thanks for your report, that indeed shouldn't happen. Few questions:
- Did you follow this tutorial exactly?
- Could you, instead of the tutorial above, call
optvi
,lc
,optvi
and not userelax
andkfh
at all? - Which version of the repo are you using? Overall, ROVIOLI in Localization mode should work better using the most recent release candidate branch, see https://github.com/ethz-asl/maplab/pull/55
Would be great if you could test those suggestions and report back if you see any improvement.
Hi @dymczykm ,
I think I use the wrong localization data. I used vertices' position in VI-map as localization data before, but it's not the true localization results, actually. I found using flag --export_estimated_pose_to_csv can export the localization data in global coordinate. Comparing this data with the groundtruth the result seems better.
To get the result, I localize MH_04 dataset with the summary map which is generated by dataset MH_04. But in practical, it's impossible to use the same picture during mapping and localization. So, I generate a new summary map with datasets MH_01 to MH_03, and the localization result shows below.
The result seems not so good. I think the reason is little pose can be localized with map during the term, though the mapping environment and the localization environment are similar.
(red points are poses localized with summary map)
So, I want to ask why just little pose can be localize by map? Is this an inherent problem of the feature point method? Or if there is a method to improve it ?
@LeoKingBUAA Could you:
- provide here or link the the
ncamera.yaml
file you are using, - when building the localization map, try out the commands I've linked above, and report back? This would help diagnosing the issue.
Hi, @LeoKingBUAA I can't find the flag --export_estimated_pose_to_csv you mentioned,which command use the flag? I just ues the csv_export command to get the CSV data, and use the vertices' position in vertices.csv as the localization results. Is that wrong? Looking forward to your reply!
Hi, I tried to execute Rovioli with localiztion like @LeoKingBUAA did - run MH1 when using summary map from the same MH1 rosbag as reference.
I got very bad results:
I run ROVIOLI as described on tutorials (create summary map and then run ROVIOLI with localization script) : rosrun rovioli tutorial_euroc_localization /home/amichay/maplab_ws/save_folder_MH1_with_optimization_for_loc_localization MH1_calibration /home/amichay/maplab_ws/dataset/MH_01_easy.bag
How can it be described? I think that it is correlated to camera parameters. I looked on EuroC camera yaml file and found different format (for example, the data value on MH1 camera yaml is matrix 4X4 and in ncamera-euroc is 1X4 )