Open scenicpastures opened 3 years ago
I will refer to a "localization match" as pose graph constraint (trajectory node to submap of other trajectory) and the "jump" as finished pose graph optimization, as these are the mechanisms used in Cartographer.
So what needs to happen is briefly this:
For each of these steps there are parameters that can influence the time spent for them. For example:
num_accumulated_range_data
, motion filtersampling_ratio
of constraint buildermin_score
, max_constraint_distance
of constraint builderoptimize_every_n_nodes
of pose graphWhen you start a trajectory with an initial pose estimate, you need to specify to which existing trajectory you are relating this pose to. This can help to speed up the search because it internally already creates a connectivity state between these two trajectories (and all others that are transitively connected).
I've been using Cartographer to generate maps and then localize within this map in pure localization mode. I've noticed that it can take a variable amount of time (typically 10 to 30 srconds with my data set) for Cartographer find a localization match, where the position of the robot typically jumps to it's 'correct' position within the map.
Will the following factors influence the time taken for this initial jump?,
Starting a new trajectory with an initial position that is closer or equal to the actual position within the map (position within the map is known if the robot is stationary between stopping mapping and starting localizing). When Cartographer is started the trajectory starts at (0,0) but this can be finished and new trajectory started with a seed position.
Using landmarks. I understand landmarks can influence the generation of the map (especially if the weighting is varied), however can a visible / published landmark decrease the initial time taken to find a localization match?
I've experimented with the methods above to decrease the time taken to find a localization match without much success. Are these methods expected to decrease this time? Are there other ways of doing this?
Thanks