From db1189f979c6e92c0128aafe435fca2eac808cb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20Fr=C3=B6hlich?= Date: Wed, 15 Jan 2025 23:36:11 +0100 Subject: [PATCH] Update paths of GPL includes (#1487) (cherry picked from commit bfe622cd03fa4516d07c84ab12764282ad1bc693) # Conflicts: # ackermann_steering_controller/include/ackermann_steering_controller/ackermann_steering_controller.hpp # admittance_controller/include/admittance_controller/admittance_controller.hpp # admittance_controller/include/admittance_controller/admittance_rule.hpp # bicycle_steering_controller/include/bicycle_steering_controller/bicycle_steering_controller.hpp # diff_drive_controller/include/diff_drive_controller/diff_drive_controller.hpp # force_torque_sensor_broadcaster/include/force_torque_sensor_broadcaster/force_torque_sensor_broadcaster.hpp # forward_command_controller/include/forward_command_controller/forward_command_controller.hpp # forward_command_controller/include/forward_command_controller/multi_interface_forward_command_controller.hpp # gpio_controllers/include/gpio_controllers/gpio_command_controller.hpp # gripper_controllers/include/gripper_controllers/gripper_action_controller.hpp # imu_sensor_broadcaster/include/imu_sensor_broadcaster/imu_sensor_broadcaster.hpp # joint_state_broadcaster/include/joint_state_broadcaster/joint_state_broadcaster.hpp # joint_trajectory_controller/include/joint_trajectory_controller/joint_trajectory_controller.hpp # mecanum_drive_controller/include/mecanum_drive_controller/mecanum_drive_controller.hpp # parallel_gripper_controller/include/parallel_gripper_controller/parallel_gripper_action_controller.hpp # pid_controller/include/pid_controller/pid_controller.hpp # pose_broadcaster/include/pose_broadcaster/pose_broadcaster.hpp # range_sensor_broadcaster/include/range_sensor_broadcaster/range_sensor_broadcaster.hpp # steering_controllers_library/include/steering_controllers_library/steering_controllers_library.hpp # tricycle_controller/include/tricycle_controller/tricycle_controller.hpp # tricycle_steering_controller/include/tricycle_steering_controller/tricycle_steering_controller.hpp --- .../ackermann_steering_controller.hpp | 4 + .../admittance_controller.hpp | 5 + .../admittance_controller/admittance_rule.hpp | 4 + .../bicycle_steering_controller.hpp | 4 + .../diff_drive_controller.hpp | 5 + .../force_torque_sensor_broadcaster.hpp | 6 + .../forward_command_controller.hpp | 5 + ...i_interface_forward_command_controller.hpp | 4 + .../gpio_command_controller.hpp | 5 + .../gripper_action_controller.hpp | 7 + .../imu_sensor_broadcaster.hpp | 7 + .../joint_state_broadcaster.hpp | 16 ++ .../joint_trajectory_controller.hpp | 5 + .../tolerances.hpp | 2 +- .../mecanum_drive_controller.hpp | 151 ++++++++++++++++ .../parallel_gripper_action_controller.hpp | 165 ++++++++++++++++++ .../include/pid_controller/pid_controller.hpp | 7 + .../pose_broadcaster/pose_broadcaster.hpp | 5 + .../range_sensor_broadcaster.hpp | 5 + ros2_controllers-not-released.jazzy.repos | 9 +- ros2_controllers-not-released.rolling.repos | 9 +- .../steering_controllers_library.hpp | 6 + .../tricycle_controller.hpp | 6 + .../tricycle_steering_controller.hpp | 4 + 24 files changed, 437 insertions(+), 9 deletions(-) create mode 100644 mecanum_drive_controller/include/mecanum_drive_controller/mecanum_drive_controller.hpp create mode 100644 parallel_gripper_controller/include/parallel_gripper_controller/parallel_gripper_action_controller.hpp diff --git a/ackermann_steering_controller/include/ackermann_steering_controller/ackermann_steering_controller.hpp b/ackermann_steering_controller/include/ackermann_steering_controller/ackermann_steering_controller.hpp index 0cb6bcd016..534a877b48 100644 --- a/ackermann_steering_controller/include/ackermann_steering_controller/ackermann_steering_controller.hpp +++ b/ackermann_steering_controller/include/ackermann_steering_controller/ackermann_steering_controller.hpp @@ -20,8 +20,12 @@ #include +<<<<<<< HEAD #include "ackermann_steering_controller/visibility_control.h" #include "ackermann_steering_controller_parameters.hpp" +======= +#include "ackermann_steering_controller/ackermann_steering_controller_parameters.hpp" +>>>>>>> bfe622c (Update paths of GPL includes (#1487)) #include "steering_controllers_library/steering_controllers_library.hpp" namespace ackermann_steering_controller diff --git a/admittance_controller/include/admittance_controller/admittance_controller.hpp b/admittance_controller/include/admittance_controller/admittance_controller.hpp index eccf184e6a..0e0039b1f9 100644 --- a/admittance_controller/include/admittance_controller/admittance_controller.hpp +++ b/admittance_controller/include/admittance_controller/admittance_controller.hpp @@ -22,8 +22,13 @@ #include #include +<<<<<<< HEAD // include generated parameter library #include "admittance_controller_parameters.hpp" +======= +// auto-generated by generate_parameter_library +#include "admittance_controller/admittance_controller_parameters.hpp" +>>>>>>> bfe622c (Update paths of GPL includes (#1487)) #include "admittance_controller/admittance_rule.hpp" #include "admittance_controller/visibility_control.h" diff --git a/admittance_controller/include/admittance_controller/admittance_rule.hpp b/admittance_controller/include/admittance_controller/admittance_rule.hpp index cfc09d2be8..682a0716a6 100644 --- a/admittance_controller/include/admittance_controller/admittance_rule.hpp +++ b/admittance_controller/include/admittance_controller/admittance_rule.hpp @@ -24,6 +24,10 @@ #include #include +<<<<<<< HEAD +======= +#include "admittance_controller/admittance_controller_parameters.hpp" +>>>>>>> bfe622c (Update paths of GPL includes (#1487)) #include "control_msgs/msg/admittance_controller_state.hpp" #include "control_toolbox/filters.hpp" #include "controller_interface/controller_interface.hpp" diff --git a/bicycle_steering_controller/include/bicycle_steering_controller/bicycle_steering_controller.hpp b/bicycle_steering_controller/include/bicycle_steering_controller/bicycle_steering_controller.hpp index 1b3e050a37..a11db3f06a 100644 --- a/bicycle_steering_controller/include/bicycle_steering_controller/bicycle_steering_controller.hpp +++ b/bicycle_steering_controller/include/bicycle_steering_controller/bicycle_steering_controller.hpp @@ -20,8 +20,12 @@ #include +<<<<<<< HEAD #include "bicycle_steering_controller/visibility_control.h" #include "bicycle_steering_controller_parameters.hpp" +======= +#include "bicycle_steering_controller/bicycle_steering_controller_parameters.hpp" +>>>>>>> bfe622c (Update paths of GPL includes (#1487)) #include "steering_controllers_library/steering_controllers_library.hpp" namespace bicycle_steering_controller diff --git a/diff_drive_controller/include/diff_drive_controller/diff_drive_controller.hpp b/diff_drive_controller/include/diff_drive_controller/diff_drive_controller.hpp index 472df15159..1614ded004 100644 --- a/diff_drive_controller/include/diff_drive_controller/diff_drive_controller.hpp +++ b/diff_drive_controller/include/diff_drive_controller/diff_drive_controller.hpp @@ -41,7 +41,12 @@ #include "realtime_tools/realtime_publisher.hpp" #include "tf2_msgs/msg/tf_message.hpp" +<<<<<<< HEAD #include "diff_drive_controller_parameters.hpp" +======= +// auto-generated by generate_parameter_library +#include "diff_drive_controller/diff_drive_controller_parameters.hpp" +>>>>>>> bfe622c (Update paths of GPL includes (#1487)) namespace diff_drive_controller { diff --git a/force_torque_sensor_broadcaster/include/force_torque_sensor_broadcaster/force_torque_sensor_broadcaster.hpp b/force_torque_sensor_broadcaster/include/force_torque_sensor_broadcaster/force_torque_sensor_broadcaster.hpp index f19dd6a45b..34c299b5ac 100644 --- a/force_torque_sensor_broadcaster/include/force_torque_sensor_broadcaster/force_torque_sensor_broadcaster.hpp +++ b/force_torque_sensor_broadcaster/include/force_torque_sensor_broadcaster/force_torque_sensor_broadcaster.hpp @@ -23,9 +23,15 @@ #include #include +<<<<<<< HEAD #include "controller_interface/controller_interface.hpp" #include "force_torque_sensor_broadcaster/visibility_control.h" #include "force_torque_sensor_broadcaster_parameters.hpp" +======= +#include "controller_interface/chainable_controller_interface.hpp" +// auto-generated by generate_parameter_library +#include "force_torque_sensor_broadcaster/force_torque_sensor_broadcaster_parameters.hpp" +>>>>>>> bfe622c (Update paths of GPL includes (#1487)) #include "geometry_msgs/msg/wrench_stamped.hpp" #include "rclcpp_lifecycle/node_interfaces/lifecycle_node_interface.hpp" #include "rclcpp_lifecycle/state.hpp" diff --git a/forward_command_controller/include/forward_command_controller/forward_command_controller.hpp b/forward_command_controller/include/forward_command_controller/forward_command_controller.hpp index 8a697847cd..dee718d92f 100644 --- a/forward_command_controller/include/forward_command_controller/forward_command_controller.hpp +++ b/forward_command_controller/include/forward_command_controller/forward_command_controller.hpp @@ -20,8 +20,13 @@ #include #include "forward_command_controller/forward_controllers_base.hpp" +<<<<<<< HEAD #include "forward_command_controller/visibility_control.h" #include "forward_command_controller_parameters.hpp" +======= +// auto-generated by generate_parameter_library +#include "forward_command_controller/forward_command_controller_parameters.hpp" +>>>>>>> bfe622c (Update paths of GPL includes (#1487)) namespace forward_command_controller { diff --git a/forward_command_controller/include/forward_command_controller/multi_interface_forward_command_controller.hpp b/forward_command_controller/include/forward_command_controller/multi_interface_forward_command_controller.hpp index fd7c0d480e..37d88fd863 100644 --- a/forward_command_controller/include/forward_command_controller/multi_interface_forward_command_controller.hpp +++ b/forward_command_controller/include/forward_command_controller/multi_interface_forward_command_controller.hpp @@ -20,8 +20,12 @@ #include #include "forward_command_controller/forward_controllers_base.hpp" +<<<<<<< HEAD #include "forward_command_controller/visibility_control.h" #include "multi_interface_forward_command_controller_parameters.hpp" +======= +#include "forward_command_controller/multi_interface_forward_command_controller_parameters.hpp" +>>>>>>> bfe622c (Update paths of GPL includes (#1487)) namespace forward_command_controller { diff --git a/gpio_controllers/include/gpio_controllers/gpio_command_controller.hpp b/gpio_controllers/include/gpio_controllers/gpio_command_controller.hpp index 8cab4e9dfa..b519f4b5a6 100644 --- a/gpio_controllers/include/gpio_controllers/gpio_command_controller.hpp +++ b/gpio_controllers/include/gpio_controllers/gpio_command_controller.hpp @@ -22,14 +22,19 @@ #include "control_msgs/msg/dynamic_interface_group_values.hpp" #include "controller_interface/controller_interface.hpp" +<<<<<<< HEAD #include "gpio_command_controller_parameters.hpp" #include "gpio_controllers/visibility_control.h" #include "hardware_interface/hardware_info.hpp" +======= +>>>>>>> bfe622c (Update paths of GPL includes (#1487)) #include "rclcpp_lifecycle/node_interfaces/lifecycle_node_interface.hpp" #include "rclcpp_lifecycle/state.hpp" #include "realtime_tools/realtime_buffer.hpp" #include "realtime_tools/realtime_publisher.hpp" +#include "gpio_controllers/gpio_command_controller_parameters.hpp" + namespace gpio_controllers { using CmdType = control_msgs::msg::DynamicInterfaceGroupValues; diff --git a/gripper_controllers/include/gripper_controllers/gripper_action_controller.hpp b/gripper_controllers/include/gripper_controllers/gripper_action_controller.hpp index b94b7dc0c3..dcfc67b444 100644 --- a/gripper_controllers/include/gripper_controllers/gripper_action_controller.hpp +++ b/gripper_controllers/include/gripper_controllers/gripper_action_controller.hpp @@ -41,8 +41,15 @@ #include "realtime_tools/realtime_server_goal_handle.hpp" // Project +<<<<<<< HEAD #include "gripper_action_controller_parameters.hpp" #include "gripper_controllers/hardware_interface_adapter.hpp" +======= +#include "gripper_controllers/hardware_interface_adapter.hpp" + +// auto-generated by generate_parameter_library +#include "gripper_controllers/gripper_action_controller_parameters.hpp" +>>>>>>> bfe622c (Update paths of GPL includes (#1487)) namespace gripper_action_controller { diff --git a/imu_sensor_broadcaster/include/imu_sensor_broadcaster/imu_sensor_broadcaster.hpp b/imu_sensor_broadcaster/include/imu_sensor_broadcaster/imu_sensor_broadcaster.hpp index 4142ee6ac6..8f9b116d0e 100644 --- a/imu_sensor_broadcaster/include/imu_sensor_broadcaster/imu_sensor_broadcaster.hpp +++ b/imu_sensor_broadcaster/include/imu_sensor_broadcaster/imu_sensor_broadcaster.hpp @@ -23,15 +23,22 @@ #include #include +<<<<<<< HEAD #include "controller_interface/controller_interface.hpp" #include "imu_sensor_broadcaster/visibility_control.h" #include "imu_sensor_broadcaster_parameters.hpp" #include "rclcpp_lifecycle/node_interfaces/lifecycle_node_interface.hpp" +======= +>>>>>>> bfe622c (Update paths of GPL includes (#1487)) #include "rclcpp_lifecycle/state.hpp" #include "realtime_tools/realtime_publisher.hpp" #include "semantic_components/imu_sensor.hpp" #include "sensor_msgs/msg/imu.hpp" +#include "controller_interface/controller_interface.hpp" +// auto-generated by generate_parameter_library +#include "imu_sensor_broadcaster/imu_sensor_broadcaster_parameters.hpp" + namespace imu_sensor_broadcaster { class IMUSensorBroadcaster : public controller_interface::ControllerInterface diff --git a/joint_state_broadcaster/include/joint_state_broadcaster/joint_state_broadcaster.hpp b/joint_state_broadcaster/include/joint_state_broadcaster/joint_state_broadcaster.hpp index 77b523efb4..dc191ddcf1 100644 --- a/joint_state_broadcaster/include/joint_state_broadcaster/joint_state_broadcaster.hpp +++ b/joint_state_broadcaster/include/joint_state_broadcaster/joint_state_broadcaster.hpp @@ -22,6 +22,7 @@ #include "control_msgs/msg/dynamic_joint_state.hpp" #include "controller_interface/controller_interface.hpp" +<<<<<<< HEAD #include "joint_state_broadcaster/visibility_control.h" #include "joint_state_broadcaster_parameters.hpp" #include "rclcpp_lifecycle/lifecycle_publisher.hpp" @@ -29,6 +30,21 @@ #include "realtime_tools/realtime_publisher.hpp" #include "sensor_msgs/msg/joint_state.hpp" +======= +#include "realtime_tools/realtime_publisher.hpp" +#include "sensor_msgs/msg/joint_state.hpp" + +#include "rclcpp/version.h" +#if RCLCPP_VERSION_GTE(29, 0, 0) +#include "urdf/model.hpp" +#else +#include "urdf/model.h" +#endif + +// auto-generated by generate_parameter_library +#include "joint_state_broadcaster/joint_state_broadcaster_parameters.hpp" + +>>>>>>> bfe622c (Update paths of GPL includes (#1487)) namespace joint_state_broadcaster { /** diff --git a/joint_trajectory_controller/include/joint_trajectory_controller/joint_trajectory_controller.hpp b/joint_trajectory_controller/include/joint_trajectory_controller/joint_trajectory_controller.hpp index 21a938b5cf..73849e89dd 100644 --- a/joint_trajectory_controller/include/joint_trajectory_controller/joint_trajectory_controller.hpp +++ b/joint_trajectory_controller/include/joint_trajectory_controller/joint_trajectory_controller.hpp @@ -44,7 +44,12 @@ #include "trajectory_msgs/msg/joint_trajectory.hpp" #include "trajectory_msgs/msg/joint_trajectory_point.hpp" +<<<<<<< HEAD #include "joint_trajectory_controller_parameters.hpp" +======= +// auto-generated by generate_parameter_library +#include "joint_trajectory_controller/joint_trajectory_controller_parameters.hpp" +>>>>>>> bfe622c (Update paths of GPL includes (#1487)) using namespace std::chrono_literals; // NOLINT diff --git a/joint_trajectory_controller/include/joint_trajectory_controller/tolerances.hpp b/joint_trajectory_controller/include/joint_trajectory_controller/tolerances.hpp index 2224be86a9..57548682d4 100644 --- a/joint_trajectory_controller/include/joint_trajectory_controller/tolerances.hpp +++ b/joint_trajectory_controller/include/joint_trajectory_controller/tolerances.hpp @@ -36,7 +36,7 @@ #include #include "control_msgs/action/follow_joint_trajectory.hpp" -#include "joint_trajectory_controller_parameters.hpp" +#include "joint_trajectory_controller/joint_trajectory_controller_parameters.hpp" #include "rclcpp/node.hpp" #include "rclcpp/time.hpp" diff --git a/mecanum_drive_controller/include/mecanum_drive_controller/mecanum_drive_controller.hpp b/mecanum_drive_controller/include/mecanum_drive_controller/mecanum_drive_controller.hpp new file mode 100644 index 0000000000..189805c17c --- /dev/null +++ b/mecanum_drive_controller/include/mecanum_drive_controller/mecanum_drive_controller.hpp @@ -0,0 +1,151 @@ +// Copyright (c) 2023, Stogl Robotics Consulting UG (haftungsbeschränkt) +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef MECANUM_DRIVE_CONTROLLER__MECANUM_DRIVE_CONTROLLER_HPP_ +#define MECANUM_DRIVE_CONTROLLER__MECANUM_DRIVE_CONTROLLER_HPP_ + +#include +#include +#include +#include +#include +#include +#include + +#include "control_msgs/msg/mecanum_drive_controller_state.hpp" +#include "controller_interface/chainable_controller_interface.hpp" +#include "geometry_msgs/msg/twist_stamped.hpp" +#include "nav_msgs/msg/odometry.hpp" +#include "rclcpp_lifecycle/node_interfaces/lifecycle_node_interface.hpp" +#include "rclcpp_lifecycle/state.hpp" +#include "realtime_tools/realtime_buffer.hpp" +#include "realtime_tools/realtime_publisher.hpp" +#include "std_srvs/srv/set_bool.hpp" +#include "tf2_msgs/msg/tf_message.hpp" + +#include "mecanum_drive_controller/mecanum_drive_controller_parameters.hpp" +#include "mecanum_drive_controller/odometry.hpp" +namespace mecanum_drive_controller +{ +// name constants for state interfaces +static constexpr size_t NR_STATE_ITFS = 4; + +// name constants for command interfaces +static constexpr size_t NR_CMD_ITFS = 4; + +// name constants for reference interfaces +static constexpr size_t NR_REF_ITFS = 3; + +class MecanumDriveController : public controller_interface::ChainableControllerInterface +{ +public: + MecanumDriveController(); + + controller_interface::CallbackReturn on_init() override; + + controller_interface::InterfaceConfiguration command_interface_configuration() const override; + + controller_interface::InterfaceConfiguration state_interface_configuration() const override; + + controller_interface::CallbackReturn on_configure( + const rclcpp_lifecycle::State & previous_state) override; + + controller_interface::CallbackReturn on_activate( + const rclcpp_lifecycle::State & previous_state) override; + + controller_interface::CallbackReturn on_deactivate( + const rclcpp_lifecycle::State & previous_state) override; + + controller_interface::return_type update_reference_from_subscribers( + const rclcpp::Time & time, const rclcpp::Duration & period) override; + + controller_interface::return_type update_and_write_commands( + const rclcpp::Time & time, const rclcpp::Duration & period) override; + + using ControllerReferenceMsg = geometry_msgs::msg::TwistStamped; + using OdomStateMsg = nav_msgs::msg::Odometry; + using TfStateMsg = tf2_msgs::msg::TFMessage; + using ControllerStateMsg = control_msgs::msg::MecanumDriveControllerState; + +protected: + std::shared_ptr param_listener_; + mecanum_drive_controller::Params params_; + + /** + * The list is sorted in the following order: + * - front left wheel + * - front right wheel + * - back right wheel + * - back left wheel + */ + enum WheelIndex : std::size_t + { + FRONT_LEFT = 0, + FRONT_RIGHT = 1, + REAR_RIGHT = 2, + REAR_LEFT = 3 + }; + + /** + * Internal lists with joint names sorted as in `WheelIndex` enum. + */ + std::vector command_joint_names_; + + /** + * Internal lists with joint names sorted as in `WheelIndex` enum. + * If parameters for state joint names are *not* defined, this list is the same as + * `command_joint_names_`. + */ + std::vector state_joint_names_; + + // Names of the references, ex: high level vel commands from MoveIt, Nav2, etc. + // used for preceding controller + std::vector reference_names_; + + // Command subscribers and Controller State, odom state, tf state publishers + rclcpp::Subscription::SharedPtr ref_subscriber_ = nullptr; + realtime_tools::RealtimeBuffer> input_ref_; + rclcpp::Duration ref_timeout_ = rclcpp::Duration::from_seconds(0.0); + + using OdomStatePublisher = realtime_tools::RealtimePublisher; + rclcpp::Publisher::SharedPtr odom_s_publisher_; + std::unique_ptr rt_odom_state_publisher_; + + using TfStatePublisher = realtime_tools::RealtimePublisher; + rclcpp::Publisher::SharedPtr tf_odom_s_publisher_; + std::unique_ptr rt_tf_odom_state_publisher_; + + using ControllerStatePublisher = realtime_tools::RealtimePublisher; + rclcpp::Publisher::SharedPtr controller_s_publisher_; + std::unique_ptr controller_state_publisher_; + + // override methods from ChainableControllerInterface + std::vector on_export_reference_interfaces() override; + + bool on_set_chained_mode(bool chained_mode) override; + + Odometry odometry_; + +private: + // callback for topic interface + void reference_callback(const std::shared_ptr msg); + + double velocity_in_center_frame_linear_x_; // [m/s] + double velocity_in_center_frame_linear_y_; // [m/s] + double velocity_in_center_frame_angular_z_; // [rad/s] +}; + +} // namespace mecanum_drive_controller + +#endif // MECANUM_DRIVE_CONTROLLER__MECANUM_DRIVE_CONTROLLER_HPP_ diff --git a/parallel_gripper_controller/include/parallel_gripper_controller/parallel_gripper_action_controller.hpp b/parallel_gripper_controller/include/parallel_gripper_controller/parallel_gripper_action_controller.hpp new file mode 100644 index 0000000000..903ba825e3 --- /dev/null +++ b/parallel_gripper_controller/include/parallel_gripper_controller/parallel_gripper_action_controller.hpp @@ -0,0 +1,165 @@ +// Copyright 2014, SRI International +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/// \author Sachin Chitta, Adolfo Rodriguez Tsouroukdissian + +#ifndef PARALLEL_GRIPPER_CONTROLLER__PARALLEL_GRIPPER_ACTION_CONTROLLER_HPP_ +#define PARALLEL_GRIPPER_CONTROLLER__PARALLEL_GRIPPER_ACTION_CONTROLLER_HPP_ + +// C++ standard +#include +#include +#include +#include + +// ROS +#include "rclcpp/rclcpp.hpp" + +// ROS messages +#include "control_msgs/action/parallel_gripper_command.hpp" + +// rclcpp_action +#include "rclcpp_action/create_server.hpp" + +// ros_controls +#include "controller_interface/controller_interface.hpp" +#include "hardware_interface/loaned_command_interface.hpp" +#include "hardware_interface/loaned_state_interface.hpp" +#include "realtime_tools/realtime_buffer.hpp" +#include "realtime_tools/realtime_server_goal_handle.hpp" + +// Project +#include "parallel_gripper_controller/parallel_gripper_action_controller_parameters.hpp" + +namespace parallel_gripper_action_controller +{ +/** + * \brief Controller for executing a `ParallelGripperCommand` action. + * + * \tparam HardwareInterface Controller hardware interface. Currently \p + * hardware_interface::HW_IF_POSITION and \p + * hardware_interface::HW_IF_EFFORT are supported out-of-the-box. + */ + +class GripperActionController : public controller_interface::ControllerInterface +{ +public: + /** + * \brief Store position and max effort in struct to allow easier realtime + * buffer usage + */ + struct Commands + { + double position_cmd_; // Commanded position + double max_velocity_; // Desired max gripper velocity + double max_effort_; // Desired max allowed effort + }; + GripperActionController(); + + /** + * @brief command_interface_configuration This controller requires the + * position command interfaces for the controlled joints + */ + controller_interface::InterfaceConfiguration command_interface_configuration() const override; + + /** + * @brief command_interface_configuration This controller requires the + * position and velocity state interfaces for the controlled joints + */ + controller_interface::InterfaceConfiguration state_interface_configuration() const override; + + controller_interface::return_type update( + const rclcpp::Time & time, const rclcpp::Duration & period) override; + + controller_interface::CallbackReturn on_init() override; + + controller_interface::CallbackReturn on_configure( + const rclcpp_lifecycle::State & previous_state) override; + + controller_interface::CallbackReturn on_activate( + const rclcpp_lifecycle::State & previous_state) override; + + controller_interface::CallbackReturn on_deactivate( + const rclcpp_lifecycle::State & previous_state) override; + + realtime_tools::RealtimeBuffer command_; + // pre-allocated memory that is re-used to set the realtime buffer + Commands command_struct_, command_struct_rt_; + +protected: + using GripperCommandAction = control_msgs::action::ParallelGripperCommand; + using ActionServer = rclcpp_action::Server; + using ActionServerPtr = ActionServer::SharedPtr; + using GoalHandle = rclcpp_action::ServerGoalHandle; + using RealtimeGoalHandle = + realtime_tools::RealtimeServerGoalHandle; + using RealtimeGoalHandlePtr = std::shared_ptr; + using RealtimeGoalHandleBuffer = realtime_tools::RealtimeBuffer; + + bool update_hold_position_; + + bool verbose_ = false; ///< Hard coded verbose flag to help in debugging + std::string name_; ///< Controller name. + std::optional> + joint_command_interface_; + std::optional> + effort_interface_; + std::optional> + speed_interface_; + std::optional> + joint_position_state_interface_; + std::optional> + joint_velocity_state_interface_; + + std::shared_ptr param_listener_; + Params params_; + + RealtimeGoalHandleBuffer + rt_active_goal_; ///< Container for the currently active action goal, if any. + control_msgs::action::ParallelGripperCommand::Result::SharedPtr pre_alloc_result_; + + rclcpp::Duration action_monitor_period_; + + // ROS API + ActionServerPtr action_server_; + + rclcpp::TimerBase::SharedPtr goal_handle_timer_; + + rclcpp_action::GoalResponse goal_callback( + const rclcpp_action::GoalUUID & uuid, std::shared_ptr goal); + + rclcpp_action::CancelResponse cancel_callback(const std::shared_ptr goal_handle); + + void accepted_callback(std::shared_ptr goal_handle); + + void preempt_active_goal(); + + void set_hold_position(); + + rclcpp::Time last_movement_time_ = rclcpp::Time(0, 0, RCL_ROS_TIME); ///< Store stall time + double computed_command_; ///< Computed command + + /** + * \brief Check for success and publish appropriate result and feedback. + **/ + void check_for_success( + const rclcpp::Time & time, double error_position, double current_position, + double current_velocity); +}; + +} // namespace parallel_gripper_action_controller + +#include "parallel_gripper_controller/parallel_gripper_action_controller_impl.hpp" + +#endif // PARALLEL_GRIPPER_CONTROLLER__PARALLEL_GRIPPER_ACTION_CONTROLLER_HPP_ diff --git a/pid_controller/include/pid_controller/pid_controller.hpp b/pid_controller/include/pid_controller/pid_controller.hpp index 3d3f95d290..cb820e1ec2 100644 --- a/pid_controller/include/pid_controller/pid_controller.hpp +++ b/pid_controller/include/pid_controller/pid_controller.hpp @@ -26,18 +26,25 @@ #include "control_msgs/msg/multi_dof_state_stamped.hpp" #include "control_toolbox/pid_ros.hpp" #include "controller_interface/chainable_controller_interface.hpp" +<<<<<<< HEAD #include "pid_controller/visibility_control.h" #include "pid_controller_parameters.hpp" #include "rclcpp_lifecycle/node_interfaces/lifecycle_node_interface.hpp" +======= +>>>>>>> bfe622c (Update paths of GPL includes (#1487)) #include "rclcpp_lifecycle/state.hpp" #include "realtime_tools/realtime_buffer.hpp" #include "realtime_tools/realtime_publisher.hpp" #include "std_srvs/srv/set_bool.hpp" +<<<<<<< HEAD #include "control_msgs/msg/joint_controller_state.hpp" #include "control_msgs/msg/pid_state.hpp" #include "trajectory_msgs/msg/joint_trajectory_point.hpp" +======= +#include "pid_controller/pid_controller_parameters.hpp" +>>>>>>> bfe622c (Update paths of GPL includes (#1487)) namespace pid_controller { diff --git a/pose_broadcaster/include/pose_broadcaster/pose_broadcaster.hpp b/pose_broadcaster/include/pose_broadcaster/pose_broadcaster.hpp index 9317fce5e1..f0aa9e87b5 100644 --- a/pose_broadcaster/include/pose_broadcaster/pose_broadcaster.hpp +++ b/pose_broadcaster/include/pose_broadcaster/pose_broadcaster.hpp @@ -21,14 +21,19 @@ #include "controller_interface/controller_interface.hpp" #include "geometry_msgs/msg/pose_stamped.hpp" +<<<<<<< HEAD #include "pose_broadcaster/visibility_control.h" #include "pose_broadcaster_parameters.hpp" +======= +>>>>>>> bfe622c (Update paths of GPL includes (#1487)) #include "rclcpp/publisher.hpp" #include "rclcpp_lifecycle/state.hpp" #include "realtime_tools/realtime_publisher.hpp" #include "semantic_components/pose_sensor.hpp" #include "tf2_msgs/msg/tf_message.hpp" +#include "pose_broadcaster/pose_broadcaster_parameters.hpp" + namespace pose_broadcaster { diff --git a/range_sensor_broadcaster/include/range_sensor_broadcaster/range_sensor_broadcaster.hpp b/range_sensor_broadcaster/include/range_sensor_broadcaster/range_sensor_broadcaster.hpp index 9a6f1c78df..8ecddec096 100644 --- a/range_sensor_broadcaster/include/range_sensor_broadcaster/range_sensor_broadcaster.hpp +++ b/range_sensor_broadcaster/include/range_sensor_broadcaster/range_sensor_broadcaster.hpp @@ -24,14 +24,19 @@ #include #include "controller_interface/controller_interface.hpp" +<<<<<<< HEAD #include "range_sensor_broadcaster/visibility_control.h" #include "range_sensor_broadcaster_parameters.hpp" #include "rclcpp_lifecycle/node_interfaces/lifecycle_node_interface.hpp" +======= +>>>>>>> bfe622c (Update paths of GPL includes (#1487)) #include "rclcpp_lifecycle/state.hpp" #include "realtime_tools/realtime_publisher.hpp" #include "semantic_components/range_sensor.hpp" #include "sensor_msgs/msg/range.hpp" +#include "range_sensor_broadcaster/range_sensor_broadcaster_parameters.hpp" + namespace range_sensor_broadcaster { class RangeSensorBroadcaster : public controller_interface::ControllerInterface diff --git a/ros2_controllers-not-released.jazzy.repos b/ros2_controllers-not-released.jazzy.repos index 66352f4960..1b3910e7e7 100644 --- a/ros2_controllers-not-released.jazzy.repos +++ b/ros2_controllers-not-released.jazzy.repos @@ -1,5 +1,6 @@ repositories: - generate_parameter_library: - type: git - url: https://github.com/picknikrobotics/generate_parameter_library.git - version: main + ## EXAMPLE DEPENDENCY +# : +# type: git +# url: git@github.com:/.git +# version: master diff --git a/ros2_controllers-not-released.rolling.repos b/ros2_controllers-not-released.rolling.repos index 66352f4960..1b3910e7e7 100644 --- a/ros2_controllers-not-released.rolling.repos +++ b/ros2_controllers-not-released.rolling.repos @@ -1,5 +1,6 @@ repositories: - generate_parameter_library: - type: git - url: https://github.com/picknikrobotics/generate_parameter_library.git - version: main + ## EXAMPLE DEPENDENCY +# : +# type: git +# url: git@github.com:/.git +# version: master diff --git a/steering_controllers_library/include/steering_controllers_library/steering_controllers_library.hpp b/steering_controllers_library/include/steering_controllers_library/steering_controllers_library.hpp index 1f6a41d8ee..824b3297e2 100644 --- a/steering_controllers_library/include/steering_controllers_library/steering_controllers_library.hpp +++ b/steering_controllers_library/include/steering_controllers_library/steering_controllers_library.hpp @@ -29,10 +29,13 @@ #include "rclcpp_lifecycle/state.hpp" #include "realtime_tools/realtime_buffer.hpp" #include "realtime_tools/realtime_publisher.hpp" +<<<<<<< HEAD #include "std_srvs/srv/set_bool.hpp" #include "steering_controllers_library/steering_odometry.hpp" #include "steering_controllers_library/visibility_control.h" #include "steering_controllers_library_parameters.hpp" +======= +>>>>>>> bfe622c (Update paths of GPL includes (#1487)) // TODO(anyone): Replace with controller specific messages #include "ackermann_msgs/msg/ackermann_drive_stamped.hpp" @@ -42,6 +45,9 @@ #include "nav_msgs/msg/odometry.hpp" #include "tf2_msgs/msg/tf_message.hpp" +#include "steering_controllers_library/steering_controllers_library_parameters.hpp" +#include "steering_controllers_library/steering_odometry.hpp" + namespace steering_controllers_library { class SteeringControllersLibrary : public controller_interface::ChainableControllerInterface diff --git a/tricycle_controller/include/tricycle_controller/tricycle_controller.hpp b/tricycle_controller/include/tricycle_controller/tricycle_controller.hpp index 8db71d2bc4..cc81db3b2b 100644 --- a/tricycle_controller/include/tricycle_controller/tricycle_controller.hpp +++ b/tricycle_controller/include/tricycle_controller/tricycle_controller.hpp @@ -39,10 +39,16 @@ #include "realtime_tools/realtime_publisher.hpp" #include "std_srvs/srv/empty.hpp" #include "tf2_msgs/msg/tf_message.hpp" + #include "tricycle_controller/odometry.hpp" #include "tricycle_controller/steering_limiter.hpp" #include "tricycle_controller/traction_limiter.hpp" +<<<<<<< HEAD #include "tricycle_controller/visibility_control.h" +======= +// auto-generated by generate_parameter_library +#include "tricycle_controller/tricycle_controller_parameters.hpp" +>>>>>>> bfe622c (Update paths of GPL includes (#1487)) namespace tricycle_controller { diff --git a/tricycle_steering_controller/include/tricycle_steering_controller/tricycle_steering_controller.hpp b/tricycle_steering_controller/include/tricycle_steering_controller/tricycle_steering_controller.hpp index 607a684df5..4084771246 100644 --- a/tricycle_steering_controller/include/tricycle_steering_controller/tricycle_steering_controller.hpp +++ b/tricycle_steering_controller/include/tricycle_steering_controller/tricycle_steering_controller.hpp @@ -21,8 +21,12 @@ #include #include "steering_controllers_library/steering_controllers_library.hpp" +<<<<<<< HEAD #include "tricycle_steering_controller/visibility_control.h" #include "tricycle_steering_controller_parameters.hpp" +======= +#include "tricycle_steering_controller/tricycle_steering_controller_parameters.hpp" +>>>>>>> bfe622c (Update paths of GPL includes (#1487)) namespace tricycle_steering_controller {