From 56e84d34965dc4fcaae1b418a00a888108670fa5 Mon Sep 17 00:00:00 2001 From: "Manuel M." Date: Tue, 9 Apr 2024 14:53:24 +0200 Subject: [PATCH] update controllers template to be compileable under rolling, warnings are still present --- .../ros2_control/setup-controller-package.bash | 15 ++++++++------- .../controller/dummy_chainable_controller.cpp | 3 ++- .../dummy_chainable_controller_pluginlib.xml | 2 +- .../dummy_chainable_controller.hpp | 3 ++- .../test_dummy_chainable_controller.hpp | 15 ++++++++++----- .../controller/test_dummy_controller.hpp | 9 +++++++-- 6 files changed, 30 insertions(+), 17 deletions(-) diff --git a/scripts/ros2_control/setup-controller-package.bash b/scripts/ros2_control/setup-controller-package.bash index 764a6092..08d24b03 100755 --- a/scripts/ros2_control/setup-controller-package.bash +++ b/scripts/ros2_control/setup-controller-package.bash @@ -183,6 +183,7 @@ for SED_FILE in "${FILES_TO_SED[@]}"; do sed -i "s/TEMPLATES__ROS2_CONTROL__CONTROLLER__DUMMY_PACKAGE_NAMESPACE/${PKG_NAME^^}/g" $SED_FILE # package name for include guard sed -i "s/TEMPLATES__ROS2_CONTROL__VISIBILITY/${PKG_NAME^^}__VISIBILITY/g" $SED_FILE # visibility defines sed -i "s/dummy_package_namespace/${PKG_NAME}/g" $SED_FILE # package name for includes + sed -i "s/dummy_library_path/${FILE_NAME}/g" $SED_FILE # library path for pluginlib sed -i "s/dummy_controller/${FILE_NAME}/g" $SED_FILE # file name sed -i "s/dummy_chainable_controller/${FILE_NAME}/g" $SED_FILE # file name sed -i "s/DUMMY_CONTROLLER/${FILE_NAME^^}/g" $SED_FILE # file name for include guard @@ -355,11 +356,11 @@ if [[ "$package_configured" == "no" ]]; then for DEP_PKG in "${DEP_PKGS[@]}"; do # package.xml - if `grep -q "${DEP_PKG}" package.xml`; then + if grep -q "${DEP_PKG}" package.xml; then echo "'$DEP_PKG' is already listed in package.xml" else append_to_string="generate_parameter_library<\/build_depend>" - sed -i "s/$append_to_string/$append_to_string\\n\\n ${DEP_PKG}<\/depend>/g" package.xml + sed -i "s/$append_to_string/$append_to_string\\n ${DEP_PKG}<\/depend>/g" package.xml fi done fi @@ -371,19 +372,19 @@ TEST_DEP_PKGS=("ros2_control_test_assets" "hardware_interface" "controller_manag for DEP_PKG in "${TEST_DEP_PKGS[@]}"; do # CMakeLists.txt - if `grep -q " find_package(${DEP_PKG} REQUIRED)" CMakeLists.txt`; then + if grep -q " find_package(${DEP_PKG} REQUIRED)" CMakeLists.txt; then echo "'$DEP_PKG' is already listed in CMakeLists.txt" else - append_to_string="ament_lint_auto_find_test_dependencies()" + append_to_string="if(BUILD_TESTING)" sed -i "s/$append_to_string/$append_to_string\\n find_package(${DEP_PKG} REQUIRED)/g" CMakeLists.txt fi # package.xml - if `grep -q "${DEP_PKG}" package.xml`; then + if grep -q "${DEP_PKG}" package.xml; then echo "'$DEP_PKG' is already listed in package.xml" else - append_to_string="ament_lint_common<\/test_depend>" - sed -i "s/$append_to_string/$append_to_string\\n ${DEP_PKG}<\/test_depend>/g" package.xml + append_to_string="" + sed -i "s/$append_to_string/${DEP_PKG}<\/test_depend>\\n $append_to_string/g" package.xml fi done diff --git a/templates/ros2_control/controller/dummy_chainable_controller.cpp b/templates/ros2_control/controller/dummy_chainable_controller.cpp index bbd10603..36dd0371 100644 --- a/templates/ros2_control/controller/dummy_chainable_controller.cpp +++ b/templates/ros2_control/controller/dummy_chainable_controller.cpp @@ -245,7 +245,8 @@ controller_interface::CallbackReturn DummyClassName::on_deactivate( return controller_interface::CallbackReturn::SUCCESS; } -controller_interface::return_type DummyClassName::update_reference_from_subscribers() +controller_interface::return_type DummyClassName::update_reference_from_subscribers( + const rclcpp::Time & /*time*/, const rclcpp::Duration & /*period*/) { auto current_ref = input_ref_.readFromRT(); diff --git a/templates/ros2_control/controller/dummy_chainable_controller_pluginlib.xml b/templates/ros2_control/controller/dummy_chainable_controller_pluginlib.xml index 52768f5a..9b8ccf31 100644 --- a/templates/ros2_control/controller/dummy_chainable_controller_pluginlib.xml +++ b/templates/ros2_control/controller/dummy_chainable_controller_pluginlib.xml @@ -18,7 +18,7 @@ Source of this file are templates in [RosTeamWorkspace](https://github.com/StoglRobotics/ros_team_workspace) repository. --> - + diff --git a/templates/ros2_control/controller/dummy_package_namespace/dummy_chainable_controller.hpp b/templates/ros2_control/controller/dummy_package_namespace/dummy_chainable_controller.hpp index aaa47947..772bdcba 100644 --- a/templates/ros2_control/controller/dummy_package_namespace/dummy_chainable_controller.hpp +++ b/templates/ros2_control/controller/dummy_package_namespace/dummy_chainable_controller.hpp @@ -80,7 +80,8 @@ class DummyClassName : public controller_interface::ChainableControllerInterface const rclcpp_lifecycle::State & previous_state) override; TEMPLATES__ROS2_CONTROL__VISIBILITY_PUBLIC - controller_interface::return_type update_reference_from_subscribers() override; + controller_interface::return_type update_reference_from_subscribers( + const rclcpp::Time & time, const rclcpp::Duration & period) override; TEMPLATES__ROS2_CONTROL__VISIBILITY_PUBLIC controller_interface::return_type update_and_write_commands( diff --git a/templates/ros2_control/controller/test_dummy_chainable_controller.hpp b/templates/ros2_control/controller/test_dummy_chainable_controller.hpp index 208656e4..345b89e9 100644 --- a/templates/ros2_control/controller/test_dummy_chainable_controller.hpp +++ b/templates/ros2_control/controller/test_dummy_chainable_controller.hpp @@ -17,8 +17,8 @@ // [RosTeamWorkspace](https://github.com/StoglRobotics/ros_team_workspace) repository. // -#ifndef TEMPLATES__ROS2_CONTROL__CONTROLLER__TEST_DUMMY_CHAINABLE_CONTROLLER_HPP_ -#define TEMPLATES__ROS2_CONTROL__CONTROLLER__TEST_DUMMY_CHAINABLE_CONTROLLER_HPP_ +#ifndef TEST_DUMMY_CHAINABLE_CONTROLLER_HPP_ +#define TEST_DUMMY_CHAINABLE_CONTROLLER_HPP_ #include #include @@ -128,7 +128,7 @@ class DummyClassNameFixture : public ::testing::Test command_publisher_node_ = std::make_shared("command_publisher"); command_publisher_ = command_publisher_node_->create_publisher( - "/test_dummy_controller/commands", rclcpp::SystemDefaultsQoS()); + "/test_dummy_controller/reference", rclcpp::SystemDefaultsQoS()); service_caller_node_ = std::make_shared("service_caller"); slow_control_service_client_ = service_caller_node_->create_client( @@ -142,7 +142,12 @@ class DummyClassNameFixture : public ::testing::Test protected: void SetUpController(const std::string controller_name = "test_dummy_controller") { - ASSERT_EQ(controller_->init(controller_name), controller_interface::return_type::OK); + auto options = rclcpp::NodeOptions() + .allow_undeclared_parameters(false) + .automatically_declare_parameters_from_overrides(false); + ASSERT_EQ( + controller_->init(controller_name, "", 0, "", options), + controller_interface::return_type::OK); std::vector command_ifs; command_itfs_.reserve(joint_command_values_.size()); @@ -278,4 +283,4 @@ class DummyClassNameFixture : public ::testing::Test rclcpp::Client::SharedPtr slow_control_service_client_; }; -#endif // TEMPLATES__ROS2_CONTROL__CONTROLLER__TEST_DUMMY_CHAINABLE_CONTROLLER_HPP_ +#endif // TEST_DUMMY_CHAINABLE_CONTROLLER_HPP_ diff --git a/templates/ros2_control/controller/test_dummy_controller.hpp b/templates/ros2_control/controller/test_dummy_controller.hpp index 4fd9e2fe..bd7c54dc 100644 --- a/templates/ros2_control/controller/test_dummy_controller.hpp +++ b/templates/ros2_control/controller/test_dummy_controller.hpp @@ -118,7 +118,7 @@ class DummyClassNameFixture : public ::testing::Test command_publisher_node_ = std::make_shared("command_publisher"); command_publisher_ = command_publisher_node_->create_publisher( - "/test_dummy_controller/commands", rclcpp::SystemDefaultsQoS()); + "/test_dummy_controller/reference", rclcpp::SystemDefaultsQoS()); service_caller_node_ = std::make_shared("service_caller"); slow_control_service_client_ = service_caller_node_->create_client( @@ -132,7 +132,12 @@ class DummyClassNameFixture : public ::testing::Test protected: void SetUpController(const std::string controller_name = "test_dummy_controller") { - ASSERT_EQ(controller_->init(controller_name), controller_interface::return_type::OK); + auto options = rclcpp::NodeOptions() + .allow_undeclared_parameters(false) + .automatically_declare_parameters_from_overrides(false); + ASSERT_EQ( + controller_->init(controller_name, "", 0, "", options), + controller_interface::return_type::OK); std::vector command_ifs; command_itfs_.reserve(joint_command_values_.size());