ros2 service call /rotate services_quiz_srv/srv/Spin “{direction: ‘left’, angular_velocity: 0.5, time: 3}”
response:
I received the message services_quiz_srv.srv.Spin_Response(success=False).
What went wrong?
void rotate_callback(const std::shared_ptr<SpinMessage::Request> request,
const std::shared_ptr<SpinMessage::Response> response) {
auto message = geometry_msgs::msg::Twist();
if (request->direction == "left" || request->direction == "right") {
double angular_velocity = (request->direction == "left")
? request->angular_velocity
: -request->angular_velocity;
message.angular.z = angular_velocity;
publisher_->publish(message);
auto timer = this->create_wall_timer(seconds(time), [this, response]() {
auto stop_message = geometry_msgs::msg::Twist();
stop_message.angular.z = 0.0;
publisher_->publish(stop_message);
response->success = true;
});
} else {
RCLCPP_ERROR(get_logger(), "Invalid direction: %s",
request->direction.c_str());
response->success = false;
}
}