Error in append mode: Descriptors (size=32) are not the same size as already added words in dictionary(size=64)
I'm encountering an issue while trying to merge multiple .db files using the -a (append) mode in rtabmap-reprocess.
Here is the command I used:
rtabmap-reprocess -a "session1.db;session2.db" merged.db
However, I receive the following error during processing of the second database:
[ERROR] VWDictionary.cpp:789::addNewWords() Descriptors (size=32) are not the same size as already added words in dictionary(size=64)
Any guidance would be greatly appreciated!
Thanks!
It looks like the databases don't have the same features. The easiest way to recover is to ignore features in the databases and re-extract them. To do so, launch with --Mem/UseOdomFeatures set to false:
rtabmap-reprocess -a --Mem/UseOdomFeatures false "session1.db;session2.db" merged.db
cheers, Mathieu
Hi,
I tried setting --Mem/UseOdomFeatures false, but I'm still encountering the same error:
[ERROR] VWDictionary.cpp:789::addNewWords() Descriptors (size=32) are not the same size as already added words in dictionary(size=64)
Additionally, I have a question regarding merging multiple database files without using the -a (append) mode. When I use rtabmap-reprocess to merge two databases that were recorded simultaneously (e.g., database1.db and database2.db), I noticed that frames with very similar timestamps are overwritten, and the final merged.db only retains data from the later file (e.g., database2.db).
My goal is to preserve all data from all input databases, even if some frames have nearly identical timestamps. Is there a way to do this reliably with rtabmap-reprocess, or would I need to preprocess the databases to offset their timestamps manually before merging?
Thanks!
Can you show the terminal output with "--uwarn" argument? I suspect that the computer on which you are reprocessing doesn't have access to same features that were recorded in the original databases.
Don't use -a to make sure the same features are extracted, in case your computer doesn't support the ones in the first database.
You should be able to merge two databases with similar stamps (in the past or future, in any order). I copy/pasted one database on a different name, then appended the second one to the other, it works (they have exact same stamps). Only thing that could block this is if Mem/GenerateIds is false (true by default), in which case you would see errors that same ID already exists.
As an example, in this paper, we re-processed sessions taken a different time in all possible combinations to create the similarity matrix.