The reason is that in the CLI tool we use Rtabmap object to use the internal Rtabmap::detectMoreLoopClosures function. However, by doing so, it indirectly loads the whole visual vocabulary and all descriptors in RAM. Would need to check how to do the same without Rtabmap object, or having an option to create Rtabmap object without loading all visual descriptors on initialization.
|
Rtabmap rtabmap; |
|
printf("Initialization...\n"); |
|
uInsert(parameters, inputParams); |
|
rtabmap.init(parameters, dbPath); |
|
|
|
float xMin, yMin, cellSize; |
|
bool haveOptimizedMap = !rtabmap.getMemory()->load2DMap(xMin, yMin, cellSize).empty(); |
|
|
|
PrintProgressState progress; |
|
printf("Detecting...\n"); |
|
int detected = rtabmap.detectMoreLoopClosures(clusterRadiusMax, clusterAngle, iterations, intraSession, interSession, &progress, clusterRadiusMin); |
Original post: http://official-rtab-map-forum.206.s1.nabble.com/Matching-during-reprocessing-tp11148p11166.html
The reason is that in the CLI tool we use
Rtabmapobject to use the internalRtabmap::detectMoreLoopClosuresfunction. However, by doing so, it indirectly loads the whole visual vocabulary and all descriptors in RAM. Would need to check how to do the same withoutRtabmapobject, or having an option to createRtabmapobject without loading all visual descriptors on initialization.rtabmap/tools/DetectMoreLoopClosures/main.cpp
Lines 222 to 232 in 802b8f9
Original post: http://official-rtab-map-forum.206.s1.nabble.com/Matching-during-reprocessing-tp11148p11166.html