From a157ad20ee538bd18e8672c19c34584528504c57 Mon Sep 17 00:00:00 2001 From: Christian Rauch Date: Tue, 26 May 2026 11:14:39 +0200 Subject: [PATCH 01/16] colcon workflow --- .github/workflows/colcon.yml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .github/workflows/colcon.yml diff --git a/.github/workflows/colcon.yml b/.github/workflows/colcon.yml new file mode 100644 index 000000000..ad1f1d184 --- /dev/null +++ b/.github/workflows/colcon.yml @@ -0,0 +1,28 @@ +name: colcon + +on: [push, pull_request] + +jobs: + # build on Ubuntu docker images + build: + name: "${{ matrix.image }} (${{ matrix.ros }})" + + runs-on: ubuntu-latest + + strategy: + matrix: + include: + - {image: "ubuntu:22.04", ros: humble} + - {image: "ubuntu:24.04", ros: jazzy} + + container: + image: ${{ matrix.image }} + + steps: + - uses: actions/checkout@v6 + + - uses: ros-tooling/setup-ros@v0.7 + + - uses: ros-tooling/action-ros-ci@v0.4 + with: + target-ros2-distro: ${{ matrix.ros }} From 842ab626712f62caf5c791f45384eed9aae627ce Mon Sep 17 00:00:00 2001 From: Christian Rauch Date: Tue, 26 May 2026 11:35:08 +0200 Subject: [PATCH 02/16] update CMake requirements to 3.22 --- orbbec_camera/CMakeLists.txt | 2 +- orbbec_camera_msgs/CMakeLists.txt | 2 +- orbbec_description/CMakeLists.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/orbbec_camera/CMakeLists.txt b/orbbec_camera/CMakeLists.txt index 9bde88d90..e702fe840 100644 --- a/orbbec_camera/CMakeLists.txt +++ b/orbbec_camera/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.8) +cmake_minimum_required(VERSION 3.22) project(orbbec_camera) set(CMAKE_CXX_STANDARD 17) diff --git a/orbbec_camera_msgs/CMakeLists.txt b/orbbec_camera_msgs/CMakeLists.txt index 347f4ed78..fd229bb64 100644 --- a/orbbec_camera_msgs/CMakeLists.txt +++ b/orbbec_camera_msgs/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.8) +cmake_minimum_required(VERSION 3.22) project(orbbec_camera_msgs) if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") diff --git a/orbbec_description/CMakeLists.txt b/orbbec_description/CMakeLists.txt index 7fd8a452c..8310ce575 100644 --- a/orbbec_description/CMakeLists.txt +++ b/orbbec_description/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.5) +cmake_minimum_required(VERSION 3.22) project(orbbec_description) find_package(ament_cmake REQUIRED) From 7b34a8d9523cc93641a9939a5c9574c0301c6e10 Mon Sep 17 00:00:00 2001 From: Christian Rauch Date: Tue, 26 May 2026 13:29:15 +0200 Subject: [PATCH 03/16] add 'lyrical' to CI --- .github/workflows/colcon.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/colcon.yml b/.github/workflows/colcon.yml index ad1f1d184..c8afe1945 100644 --- a/.github/workflows/colcon.yml +++ b/.github/workflows/colcon.yml @@ -14,6 +14,7 @@ jobs: include: - {image: "ubuntu:22.04", ros: humble} - {image: "ubuntu:24.04", ros: jazzy} + - {image: "ubuntu:26.04", ros: lyrical} container: image: ${{ matrix.image }} From c5f744869b1d60377949658d63c72d13537acd80 Mon Sep 17 00:00:00 2001 From: Christian Rauch Date: Fri, 24 Jul 2026 10:15:37 +0200 Subject: [PATCH 04/16] update deprecated header --- .../multi_camera_time_sync/image_sync_example_node.cpp | 6 +++--- orbbec_camera/include/orbbec_camera/d2c_viewer.h | 8 ++++---- orbbec_camera/include/orbbec_camera/ob_camera_node.h | 10 +++++----- orbbec_camera/include/orbbec_camera/ob_lidar_node.h | 10 +++++----- orbbec_camera/include/orbbec_camera/utils.h | 2 +- orbbec_camera/tools/multi_save_rgbir.cpp | 6 +++--- orbbec_camera/tools/ob_benchmark.cpp | 6 +++--- orbbec_camera/tools/start_benchmark.cpp | 6 +++--- 8 files changed, 27 insertions(+), 27 deletions(-) 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 index b919592d0..cc27f3571 100644 --- 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 @@ -1,6 +1,6 @@ -#include -#include -#include +#include +#include +#include #include #include diff --git a/orbbec_camera/include/orbbec_camera/d2c_viewer.h b/orbbec_camera/include/orbbec_camera/d2c_viewer.h index 8912e1138..1bb366a2c 100644 --- a/orbbec_camera/include/orbbec_camera/d2c_viewer.h +++ b/orbbec_camera/include/orbbec_camera/d2c_viewer.h @@ -14,10 +14,10 @@ * limitations under the License. *******************************************************************************/ #pragma once -#include -#include -#include -#include +#include +#include +#include +#include #include #include diff --git a/orbbec_camera/include/orbbec_camera/ob_camera_node.h b/orbbec_camera/include/orbbec_camera/ob_camera_node.h index 366b65d94..68a3c3195 100644 --- a/orbbec_camera/include/orbbec_camera/ob_camera_node.h +++ b/orbbec_camera/include/orbbec_camera/ob_camera_node.h @@ -31,11 +31,11 @@ #include #include #include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include #include diff --git a/orbbec_camera/include/orbbec_camera/ob_lidar_node.h b/orbbec_camera/include/orbbec_camera/ob_lidar_node.h index 06da63419..932051551 100644 --- a/orbbec_camera/include/orbbec_camera/ob_lidar_node.h +++ b/orbbec_camera/include/orbbec_camera/ob_lidar_node.h @@ -31,11 +31,11 @@ #include #include #include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include #include diff --git a/orbbec_camera/include/orbbec_camera/utils.h b/orbbec_camera/include/orbbec_camera/utils.h index 51af52e76..b1b6da8da 100644 --- a/orbbec_camera/include/orbbec_camera/utils.h +++ b/orbbec_camera/include/orbbec_camera/utils.h @@ -17,7 +17,7 @@ #pragma once #include #include -#include +#include #include #include "libobsensor/ObSensor.hpp" diff --git a/orbbec_camera/tools/multi_save_rgbir.cpp b/orbbec_camera/tools/multi_save_rgbir.cpp index 5efa13be6..6496787ab 100644 --- a/orbbec_camera/tools/multi_save_rgbir.cpp +++ b/orbbec_camera/tools/multi_save_rgbir.cpp @@ -5,9 +5,9 @@ #include #include "orbbec_camera/ob_camera_node.h" #include "orbbec_camera_msgs/msg/metadata.hpp" -#include -#include -#include +#include +#include +#include #include #include #include diff --git a/orbbec_camera/tools/ob_benchmark.cpp b/orbbec_camera/tools/ob_benchmark.cpp index afc514d06..52022503c 100644 --- a/orbbec_camera/tools/ob_benchmark.cpp +++ b/orbbec_camera/tools/ob_benchmark.cpp @@ -3,9 +3,9 @@ #include #include #include "orbbec_camera_msgs/msg/metadata.hpp" -#include -#include -#include +#include +#include +#include #include namespace orbbec_camera { diff --git a/orbbec_camera/tools/start_benchmark.cpp b/orbbec_camera/tools/start_benchmark.cpp index 7295c205d..9b4740802 100644 --- a/orbbec_camera/tools/start_benchmark.cpp +++ b/orbbec_camera/tools/start_benchmark.cpp @@ -3,9 +3,9 @@ #include #include #include "orbbec_camera_msgs/msg/metadata.hpp" -#include -#include -#include +#include +#include +#include #include namespace orbbec_camera { From e01836930480db44110a0daee8540ffcbca04a14 Mon Sep 17 00:00:00 2001 From: Christian Rauch Date: Wed, 27 May 2026 13:32:34 +0200 Subject: [PATCH 05/16] ignore 'deprecated-declarations' --- orbbec_camera/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/orbbec_camera/CMakeLists.txt b/orbbec_camera/CMakeLists.txt index e702fe840..e1bf8b7d6 100644 --- a/orbbec_camera/CMakeLists.txt +++ b/orbbec_camera/CMakeLists.txt @@ -13,6 +13,7 @@ option(INSTALL_UDEV_RULES "Install udev rule for Orbbec cameras" ON) if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall -Wextra -Werror -Wno-pedantic -Wno-array-bounds) + add_compile_options(-Wno-error=deprecated-declarations) endif() # find dependencies From 75636938cc1b2fc3c0f31c744c8c978d881f95d0 Mon Sep 17 00:00:00 2001 From: Christian Rauch Date: Fri, 24 Jul 2026 10:18:42 +0200 Subject: [PATCH 06/16] 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 e1bf8b7d6..f497f989d 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 cc27f3571..aa8e838cb --- 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 d8a528023..0637f3f56 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 From 4fa2c29fb20ac5af4165ad6d51a864b33bcfaf70 Mon Sep 17 00:00:00 2001 From: Christian Rauch Date: Wed, 27 May 2026 13:08:33 +0200 Subject: [PATCH 07/16] update 'create_publisher' API --- orbbec_camera/CMakeLists.txt | 8 ++++++++ orbbec_camera/src/image_publisher.cpp | 14 +++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/orbbec_camera/CMakeLists.txt b/orbbec_camera/CMakeLists.txt index f497f989d..79ef78805 100644 --- a/orbbec_camera/CMakeLists.txt +++ b/orbbec_camera/CMakeLists.txt @@ -57,6 +57,14 @@ if(message_filters_VERSION VERSION_GREATER_EQUAL 5.0) add_compile_definitions(message_filters_QoS) endif() +if(image_transport_VERSION VERSION_GREATER_EQUAL 6.4) + add_compile_definitions(image_transport_NODE_INTERFACE) +endif() + +if(image_transport_VERSION VERSION_GREATER_EQUAL 6.4) + add_compile_definitions(image_transport_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/src/image_publisher.cpp b/orbbec_camera/src/image_publisher.cpp index a68d15134..7283cb8d9 100644 --- a/orbbec_camera/src/image_publisher.cpp +++ b/orbbec_camera/src/image_publisher.cpp @@ -36,7 +36,19 @@ image_transport_publisher::image_transport_publisher(rclcpp::Node& node, const std::string& topic_name, const rmw_qos_profile_t& qos) { image_publisher_impl = std::make_shared( - image_transport::create_publisher(&node, topic_name, qos)); + image_transport::create_publisher( +#ifdef image_transport_NODE_INTERFACE + image_transport::RequiredInterfaces{node}, +#else + &node, +#endif + topic_name, +#ifdef image_transport_QoS + rclcpp::QoS{rclcpp::QoSInitialization::from_rmw(qos), qos} +#else + qos +#endif + )); } void image_transport_publisher::publish(sensor_msgs::msg::Image::UniquePtr image_ptr) { image_publisher_impl->publish(*image_ptr); From 9837dfb024dbb74a86c59265d8060594c0624d17 Mon Sep 17 00:00:00 2001 From: Christian Rauch Date: Wed, 27 May 2026 16:34:38 +0200 Subject: [PATCH 08/16] remove unused header --- orbbec_camera/include/orbbec_camera/ob_camera_node.h | 1 - orbbec_camera/include/orbbec_camera/ob_lidar_node.h | 2 -- 2 files changed, 3 deletions(-) diff --git a/orbbec_camera/include/orbbec_camera/ob_camera_node.h b/orbbec_camera/include/orbbec_camera/ob_camera_node.h index 68a3c3195..a665be23d 100644 --- a/orbbec_camera/include/orbbec_camera/ob_camera_node.h +++ b/orbbec_camera/include/orbbec_camera/ob_camera_node.h @@ -52,7 +52,6 @@ #include "libobsensor/ObSensor.hpp" #include "orbbec_camera_msgs/msg/device_info.hpp" -#include "orbbec_camera_msgs/msg/depth_filter_param.hpp" #include "orbbec_camera_msgs/msg/depth_filter_state.hpp" #include "orbbec_camera_msgs/msg/depth_filters_status.hpp" #include "orbbec_camera_msgs/srv/get_device_config.hpp" diff --git a/orbbec_camera/include/orbbec_camera/ob_lidar_node.h b/orbbec_camera/include/orbbec_camera/ob_lidar_node.h index 932051551..80115989a 100644 --- a/orbbec_camera/include/orbbec_camera/ob_lidar_node.h +++ b/orbbec_camera/include/orbbec_camera/ob_lidar_node.h @@ -48,10 +48,8 @@ #include #include "libobsensor/ObSensor.hpp" -#include "orbbec_camera_msgs/msg/device_info.hpp" #include "orbbec_camera_msgs/srv/get_device_info.hpp" #include "orbbec_camera_msgs/msg/extrinsics.hpp" -#include "orbbec_camera_msgs/msg/metadata.hpp" #include "orbbec_camera_msgs/msg/imu_info.hpp" #include "orbbec_camera_msgs/srv/get_int32.hpp" #include "orbbec_camera_msgs/srv/get_string.hpp" From 217f4abee4d8564727af0724472dfced559c6702 Mon Sep 17 00:00:00 2001 From: Christian Rauch Date: Thu, 28 May 2026 11:29:47 +0200 Subject: [PATCH 09/16] require 'orbbec_camera_msgs' at version 2.8.6 or later --- orbbec_camera/package.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/orbbec_camera/package.xml b/orbbec_camera/package.xml index b38780e16..b0899b76e 100644 --- a/orbbec_camera/package.xml +++ b/orbbec_camera/package.xml @@ -17,7 +17,7 @@ rclcpp_components cv_bridge camera_info_manager - orbbec_camera_msgs + orbbec_camera_msgs builtin_interfaces rclcpp sensor_msgs From 293cd7bbb0c32a8087578ed3ed272ceaab1bb79e Mon Sep 17 00:00:00 2001 From: Christian Rauch Date: Wed, 10 Jun 2026 14:24:22 +0200 Subject: [PATCH 10/16] enable 'relro', 'now', and 'defs' to ensure that all symbols are resolved --- orbbec_camera/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/orbbec_camera/CMakeLists.txt b/orbbec_camera/CMakeLists.txt index 79ef78805..907c8a5cb 100644 --- a/orbbec_camera/CMakeLists.txt +++ b/orbbec_camera/CMakeLists.txt @@ -14,6 +14,7 @@ option(INSTALL_UDEV_RULES "Install udev rule for Orbbec cameras" ON) if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall -Wextra -Werror -Wno-pedantic -Wno-array-bounds) add_compile_options(-Wno-error=deprecated-declarations) + add_link_options("-Wl,-z,relro,-z,now,-z,defs") endif() # find dependencies From 8d34a65f8201bb6a6ecca4c3f7995687e4792c73 Mon Sep 17 00:00:00 2001 From: Christian Rauch Date: Tue, 26 May 2026 13:04:39 +0200 Subject: [PATCH 11/16] replace 'ament_target_dependencies' macro --- orbbec_camera/CMakeLists.txt | 110 ++++++++++++++++++++++++----------- 1 file changed, 76 insertions(+), 34 deletions(-) diff --git a/orbbec_camera/CMakeLists.txt b/orbbec_camera/CMakeLists.txt index 907c8a5cb..15fc98b61 100644 --- a/orbbec_camera/CMakeLists.txt +++ b/orbbec_camera/CMakeLists.txt @@ -114,26 +114,8 @@ set(COMMON_INCLUDE_DIRS $ ${ORBBEC_INCLUDE_DIR} ${OpenCV_INCLUDED_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/tools ) -set(COMMON_LIBRARIES - ${ORBBEC_SDK_LIBRARIES} - ${OpenCV_LIBS} - Eigen3::Eigen - -lOrbbecSDK - -L${ORBBEC_LIBS_DIR} - Threads::Threads - -lrt - -ldw - yaml-cpp - OpenSSL::Crypto +set(EXTRA_TARGETS ) -if(USE_RK_HW_DECODER) - list(APPEND COMMON_LIBRARIES ${RK_MPP_LIBRARIES} ${RGA_LIBRARIES}) - -endif() - -if(USE_NV_HW_DECODER) - list(APPEND COMMON_LIBRARIES ${NV_LIBRARIES}) -endif() set(SOURCE_FILES src/d2c_viewer.cpp @@ -154,15 +136,16 @@ if(USE_RK_HW_DECODER) add_definitions(-DUSE_RK_HW_DECODER) list(APPEND SOURCE_FILES src/rk_mpp_decoder.cpp) list(APPEND COMMON_INCLUDE_DIRS ${RK_MPP_INCLUDE_DIRS} ${RGA_INCLUDE_DIRS}) - list(APPEND COMMON_LIBRARIES ${RGA_LIBRARIES} ${RK_MPP_LIBRARIES}) + list(APPEND EXTRA_TARGETS ${RGA_LIBRARIES} ${RK_MPP_LIBRARIES}) if(NOT RGA_FOUND) - list(APPEND COMMON_LIBRARIES -lyuv) + list(APPEND EXTRA_TARGETS yuv) endif() endif() if(USE_NV_HW_DECODER) list(APPEND SOURCE_FILES src/jetson_nv_decoder.cpp) list(APPEND COMMON_INCLUDE_DIRS ${JETSON_MULTI_MEDIA_API_INCLUDE_DIR} ${LIBJPEG8B_INCLUDE_DIR}) + list(APPEND EXTRA_TARGETS ${NV_LIBRARIES}) # append jetson_multimedia_api source files list( APPEND @@ -185,16 +168,42 @@ endif() macro(add_orbbec_executable TARGET SOURCE) add_executable(${TARGET} ${SOURCE}) target_include_directories(${TARGET} PUBLIC ${COMMON_INCLUDE_DIRS}) - target_link_libraries(${TARGET} ${COMMON_LIBRARIES} ${PROJECT_NAME}) - ament_target_dependencies(${TARGET} ${dependencies}) + target_link_directories(${TARGET} PRIVATE + ${ORBBEC_LIBS_DIR} + ) + target_link_libraries(${TARGET} + ${OpenCV_LIBS} + ${PROJECT_NAME} + OrbbecSDK + yaml-cpp + ) endmacro() # Define library and nodes add_library(${PROJECT_NAME} SHARED ${SOURCE_FILES}) -ament_target_dependencies(${PROJECT_NAME} ${dependencies}) -target_include_directories(${PROJECT_NAME} PUBLIC ${COMMON_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} ${COMMON_LIBRARIES}) +target_include_directories(${PROJECT_NAME} PUBLIC ${COMMON_INCLUDE_DIRS} ${image_publisher_INCLUDE_DIRS}) +target_link_directories(${PROJECT_NAME} PRIVATE ${ORBBEC_LIBS_DIR}) +target_link_libraries(${PROJECT_NAME} + ${OpenCV_LIBS} + ${orbbec_camera_msgs_TARGETS} + ${sensor_msgs_TARGETS} + ${std_srvs_TARGETS} + ament_index_cpp::ament_index_cpp + camera_info_manager::camera_info_manager + cv_bridge::cv_bridge + diagnostic_updater::diagnostic_updater + Eigen3::Eigen + image_transport::image_transport + message_filters::message_filters + OpenSSL::Crypto + OrbbecSDK + rclcpp::rclcpp + rclcpp_components::component + tf2::tf2 + tf2_ros::tf2_ros + ${EXTRA_TARGETS} +) rclcpp_components_register_node( ${PROJECT_NAME} PLUGIN "orbbec_camera::OBCameraNodeDriver" EXECUTABLE orbbec_camera_node @@ -221,24 +230,57 @@ install( add_library(frame_latency SHARED tools/frame_latency.cpp) target_include_directories(frame_latency PUBLIC ${COMMON_INCLUDE_DIRS}) -target_link_libraries(frame_latency ${COMMON_LIBRARIES}) -ament_target_dependencies(frame_latency ${dependencies}) +target_link_libraries(frame_latency + ${orbbec_camera_msgs_TARGETS} + ${sensor_msgs_TARGETS} + ${tf2_msgs_TARGETS} + diagnostic_updater::diagnostic_updater + rclcpp::rclcpp + rclcpp_components::component +) rclcpp_components_register_node(frame_latency PLUGIN "orbbec_camera::FrameLatencyNode" EXECUTABLE frame_latency_node) add_library(start_benchmark SHARED tools/start_benchmark.cpp) -target_include_directories(start_benchmark PUBLIC ${COMMON_INCLUDE_DIRS}) -target_link_libraries(start_benchmark ${COMMON_LIBRARIES}) -ament_target_dependencies(start_benchmark ${dependencies}) +target_include_directories(start_benchmark PUBLIC ${COMMON_INCLUDE_DIRS} ${image_publisher_INCLUDE_DIRS}) +target_link_libraries(start_benchmark + ${OpenCV_LIBS} + ${orbbec_camera_msgs_TARGETS} + ${sensor_msgs_TARGETS} + ${std_srvs_TARGETS} + camera_info_manager::camera_info_manager + diagnostic_updater::diagnostic_updater + Eigen3::Eigen + image_transport::image_transport + rclcpp::rclcpp + rclcpp_components::component + tf2_ros::tf2_ros +) rclcpp_components_register_node( start_benchmark PLUGIN "orbbec_camera::tools::StartBenchmark" EXECUTABLE start_benchmark_node ) add_library(multi_save_rgbir SHARED tools/multi_save_rgbir.cpp src/utils.cpp) -target_include_directories(multi_save_rgbir PUBLIC ${COMMON_INCLUDE_DIRS}) -target_link_libraries(multi_save_rgbir ${COMMON_LIBRARIES}) -ament_target_dependencies(multi_save_rgbir ${dependencies}) +target_include_directories(multi_save_rgbir PUBLIC ${COMMON_INCLUDE_DIRS} ${image_publisher_INCLUDE_DIRS}) +target_link_directories(multi_save_rgbir PRIVATE ${ORBBEC_LIBS_DIR}) +target_link_libraries(multi_save_rgbir + ${OpenCV_LIBS} + ${orbbec_camera_msgs_TARGETS} + ${sensor_msgs_TARGETS} + ${std_srvs_TARGETS} + camera_info_manager::camera_info_manager + cv_bridge::cv_bridge + diagnostic_updater::diagnostic_updater + Eigen3::Eigen + image_transport::image_transport + OpenSSL::Crypto + OrbbecSDK + rclcpp::rclcpp + rclcpp_components::component + tf2::tf2 + tf2_ros::tf2_ros +) rclcpp_components_register_node( multi_save_rgbir PLUGIN "orbbec_camera::tools::MultiCameraSubscriber" EXECUTABLE multi_save_rgbir_node From b34de79e0d71dac36f6ad6e82fe98938e2f1a034 Mon Sep 17 00:00:00 2001 From: Christian Rauch Date: Mon, 29 Jun 2026 09:54:43 +0200 Subject: [PATCH 12/16] add 'message_filters' to list of dependencies --- orbbec_camera/CMakeLists.txt | 1 + orbbec_camera/package.xml | 1 + 2 files changed, 2 insertions(+) diff --git a/orbbec_camera/CMakeLists.txt b/orbbec_camera/CMakeLists.txt index 15fc98b61..3386c7416 100644 --- a/orbbec_camera/CMakeLists.txt +++ b/orbbec_camera/CMakeLists.txt @@ -28,6 +28,7 @@ set(dependencies camera_info_manager image_transport image_publisher + message_filters OpenCV orbbec_camera_msgs rclcpp diff --git a/orbbec_camera/package.xml b/orbbec_camera/package.xml index b0899b76e..8cf3d7333 100644 --- a/orbbec_camera/package.xml +++ b/orbbec_camera/package.xml @@ -14,6 +14,7 @@ backward_ros image_transport image_publisher + message_filters rclcpp_components cv_bridge camera_info_manager From 55ded4ec2e81705d7ae10969286baf859ea81097 Mon Sep 17 00:00:00 2001 From: Christian Rauch Date: Tue, 7 Jul 2026 08:34:22 +0200 Subject: [PATCH 13/16] remove references to 'foxy' from documentation --- .github/ISSUE_TEMPLATE/issue_template.md | 4 ++-- README.MD | 5 +---- README_CN.MD | 5 +---- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/issue_template.md b/.github/ISSUE_TEMPLATE/issue_template.md index 028465ee3..c67fc88f0 100644 --- a/.github/ISSUE_TEMPLATE/issue_template.md +++ b/.github/ISSUE_TEMPLATE/issue_template.md @@ -12,8 +12,8 @@ assignees: '' - CPU model (e.g., `13th Gen Intel® Core™ i7-13700 × 24`, `NVIDIA Jetson Orin`) - Memory size (e.g., `16GB`, `32GB`) - GPU model if available (e.g., `NVIDIA RTX 3060`, `Integrated GPU`) -- **Ubuntu Version**: Please provide the ubuntu version you are using (e.g., `ubuntu20.04`, `ubuntu22.04`, etc.) -- **ROS Version**: Please provide the version of ROS you are using (e.g., `ROS Noetic`, `ROS 2 Foxy`, etc.) +- **Ubuntu Version**: Please provide the ubuntu version you are using (e.g., `ubuntu22.04`, `ubuntu24.04`, etc.) +- **ROS Version**: Please provide the version of ROS you are using (e.g., `ROS 2 Humble`, etc.) - **Camera Model**: Please provide the model of camera you are using (e.g., `Femto Bolt`, `Gemini 335`, etc.) - **Firmware Version**: Please provide the firmware version you are using. - **Branch**: Please provide the branch you are using (e.g., `main`, `v2-main`) diff --git a/README.MD b/README.MD index 986b68e2a..246d11097 100644 --- a/README.MD +++ b/README.MD @@ -12,9 +12,6 @@ - - ROS Foxy - ROS Humble @@ -41,7 +38,7 @@ ## Introduction The **OrbbecSDK ROS2 Wrapper** provides seamless integration of Orbbec cameras with the ROS 2 ecosystem. - It supports ROS2 **Foxy**, **Humble**, and **Jazzy** distributions. + It supports ROS2 **Humble**, **Jazzy**, and **Lyrical** distributions. - Default branch: **v2-main** - For legacy **OpenNI** devices: use the **main** branch diff --git a/README_CN.MD b/README_CN.MD index 3bfd31904..c2d661d9f 100644 --- a/README_CN.MD +++ b/README_CN.MD @@ -12,9 +12,6 @@ - - ROS Foxy - ROS Humble @@ -40,7 +37,7 @@ ## 简介 -OrbbecSDK ROS2 Wrapper 提供 Orbbec 相机与 ROS 2 环境的无缝集成,支持 **ROS2 Foxy、Humble 和 Jazzy** 发行版。 +OrbbecSDK ROS2 Wrapper 提供 Orbbec 相机与 ROS 2 环境的无缝集成,支持 **ROS2 Humble 和 Jazzy** 发行版。 - 默认推荐使用 **v2-main** 分支。 - 对于旧的 **OpenNI** 设备(v2-main 不支持),请使用 **main** 分支。 From b7f967a24b456b68854301ddaffc3ce07d2b7a75 Mon Sep 17 00:00:00 2001 From: Christian Rauch Date: Fri, 24 Jul 2026 10:19:39 +0200 Subject: [PATCH 14/16] move 'magic_enum.hpp' to source files where required --- orbbec_camera/include/orbbec_camera/ob_camera_node.h | 1 - orbbec_camera/include/orbbec_camera/ob_lidar_node.h | 1 - orbbec_camera/include/orbbec_camera/utils.h | 1 - orbbec_camera/src/ob_camera_node.cpp | 1 + orbbec_camera/src/ob_lidar_node.cpp | 1 + orbbec_camera/src/rk_mpp_decoder.cpp | 1 - 6 files changed, 2 insertions(+), 4 deletions(-) diff --git a/orbbec_camera/include/orbbec_camera/ob_camera_node.h b/orbbec_camera/include/orbbec_camera/ob_camera_node.h index a665be23d..5562c6f6d 100644 --- a/orbbec_camera/include/orbbec_camera/ob_camera_node.h +++ b/orbbec_camera/include/orbbec_camera/ob_camera_node.h @@ -72,7 +72,6 @@ #include "orbbec_camera/constants.h" #include "orbbec_camera/dynamic_params.h" #include "orbbec_camera/d2c_viewer.h" -#include "magic_enum/magic_enum.hpp" #include "orbbec_camera/image_publisher.h" #include "orbbec_camera/fps_counter.hpp" #include "orbbec_camera/fps_delay_status.hpp" diff --git a/orbbec_camera/include/orbbec_camera/ob_lidar_node.h b/orbbec_camera/include/orbbec_camera/ob_lidar_node.h index 80115989a..9f870638a 100644 --- a/orbbec_camera/include/orbbec_camera/ob_lidar_node.h +++ b/orbbec_camera/include/orbbec_camera/ob_lidar_node.h @@ -61,7 +61,6 @@ #include "orbbec_camera/constants.h" #include "orbbec_camera/dynamic_params.h" #include "orbbec_camera/d2c_viewer.h" -#include "magic_enum/magic_enum.hpp" #include "orbbec_camera/image_publisher.h" #include #include diff --git a/orbbec_camera/include/orbbec_camera/utils.h b/orbbec_camera/include/orbbec_camera/utils.h index b1b6da8da..84f94f41b 100644 --- a/orbbec_camera/include/orbbec_camera/utils.h +++ b/orbbec_camera/include/orbbec_camera/utils.h @@ -24,7 +24,6 @@ #include "sensor_msgs/distortion_models.hpp" #include "sensor_msgs/msg/camera_info.hpp" #include "orbbec_camera_msgs/msg/extrinsics.hpp" -#include "magic_enum/magic_enum.hpp" #include #include #include diff --git a/orbbec_camera/src/ob_camera_node.cpp b/orbbec_camera/src/ob_camera_node.cpp index d54bfec83..4fc5726f5 100644 --- a/orbbec_camera/src/ob_camera_node.cpp +++ b/orbbec_camera/src/ob_camera_node.cpp @@ -27,6 +27,7 @@ #include #include #include +#include #include "orbbec_camera/utils.h" #include diff --git a/orbbec_camera/src/ob_lidar_node.cpp b/orbbec_camera/src/ob_lidar_node.cpp index 1fbb82573..0f3d2baa0 100644 --- a/orbbec_camera/src/ob_lidar_node.cpp +++ b/orbbec_camera/src/ob_lidar_node.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include "orbbec_camera/utils.h" #include diff --git a/orbbec_camera/src/rk_mpp_decoder.cpp b/orbbec_camera/src/rk_mpp_decoder.cpp index 353e149de..42bd2e863 100644 --- a/orbbec_camera/src/rk_mpp_decoder.cpp +++ b/orbbec_camera/src/rk_mpp_decoder.cpp @@ -16,7 +16,6 @@ #include "orbbec_camera/rk_mpp_decoder.h" #include -#include namespace orbbec_camera { From b7a1392bac9d9f5d02e8998cd663f91c1b5d4744 Mon Sep 17 00:00:00 2001 From: Christian Rauch Date: Tue, 7 Jul 2026 11:35:58 +0200 Subject: [PATCH 15/16] only install the 'orbbec_camera' headers --- orbbec_camera/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/orbbec_camera/CMakeLists.txt b/orbbec_camera/CMakeLists.txt index 3386c7416..de2119b60 100644 --- a/orbbec_camera/CMakeLists.txt +++ b/orbbec_camera/CMakeLists.txt @@ -292,7 +292,7 @@ install(TARGETS ${PROJECT_NAME} frame_latency start_benchmark multi_save_rgbir A LIBRARY DESTINATION lib RUNTIME DESTINATION bin ) -install(DIRECTORY include/ DESTINATION include) +install(DIRECTORY include/orbbec_camera DESTINATION include/orbbec_camera) install(DIRECTORY launch DESTINATION share/${PROJECT_NAME}/) install(DIRECTORY config DESTINATION share/${PROJECT_NAME}/) install(DIRECTORY examples DESTINATION share/${PROJECT_NAME}/) From 5c8051fb94163af5edf7571149a3cec312dec488 Mon Sep 17 00:00:00 2001 From: Christian Rauch Date: Fri, 24 Jul 2026 10:40:26 +0200 Subject: [PATCH 16/16] remove unused 'this' capture --- orbbec_camera/src/ob_camera_node.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) mode change 100644 => 100755 orbbec_camera/src/ob_camera_node.cpp diff --git a/orbbec_camera/src/ob_camera_node.cpp b/orbbec_camera/src/ob_camera_node.cpp old mode 100644 new mode 100755 index 4fc5726f5..0f9ca2a48 --- a/orbbec_camera/src/ob_camera_node.cpp +++ b/orbbec_camera/src/ob_camera_node.cpp @@ -452,8 +452,7 @@ void OBCameraNode::publishDepthFiltersStatus() { depth_filters_snapshot = depth_filter_list_; } - auto find_depth_filter = [&depth_filters_snapshot, - this](const std::string &filter_name) -> std::shared_ptr { + auto find_depth_filter = [&depth_filters_snapshot](const std::string &filter_name) -> std::shared_ptr { const auto normalized_name = normalizeDepthFilterName(filter_name); auto it = std::find_if(depth_filters_snapshot.begin(), depth_filters_snapshot.end(), [&normalized_name](const auto &filter) {