Skip to content

Commit 1e1990d

Browse files
committed
Added publisher rate
1 parent 8a84f1b commit 1e1990d

File tree

3 files changed

+35
-13
lines changed

3 files changed

+35
-13
lines changed

ur_controllers/include/ur_controllers/speed_scaling_state_controller.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ class SpeedScalingStateController : public controller_interface::ControllerInter
6666

6767
protected:
6868
std::vector<std::string> joint_names_;
69+
rclcpp::Time last_publish_time_;
70+
double publish_rate_;
6971

7072
std::shared_ptr<rclcpp::Publisher<std_msgs::msg::Float64>> speed_scaling_state_publisher_;
7173
std_msgs::msg::Float64 speed_scaling_state_msg_;

ur_controllers/src/speed_scaling_state_controller.cpp

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,18 @@ controller_interface::InterfaceConfiguration SpeedScalingStateController::state_
7474
rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn
7575
SpeedScalingStateController::on_configure(const rclcpp_lifecycle::State& /*previous_state*/)
7676
{
77+
node_->declare_parameter("state_publish_rate");
78+
79+
if (!node_->get_parameter("state_publish_rate", publish_rate_))
80+
{
81+
RCLCPP_INFO(get_node()->get_logger(), "Parameter 'state_publish_rate' not set");
82+
return rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn::ERROR;
83+
}
84+
else
85+
{
86+
RCLCPP_INFO(get_node()->get_logger(), "Publisher rate set to : %.1f Hz", publish_rate_);
87+
}
88+
7789
try
7890
{
7991
speed_scaling_state_publisher_ =
@@ -96,6 +108,7 @@ SpeedScalingStateController::on_activate(const rclcpp_lifecycle::State& /*previo
96108
return rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn::ERROR;
97109
}
98110

111+
last_publish_time_ = node_->now();
99112
return rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn::SUCCESS;
100113
}
101114

@@ -166,22 +179,25 @@ double get_value(const std::unordered_map<std::string, std::unordered_map<std::s
166179

167180
controller_interface::return_type SpeedScalingStateController::update()
168181
{
169-
for (const auto& state_interface : state_interfaces_)
182+
if (publish_rate_ > 0.0 && (node_->now() - last_publish_time_) > rclcpp::Duration(1.0 / publish_rate_, 0.0))
170183
{
171-
name_if_value_mapping_[state_interface.get_name()][state_interface.get_interface_name()] =
172-
state_interface.get_value();
173-
RCLCPP_DEBUG(get_node()->get_logger(), "%s/%s: %f\n", state_interface.get_name().c_str(),
174-
state_interface.get_interface_name().c_str(), state_interface.get_value());
175-
}
176-
177-
for (auto i = 0ul; i < joint_names_.size(); ++i)
178-
{
179-
speed_scaling_state_msg_.data = get_value(name_if_value_mapping_, joint_names_[i], "speed_scaling_factor");
180-
}
184+
for (const auto& state_interface : state_interfaces_)
185+
{
186+
name_if_value_mapping_[state_interface.get_name()][state_interface.get_interface_name()] =
187+
state_interface.get_value();
188+
RCLCPP_DEBUG(get_node()->get_logger(), "%s/%s: %f\n", state_interface.get_name().c_str(),
189+
state_interface.get_interface_name().c_str(), state_interface.get_value());
190+
}
181191

182-
// publish
183-
speed_scaling_state_publisher_->publish(speed_scaling_state_msg_);
192+
for (auto i = 0ul; i < joint_names_.size(); ++i)
193+
{
194+
speed_scaling_state_msg_.data = get_value(name_if_value_mapping_, joint_names_[i], "speed_scaling_factor");
195+
}
184196

197+
// publish
198+
speed_scaling_state_publisher_->publish(speed_scaling_state_msg_);
199+
last_publish_time_ = node_->now();
200+
}
185201
return controller_interface::return_type::SUCCESS;
186202
}
187203

ur_ros2_control_demos/config/ur_ros2_control.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ ur_joint_trajectory_controller:
3333
stopped_velocity_tolerance: 0.01
3434
goal_time: 0.0
3535

36+
speed_scaling_state_controller:
37+
ros__parameters:
38+
state_publish_rate: 100.0
39+
3640
forward_command_controller_position:
3741
ros__parameters:
3842
joints:

0 commit comments

Comments
 (0)