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/rtabmap_conversions/CMakeLists.txt b/rtabmap_conversions/CMakeLists.txt index 4dc41907..bb6aa06e 100644 --- a/rtabmap_conversions/CMakeLists.txt +++ b/rtabmap_conversions/CMakeLists.txt @@ -30,7 +30,7 @@ find_package(tf2_eigen REQUIRED) find_package(tf2_geometry_msgs REQUIRED) find_package(tf2_ros REQUIRED) -find_package(RTABMap 0.23.5 REQUIRED) +find_package(RTABMap 0.23.10 REQUIRED) # libraries SET(Libraries diff --git a/rtabmap_odom/src/RGBDOdometryNode.cpp b/rtabmap_odom/src/RGBDOdometryNode.cpp index 270d9ede..4a406446 100644 --- a/rtabmap_odom/src/RGBDOdometryNode.cpp +++ b/rtabmap_odom/src/RGBDOdometryNode.cpp @@ -71,7 +71,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 rclcpp::init(argc, argv); rclcpp::NodeOptions options; diff --git a/rtabmap_odom/src/StereoOdometryNode.cpp b/rtabmap_odom/src/StereoOdometryNode.cpp index 60a729ce..ce4385e7 100644 --- a/rtabmap_odom/src/StereoOdometryNode.cpp +++ b/rtabmap_odom/src/StereoOdometryNode.cpp @@ -71,7 +71,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 rclcpp::init(argc, argv); rclcpp::NodeOptions options; diff --git a/rtabmap_slam/src/CoreNode.cpp b/rtabmap_slam/src/CoreNode.cpp index d16aa4f1..b4a82302 100644 --- a/rtabmap_slam/src/CoreNode.cpp +++ b/rtabmap_slam/src/CoreNode.cpp @@ -29,6 +29,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "rclcpp/rclcpp.hpp" #include #include +#include +#ifdef RTABMAP_PYTHON +#include +#endif int main(int argc, char** argv) { @@ -81,6 +85,12 @@ int main(int argc, char** argv) arguments.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 + rclcpp::init(argc, argv); rclcpp::NodeOptions options; options.arguments(arguments); diff --git a/rtabmap_slam/src/CoreWrapper.cpp b/rtabmap_slam/src/CoreWrapper.cpp index c1fb75b8..d7b8aad0 100644 --- a/rtabmap_slam/src/CoreWrapper.cpp +++ b/rtabmap_slam/src/CoreWrapper.cpp @@ -3742,10 +3742,10 @@ void CoreWrapper::globalBundleAdjustmentCallback( 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;