From 827f5d02d66c1661f6b9f805e22c4a3acc656aa4 Mon Sep 17 00:00:00 2001 From: matlabbe Date: Tue, 15 Nov 2016 12:18:00 -0500 Subject: [PATCH] rtabmap node: loading modified parameters in loaded database if not set already (in config.ini, ros params or arguments) --- src/CoreWrapper.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/CoreWrapper.cpp b/src/CoreWrapper.cpp index 6dcc94e6..e1060f20 100644 --- a/src/CoreWrapper.cpp +++ b/src/CoreWrapper.cpp @@ -54,6 +54,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include #ifdef WITH_OCTOMAP_ROS #ifdef RTABMAP_OCTOMAP @@ -351,6 +352,33 @@ void CoreWrapper::onInit() parameters_.insert(ParametersPair(Parameters::kGridFromDepth(), "false")); } + // modify default parameters with those in the database + if(!deleteDbOnStart) + { + ParametersMap dbParameters; + rtabmap::DBDriver * driver = rtabmap::DBDriver::create(); + if(driver->openConnection(databasePath_)) + { + dbParameters = driver->getLastParameters(); // parameter migration is already done + } + delete driver; + for(ParametersMap::iterator iter=dbParameters.begin(); iter!=dbParameters.end(); ++iter) + { + if(iter->first.compare(Parameters::kRtabmapWorkingDirectory()) == 0) + { + // ignore working directory + continue; + } + if(parameters_.find(iter->first) == parameters_.end() && + allParameters.find(iter->first) != allParameters.end() && + allParameters.find(iter->first)->second.compare(iter->second) !=0) + { + NODELET_INFO("Update RTAB-Map parameter \"%s\"=\"%s\" from database", iter->first.c_str(), iter->second.c_str()); + parameters_.insert(*iter); + } + } + } + // Add all other parameters (not copied if already exists) parameters_.insert(allParameters.begin(), allParameters.end());