ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
1

How to implement Rodney Brooks' subsumption model on ROS?

asked 2015-09-19 03:25:16 -0500

Minglong gravatar image

updated 2015-09-20 04:34:12 -0500

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?

edit retag flag offensive close merge delete

Comments

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.

Minglong gravatar image Minglong  ( 2015-09-19 11:07:04 -0500 )edit

However, all the inhibitors and suppressors in subsumption model is decentralized causing that we can insert them in any place of any layers.

Minglong gravatar image Minglong  ( 2015-09-19 11:09:36 -0500 )edit

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.

Minglong gravatar image Minglong  ( 2015-09-19 11:13:44 -0500 )edit

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.

gvdhoorn gravatar image gvdhoorn  ( 2015-09-19 11:45:23 -0500 )edit

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.

gvdhoorn gravatar image gvdhoorn  ( 2015-09-19 11:50:18 -0500 )edit

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?

gvdhoorn gravatar image gvdhoorn  ( 2015-09-19 11:51:47 -0500 )edit
  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.
Minglong gravatar image Minglong  ( 2015-09-19 20:15:45 -0500 )edit
  1. 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.
Minglong gravatar image Minglong  ( 2015-09-19 20:20:22 -0500 )edit

1 Answer

Sort by » oldest newest most voted
1

answered 2015-09-19 10:45:15 -0500

gvdhoorn gravatar image

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?

edit flag offensive delete link more

Question Tools

1 follower

Stats

Asked: 2015-09-19 03:25:16 -0500

Seen: 963 times

Last updated: Sep 20 '15