Keeps track of number failures/aborts the client receives from the navigation stack
Handles GoalState::ABORTED and all other undesired states gracefully now, by retrying for a maximum number of 5 times.
When retries exceeds 5 times, the entire navigation request will be terminated, and the client awaits either manual intervention or a new request.
Test
Follow instructions to build on main README, including the specific forks and branches of robot_state_publisher and turtlebot3_simulations to start the turtlebot world simulation.
Block the robot's path mercilessly, and wait for retries when the navigation stack aborts.
The printouts should look something like this, when it aborts and tries again,
[ WARN] [1631164475.035547767, 1949.243000000]: Rotate recovery behavior started.
[ERROR] [1631164475.035651688, 1949.243000000]: Rotate recovery can't rotate in place because there is a potential collision. Cost: -1.00
[ INFO] [1631164475.136051509, 1949.343000000]: Got new plan
[ WARN] [1631164475.140834967, 1949.348000000]: DWA planner failed to produce path.
[ERROR] [1631164475.236090154, 1949.443000000]: Aborting because a valid control could not be found. Even after executing all recovery behaviors
[ INFO] [1631164475.335374478, 1949.542000000]: robot's navigation stack has aborted the current goal 2 times, client will trying again...
[ INFO] [1631164475.434817655, 1949.642000000]: sending next goal.
[ INFO] [1631164475.535611672, 1949.743000000]: Got new plan
[ WARN] [1631164475.539325824, 1949.746000000]: DWA planner failed to produce path.
The printouts should look something like this after it retries and fails for 5 times in a row,
[ WARN] [1631164828.697811637, 194.939000000]: DWA planner failed to produce path.
[ WARN] [1631164828.794001591, 195.036000000]: Rotate recovery behavior started.
[ERROR] [1631164828.794098687, 195.036000000]: Rotate recovery can't rotate in place because there is a potential collision. Cost: -1.00
[ INFO] [1631164828.893574894, 195.135000000]: Got new plan
[ WARN] [1631164828.897170407, 195.139000000]: DWA planner failed to produce path.
[ERROR] [1631164828.993381070, 195.235000000]: Aborting because a valid control could not be found. Even after executing all recovery behaviors
[ INFO] [1631164828.993924162, 195.235000000]: robot's navigation stack has aborted the current goal 5 times, please check that there is nothing in the way of the robot, client will abort the current path request, and await further requests.
A new path request can be sent over with a new unique ID, and it will start performing the new request.
Bug fix
Fixes https://github.com/open-rmf/free_fleet/issues/92.
Fix applied
GoalState::ABORTED
and all other undesired states gracefully now, by retrying for a maximum number of 5 times.Test
main
README, including the specific forks and branches ofrobot_state_publisher
andturtlebot3_simulations
to start the turtlebot world simulation.The printouts should look something like this, when it aborts and tries again,
The printouts should look something like this after it retries and fails for 5 times in a row,
A new path request can be sent over with a new unique ID, and it will start performing the new request.