Skip to content

Commit f80d845

Browse files
committed
Fix timeout
1 parent 665da8d commit f80d845

File tree

2 files changed

+18
-11
lines changed

2 files changed

+18
-11
lines changed

aegis_grpc/include/aegis_grpc/robot_control_service.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ class RobotControlServiceImpl final
7575
proto_aegis_grpc::v1::TriggerResponse* response) override;
7676

7777
private:
78-
bool switchControllers(
78+
bool SwitchControllers(
7979
const std::vector<std::string>& activate,
8080
const std::vector<std::string>& deactivate);
8181

aegis_grpc/src/robot_control_service.cpp

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ void RobotControlServiceImpl::DeclareROSParameter(
7676
p.value_to_string().c_str());
7777
}
7878

79-
bool RobotControlServiceImpl::switchControllers(
79+
bool RobotControlServiceImpl::SwitchControllers(
8080
const std::vector<std::string>& activate,
8181
const std::vector<std::string>& deactivate) {
8282
auto req = std::make_shared<controller_manager_msgs::srv::SwitchController::Request>();
@@ -85,15 +85,16 @@ bool RobotControlServiceImpl::switchControllers(
8585
req->deactivate_controllers = deactivate;
8686
req->strictness = controller_manager_msgs::srv::SwitchController::Request::STRICT;
8787

88-
if (!switch_controller_client_->wait_for_service(2s)) {
88+
if (!switch_controller_client_->wait_for_service(action_timeout_)) {
8989
RCLCPP_WARN(get_logger(), "Switch controller service not available");
9090
return false;
9191
}
9292

9393
auto future = switch_controller_client_->async_send_request(req);
94+
auto status = future.wait_for(action_timeout_);
9495

95-
if (rclcpp::spin_until_future_complete(node_, future) != rclcpp::FutureReturnCode::SUCCESS) {
96-
RCLCPP_WARN(get_logger(), "Switch controller call failed");
96+
if (status != std::future_status::ready || !future.valid()) {
97+
RCLCPP_WARN(get_logger(), "Switch controller call failed or timed out.");
9798
return false;
9899
}
99100

@@ -107,11 +108,13 @@ grpc::Status RobotControlServiceImpl::ServoEnable(
107108
{
108109
response->set_success(false);
109110

110-
if (!switchControllers(
111+
if (!SwitchControllers(
111112
{"forward_position_controller"},
112113
{"scaled_joint_trajectory_controller"})) {
113-
response->set_msg("Failed to switch controllers");
114-
return grpc::Status(grpc::StatusCode::INTERNAL, "Controller switch failed");
114+
std::string err = "Controller switch failed.";
115+
RCLCPP_WARN(get_logger(), "[RobotControlService][ServoEnable] %s", err.c_str());
116+
response->set_msg(err);
117+
return grpc::Status(grpc::StatusCode::INTERNAL, err);
115118
}
116119

117120
{
@@ -131,11 +134,14 @@ grpc::Status RobotControlServiceImpl::ServoDisable(
131134
{
132135
response->set_success(false);
133136

134-
if (!switchControllers(
137+
if (!SwitchControllers(
135138
{"scaled_joint_trajectory_controller"},
136139
{"forward_position_controller"})) {
137-
response->set_msg("Failed to switch controllers");
138-
return grpc::Status(grpc::StatusCode::INTERNAL, "Controller switch failed");
140+
141+
std::string err = "Controller switch failed.";
142+
RCLCPP_WARN(get_logger(), "[RobotControlService][ServoDisable] %s", err.c_str());
143+
response->set_msg(err);
144+
return grpc::Status(grpc::StatusCode::INTERNAL, err);
139145
}
140146

141147
{
@@ -146,6 +152,7 @@ grpc::Status RobotControlServiceImpl::ServoDisable(
146152

147153
response->set_success(true);
148154
response->set_msg("");
155+
RCLCPP_WARN(get_logger(), "[RobotControlService][ServoDisable] RETURN");
149156
return grpc::Status::OK;
150157
}
151158

0 commit comments

Comments
 (0)