Skip to content

Commit 13cff26

Browse files
Use new RT publisher API in PID class (#394) (#407)
Co-authored-by: Christoph Fröhlich <[email protected]>
1 parent 226ea4a commit 13cff26

File tree

2 files changed

+15
-17
lines changed

2 files changed

+15
-17
lines changed

control_toolbox/include/control_toolbox/pid_ros.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -544,6 +544,7 @@ class PidROS
544544
rclcpp::node_interfaces::NodeTopicsInterface::SharedPtr topics_interface_;
545545

546546
std::shared_ptr<realtime_tools::RealtimePublisher<control_msgs::msg::PidState>> rt_state_pub_;
547+
control_msgs::msg::PidState pid_state_msg_;
547548
std::shared_ptr<rclcpp::Publisher<control_msgs::msg::PidState>> state_pub_;
548549

549550
Pid pid_;

control_toolbox/src/pid_ros.cpp

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -497,23 +497,20 @@ void PidROS::publish_pid_state(double cmd, double error, rclcpp::Duration dt)
497497
// Publish controller state if configured
498498
if (rt_state_pub_)
499499
{
500-
if (rt_state_pub_->trylock())
501-
{
502-
rt_state_pub_->msg_.header.stamp = rclcpp::Clock().now();
503-
rt_state_pub_->msg_.timestep = dt;
504-
rt_state_pub_->msg_.error = error;
505-
rt_state_pub_->msg_.error_dot = d_error;
506-
rt_state_pub_->msg_.p_error = p_error;
507-
rt_state_pub_->msg_.i_error = i_term;
508-
rt_state_pub_->msg_.d_error = d_error;
509-
rt_state_pub_->msg_.p_term = gains.p_gain_;
510-
rt_state_pub_->msg_.i_term = gains.i_gain_;
511-
rt_state_pub_->msg_.d_term = gains.d_gain_;
512-
rt_state_pub_->msg_.i_max = gains.i_max_;
513-
rt_state_pub_->msg_.i_min = gains.i_min_;
514-
rt_state_pub_->msg_.output = cmd;
515-
rt_state_pub_->unlockAndPublish();
516-
}
500+
pid_state_msg_.header.stamp = rclcpp::Clock().now();
501+
pid_state_msg_.timestep = dt;
502+
pid_state_msg_.error = error;
503+
pid_state_msg_.error_dot = d_error;
504+
pid_state_msg_.p_error = p_error;
505+
pid_state_msg_.i_error = i_term;
506+
pid_state_msg_.d_error = d_error;
507+
pid_state_msg_.p_term = gains.p_gain_;
508+
pid_state_msg_.i_term = gains.i_gain_;
509+
pid_state_msg_.d_term = gains.d_gain_;
510+
pid_state_msg_.i_max = gains.i_max_;
511+
pid_state_msg_.i_min = gains.i_min_;
512+
pid_state_msg_.output = cmd;
513+
rt_state_pub_->try_publish(pid_state_msg_);
517514
}
518515
}
519516

0 commit comments

Comments
 (0)