Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Load multiple non-overlapping maps #223

Open
1 of 2 tasks
ymd-stella opened this issue Dec 16, 2021 · 2 comments
Open
1 of 2 tasks

Load multiple non-overlapping maps #223

ymd-stella opened this issue Dec 16, 2021 · 2 comments
Assignees
Labels
enhancement New feature or request

Comments

@ymd-stella
Copy link
Contributor

ymd-stella commented Dec 16, 2021

See #188.

I'm thinking of loading a second map into map_database. (We also need to think about deleting unnecessary maps if we don't have enough free memory.)

Whether merging or loading dynamically, we need the relative poses (offsets) between multiple maps. The first question is how to calculate them. It may be enough to give a user-defined relative poses.

Next, we need to check if the system works fine when we load the second map into the map_database where we loaded the first map. If there are parts of the graph that are not connected, there may be a problem with some keyframe search. (See graph_node)

  • Load non-overlapping maps #380
  • Add a features to translate, rotate, or scale a map. It would be preferable to create another executable that only performs the map conversion.
@ymd-stella ymd-stella added the enhancement New feature or request label Dec 16, 2021
@ymd-stella ymd-stella changed the title Load second non-overlapping maps Load multiple non-overlapping maps Dec 16, 2021
@MartiBolet
Copy link

MartiBolet commented Dec 16, 2021

Hi @albertarla and I will try to implement it. The plan we made is:

  1. Create a function in 'system' which can load a new map to an existing 'map_db'.
    1.1 For value "cameras" the camera of the new map will be added to the existing.
    1.2 When trying to append the new 'keyframes' and 'landmarks', using 'keyframe_next_id' and 'landmark_next_id' of the existing map, shift the ids of the new map to not collapse with the ids of the old map. Note the 'id' must be changed in the key of "landmarks" and "keyframes", but also in the references of each 'keyframe' to 'lms_ids' and for each 'landmark' the if of 'ref_keyfrm'
    1.3 Increase the 'keyframe_next_id' to the new one of the new map and 'landmark_next_id'
  2. Function defined in step 1 takes an argument of the offset to be applied between the two maps.
    2.1 Apply this transformation for each 'keyframe' and to each 'landmark' of the new map. Transform the field of 'rot_cw' and 'trans_cw' for keyframes, and ''pos_w" for 'landmarks'.

What we don't know is how the two maps will interact, would the system localize in both maps or they have to be connected via graph?

@ymd-stella
Copy link
Contributor Author

What we don't know is how the two maps will interact, would the system localize in both maps or they have to be connected via graph?

I don't expect to access information about keyframes and landmarks that are not connected by graphs from the reference keyframe, except during loop closing. If the relocalization is successful, the rest of the process will be almost the same as usual.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants