From afa8c8da9e320d83313ce94b1181945c2ba71da1 Mon Sep 17 00:00:00 2001 From: Nisala Kalupahana Date: Tue, 13 Jul 2021 01:04:33 -0500 Subject: [PATCH 01/10] Update CMakeLists.txt --- moveit_ros/moveit_servo/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/moveit_ros/moveit_servo/CMakeLists.txt b/moveit_ros/moveit_servo/CMakeLists.txt index 87ef58be44..93de653747 100644 --- a/moveit_ros/moveit_servo/CMakeLists.txt +++ b/moveit_ros/moveit_servo/CMakeLists.txt @@ -85,7 +85,7 @@ set_target_properties(${SERVO_LIB_NAME} PROPERTIES VERSION "${${PROJECT_NAME}_VE ament_target_dependencies(${SERVO_LIB_NAME} ${THIS_PACKAGE_INCLUDE_DEPENDS}) target_link_libraries(${SERVO_LIB_NAME} ${SERVO_PARAM_LIB_NAME}) -add_library(${POSE_TRACKING} SHARED src/pose_tracking.cpp) +add_library(${POSE_TRACKING} SHARED src/pose_tracking.cpp src/servo_parameters.cpp) ament_target_dependencies(${POSE_TRACKING} ${THIS_PACKAGE_INCLUDE_DEPENDS}) target_link_libraries(${POSE_TRACKING} ${SERVO_LIB_NAME}) From fc63712d6c7d691e56e818b66c7571d797943f04 Mon Sep 17 00:00:00 2001 From: nkalupahana Date: Tue, 13 Jul 2021 13:11:18 -0700 Subject: [PATCH 02/10] Revert "Update CMakeLists.txt" This reverts commit afa8c8da9e320d83313ce94b1181945c2ba71da1. --- moveit_ros/moveit_servo/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/moveit_ros/moveit_servo/CMakeLists.txt b/moveit_ros/moveit_servo/CMakeLists.txt index 93de653747..87ef58be44 100644 --- a/moveit_ros/moveit_servo/CMakeLists.txt +++ b/moveit_ros/moveit_servo/CMakeLists.txt @@ -85,7 +85,7 @@ set_target_properties(${SERVO_LIB_NAME} PROPERTIES VERSION "${${PROJECT_NAME}_VE ament_target_dependencies(${SERVO_LIB_NAME} ${THIS_PACKAGE_INCLUDE_DEPENDS}) target_link_libraries(${SERVO_LIB_NAME} ${SERVO_PARAM_LIB_NAME}) -add_library(${POSE_TRACKING} SHARED src/pose_tracking.cpp src/servo_parameters.cpp) +add_library(${POSE_TRACKING} SHARED src/pose_tracking.cpp) ament_target_dependencies(${POSE_TRACKING} ${THIS_PACKAGE_INCLUDE_DEPENDS}) target_link_libraries(${POSE_TRACKING} ${SERVO_LIB_NAME}) From 515ec5eb94088c1baa135bc7e22080e7ab208a8e Mon Sep 17 00:00:00 2001 From: nkalupahana Date: Tue, 13 Jul 2021 13:13:21 -0700 Subject: [PATCH 03/10] move template function to .h --- .../include/moveit_servo/servo_parameters.h | 27 +++++++++++++++++++ .../moveit_servo/src/servo_parameters.cpp | 25 ----------------- 2 files changed, 27 insertions(+), 25 deletions(-) diff --git a/moveit_ros/moveit_servo/include/moveit_servo/servo_parameters.h b/moveit_ros/moveit_servo/include/moveit_servo/servo_parameters.h index 0a7bc036de..57217b5ad2 100644 --- a/moveit_ros/moveit_servo/include/moveit_servo/servo_parameters.h +++ b/moveit_ros/moveit_servo/include/moveit_servo/servo_parameters.h @@ -155,4 +155,31 @@ struct ServoParameters rcl_interfaces::msg::SetParametersResult setParametersCallback(std::vector parameters); }; +// Helper template for declaring and getting ros param +// Must be declared here to ensure template class is built for required templates when included +template +void declareOrGetParam(T& output_value, const std::string& param_name, const rclcpp::Node::SharedPtr& node, + const rclcpp::Logger& logger) +{ + try + { + if (node->has_parameter(param_name)) + { + node->get_parameter(param_name, output_value); + } + else + { + output_value = node->declare_parameter(param_name, T{}); + } + } + catch (const rclcpp::exceptions::InvalidParameterTypeException& e) + { + RCLCPP_WARN_STREAM(logger, "InvalidParameterTypeException(" << param_name << "): " << e.what()); + RCLCPP_ERROR_STREAM(logger, "Error getting parameter \'" << param_name << "\', check parameter type in YAML file"); + throw e; + } + + RCLCPP_INFO_STREAM(logger, "Found parameter - " << param_name << ": " << output_value); +} + } // namespace moveit_servo diff --git a/moveit_ros/moveit_servo/src/servo_parameters.cpp b/moveit_ros/moveit_servo/src/servo_parameters.cpp index f83ebc93be..1adb51adea 100644 --- a/moveit_ros/moveit_servo/src/servo_parameters.cpp +++ b/moveit_ros/moveit_servo/src/servo_parameters.cpp @@ -47,31 +47,6 @@ using namespace std::placeholders; // for _1, _2 etc. namespace moveit_servo { -template -void declareOrGetParam(T& output_value, const std::string& param_name, const rclcpp::Node::SharedPtr& node, - const rclcpp::Logger& logger, const T default_value) -{ - try - { - if (node->has_parameter(param_name)) - { - node->get_parameter(param_name, output_value); - } - else - { - output_value = node->declare_parameter(param_name, default_value); - } - } - catch (const rclcpp::exceptions::InvalidParameterTypeException& e) - { - RCLCPP_WARN_STREAM(logger, "InvalidParameterTypeException(" << param_name << "): " << e.what()); - RCLCPP_ERROR_STREAM(logger, "Error getting parameter \'" << param_name << "\', check parameter type in YAML file"); - throw e; - } - - RCLCPP_INFO_STREAM(logger, "Found parameter - " << param_name << ": " << output_value); -} - rcl_interfaces::msg::SetParametersResult ServoParameters::setParametersCallback(std::vector parameters) { From d94990f5a4fa5ee1e65f785947bbbf093b48ffaa Mon Sep 17 00:00:00 2001 From: nkalupahana Date: Tue, 13 Jul 2021 13:17:59 -0700 Subject: [PATCH 04/10] re-added default_value --- .../moveit_servo/include/moveit_servo/servo_parameters.h | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/moveit_ros/moveit_servo/include/moveit_servo/servo_parameters.h b/moveit_ros/moveit_servo/include/moveit_servo/servo_parameters.h index 57217b5ad2..2cb4dc267d 100644 --- a/moveit_ros/moveit_servo/include/moveit_servo/servo_parameters.h +++ b/moveit_ros/moveit_servo/include/moveit_servo/servo_parameters.h @@ -50,11 +50,6 @@ constexpr size_t ROS_QUEUE_SIZE = 2; using SetParameterCallbackType = std::function; -// Helper template for declaring and getting ros param -template -void declareOrGetParam(T& output_value, const std::string& param_name, const rclcpp::Node::SharedPtr& node, - const rclcpp::Logger& logger, const T default_value = T{}); - // ROS params to be read. See the yaml file in /config for a description of each. struct ServoParameters { @@ -159,7 +154,7 @@ struct ServoParameters // Must be declared here to ensure template class is built for required templates when included template void declareOrGetParam(T& output_value, const std::string& param_name, const rclcpp::Node::SharedPtr& node, - const rclcpp::Logger& logger) + const rclcpp::Logger& logger, const T default_value = T{}) { try { From 7bde959826b3e92b397f8c075a1699297890997b Mon Sep 17 00:00:00 2001 From: Nisala Kalupahana Date: Tue, 13 Jul 2021 13:20:14 -0700 Subject: [PATCH 05/10] Update moveit_ros/moveit_servo/include/moveit_servo/servo_parameters.h Co-authored-by: Jafar Abdi --- moveit_ros/moveit_servo/include/moveit_servo/servo_parameters.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/moveit_ros/moveit_servo/include/moveit_servo/servo_parameters.h b/moveit_ros/moveit_servo/include/moveit_servo/servo_parameters.h index 2cb4dc267d..09f5a0414f 100644 --- a/moveit_ros/moveit_servo/include/moveit_servo/servo_parameters.h +++ b/moveit_ros/moveit_servo/include/moveit_servo/servo_parameters.h @@ -164,7 +164,7 @@ void declareOrGetParam(T& output_value, const std::string& param_name, const rcl } else { - output_value = node->declare_parameter(param_name, T{}); + output_value = node->declare_parameter(param_name, default_value); } } catch (const rclcpp::exceptions::InvalidParameterTypeException& e) From 49fd073608f5b311fe6b442b6bad000fef35dd0f Mon Sep 17 00:00:00 2001 From: nkalupahana Date: Tue, 13 Jul 2021 22:44:57 -0700 Subject: [PATCH 06/10] rerun CI From ced3203e3d96691de37ab9f22f409c6ffb7b2f9e Mon Sep 17 00:00:00 2001 From: nkalupahana Date: Wed, 14 Jul 2021 16:48:09 -0700 Subject: [PATCH 07/10] rerun CI From 0045292b3fc1f4e4d28ed5b6ce8d68124cb798a4 Mon Sep 17 00:00:00 2001 From: nkalupahana Date: Thu, 15 Jul 2021 21:51:57 -0700 Subject: [PATCH 08/10] rerun CI From 42ba2fa2cc9287c3770d0935dad2d273960813fc Mon Sep 17 00:00:00 2001 From: nkalupahana Date: Wed, 21 Jul 2021 14:38:50 -0700 Subject: [PATCH 09/10] rerun CI From 09c23385097960514baa4e1f52c89b33168c597a Mon Sep 17 00:00:00 2001 From: nkalupahana Date: Tue, 27 Jul 2021 11:01:20 -0700 Subject: [PATCH 10/10] added note about duplicate symbols --- .../moveit_servo/include/moveit_servo/servo_parameters.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/moveit_ros/moveit_servo/include/moveit_servo/servo_parameters.h b/moveit_ros/moveit_servo/include/moveit_servo/servo_parameters.h index 09f5a0414f..033a9f5aa8 100644 --- a/moveit_ros/moveit_servo/include/moveit_servo/servo_parameters.h +++ b/moveit_ros/moveit_servo/include/moveit_servo/servo_parameters.h @@ -151,7 +151,8 @@ struct ServoParameters }; // Helper template for declaring and getting ros param -// Must be declared here to ensure template class is built for required templates when included +// Must be declared here to ensure template class is built for required templates when included. +// (The CPP file can't just be included because not everything there is templated, so you'd get duplicate symbols) template void declareOrGetParam(T& output_value, const std::string& param_name, const rclcpp::Node::SharedPtr& node, const rclcpp::Logger& logger, const T default_value = T{})