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/.github/workflows/colcon.yml b/.github/workflows/colcon.yml new file mode 100644 index 000000000..c8afe1945 --- /dev/null +++ b/.github/workflows/colcon.yml @@ -0,0 +1,29 @@ +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} + - {image: "ubuntu:26.04", ros: lyrical} + + 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 }} 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** 分支。 diff --git a/orbbec_camera/CMakeLists.txt b/orbbec_camera/CMakeLists.txt index 9bde88d90..de2119b60 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) @@ -13,6 +13,8 @@ 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 @@ -26,6 +28,7 @@ set(dependencies camera_info_manager image_transport image_publisher + message_filters OpenCV orbbec_camera_msgs rclcpp @@ -52,6 +55,18 @@ 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(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) @@ -100,26 +115,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 @@ -140,15 +137,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 @@ -171,16 +169,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 @@ -207,24 +231,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 @@ -235,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}/) 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 b919592d0..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 @@ -1,6 +1,6 @@ -#include -#include -#include +#include +#include +#include #include #include @@ -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/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..5562c6f6d 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 @@ -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" @@ -73,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 06da63419..9f870638a 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 @@ -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" @@ -63,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 51af52e76..84f94f41b 100644 --- a/orbbec_camera/include/orbbec_camera/utils.h +++ b/orbbec_camera/include/orbbec_camera/utils.h @@ -17,14 +17,13 @@ #pragma once #include #include -#include +#include #include #include "libobsensor/ObSensor.hpp" #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/package.xml b/orbbec_camera/package.xml index b38780e16..8cf3d7333 100644 --- a/orbbec_camera/package.xml +++ b/orbbec_camera/package.xml @@ -14,10 +14,11 @@ backward_ros image_transport image_publisher + message_filters rclcpp_components cv_bridge camera_info_manager - orbbec_camera_msgs + orbbec_camera_msgs builtin_interfaces rclcpp sensor_msgs 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 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); 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 d54bfec83..0f9ca2a48 --- 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 @@ -451,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) { 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 { 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 { 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)