From 38b45dca161cea224702e5afcb9d9475911b2b1d Mon Sep 17 00:00:00 2001 From: matlabbe Date: Thu, 6 Aug 2026 14:50:22 -0700 Subject: [PATCH] Update for rtabmap 0.23.10 (#1442) * Update for rtabmap 0.23.10 * fixing min version * Fixed PythonInterface compilation error * CI Added workflow_dispatch --- .github/workflows/docker.yml | 4 ++++ .github/workflows/noetic-pr.yml | 1 + rtabmap_conversions/CMakeLists.txt | 2 +- rtabmap_odom/src/RGBDICPOdometryNode.cpp | 4 +++- rtabmap_odom/src/RGBDOdometryNode.cpp | 4 +++- rtabmap_odom/src/StereoOdometryNode.cpp | 4 +++- rtabmap_slam/src/CoreNode.cpp | 9 +++++++++ rtabmap_slam/src/CoreWrapper.cpp | 4 ++-- 8 files changed, 26 insertions(+), 6 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index ab73b32e..0222175d 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -4,9 +4,13 @@ on: push: branches: - 'master' + workflow_dispatch: jobs: docker: + # Built and pushed only from master (push or manual dispatch), since it + # pushes the introlab3it/rtabmap_ros tags to Docker Hub. + if: github.ref == 'refs/heads/master' runs-on: ubuntu-latest strategy: diff --git a/.github/workflows/noetic-pr.yml b/.github/workflows/noetic-pr.yml index b984137f..710247cc 100644 --- a/.github/workflows/noetic-pr.yml +++ b/.github/workflows/noetic-pr.yml @@ -4,6 +4,7 @@ on: pull_request: branches: - 'master' + workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} diff --git a/rtabmap_conversions/CMakeLists.txt b/rtabmap_conversions/CMakeLists.txt index 01882399..69b06910 100644 --- a/rtabmap_conversions/CMakeLists.txt +++ b/rtabmap_conversions/CMakeLists.txt @@ -7,7 +7,7 @@ find_package(catkin REQUIRED COMPONENTS image_geometry rtabmap_msgs ) -find_package(RTABMap 0.23.5 REQUIRED) +find_package(RTABMap 0.23.10 REQUIRED) catkin_package( INCLUDE_DIRS include diff --git a/rtabmap_odom/src/RGBDICPOdometryNode.cpp b/rtabmap_odom/src/RGBDICPOdometryNode.cpp index e86c8139..fe6bb7ac 100644 --- a/rtabmap_odom/src/RGBDICPOdometryNode.cpp +++ b/rtabmap_odom/src/RGBDICPOdometryNode.cpp @@ -73,7 +73,9 @@ int main(int argc, char **argv) } #ifdef RTABMAP_PYTHON - rtabmap::PythonInterface pythonInterface; + // Initialize the embedded python interpreter on the main thread, as + // the nodelet below is loaded in a worker thread. + rtabmap::PythonInterface::instance("rgbdicp_odometry"); #endif nodelet::Loader nodelet; diff --git a/rtabmap_odom/src/RGBDOdometryNode.cpp b/rtabmap_odom/src/RGBDOdometryNode.cpp index b3d9462e..60c081c3 100644 --- a/rtabmap_odom/src/RGBDOdometryNode.cpp +++ b/rtabmap_odom/src/RGBDOdometryNode.cpp @@ -73,7 +73,9 @@ int main(int argc, char **argv) } #ifdef RTABMAP_PYTHON - rtabmap::PythonInterface pythonInterface; + // Initialize the embedded python interpreter on the main thread, as + // the nodelet below is loaded in a worker thread. + rtabmap::PythonInterface::instance("rgbd_odometry"); #endif nodelet::Loader nodelet; diff --git a/rtabmap_odom/src/StereoOdometryNode.cpp b/rtabmap_odom/src/StereoOdometryNode.cpp index 8d6fc219..4d468e12 100644 --- a/rtabmap_odom/src/StereoOdometryNode.cpp +++ b/rtabmap_odom/src/StereoOdometryNode.cpp @@ -74,7 +74,9 @@ int main(int argc, char **argv) } #ifdef RTABMAP_PYTHON - rtabmap::PythonInterface pythonInterface; + // Initialize the embedded python interpreter on the main thread, as + // the nodelet below is loaded in a worker thread. + rtabmap::PythonInterface::instance("stereo_odometry"); #endif nodelet::Loader nodelet; diff --git a/rtabmap_slam/src/CoreNode.cpp b/rtabmap_slam/src/CoreNode.cpp index 0d47805e..bdaf58ca 100644 --- a/rtabmap_slam/src/CoreNode.cpp +++ b/rtabmap_slam/src/CoreNode.cpp @@ -32,6 +32,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#ifdef RTABMAP_PYTHON +#include +#endif #include "nodelet/loader.h" int main(int argc, char** argv) @@ -88,6 +91,12 @@ int main(int argc, char** argv) nargv.push_back(argv[i]); } +#ifdef RTABMAP_PYTHON + // Initialize the embedded python interpreter on the main thread, as + // the nodelet below is loaded in a worker thread. + rtabmap::PythonInterface::instance("rtabmap"); +#endif + nodelet::Loader nodelet; nodelet::M_string remap(ros::names::getRemappings()); std::string nodelet_name = ros::this_node::getName(); diff --git a/rtabmap_slam/src/CoreWrapper.cpp b/rtabmap_slam/src/CoreWrapper.cpp index f6eeeae6..85a0fb75 100644 --- a/rtabmap_slam/src/CoreWrapper.cpp +++ b/rtabmap_slam/src/CoreWrapper.cpp @@ -3332,10 +3332,10 @@ bool CoreWrapper::globalBundleAdjustmentCallback(rtabmap_msgs::GlobalBundleAdjus UTimer timer; int optimizer = (int)Optimizer::kTypeG2O; // g2o int iterations = Parameters::defaultOptimizerIterations(); - float pixelVariance = Parameters::defaultg2oPixelVariance(); + float pixelVariance = Parameters::defaultOptimizerPixelVariance(); bool rematchFeatures = true; Parameters::parse(parameters_, Parameters::kOptimizerIterations(), iterations); - Parameters::parse(parameters_, Parameters::kg2oPixelVariance(), pixelVariance); + Parameters::parse(parameters_, Parameters::kOptimizerPixelVariance(), pixelVariance); if(req.type == 1.0f) { optimizer = (int)Optimizer::kTypeCVSBA;