mirror of
https://github.com/introlab/rtabmap_ros.git
synced 2026-10-03 16:27:46 +08:00
rtabmap node: loading modified parameters in loaded database if not set already (in config.ini, ros params or arguments)
This commit is contained in:
@@ -54,6 +54,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
#include <rtabmap/core/OdometryEvent.h>
|
#include <rtabmap/core/OdometryEvent.h>
|
||||||
#include <rtabmap/core/Version.h>
|
#include <rtabmap/core/Version.h>
|
||||||
#include <rtabmap/core/OccupancyGrid.h>
|
#include <rtabmap/core/OccupancyGrid.h>
|
||||||
|
#include <rtabmap/core/DBDriver.h>
|
||||||
|
|
||||||
#ifdef WITH_OCTOMAP_ROS
|
#ifdef WITH_OCTOMAP_ROS
|
||||||
#ifdef RTABMAP_OCTOMAP
|
#ifdef RTABMAP_OCTOMAP
|
||||||
@@ -351,6 +352,33 @@ void CoreWrapper::onInit()
|
|||||||
parameters_.insert(ParametersPair(Parameters::kGridFromDepth(), "false"));
|
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)
|
// Add all other parameters (not copied if already exists)
|
||||||
parameters_.insert(allParameters.begin(), allParameters.end());
|
parameters_.insert(allParameters.begin(), allParameters.end());
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user