From 75636938cc1b2fc3c0f31c744c8c978d881f95d0 Mon Sep 17 00:00:00 2001 From: Christian Rauch Date: Fri, 24 Jul 2026 10:18:42 +0200 Subject: [PATCH] use newer 'message_filters::Subscriber' constructor API --- orbbec_camera/CMakeLists.txt | 4 ++++ .../image_sync_example_node.cpp | 8 +++++++- orbbec_camera/src/d2c_viewer.cpp | 16 ++++++++++++++-- 3 files changed, 25 insertions(+), 3 deletions(-) mode change 100644 => 100755 orbbec_camera/examples/multi_camera_time_sync/image_sync_example_node.cpp diff --git a/orbbec_camera/CMakeLists.txt b/orbbec_camera/CMakeLists.txt index e1bf8b7d..f497f989 100644 --- a/orbbec_camera/CMakeLists.txt +++ b/orbbec_camera/CMakeLists.txt @@ -53,6 +53,10 @@ endforeach() find_package(PkgConfig REQUIRED) find_package(OpenSSL REQUIRED) +if(message_filters_VERSION VERSION_GREATER_EQUAL 5.0) + add_compile_definitions(message_filters_QoS) +endif() + if(USE_RK_HW_DECODER) pkg_search_module(RK_MPP REQUIRED rockchip_mpp) if(NOT RK_MPP_FOUND) diff --git a/orbbec_camera/examples/multi_camera_time_sync/image_sync_example_node.cpp b/orbbec_camera/examples/multi_camera_time_sync/image_sync_example_node.cpp old mode 100644 new mode 100755 index cc27f357..aa8e838c --- a/orbbec_camera/examples/multi_camera_time_sync/image_sync_example_node.cpp +++ b/orbbec_camera/examples/multi_camera_time_sync/image_sync_example_node.cpp @@ -79,13 +79,19 @@ class ImageSyncNode : public rclcpp::Node { rclcpp::QoS qos{rclcpp::KeepLast(queue_size_)}; qos.reliable(); +#ifdef message_filters_QoS + const rclcpp::QoS qos_prof = qos; +#else + const rmw_qos_profile_t qos_prof = qos.get_rmw_qos_profile(); +#endif + if (sync_topics_.size() == 1) { single_sub_ = this->create_subscription( sync_topics_.front(), qos, [this](const ImageConstPtr msg) { this->handle_synced_images({msg}); }); } else { for (size_t i = 0; i < sync_topics_.size(); ++i) { - subscribers_[i].subscribe(this, sync_topics_[i], qos.get_rmw_qos_profile()); + subscribers_[i].subscribe(this, sync_topics_[i], qos_prof); } create_synchronizer(); } diff --git a/orbbec_camera/src/d2c_viewer.cpp b/orbbec_camera/src/d2c_viewer.cpp index d8a52802..0637f3f5 100644 --- a/orbbec_camera/src/d2c_viewer.cpp +++ b/orbbec_camera/src/d2c_viewer.cpp @@ -30,9 +30,21 @@ D2CViewer::D2CViewer(rclcpp::Node* const node, rmw_qos_profile_t rgb_qos, rmw_qos_profile_t depth_qos, bool use_intra_process) : node_(node), logger_(rclcpp::get_logger("d2c_viewer")), is_active_(true) { rgb_sub_ = std::make_shared>( - node_, "color/image_raw", rgb_qos); + node_, "color/image_raw", +#ifdef message_filters_QoS + rclcpp::QoS{rclcpp::QoSInitialization::from_rmw(rgb_qos), rgb_qos} +#else + rgb_qos +#endif + ); depth_sub_ = std::make_shared>( - node_, "depth/image_raw", depth_qos); + node_, "depth/image_raw", +#ifdef message_filters_QoS + rclcpp::QoS{rclcpp::QoSInitialization::from_rmw(depth_qos), depth_qos} +#else + depth_qos +#endif + ); sync_ = std::make_shared>(MySyncPolicy(10), *rgb_sub_, *depth_sub_); sync_->setMaxIntervalDuration(rclcpp::Duration::from_seconds(1.0)); // 1s