From bd43cebd583e26b2365c840b8e05fe0b0c3086ca Mon Sep 17 00:00:00 2001 From: Michael Ripperger Date: Mon, 17 Jun 2024 14:49:29 -0500 Subject: [PATCH 1/2] Run CI on Ubuntu Noble --- .github/workflows/ubuntu.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 9dfff1fe..c9143df1 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -19,7 +19,7 @@ jobs: strategy: fail-fast: false matrix: - distro: [focal, jammy] + distro: [focal, jammy, noble] container: image: ubuntu:${{ matrix.distro }} env: @@ -30,11 +30,11 @@ jobs: with: path: target_ws/src - name: Build - uses: tesseract-robotics/colcon-action@v6 + uses: tesseract-robotics/colcon-action@v9 with: ccache-enabled: false rosdep-enabled: true - ros-enabled: false + add-ros-ppa: true vcs-file: dependencies.repos target-path: target_ws/src target-args: '-DCMAKE_BUILD_TYPE=Debug -DINDUSTRIAL_CALIBRATION_ENABLE_TESTING=ON -DINDUSTRIAL_CALIBRATION_ENABLE_RUN_TESTING=OFF -DINDUSTRIAL_CALIBRATION_ENABLE_CLANG_TIDY=ON' From 24f7cbf6baef3d5ab3a4eafc2f379684755d315b Mon Sep 17 00:00:00 2001 From: Michael Ripperger Date: Thu, 18 Jul 2024 14:57:19 -0500 Subject: [PATCH 2/2] Update to support Ceres versions >= 2.1.0 --- .../dh_chain_kinematic_calibration_cost.h | 6 ++++++ .../optimizations/local_parameterization.h | 12 ++++++++++++ test/local_parameterization_utest.cpp | 16 ++++++++++++++++ 3 files changed, 34 insertions(+) diff --git a/optimizations/include/industrial_calibration/optimizations/dh_chain_kinematic_calibration_cost.h b/optimizations/include/industrial_calibration/optimizations/dh_chain_kinematic_calibration_cost.h index 17648a9e..e211d41b 100644 --- a/optimizations/include/industrial_calibration/optimizations/dh_chain_kinematic_calibration_cost.h +++ b/optimizations/include/industrial_calibration/optimizations/dh_chain_kinematic_calibration_cost.h @@ -5,6 +5,8 @@ #include #include +#include +#define CERES_VERSION_LT_2_1 (CERES_VERSION_MAJOR < 2 || (CERES_VERSION_MAJOR == 2 && CERES_VERSION_MINOR < 1)) #include namespace industrial_calibration @@ -280,7 +282,11 @@ class DualDHChainMeasurementCost : public DualDHChainCost T rot_diff = Eigen::Quaternion(camera_to_target_measured_.cast().linear()) .angularDistance(Eigen::Quaternion(camera_to_target.linear())); +#if CERES_VERSION_LT_2_1 residual[3] = ceres::IsNaN(rot_diff) ? T(0.0) : T(orientation_weight_) * rot_diff; +#else + residual[3] = ceres::isnan(rot_diff) ? T(0.0) : T(orientation_weight_) * rot_diff; +#endif return true; } diff --git a/optimizations/include/industrial_calibration/optimizations/local_parameterization.h b/optimizations/include/industrial_calibration/optimizations/local_parameterization.h index 59fb9548..8305b263 100644 --- a/optimizations/include/industrial_calibration/optimizations/local_parameterization.h +++ b/optimizations/include/industrial_calibration/optimizations/local_parameterization.h @@ -4,7 +4,14 @@ #include #include +#include + +#define CERES_VERSION_LT_2_1 (CERES_VERSION_MAJOR < 2 || (CERES_VERSION_MAJOR == 2 && CERES_VERSION_MINOR < 1)) +#if CERES_VERSION_LT_2_1 #include +#else +#include +#endif #include // Ceres Solver - A fast non-linear least squares minimizer @@ -127,8 +134,13 @@ void addSubsetParameterization(ceres::Problem& problem, const std::map> mask; EXPECT_NO_THROW(addSubsetParameterization(problem, mask)); // An empty mask should not have added any local parameterization +#if CERES_VERSION_LT_2_1 EXPECT_EQ(problem.GetParameterization(params.data()), nullptr); +#else + EXPECT_EQ(problem.GetManifold(params.data()), nullptr); +#endif } // Hold the zero-th row constant @@ -73,7 +85,11 @@ TEST(LocalParameterizationTests, SubsetParameterization) mask[params.data()].push_back(i * params.rows()); } EXPECT_NO_THROW(addSubsetParameterization(problem, mask)); +#if CERES_VERSION_LT_2_1 EXPECT_NE(problem.GetParameterization(params.data()), nullptr); +#else + EXPECT_NE(problem.GetManifold(params.data()), nullptr); +#endif } // Solve the optimization