Ask Your Question
1

How to implement Rodney Brooks' subsumption model on ROS?

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

Minglong gravatar image

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

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 imageMinglong ( 2015-09-19 11:07:04 -0600 )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 imageMinglong ( 2015-09-19 11:09:36 -0600 )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 imageMinglong ( 2015-09-19 11:13:44 -0600 )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 imagegvdhoorn ( 2015-09-19 11:45:23 -0600 )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 imagegvdhoorn ( 2015-09-19 11:50:18 -0600 )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 imagegvdhoorn ( 2015-09-19 11:51:47 -0600 )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 imageMinglong ( 2015-09-19 20:15:45 -0600 )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 imageMinglong ( 2015-09-19 20:20:22 -0600 )edit

1 Answer

Sort by » oldest newest most voted
1

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

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

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

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

Seen: 475 times

Last updated: Sep 20 '15