From 70ddb3fc839394a5b440fee56f1877c508d6b9ea Mon Sep 17 00:00:00 2001 From: matlabbe Date: Sat, 22 Mar 2025 21:09:28 -0700 Subject: [PATCH] Fixed occupancy grid reset in localization mode when we update parameters live, losing optimized map if we had one. --- rtabmap_slam/src/CoreWrapper.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/rtabmap_slam/src/CoreWrapper.cpp b/rtabmap_slam/src/CoreWrapper.cpp index d0d57ebc..80a16b7c 100644 --- a/rtabmap_slam/src/CoreWrapper.cpp +++ b/rtabmap_slam/src/CoreWrapper.cpp @@ -922,7 +922,10 @@ CoreWrapper::CoreWrapper(const rclcpp::NodeOptions & options) : RCLCPP_INFO(this->get_logger(), "RTAB-Map rate detection = %f Hz", rate_); } rtabmap_.parseParameters(parameters_); - mapsManager_.setParameters(parameters_); + // Don't reset map in localization mode + if(rtabmap_.getMemory()->isIncremental()) { + mapsManager_.setParameters(parameters_); + } } }; @@ -2971,7 +2974,10 @@ void CoreWrapper::updateRtabmapCallback( RCLCPP_INFO(get_logger(), "2D mapping = %s", twoDMapping_?"true":"false"); } rtabmap_.parseParameters(parameters_); - mapsManager_.setParameters(parameters_); + // Don't reset map in localization mode + if(rtabmap_.getMemory()->isIncremental()) { + mapsManager_.setParameters(parameters_); + } } void CoreWrapper::resetRtabmapCallback(