ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
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.
2 | No.2 Revision |
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.
3 | No.3 Revision |
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.
4 | No.4 Revision |
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.