Description
I have a situation in which my robot's base controller (using the terminology from this block diagram) is somewhat complex. It has internal logic by which it might determine that a given cmd_vel
is impossible to execute (this robot has a steered caster setup with steering limits).
It's easy enough for me to have the base controller stop the robot in that situation, but it would be nice to propagate that failure information back into move_base
somehow. It seems to me that accepting such failure feedback from the base controller is similar to how move_base
already watches whether the global and local planners fail and then takes various actions (recovery behaviors, abort, etc.). For my particular application, I want to be able to stop pursuit of a goal if the base controller is ever asked to execute a velocity that it determines to be invalid.
Would others consider this a useful feature? There are probably a variety of situations in which the base controller might fail or refuse to move the robot, either due to software logic or hardware failures. Has anyone given thought to taking feedback from the base controller into move_base
? I'm currently leaning toward adding an action interface to my base controller and then modifying move_base
to optionally be able to send velocity commands there instead of doing a raw publish to cmd_vel
. Other ideas on how to implement it?