introlab / rtabmap

RTAB-Map library and standalone application
https://introlab.github.io/rtabmap
Other
2.6k stars 761 forks source link

IOS "append" function #1303

Open EvanZhang0710 opened 1 week ago

EvanZhang0710 commented 1 week ago

I understand that the IOS rtabmap uses loop detection to realize the "append" function. I want to play around with the "append" function and integrate new features into it. However, I am kind of confused about which file and which code chunk specifically implements this. Any suggestions?

Thanks!

matlabbe commented 5 days ago

The "append" mode is implicitly handled with the loop closure detector and by setting Rtabmap/StartNewMapOnLoopClosure parameter to true (set here for mobile apps) to avoid adding new data to database before a loop closure is accepted with a previous map inside it. For each new image, we update the Bayes filter for loop closure detection, and in case of Append mode, we aggressively try to close the loop on the highest hypothesis (on the mobile app _aggressiveLoopThr is zero): https://github.com/introlab/rtabmap/blob/1ab0133f140a7de6c9e4b077bb9d5bdf82bf5942/corelib/src/Rtabmap.cpp#L2123-L2125

Computation of the loop closure constraint happens here: https://github.com/introlab/rtabmap/blob/1ab0133f140a7de6c9e4b077bb9d5bdf82bf5942/corelib/src/Rtabmap.cpp#L3007-L3025

If a constraint is found, rtabmap will start to appends new data to the database, otherwise the new image is discarded: https://github.com/introlab/rtabmap/blob/1ab0133f140a7de6c9e4b077bb9d5bdf82bf5942/corelib/src/Rtabmap.cpp#L4243-L4253