diff --git a/apps/ros2/src/raros/raros/navigation/navigation.py b/apps/ros2/src/raros/raros/navigation/navigation.py index 6dba20d..4030ed0 100644 --- a/apps/ros2/src/raros/raros/navigation/navigation.py +++ b/apps/ros2/src/raros/raros/navigation/navigation.py @@ -35,6 +35,8 @@ def move_action_callback(self, goal_handle: ServerGoalHandle): request: Move.Goal = goal_handle.request self.get_logger().info(f'executing goal: "{request}"') + self.stop_publisher.publish(EmptyMsg()) + feedback_msg = Move.Feedback() feedback_msg.remaining_distance = request.distance goal_handle.publish_feedback(feedback_msg) @@ -65,6 +67,8 @@ def rotate_action_callback(self, goal_handle: ServerGoalHandle): request: Rotate.Goal = goal_handle.request self.get_logger().info(f'executing goal: "{request}"') + self.stop_publisher.publish(EmptyMsg()) + feedback_msg = Rotate.Feedback() feedback_msg.remaining_angle = request.angle goal_handle.publish_feedback(feedback_msg) @@ -96,6 +100,8 @@ def turn_action_callback(self, goal_handle: ServerGoalHandle): request: Turn.Goal = goal_handle.request self.get_logger().info(f'executing goal: "{request}"') + self.stop_publisher.publish(EmptyMsg()) + feedback_msg = Turn.Feedback() feedback_msg.remaining_angle = request.angle goal_handle.publish_feedback(feedback_msg) diff --git a/apps/ros2/src/raros/raros/navigation/observe_action.py b/apps/ros2/src/raros/raros/navigation/observe_action.py index a9ca4ab..23213a8 100644 --- a/apps/ros2/src/raros/raros/navigation/observe_action.py +++ b/apps/ros2/src/raros/raros/navigation/observe_action.py @@ -1,5 +1,7 @@ +import uuid from typing import Callable, Any +from action_msgs.msg import GoalStatus from raros_interfaces.msg import StepperFeedback, StepperStatus from rclpy import qos from rclpy.action.server import ServerGoalHandle @@ -8,7 +10,7 @@ class ObserveAction(Node): def __init__(self, goal_handle: ServerGoalHandle, create_feedback_msg_callback: Callable[[StepperFeedback], Any]): - super().__init__('observe_action', use_global_arguments=False) + super().__init__(f'observe_action_{uuid.uuid4().hex}', use_global_arguments=False) self.goal_handle = goal_handle self.create_feedback_msg_callback = create_feedback_msg_callback @@ -26,7 +28,7 @@ def __init__(self, goal_handle: ServerGoalHandle, create_feedback_msg_callback: def status_callback(self, msg: StepperStatus): self.get_logger().info(f'received: "{msg}"') - if msg.moving is False: + if msg.moving is False and self.goal_handle.status == GoalStatus.STATUS_EXECUTING: self.goal_handle.succeed() def feedback_callback(self, msg: StepperFeedback):