From 3d7c95616796d218d859577c6afef64db11e6799 Mon Sep 17 00:00:00 2001 From: Sofiia Sarana Date: Fri, 4 Apr 2025 20:00:56 +0100 Subject: [PATCH] grid_map: fix compile issues with ROS2 - include correct header files for `cv_bridge`; - updated CMake files to properly add dependencies; - updated CMake to add definitions for `eigen` plugins correctly; - add dependency on `grid_map_core` for demos and rviz plugin; - corrected outdated use of `send_timestamp` in ROS converter; --- grid_map_core/CMakeLists.txt | 15 ++++++++++----- grid_map_core/cmake/grid_map_core-extras.cmake | 4 ++-- grid_map_cv/CMakeLists.txt | 11 +++-------- .../include/grid_map_cv/GridMapCvConverter.hpp | 2 +- .../include/grid_map_cv/GridMapCvProcessing.hpp | 2 +- grid_map_cv/test/GridMapCvProcessingTest.cpp | 2 +- grid_map_cv/test/GridMapCvTest.cpp | 2 +- grid_map_demos/CMakeLists.txt | 1 + grid_map_demos/src/opencv_demo_node.cpp | 2 +- .../include/grid_map_ros/GridMapRosConverter.hpp | 2 +- grid_map_ros/src/GridMapRosConverter.cpp | 2 +- grid_map_ros/test/GridMapRosTest.cpp | 2 +- grid_map_rviz_plugin/CMakeLists.txt | 4 +++- 13 files changed, 27 insertions(+), 24 deletions(-) diff --git a/grid_map_core/CMakeLists.txt b/grid_map_core/CMakeLists.txt index cbf8ff5da..d7ddac272 100644 --- a/grid_map_core/CMakeLists.txt +++ b/grid_map_core/CMakeLists.txt @@ -5,8 +5,7 @@ project(grid_map_core) find_package(ament_cmake REQUIRED) find_package(grid_map_cmake_helpers REQUIRED) -## Define Eigen addons. -include(cmake/${PROJECT_NAME}-extras.cmake) + ## System dependencies are found with CMake's conventions find_package(Eigen3 REQUIRED) @@ -35,6 +34,9 @@ add_library(${PROJECT_NAME} src/iterators/SlidingWindowIterator.cpp ) +## Define Eigen addons. +include(cmake/${PROJECT_NAME}-extras.cmake) + ## Specify additional locations of header files target_include_directories(${PROJECT_NAME} PUBLIC @@ -70,6 +72,11 @@ install( DESTINATION share/${PROJECT_NAME} ) +install(FILES + cmake/${PROJECT_NAME}-extras.cmake + DESTINATION share/${PROJECT_NAME}/cmake +) + ############# ## Testing ## ############# @@ -127,6 +134,4 @@ endif() ament_export_targets(export_${PROJECT_NAME} HAS_LIBRARY_TARGET) ament_export_dependencies(Eigen3) -ament_package(CONFIG_EXTRAS - cmake/${PROJECT_NAME}-extras.cmake -) +ament_package() \ No newline at end of file diff --git a/grid_map_core/cmake/grid_map_core-extras.cmake b/grid_map_core/cmake/grid_map_core-extras.cmake index dd4089d4e..6f0c0c420 100644 --- a/grid_map_core/cmake/grid_map_core-extras.cmake +++ b/grid_map_core/cmake/grid_map_core-extras.cmake @@ -4,7 +4,7 @@ if(EIGEN_FUNCTORS_PLUGIN) message(FATAL_ERROR "EIGEN_FUNCTORS_PLUGIN already defined") endif() else() - add_definitions(-DEIGEN_FUNCTORS_PLUGIN=\"${EIGEN_FUNCTORS_PLUGIN_PATH}\") + target_compile_definitions(grid_map_core PUBLIC EIGEN_FUNCTORS_PLUGIN=\"${EIGEN_FUNCTORS_PLUGIN_PATH}\") endif() set(EIGEN_DENSEBASE_PLUGIN_PATH "grid_map_core/eigen_plugins/DenseBasePlugin.hpp") @@ -13,5 +13,5 @@ if(EIGEN_DENSEBASE_PLUGIN) message(FATAL_ERROR "EIGEN_DENSEBASE_PLUGIN already defined!") endif() else() - add_definitions(-DEIGEN_DENSEBASE_PLUGIN=\"${EIGEN_DENSEBASE_PLUGIN_PATH}\") + target_compile_definitions(grid_map_core PUBLIC EIGEN_DENSEBASE_PLUGIN=\"${EIGEN_DENSEBASE_PLUGIN_PATH}\") endif() \ No newline at end of file diff --git a/grid_map_cv/CMakeLists.txt b/grid_map_cv/CMakeLists.txt index a64522fde..4db2b42f4 100644 --- a/grid_map_cv/CMakeLists.txt +++ b/grid_map_cv/CMakeLists.txt @@ -43,13 +43,8 @@ add_library(${PROJECT_NAME} SHARED src/InpaintFilter.cpp ) -target_link_libraries(${PROJECT_NAME} PUBLIC - cv_bridge::cv_bridge - grid_map_core::grid_map_core - opencv_photo - pluginlib::pluginlib - rclcpp::rclcpp - ${sensor_msgs_TARGETS} +ament_target_dependencies(${PROJECT_NAME} SYSTEM + ${dependencies} ) # Filters does not expose targets (yet) @@ -131,4 +126,4 @@ ament_export_include_directories(include) ament_export_libraries(${PROJECT_NAME}) ament_export_dependencies(${dependencies}) pluginlib_export_plugin_description_file(filters filter_plugins.xml) -ament_package() +ament_package() \ No newline at end of file diff --git a/grid_map_cv/include/grid_map_cv/GridMapCvConverter.hpp b/grid_map_cv/include/grid_map_cv/GridMapCvConverter.hpp index 233c28a0d..fc7eb29c9 100644 --- a/grid_map_cv/include/grid_map_cv/GridMapCvConverter.hpp +++ b/grid_map_cv/include/grid_map_cv/GridMapCvConverter.hpp @@ -12,7 +12,7 @@ #include // OpenCV -#include +#include // STD #include diff --git a/grid_map_cv/include/grid_map_cv/GridMapCvProcessing.hpp b/grid_map_cv/include/grid_map_cv/GridMapCvProcessing.hpp index 137d5c77d..b93659444 100644 --- a/grid_map_cv/include/grid_map_cv/GridMapCvProcessing.hpp +++ b/grid_map_cv/include/grid_map_cv/GridMapCvProcessing.hpp @@ -12,7 +12,7 @@ #include // OpenCV -#include +#include namespace grid_map { diff --git a/grid_map_cv/test/GridMapCvProcessingTest.cpp b/grid_map_cv/test/GridMapCvProcessingTest.cpp index 261856ad3..50eaa36a6 100644 --- a/grid_map_cv/test/GridMapCvProcessingTest.cpp +++ b/grid_map_cv/test/GridMapCvProcessingTest.cpp @@ -9,7 +9,7 @@ #include // OpenCV -#include +#include // gtest #include diff --git a/grid_map_cv/test/GridMapCvTest.cpp b/grid_map_cv/test/GridMapCvTest.cpp index 5205d2d1c..34bc23358 100644 --- a/grid_map_cv/test/GridMapCvTest.cpp +++ b/grid_map_cv/test/GridMapCvTest.cpp @@ -10,7 +10,7 @@ #include // OpenCV -#include +#include // gtest #include diff --git a/grid_map_demos/CMakeLists.txt b/grid_map_demos/CMakeLists.txt index e64cf57ee..1b6727317 100644 --- a/grid_map_demos/CMakeLists.txt +++ b/grid_map_demos/CMakeLists.txt @@ -27,6 +27,7 @@ grid_map_package() set(dependencies grid_map_msgs grid_map_ros + grid_map_core rclcpp ) diff --git a/grid_map_demos/src/opencv_demo_node.cpp b/grid_map_demos/src/opencv_demo_node.cpp index c5b42c118..25f5e95eb 100644 --- a/grid_map_demos/src/opencv_demo_node.cpp +++ b/grid_map_demos/src/opencv_demo_node.cpp @@ -1,7 +1,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/grid_map_ros/include/grid_map_ros/GridMapRosConverter.hpp b/grid_map_ros/include/grid_map_ros/GridMapRosConverter.hpp index a97de0160..c05a135d7 100644 --- a/grid_map_ros/include/grid_map_ros/GridMapRosConverter.hpp +++ b/grid_map_ros/include/grid_map_ros/GridMapRosConverter.hpp @@ -23,7 +23,7 @@ #include #include #include -#include +#include // STL #include diff --git a/grid_map_ros/src/GridMapRosConverter.cpp b/grid_map_ros/src/GridMapRosConverter.cpp index 8ec6efada..0f590d81e 100644 --- a/grid_map_ros/src/GridMapRosConverter.cpp +++ b/grid_map_ros/src/GridMapRosConverter.cpp @@ -688,7 +688,7 @@ bool GridMapRosConverter::saveToBag( auto bag_message = std::make_shared(); - auto ret = rcutils_system_time_now(&bag_message->send_timestamp); + auto ret = rcutils_system_time_now(&bag_message->time_stamp); if (ret != RCL_RET_OK) { RCLCPP_ERROR(rclcpp::get_logger("saveToBag"), "couldn't assign time rosbag message"); } diff --git a/grid_map_ros/test/GridMapRosTest.cpp b/grid_map_ros/test/GridMapRosTest.cpp index dcf2330a5..e0d2503b8 100644 --- a/grid_map_ros/test/GridMapRosTest.cpp +++ b/grid_map_ros/test/GridMapRosTest.cpp @@ -14,7 +14,7 @@ #include // ROS -#include +#include #include #include #include diff --git a/grid_map_rviz_plugin/CMakeLists.txt b/grid_map_rviz_plugin/CMakeLists.txt index 92bb25b57..2702ab41a 100644 --- a/grid_map_rviz_plugin/CMakeLists.txt +++ b/grid_map_rviz_plugin/CMakeLists.txt @@ -5,6 +5,7 @@ find_package(ament_cmake REQUIRED) find_package(grid_map_cmake_helpers REQUIRED) find_package(grid_map_msgs REQUIRED) find_package(grid_map_ros REQUIRED) +find_package(grid_map_core REQUIRED) find_package(Qt5 REQUIRED COMPONENTS Core Widgets) find_package(rclcpp REQUIRED) find_package(rviz_common REQUIRED) @@ -20,6 +21,7 @@ set(CMAKE_AUTOMOC ON) # This setting causes Qt's "MOC" generation to happen auto set(dependencies grid_map_msgs grid_map_ros + grid_map_core rclcpp rviz_common rviz_ogre_vendor @@ -141,4 +143,4 @@ ament_export_dependencies( rclcpp ) -ament_package() +ament_package() \ No newline at end of file