From 6bb3f2630681dceac52bf30f69234b91854d0727 Mon Sep 17 00:00:00 2001 From: Bernd Pfrommer Date: Wed, 10 Jul 2024 18:03:55 -0400 Subject: [PATCH] work around compile error on Iron --- spinnaker_camera_driver/CMakeLists.txt | 11 ++++++++++- spinnaker_camera_driver/package.xml | 1 + .../src/spinnaker_wrapper_impl.cpp | 7 +++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/spinnaker_camera_driver/CMakeLists.txt b/spinnaker_camera_driver/CMakeLists.txt index 73c3f04f..f82e857e 100644 --- a/spinnaker_camera_driver/CMakeLists.txt +++ b/spinnaker_camera_driver/CMakeLists.txt @@ -65,6 +65,16 @@ message(STATUS "libSpinnaker include location: ${SPINNAKER_INCLUDE_DIRS}") find_package(SPINNAKER REQUIRED) +# special case the older Spinnaker API +if(DEFINED ENV{ROS_DISTRO}) + if($ENV{ROS_DISTRO} STREQUAL "foxy" OR + $ENV{ROS_DISTRO} STREQUAL "galactic") + add_definitions(-DUSE_OLD_SPINNAKER_API) + endif() +else() + message(FATAL_ERROR "ROS_DISTRO environment variable is not set!") +endif() + include_directories(SYSTEM ${SPINNAKER_INCLUDE_DIRS}) @@ -79,7 +89,6 @@ set(ROS_DEPENDENCIES "image_transport" "flir_camera_msgs") - # find dependencies find_package(ament_cmake REQUIRED) find_package(ament_cmake_ros REQUIRED) diff --git a/spinnaker_camera_driver/package.xml b/spinnaker_camera_driver/package.xml index f893b1d4..1c479eed 100644 --- a/spinnaker_camera_driver/package.xml +++ b/spinnaker_camera_driver/package.xml @@ -16,6 +16,7 @@ ament_cmake ament_cmake_ros + ros_environment python3-distro curl diff --git a/spinnaker_camera_driver/src/spinnaker_wrapper_impl.cpp b/spinnaker_camera_driver/src/spinnaker_wrapper_impl.cpp index 6d569028..e918a342 100644 --- a/spinnaker_camera_driver/src/spinnaker_wrapper_impl.cpp +++ b/spinnaker_camera_driver/src/spinnaker_wrapper_impl.cpp @@ -105,6 +105,12 @@ SpinnakerWrapperImpl::SpinnakerWrapperImpl() void SpinnakerWrapperImpl::refreshCameraList() { +#ifdef USE_OLD_SPINNAKER_API + cameraList_ = system_->GetCameras(); + for (size_t cam_idx = 0; cam_idx < cameraList_.GetSize(); cam_idx++) { + const auto cam = cameraList_[cam_idx]; + } +#else cameraList_.Clear(); Spinnaker::InterfaceList interfaceList = system_->GetInterfaces(); @@ -150,6 +156,7 @@ void SpinnakerWrapperImpl::refreshCameraList() } // end for interfaceList interfaceList.Clear(); +#endif } SpinnakerWrapperImpl::~SpinnakerWrapperImpl()