How to implement Rodney Brooks' subsumption model on ROS?
As we all know, Rodney Brooks' subsumption model is an extremely successful control architecture for robot. ROS provides us with a lot of driver and function packages. To construct a complex and intelligent robot software system, we should organize these packages. Subsumption model is a good choice. So, I want to know that whether ROS provide us with a mothod to implement subsumption model upon it?
I think the key idea of subsumption model is that the upper layer can either contain or suppress partial function units of lower layer. But the multiplexer is just a priority-based selector for velocity output. What's more,the multiplexer is just one single process.
However, all the inhibitors and suppressors in subsumption model is decentralized causing that we can insert them in any place of any layers.
the inhibitors are also very important, we can inhibit some behavior of lower layer immediately, and then do some sensing or calculating things, output the result instead to the lower layer. but there is not inhibitor in the cmd velocity multiplexer.
That is
cmd_vel_mux
: topic_tools/mux can multiplex whatever you want.Couldn't you start multiple of them? I can imagine
N
mux nodes, with coordination nodes calling themux/selected
service at appropriate times would come close to what you describe.How about switching to a 'zero input' in a
cmd_vel_mux
with (at least) two inputs: the normal one, and a topic that publishes aTwist
with all zeros?