diff --git a/.github/workflows/industrial_ci_action.yml b/.github/workflows/industrial_ci_action.yml index e3636245..ee135e10 100644 --- a/.github/workflows/industrial_ci_action.yml +++ b/.github/workflows/industrial_ci_action.yml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - ROS_DISTRO: [humble] + ROS_DISTRO: [galactic, humble, iron] ROS_REP: [testing, main] env: CCACHE_DIR: "${{ github.workspace }}/.ccache" # directory for ccache (and how we enable ccache in industrial_ci) diff --git a/spinnaker_camera_driver/CMakeLists.txt b/spinnaker_camera_driver/CMakeLists.txt index d64e72f1..63396329 100644 --- a/spinnaker_camera_driver/CMakeLists.txt +++ b/spinnaker_camera_driver/CMakeLists.txt @@ -103,16 +103,9 @@ add_library(camera_driver SHARED src/genicam_utils.cpp ) -# ament_target_dependencies(camera_driver PUBLIC ${ROS_DEPENDENCIES}) +ament_target_dependencies(camera_driver PUBLIC ${ROS_DEPENDENCIES}) target_link_libraries(camera_driver PUBLIC - rclcpp::rclcpp - rclcpp_components::component - camera_info_manager::camera_info_manager - image_transport::image_transport - ${flir_camera_msgs_TARGETS} - ${sensor_msgs_TARGETS} - ${std_msgs_TARGETS} yaml-cpp PRIVATE Spinnaker::Spinnaker) diff --git a/spinnaker_camera_driver/cmake/DownloadSpinnaker.cmake b/spinnaker_camera_driver/cmake/DownloadSpinnaker.cmake index a1a734d3..5eb723c3 100644 --- a/spinnaker_camera_driver/cmake/DownloadSpinnaker.cmake +++ b/spinnaker_camera_driver/cmake/DownloadSpinnaker.cmake @@ -17,10 +17,9 @@ function(download_spinnaker FLIR_LIB_VAR FLIR_INCLUDE_DIR_VAR) message(FATAL_ERROR "Downloading libSpinnaker for non-linux systems not supported") endif() - #find_program(LSB_RELEASE_EXEC lsb_release REQUIRED) + find_program(LSB_RELEASE_EXEC lsb_release REQUIRED) execute_process( - #COMMAND ${LSB_RELEASE_EXEC} -cs - COMMAND /usr/bin/echo jammy + COMMAND ${LSB_RELEASE_EXEC} -cs OUTPUT_VARIABLE OS_CODE_NAME OUTPUT_STRIP_TRAILING_WHITESPACE) diff --git a/spinnaker_camera_driver/cmake/download_spinnaker b/spinnaker_camera_driver/cmake/download_spinnaker index 38c7a051..b000bf44 100755 --- a/spinnaker_camera_driver/cmake/download_spinnaker +++ b/spinnaker_camera_driver/cmake/download_spinnaker @@ -39,77 +39,137 @@ import glob logging.basicConfig(level=logging.INFO) -URL_TEMPLATE = URL_TEMPLATES = { - 'deb': 'https://packages.clearpathrobotics.com/stable/flir/Spinnaker/Ubuntu{version}/spinnaker-3.1.0.79-Ubuntu{version}-{arch}-pkg.tar.gz', - 'src': None # if we ever have non-deb archives that require manual extraction, those package URLS will go here. +URL_TEMPLATES = { + 'focal': { + 'deb': 'https://packages.clearpathrobotics.com/stable/flir/Spinnaker/Ubuntu{version}/spinnaker-2.2.0.48-Ubuntu{version}-{arch}-pkg.tar.gz', + 'src': None # if we ever have non-deb archives that require manual extraction, those package URLS will go here. + }, + 'jammy': { + 'deb': 'https://packages.clearpathrobotics.com/stable/flir/Spinnaker/Ubuntu{version}/spinnaker-3.1.0.79-Ubuntu{version}-{arch}-pkg.tar.gz', + 'src': None # if we ever have non-deb archives that require manual extraction, those package URLS will go here + } } ARCHS = { - 'x86_64': { - 'linux_arch': 'amd64', - 'current': '22.04', - 'type': 'deb', - 'folder_name': 'spinnaker-3.1.0.79-amd64', - 'shared_library': 'opt/spinnaker/lib/', - 'debs':[ - 'libgentl_3.1.0.79_amd64.deb', - 'libspinnaker_3.1.0.79_amd64.deb', - 'libspinnaker-c_3.1.0.79_amd64.deb', - 'libspinnaker-c-dev_3.1.0.79_amd64.deb', - 'libspinnaker-dev_3.1.0.79_amd64.deb', - 'libspinvideo_3.1.0.79_amd64.deb', - 'libspinvideo-c_3.1.0.79_amd64.deb', - 'libspinvideo-c-dev_3.1.0.79_amd64.deb', - 'libspinvideo-dev_3.1.0.79_amd64.deb', - 'spinnaker_3.1.0.79_amd64.deb', - 'spinnaker-doc_3.1.0.79_amd64.deb', - 'spinupdate_3.1.0.79_amd64.deb', - 'spinupdate-dev_3.1.0.79_amd64.deb', - 'spinview-qt_3.1.0.79_amd64.deb', - 'spinview-qt-dev_3.1.0.79_amd64.deb' - ] + 'focal': { + 'x86_64': { + 'linux_arch': 'amd64', + 'current': '20.04', + 'type': 'deb', + 'folder_name': 'spinnaker-2.2.0.48-amd64', + 'shared_library': 'opt/spinnaker/lib/', + 'debs':[ + 'libgentl_2.2.0.48_amd64.deb', + 'libspinnaker_2.2.0.48_amd64.deb', + 'libspinnaker-c_2.2.0.48_amd64.deb', + 'libspinnaker-c-dev_2.2.0.48_amd64.deb', + 'libspinnaker-dev_2.2.0.48_amd64.deb', + 'libspinvideo_2.2.0.48_amd64.deb', + 'libspinvideo-c_2.2.0.48_amd64.deb', + 'libspinvideo-c-dev_2.2.0.48_amd64.deb', + 'libspinvideo-dev_2.2.0.48_amd64.deb', + 'spinnaker_2.2.0.48_amd64.deb', + 'spinnaker-doc_2.2.0.48_amd64.deb', + 'spinupdate_2.2.0.48_amd64.deb', + 'spinupdate-dev_2.2.0.48_amd64.deb', + 'spinview-qt_2.2.0.48_amd64.deb', + 'spinview-qt-dev_2.2.0.48_amd64.deb' + ] + }, + 'armv8': { + 'linux_arch': 'arm64', + 'current': '20.04', + 'type': 'deb', + 'shared_library': 'opt/spinnaker/lib/', + 'folder_name': 'spinnaker-2.2.0.48-arm64', + 'debs': [ + 'libgentl_2.2.0.48_arm64.deb', + 'libspinnaker_2.2.0.48_arm64.deb', + 'libspinnaker-c_2.2.0.48_arm64.deb', + 'libspinnaker-c-dev_2.2.0.48_arm64.deb', + 'libspinnaker-dev_2.2.0.48_arm64.deb', + 'libspinvideo_2.2.0.48_arm64.deb', + 'libspinvideo-c_2.2.0.48_arm64.deb', + 'libspinvideo-c-dev_2.2.0.48_arm64.deb', + 'libspinvideo-dev_2.2.0.48_arm64.deb', + 'spinnaker_2.2.0.48_arm64.deb', + 'spinnaker-doc_2.2.0.48_arm64.deb', + 'spinupdate_2.2.0.48_arm64.deb', + 'spinupdate-dev_2.2.0.48_arm64.deb', + 'spinview-qt_2.2.0.48_arm64.deb', + 'spinview-qt-dev_2.2.0.48_arm64.deb' + ] + } }, - 'armv8': { - 'linux_arch': 'arm64', - 'current': '22.04', - 'type': 'deb', - 'shared_library': 'opt/spinnaker/lib/', - 'folder_name': 'spinnaker-3.1.0.79-arm64', - 'debs': [ - 'libgentl_3.1.0.79_arm64.deb', - 'libspinnaker_3.1.0.79_arm64.deb', - 'libspinnaker-c_3.1.0.79_arm64.deb', - 'libspinnaker-c-dev_3.1.0.79_arm64.deb', - 'libspinnaker-dev_3.1.0.79_arm64.deb', - 'libspinvideo_3.1.0.79_arm64.deb', - 'libspinvideo-c_3.1.0.79_arm64.deb', - 'libspinvideo-c-dev_3.1.0.79_arm64.deb', - 'libspinvideo-dev_3.1.0.79_arm64.deb', - 'spinnaker_3.1.0.79_arm64.deb', - 'spinnaker-doc_3.1.0.79_arm64.deb', - 'spinupdate_3.1.0.79_arm64.deb', - 'spinupdate-dev_3.1.0.79_arm64.deb', - 'spinview-qt_3.1.0.79_arm64.deb', - 'spinview-qt-dev_3.1.0.79_arm64.deb' - ] + 'jammy': { + 'x86_64': { + 'linux_arch': 'amd64', + 'type': 'deb', + 'folder_name': 'spinnaker-3.1.0.79-amd64', + 'shared_library': 'opt/spinnaker/lib/', + 'debs':[ + 'libgentl_3.1.0.79_amd64.deb', + 'libspinnaker_3.1.0.79_amd64.deb', + 'libspinnaker-c_3.1.0.79_amd64.deb', + 'libspinnaker-c-dev_3.1.0.79_amd64.deb', + 'libspinnaker-dev_3.1.0.79_amd64.deb', + 'libspinvideo_3.1.0.79_amd64.deb', + 'libspinvideo-c_3.1.0.79_amd64.deb', + 'libspinvideo-c-dev_3.1.0.79_amd64.deb', + 'libspinvideo-dev_3.1.0.79_amd64.deb', + 'spinnaker_3.1.0.79_amd64.deb', + 'spinnaker-doc_3.1.0.79_amd64.deb', + 'spinupdate_3.1.0.79_amd64.deb', + 'spinupdate-dev_3.1.0.79_amd64.deb', + 'spinview-qt_3.1.0.79_amd64.deb', + 'spinview-qt-dev_3.1.0.79_amd64.deb' + ] + }, + 'armv8': { + 'linux_arch': 'arm64', + 'type': 'deb', + 'shared_library': 'opt/spinnaker/lib/', + 'folder_name': 'spinnaker-3.1.0.79-arm64', + 'debs': [ + 'libgentl_3.1.0.79_arm64.deb', + 'libspinnaker_3.1.0.79_arm64.deb', + 'libspinnaker-c_3.1.0.79_arm64.deb', + 'libspinnaker-c-dev_3.1.0.79_arm64.deb', + 'libspinnaker-dev_3.1.0.79_arm64.deb', + 'libspinvideo_3.1.0.79_arm64.deb', + 'libspinvideo-c_3.1.0.79_arm64.deb', + 'libspinvideo-c-dev_3.1.0.79_arm64.deb', + 'libspinvideo-dev_3.1.0.79_arm64.deb', + 'spinnaker_3.1.0.79_arm64.deb', + 'spinnaker-doc_3.1.0.79_arm64.deb', + 'spinupdate_3.1.0.79_arm64.deb', + 'spinupdate-dev_3.1.0.79_arm64.deb', + 'spinview-qt_3.1.0.79_arm64.deb', + 'spinview-qt-dev_3.1.0.79_arm64.deb' + ] + } } } OS_LIBRARY_VERSION = { - 'jammy': 'current' + 'focal': '20.04', + 'jammy': '22.04', + 'noble': '24.04' } arch = sys.argv[1] destination_folder = sys.argv[2] os_code_name = sys.argv[3] + os_version = OS_LIBRARY_VERSION[os_code_name] -archive_url = URL_TEMPLATES[ARCHS[arch]['type']].format( - arch=ARCHS[arch]['linux_arch'], - version=ARCHS[arch][os_version]) -folder_name = ARCHS[arch]['folder_name'] -shared_library = ARCHS[arch]['shared_library'] +my_arch = ARCHS[os_code_name][arch] +archive_url = URL_TEMPLATES[os_code_name][my_arch['type']].format( + arch=my_arch['linux_arch'], + version=os_version) +folder_name = my_arch['folder_name'] +shared_library = my_arch['shared_library'] print("CPU architecture is %s", arch) diff --git a/spinnaker_camera_driver/include/spinnaker_camera_driver/camera.hpp b/spinnaker_camera_driver/include/spinnaker_camera_driver/camera.hpp index dcdb54ec..e3398f88 100644 --- a/spinnaker_camera_driver/include/spinnaker_camera_driver/camera.hpp +++ b/spinnaker_camera_driver/include/spinnaker_camera_driver/camera.hpp @@ -100,7 +100,9 @@ class Camera try { return (node_->declare_parameter(name, def)); } catch (const rclcpp::exceptions::ParameterAlreadyDeclaredException & e) { - return (node_->get_parameter_or(name, def)); + T value; + (void)node_->get_parameter_or(name, value, def); + return (value); } } diff --git a/spinnaker_camera_driver/package.xml b/spinnaker_camera_driver/package.xml index b79a98b3..f893b1d4 100644 --- a/spinnaker_camera_driver/package.xml +++ b/spinnaker_camera_driver/package.xml @@ -15,6 +15,7 @@ ament_cmake + ament_cmake_ros python3-distro curl diff --git a/spinnaker_synchronized_camera_driver/CMakeLists.txt b/spinnaker_synchronized_camera_driver/CMakeLists.txt index f3a30f12..5e6756d1 100644 --- a/spinnaker_synchronized_camera_driver/CMakeLists.txt +++ b/spinnaker_synchronized_camera_driver/CMakeLists.txt @@ -14,7 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -cmake_minimum_required(VERSION 3.20) +cmake_minimum_required(VERSION 3.16) project(spinnaker_synchronized_camera_driver) include(CMakePrintHelpers) diff --git a/spinnaker_synchronized_camera_driver/src/individual_exposure_controller.cpp b/spinnaker_synchronized_camera_driver/src/individual_exposure_controller.cpp index 458e1d1e..0fc3930a 100644 --- a/spinnaker_synchronized_camera_driver/src/individual_exposure_controller.cpp +++ b/spinnaker_synchronized_camera_driver/src/individual_exposure_controller.cpp @@ -249,6 +249,6 @@ void IndividualExposureController::addCamera( const std::shared_ptr & cam) { cameraName_ = cam->getName(); -}; +} } // namespace spinnaker_synchronized_camera_driver