ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

Right Solution

Create a NotSoSimpleActionState which accepts a timeout that can be used to monitor the actionlib status topic for the action. Have the state abort if this heartbeat timeout is violated.

Quick Solution

You could create a lightweight heartbeat state that subscribes to the appropriate actionlib status topic, and exits if the heartbeat timeout is violated. Put that in your concurrence as an additional watchdog.

Right Solution

Create a NotSoSimpleActionState which accepts a timeout that can be used to monitor the actionlib status topic for the action. Have the state abort if this heartbeat timeout is violated.

Quick Solution

You could create a lightweight heartbeat state that subscribes to the appropriate actionlib status topic, and exits if the heartbeat timeout is violated. Put that in your concurrence as an additional watchdog.

Note that neither of these will involve a lot of additional overhead since your're already subscribed to the status topic from this node if you're talking to its action server.

Right Solution

Create You would need to create a NotSoSimpleActionState which accepts a timeout that can be used to monitor the actionlib status topic for the action. Have the state abort if this heartbeat timeout is violated.

Quick SolutionThe problem is that when the concurrence tries to preempt the SimpleActionState, it's trying to preempt the action, which will never preempt.

You could create a lightweight heartbeat state that subscribes to the appropriate actionlib status topic, and exits if the heartbeat timeout is violated. Put that in your concurrence as an additional watchdog.

Note that neither of these will involve a lot of additional overhead since your're already subscribed to the status topic from this node if you're talking to its action server.

You would need to create a NotSoSimpleActionState which accepts a timeout that can be used to monitor the actionlib status topic for the action. Have the state abort if this heartbeat timeout is violated.

The problem is that when the concurrence tries to preempt the SimpleActionState, it's trying to preempt the action, which will never preempt.preempt, because it has died.