This post was updated on .
Hi Mathieu,
thank you for creating and publishing such a sophisticated SLAM framework. I would like to merge multiple databases that do not contain overlapping areas but of which I know their relative poses. Additionally, some of the mapped rooms are quite similar (sometimes only one different furniture item), so that I fear that many wrong loop closures may happen. Manually removing all wrong loop closures after the first database generation does not appear to be feasible in my case. a) Is there a way to set fixed known constraints in advance, before automatic loop closure? I have thought about joining the databases as if they were recorded in a single session and manually adjusting odometry/pose constraints (e.g. adding offsets to a specific set of pose entries in the Node table), maybe also adding user/neighbor links (as mentioned in this topic) and then reprocessing the data set with "rtabmap-reprocess". Can you give an example/hint regarding where to make the necessary edits? b) Is there documentation for the database structure and contents? I have not been able to find much information and there seem to have been changes, e.g. in this version there are entries for "rot_variance" and "trans_variance" but in the current version there is only a BLOB entry called "information_matrix". Thank you very much in advance! Cheers, pakr |
Administrator
|
Well it was not possible before. I took some time to support adding manual constraints in this case in this commit (currently available only on devel branch). Here how it works after opening a database in rtabmap-databaseViewer:
1) Browse two frames of different sessions on which you want to add a constraint 2) In Constraints View panel, the Add button will be enabled if they are valid nodes, then click on Add 3) It will fail to find automatically the transform, you can now click on Yes on the error message to manually set the transform 4) This dialog will open: 5) Here I set approximately 90 degrees between the frames (the frames on left may switch to have the largest id on left) 6) Here another example showing the new constraint between the two sessions: For your second question b), your first link is like 4 years ago :P. We keep now the information matrix (6x6 double) for each link. The actual documentation of the database is this schema. In some cases, editing directly the database can be convenient, but in most cases DatabaseViewer is enough to modify general stuff. cheers, Mathieu |
Thank you for your support and adding the software feature to the database viewer!
I built the version from the devel branch and manually setting user links worked just fine. In addition, it also helped me with understanding the database, so that I was able to create a python script which automatically joins two databases and adds a user link. Maybe it can be useful for others, so here you go:
Here is a small example of how the result might look like (databases not optimized): Cheers, pakr |
Free forum by Nabble | Edit this page |