From 2bfe65b7350082aba4d2e03449ae48bc7d5c0887 Mon Sep 17 00:00:00 2001 From: nelson Date: Tue, 19 Nov 2024 15:53:32 +0000 Subject: [PATCH] [DEX] Revert "Switch nav2_waypoint_follower to modern CMake idioms. (#4648)" This reverts commit 406a2f563542453f71b701078aa023ac44350b6b. --- nav2_waypoint_follower/CMakeLists.txt | 168 ++++++------------ .../plugins/photo_at_waypoint.hpp | 8 + nav2_waypoint_follower/package.xml | 27 ++- nav2_waypoint_follower/test/CMakeLists.txt | 19 +- 4 files changed, 81 insertions(+), 141 deletions(-) diff --git a/nav2_waypoint_follower/CMakeLists.txt b/nav2_waypoint_follower/CMakeLists.txt index e9624f36c84..0ea7eda8eba 100644 --- a/nav2_waypoint_follower/CMakeLists.txt +++ b/nav2_waypoint_follower/CMakeLists.txt @@ -1,126 +1,87 @@ cmake_minimum_required(VERSION 3.5) project(nav2_waypoint_follower) -find_package(ament_cmake REQUIRED) -find_package(cv_bridge REQUIRED) -find_package(geographic_msgs REQUIRED) -find_package(geometry_msgs REQUIRED) +# Try for OpenCV 4.X, but settle for whatever is installed +find_package(OpenCV 4 QUIET) +if(NOT OpenCV_FOUND) + find_package(OpenCV REQUIRED) +endif() +message(STATUS "Found OpenCV version ${OpenCV_VERSION}") + find_package(image_transport REQUIRED) +find_package(cv_bridge REQUIRED) +find_package(ament_cmake REQUIRED) find_package(nav2_common REQUIRED) -find_package(nav2_core REQUIRED) -find_package(nav2_msgs REQUIRED) -find_package(nav2_util REQUIRED) -find_package(nav_msgs REQUIRED) -find_package(OpenCV REQUIRED) -find_package(pluginlib REQUIRED) find_package(rclcpp REQUIRED) find_package(rclcpp_action REQUIRED) -find_package(rclcpp_components REQUIRED) find_package(rclcpp_lifecycle REQUIRED) -find_package(robot_localization REQUIRED) -find_package(sensor_msgs REQUIRED) -find_package(std_msgs REQUIRED) +find_package(rclcpp_components REQUIRED) +find_package(nav_msgs REQUIRED) +find_package(nav2_msgs REQUIRED) +find_package(nav2_util REQUIRED) find_package(tf2_ros REQUIRED) +find_package(nav2_core REQUIRED) +find_package(pluginlib REQUIRED) +find_package(robot_localization REQUIRED) +find_package(geographic_msgs REQUIRED) nav2_package() +include_directories( + include +) + set(executable_name waypoint_follower) +add_executable(${executable_name} + src/main.cpp +) + set(library_name ${executable_name}_core) add_library(${library_name} SHARED src/waypoint_follower.cpp ) -target_include_directories(${library_name} PUBLIC - "$" - "$" -) -target_link_libraries(${library_name} PUBLIC - ${geographic_msgs_TARGETS} - nav2_core::nav2_core - ${nav2_msgs_TARGETS} - nav2_util::nav2_util_core - ${nav_msgs_TARGETS} - pluginlib::pluginlib - rclcpp::rclcpp - rclcpp_action::rclcpp_action - rclcpp_lifecycle::rclcpp_lifecycle - robot_localization::rl_lib - tf2_ros::tf2_ros -) -target_link_libraries(${library_name} PRIVATE - rclcpp_components::component -) -add_executable(${executable_name} - src/main.cpp +set(dependencies + rclcpp + rclcpp_action + rclcpp_lifecycle + rclcpp_components + nav_msgs + nav2_msgs + nav2_util + tf2_ros + nav2_core + pluginlib + image_transport + cv_bridge + OpenCV + robot_localization ) -target_include_directories(${executable_name} PRIVATE - "$" - "$" + +ament_target_dependencies(${executable_name} + ${dependencies} ) -target_link_libraries(${executable_name} PRIVATE - ${library_name} - rclcpp::rclcpp + +target_link_libraries(${executable_name} ${library_name}) + +ament_target_dependencies(${library_name} + ${dependencies} ) add_library(wait_at_waypoint SHARED plugins/wait_at_waypoint.cpp) -target_include_directories(wait_at_waypoint PUBLIC - "$" - "$" -) -target_link_libraries(wait_at_waypoint PUBLIC - ${geometry_msgs_TARGETS} - rclcpp::rclcpp - rclcpp_lifecycle::rclcpp_lifecycle - nav2_core::nav2_core -) -target_link_libraries(wait_at_waypoint PRIVATE - pluginlib::pluginlib - nav2_util::nav2_util_core -) +ament_target_dependencies(wait_at_waypoint ${dependencies}) add_library(photo_at_waypoint SHARED plugins/photo_at_waypoint.cpp) -target_include_directories(photo_at_waypoint PUBLIC - "$" - "$" -) -target_link_libraries(photo_at_waypoint PUBLIC - cv_bridge::cv_bridge - ${geometry_msgs_TARGETS} - image_transport::image_transport - nav2_core::nav2_core - opencv_core - rclcpp::rclcpp - rclcpp_lifecycle::rclcpp_lifecycle - ${sensor_msgs_TARGETS} -) -target_link_libraries(photo_at_waypoint PRIVATE - nav2_util::nav2_util_core - pluginlib::pluginlib -) +ament_target_dependencies(photo_at_waypoint ${dependencies}) add_library(input_at_waypoint SHARED plugins/input_at_waypoint.cpp) -target_include_directories(input_at_waypoint PUBLIC - "$" - "$" -) -target_link_libraries(input_at_waypoint PUBLIC - ${geometry_msgs_TARGETS} - nav2_core::nav2_core - rclcpp::rclcpp - rclcpp_lifecycle::rclcpp_lifecycle - ${std_msgs_TARGETS} -) -target_link_libraries(input_at_waypoint PRIVATE - pluginlib::pluginlib - nav2_util::nav2_util_core -) +ament_target_dependencies(input_at_waypoint ${dependencies}) rclcpp_components_register_nodes(${library_name} "nav2_waypoint_follower::WaypointFollower") install(TARGETS ${library_name} wait_at_waypoint photo_at_waypoint input_at_waypoint - EXPORT ${PROJECT_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib RUNTIME DESTINATION bin @@ -131,40 +92,19 @@ install(TARGETS ${executable_name} ) install(DIRECTORY include/ - DESTINATION include/${PROJECT_NAME} + DESTINATION include/ ) if(BUILD_TESTING) find_package(ament_lint_auto REQUIRED) find_package(ament_cmake_gtest REQUIRED) ament_lint_auto_find_test_dependencies() - - ament_find_gtest() add_subdirectory(test) endif() -ament_export_include_directories(include/${PROJECT_NAME}) +ament_export_include_directories(include) ament_export_libraries(wait_at_waypoint photo_at_waypoint input_at_waypoint ${library_name}) -ament_export_dependencies( - cv_bridge - geographic_msgs - geometry_msgs - image_transport - nav2_core - nav2_msgs - nav2_util - nav_msgs - OpenCV - pluginlib - rclcpp - rclcpp_action - rclcpp_lifecycle - robot_localization - sensor_msgs - std_msgs - tf2_ros -) -ament_export_targets(${PROJECT_NAME}) +ament_export_dependencies(${dependencies}) pluginlib_export_plugin_description_file(nav2_waypoint_follower plugins.xml) ament_package() diff --git a/nav2_waypoint_follower/include/nav2_waypoint_follower/plugins/photo_at_waypoint.hpp b/nav2_waypoint_follower/include/nav2_waypoint_follower/plugins/photo_at_waypoint.hpp index 8b5b2aaf150..1e6048aefca 100644 --- a/nav2_waypoint_follower/include/nav2_waypoint_follower/plugins/photo_at_waypoint.hpp +++ b/nav2_waypoint_follower/include/nav2_waypoint_follower/plugins/photo_at_waypoint.hpp @@ -15,12 +15,20 @@ #ifndef NAV2_WAYPOINT_FOLLOWER__PLUGINS__PHOTO_AT_WAYPOINT_HPP_ #define NAV2_WAYPOINT_FOLLOWER__PLUGINS__PHOTO_AT_WAYPOINT_HPP_ +/** + * While C++17 isn't the project standard. We have to force LLVM/CLang + * to ignore deprecated declarations + */ +#define _LIBCPP_NO_EXPERIMENTAL_DEPRECATION_WARNING_FILESYSTEM + + #include #include #include #include #include "rclcpp/rclcpp.hpp" +#include "rclcpp_components/register_node_macro.hpp" #include "sensor_msgs/msg/image.hpp" #include "nav2_core/waypoint_task_executor.hpp" diff --git a/nav2_waypoint_follower/package.xml b/nav2_waypoint_follower/package.xml index aeb3d44009d..574a64bcc2c 100644 --- a/nav2_waypoint_follower/package.xml +++ b/nav2_waypoint_follower/package.xml @@ -8,29 +8,26 @@ Apache-2.0 ament_cmake - nav2_common + nav2_common cv_bridge - geographic_msgs - geometry_msgs - image_transport - nav2_core - nav2_msgs - nav2_util - nav_msgs pluginlib + image_transport rclcpp rclcpp_action - rclcpp_components rclcpp_lifecycle - robot_localization - sensor_msgs - std_msgs + nav_msgs + nav2_msgs + nav2_util + nav2_core tf2_ros - - ament_cmake_gtest - ament_lint_auto + robot_localization + geographic_msgs + ament_lint_common + ament_lint_auto + ament_cmake_gtest + ament_cmake_pytest ament_cmake diff --git a/nav2_waypoint_follower/test/CMakeLists.txt b/nav2_waypoint_follower/test/CMakeLists.txt index a8f498ca02c..a6a7388eada 100644 --- a/nav2_waypoint_follower/test/CMakeLists.txt +++ b/nav2_waypoint_follower/test/CMakeLists.txt @@ -2,25 +2,20 @@ ament_add_gtest(test_task_executors test_task_executors.cpp ) +ament_target_dependencies(test_task_executors + ${dependencies} +) target_link_libraries(test_task_executors - ${library_name} - wait_at_waypoint - photo_at_waypoint - input_at_waypoint - ${geometry_msgs_TARGETS} - nav2_util::nav2_util_core - rclcpp::rclcpp - rclcpp_lifecycle::rclcpp_lifecycle - ${sensor_msgs_TARGETS} + ${library_name} wait_at_waypoint photo_at_waypoint input_at_waypoint ) # Test dynamic parameters ament_add_gtest(test_dynamic_parameters test_dynamic_parameters.cpp ) +ament_target_dependencies(test_dynamic_parameters + ${dependencies} +) target_link_libraries(test_dynamic_parameters ${library_name} - nav2_util::nav2_util_core - rclcpp::rclcpp - rclcpp_lifecycle::rclcpp_lifecycle )