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"
72 std::shared_ptr<NodeT> node_ptr,
73 std::string prefix = std::string(
""),
74 bool prefix_is_for_params =
false
77 node_ptr->get_node_base_interface(),
78 node_ptr->get_node_logging_interface(),
79 node_ptr->get_node_parameters_interface(),
80 node_ptr->get_node_topics_interface(),
81 prefix, prefix_is_for_params)
86 rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_base,
87 rclcpp::node_interfaces::NodeLoggingInterface::SharedPtr node_logging,
88 rclcpp::node_interfaces::NodeParametersInterface::SharedPtr node_params,
89 rclcpp::node_interfaces::NodeTopicsInterface::SharedPtr topics_interface,
90 std::string prefix = std::string(
""),
bool prefix_is_for_params =
false);
107 double p,
double i,
double d,
double i_max,
double i_min,
bool antiwindup);
122 [[deprecated(
"Use initialize_from_args() instead")]]
void initPid(
123 double p,
double i,
double d,
double i_max,
double i_min,
bool antiwindup);
138 double p,
double i,
double d,
double i_max,
double i_min,
bool antiwindup,
bool save_iterm);
152 [[deprecated(
"Use initialize_from_args() instead")]]
void initPid(
double p,
double i,
double d,
153 double i_max,
double i_min,
bool antiwindup,
bool save_iterm);
165 [[deprecated(
"Use initialize_from_ros_parameters() instead")]]
bool initPid();
179 void reset(
bool save_iterm);
203 [[deprecated(
"Use compute_command() instead")]]
double computeCommand(
204 double error, rclcpp::Duration dt);
217 double compute_command(
double error,
double error_dot,
const rclcpp::Duration & dt);
230 [[deprecated(
"Use compute_command() instead")]]
double computeCommand(
231 double error,
double error_dot, rclcpp::Duration dt);
259 void set_gains(
double p,
double i,
double d,
double i_max,
double i_min,
bool antiwindup =
false);
275 [[deprecated(
"Use set_gains() instead")]]
void setGains(
276 double p,
double i,
double d,
double i_max,
double i_min,
bool antiwindup =
false);
304 [[deprecated(
"Use set_current_cmd() instead")]]
void setCurrentCmd(
double cmd);
316 [[deprecated(
"Use get_current_cmd() instead")]]
double getCurrentCmd();
328 [[deprecated(
"Use get_pid_state_publisher() instead")]]
346 double & pe,
double & ie,
double & de);
356 [[deprecated(
"Use print_values() instead")]]
void printValues();
362 inline rclcpp::node_interfaces::OnSetParametersCallbackHandle::SharedPtr
365 return parameter_callback_;
372 [[deprecated(
"Use get_parameters_callback_handle() instead")]]
373 inline rclcpp::node_interfaces::OnSetParametersCallbackHandle::SharedPtr
380 std::string topic_prefix_;
381 std::string param_prefix_;
386 [[deprecated]]
void setParameterEventCallback();
388 [[deprecated]]
void publishPIDState(
double cmd,
double error, rclcpp::Duration dt);
390 [[deprecated]]
void declareParam(
const std::string & param_name,
391 rclcpp::ParameterValue param_value);
393 [[deprecated]]
bool getDoubleParam(
const std::string & param_name,
double & value);
395 [[deprecated]]
bool getBooleanParam(
const std::string & param_name,
bool & value);
403 [[deprecated]]
void initialize(std::string topic_prefix);
406 void set_parameter_event_callback();
408 void publish_pid_state(
double cmd,
double error, rclcpp::Duration dt);
410 void declare_param(
const std::string & param_name, rclcpp::ParameterValue param_value);
412 bool get_double_param(
const std::string & param_name,
double & value);
414 bool get_boolean_param(
const std::string & param_name,
bool & value);
423 void set_prefixes(
const std::string &topic_prefix);
425 rclcpp::node_interfaces::OnSetParametersCallbackHandle::SharedPtr parameter_callback_;
427 rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_base_;
428 rclcpp::node_interfaces::NodeLoggingInterface::SharedPtr node_logging_;
429 rclcpp::node_interfaces::NodeParametersInterface::SharedPtr node_params_;
430 rclcpp::node_interfaces::NodeTopicsInterface::SharedPtr topics_interface_;
432 std::shared_ptr<realtime_tools::RealtimePublisher<control_msgs::msg::PidState>> rt_state_pub_;
433 std::shared_ptr<rclcpp::Publisher<control_msgs::msg::PidState>> state_pub_;