33#ifndef CONTROL_TOOLBOX__PID_ROS_HPP_
34#define CONTROL_TOOLBOX__PID_ROS_HPP_
39#include "control_msgs/msg/pid_state.hpp"
41#include "rclcpp/clock.hpp"
42#include "rclcpp/duration.hpp"
43#include "rclcpp/node.hpp"
45#include "realtime_tools/realtime_buffer.hpp"
46#include "realtime_tools/realtime_publisher.hpp"
48#include "control_toolbox/pid.hpp"
70 template <
class NodeT>
71 [[deprecated(
"Use overloads with explicit prefixes for params and topics")]]
explicit PidROS(
72 std::shared_ptr<NodeT>
node_ptr, std::string
prefix = std::string(
""),
80 template <
class NodeT>
99 template <
class NodeT>
121 template <
class NodeT>
132 [[deprecated(
"Use overloads with explicit prefixes for params and topics")]]
PidROS(
133 rclcpp::node_interfaces::NodeBaseInterface::SharedPtr
node_base,
134 rclcpp::node_interfaces::NodeLoggingInterface::SharedPtr
node_logging,
135 rclcpp::node_interfaces::NodeParametersInterface::SharedPtr
node_params,
151 rclcpp::node_interfaces::NodeBaseInterface::SharedPtr
node_base,
152 rclcpp::node_interfaces::NodeLoggingInterface::SharedPtr
node_logging,
153 rclcpp::node_interfaces::NodeParametersInterface::SharedPtr
node_params,
175 double p,
double i,
double d,
double u_max,
double u_min,
249 double p,
double i,
double d,
double u_max,
double u_min,
297 inline rclcpp::node_interfaces::OnSetParametersCallbackHandle::SharedPtr
300 return parameter_callback_;
304 std::string topic_prefix_;
305 std::string param_prefix_;
308 void set_parameter_event_callback();
310 void publish_pid_state(
double cmd,
double error, rclcpp::Duration
dt);
314 bool get_double_param(
const std::string &
param_name,
double & value);
316 bool get_boolean_param(
const std::string &
param_name,
bool & value);
318 bool get_string_param(
const std::string &
param_name, std::string & value);
327 [[deprecated]]
void set_prefixes(
const std::string &
topic_prefix);
329 rclcpp::node_interfaces::OnSetParametersCallbackHandle::SharedPtr parameter_callback_;
331 rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_base_;
332 rclcpp::node_interfaces::NodeLoggingInterface::SharedPtr node_logging_;
333 rclcpp::node_interfaces::NodeParametersInterface::SharedPtr node_params_;
334 rclcpp::node_interfaces::NodeTopicsInterface::SharedPtr topics_interface_;
336 std::shared_ptr<realtime_tools::RealtimePublisher<control_msgs::msg::PidState>> rt_state_pub_;
337 control_msgs::msg::PidState pid_state_msg_;
338 std::shared_ptr<rclcpp::Publisher<control_msgs::msg::PidState>> state_pub_;