Its possible due to localization jumps or other behavioral servers taking control that the robot may enter a keepout zone. If the behavior isn't changed, the robot will be deadlocked in that zone.
So we can:
- Toggle the zones on/off - but that gives the robot free reign to hang out in the zones that the user really wasn't want it in
- Reinterpret lethal cost to simply very high cost to allow the robot to leave the zone, once out of the zone, re-enable lethality
- Adjust the costmap APIs to have transitions from A->B rather than simply cell costs, whereas if the starting point A is already in a keepout zone, then it doesn't set it as lethal. That would allow the robot to leave keepout zones but not enter them intentionally
- Likely others