Actions in ROS are designed for long-running tasks because they allow the client to receive feedback during execution and can be preempted (stopped) if needed. Services, on the other hand, are blocking calls that wait until the task finishes and do not provide feedback or allow interruption.
ROS services are synchronous and blocking. When a client calls a service, it waits until the service completes and returns a response. There is no built-in way to get progress updates or cancel the call.
ROS action servers support preemption, allowing clients to cancel ongoing tasks. When preempted, the server stops the task and sends a result message indicating the task was preempted.
In ROS, the action client uses send_goal method with a feedback_cb parameter to register a feedback callback function. Other options use incorrect method names or parameter names.
If the action server does not publish feedback messages during the task, the client will not receive any feedback even if the callback is set up correctly. Other options describe client-side mistakes that would cause different symptoms.
