@@ -914,10 +914,9 @@ controller_interface::CallbackReturn JointTrajectoryController::on_configure(
914914 !has_velocity_command_interface_ && !has_acceleration_command_interface_ &&
915915 !has_effort_command_interface_)
916916 {
917- set_scaling_factor_srv_ = get_node ()->create_service <control_msgs::srv::SetScalingFactor>(
918- " ~/set_scaling_factor" , std::bind (
919- &JointTrajectoryController::set_scaling_factor, this ,
920- std::placeholders::_1, std::placeholders::_2));
917+ scaling_factor_sub_ = get_node ()->create_subscription <std_msgs::msg::Float64>(
918+ " ~/speed_scaling_input" , rclcpp::SystemDefaultsQoS (),
919+ [&](const std_msgs::msg::Float64 & msg) { set_scaling_factor (msg.data );});
921920 RCLCPP_INFO (
922921 logger, " Setting initial scaling factor to %2f" , params_.scaling_factor_initial_default );
923922 scaling_factor_rt_buff_.writeFromNonRT (params_.scaling_factor_initial_default );
@@ -1632,19 +1631,16 @@ void JointTrajectoryController::resize_joint_trajectory_point_command(
16321631 }
16331632}
16341633
1635- bool JointTrajectoryController::set_scaling_factor (
1636- control_msgs::srv::SetScalingFactor::Request::SharedPtr req,
1637- control_msgs::srv::SetScalingFactor::Response::SharedPtr resp)
1634+ bool JointTrajectoryController::set_scaling_factor (const double scaling_factor)
16381635{
1639- if (req-> scaling_factor < 0 && req-> scaling_factor > 1 )
1636+ if (scaling_factor < 0 || scaling_factor > 1 )
16401637 {
16411638 RCLCPP_WARN (
16421639 get_node ()->get_logger (), " Scaling factor has to be in range [0, 1]. Ignoring input!" );
1643- resp->success = false ;
1644- return true ;
1640+ return false ;
16451641 }
16461642
1647- RCLCPP_INFO (get_node ()->get_logger (), " New scaling factor will be %f" , req-> scaling_factor );
1643+ RCLCPP_INFO (get_node ()->get_logger (), " New scaling factor will be %f" , scaling_factor);
16481644 if (params_.speed_scaling_command_interface_name .empty ())
16491645 {
16501646 if (!params_.speed_scaling_state_interface_name .empty ())
@@ -1655,7 +1651,7 @@ bool JointTrajectoryController::set_scaling_factor(
16551651 " This will likely get overwritten by the hardware again. If available, please also setup "
16561652 " the speed_scaling_command_interface_name" );
16571653 }
1658- scaling_factor_rt_buff_.writeFromNonRT (req-> scaling_factor );
1654+ scaling_factor_rt_buff_.writeFromNonRT (scaling_factor);
16591655 }
16601656 else
16611657 {
@@ -1665,12 +1661,11 @@ bool JointTrajectoryController::set_scaling_factor(
16651661 {
16661662 if (interface.get_name () == params_.speed_scaling_command_interface_name )
16671663 {
1668- interface.set_value (static_cast <double >(req-> scaling_factor ));
1664+ interface.set_value (static_cast <double >(scaling_factor));
16691665 }
16701666 }
16711667 }
16721668 }
1673- resp->success = true ;
16741669 return true ;
16751670}
16761671
0 commit comments