Why doesn't the nav2 controller plugin API have a method for failing?
I have another question about the design choices of nav2. Specifically, I'm wondering why the controller plugins (nav2_core::Controller
) don't have a mechanism for failure. Consider the following example as motivation.
Suppose we have a very forgiving progress checker (our robot is slow and unreliable and so we have a 10 second timer for it to raise an error) and suppose we have a simulator in our controller plugin that can detect problems. Then in the event that our robot detects a problem in simulation, we will have to wait an additional 10 seconds for the control server (nav2_controller::ControllerServer
) to quit. This seems far too long since we were able to detect a problem in the controller plugin 10 seconds early.