0
$\begingroup$

Rosanswers logo

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?


Originally posted by Minglong on ROS Answers with karma: 31 on 2015-09-19

Post score: 1


Original comments

Comment by Minglong on 2015-09-19:
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.

Comment by Minglong on 2015-09-19:
However, all the inhibitors and suppressors in subsumption model is decentralized causing that we can insert them in any place of any layers.

Comment by Minglong on 2015-09-19:
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.

Comment by gvdhoorn on 2015-09-19:\

But the multiplexer is just a priority-based selector for velocity output.

That is cmd_vel_mux: topic_tools/mux can multiplex whatever you want.

Comment by gvdhoorn on 2015-09-19:\

What's more,the multiplexer is just one single process.

Couldn't you start multiple of them? I can imagine N mux nodes, with coordination nodes calling the mux/selected service at appropriate times would come close to what you describe.

Comment by gvdhoorn on 2015-09-19:\

but there is not inhibitor in the cmd velocity multiplexer.

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 a Twist with all zeros?

Comment by Minglong on 2015-09-19:\

  1. I don't think that "zero input" in a cmd_vel_mux is a good idea. I can not call it a inhibitor. If an output of a moudle in subsumption model is inhibited, the module send nothing at all. But the "zero" Twist msg is also a msg, it may call callback and activate some events of the lower layer.

Comment by Minglong on 2015-09-19:
2. And another key word is "partial". The upper layer can either contain or suppress "partial" function units of lower layer. However, cmd_vel_mux just make the upper layer contain or suppress the function of the "whole" lower layer. Would I know your idea? Thank you.

Comment by gvdhoorn on 2015-09-20:\

But the "zero" Twist msg is also a msg, it may call callback and activate some events of the lower layer.

Not if you control all subs, and don't allow arbitrary connections between nodes. 'lower layers' should not be allowed to subscribe to upper layers directly, only through (after) the mux.

Comment by gvdhoorn on 2015-09-20:\

The upper layer can either contain or suppress "partial" function units of lower layer.

ROS doesn't have an explicit 'layer' (or partition) concept, so you'll have to 'fiddle' with pub-sub relations to mimic it. I'd say 'inhibiting' a subset of nodes in a virtual 'layer' should be possible.

Comment by gvdhoorn on 2015-09-20:
If you'd like to 'merge' msgs on topics according to a weight (ie: (topic_A * α) + (topic_B * (1 - α))), you'll probably have to write some custom node(s). There probably are existing solutions for that, but I don't know about them.

Comment by Minglong on 2015-09-20:
Thank you for your clear and patient answers!

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

Potential duplicate of ros process in subsumption architecture.

The answer there by @dornhege is probably a good approach.

Can you clarify what you are looking for exactly? And why @dornhege's answer isn 't enough?


Originally posted by gvdhoorn with karma: 86574 on 2015-09-19

This answer was ACCEPTED on the original site

Post score: 1

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.