[Dprglist] Subsumption architecture

Murray Altheim murray18 at altheim.com
Thu Oct 28 19:40:50 PDT 2021


On 29/10/21 3:04 pm, Thalanayar Muthukumar via DPRGlist wrote:
> Today, I saw many mails on this topic.
> 
> I am a noob trying to wrap my head around this topic in a way
> that I can possibly implement reasonably quickly.
> 
> This is the scenario I am considering.
> 
> Robot is in a room with a light source at the opposite end of the 
> room from where it starts. Overall robot objective - reach the light 
> source. Robot has a light sensor and 3 ultrasonic sensors pointing
> front, right and left.
> 
> Basic behavior a - move forward for 30 secs
> Basic behavior b - if any of the ultrasonic sensors detect an obstacle
>                    one feet from the robot, turn right 60 degrees
> Basic behavior c - if light sensor senses light of intensity X, stop

Hi Kumar,

A typical Subsumption Architecture would define a set of behaviours each
with different priorities, and then execute those behaviours in a loop,
say, 20 times per second. If we think of a living creature having some
kind of internal clock, our robots typically do as well, as that loop,
maybe at 20 to 25 times per second. We're trying to create a moth, or
some insect that gradually crawls or flies towards a light.

I think your first behaviour: "move forward for 30 seconds" is not quite
in the spirit of a "servo" behaviour within that definition in a Subsumption
Architecture. That would be a "ballistic" behaviour, i.e., do something
without fail for 30 seconds. Likewise, turning 60 degrees is to alter the
motor speed in such a way and for a fixed amount of time in order to turn
a certain angle; again, kinda a ballistic behaviour.

A servo behaviour would be something that operates within each clock cycle,
altering the motor speed (turning toward or away from the light) in accord
with the sensor reading, if that behaviour was a high enough priority in
that cycle to be executed (i.e., not subsumed by a higher priority one).

> Priority highest - Basic behavior c
> Priority next - Basic behavior b
> Priority lowest - Basic behavior a
> 
> If the robot is programmed to in every cycle, do one of the basic
> behaviors based on priority, it will meet the goal without any complex
> things like SLAM, as an example.

So if we slightly alter the definition of your behaviours to only actuate
within the 50ms of an individual clock cycle you've basically got it right.

> I am aware that the above list of 3 basic behaviors may not meet the
> overall goal and needs to be tweaked.
> 
> I am aware there are many books and videos by various people, but if
> I implement this on my robot, can I say I have implemented a behavior 
> based robot (subsumption architecture)?

In the #research channel on the Personal Robotics server I've linked to
all of the Rodney Brooks papers I could find, as well as those of some
of his students. I just realised I've not actually listed as many on the
NZPRG wiki's page but most are there:

   NZPRG References page
   https://service.robots.org.nz/wiki/Wiki.jsp?page=References

I don't know that there's a single, canonical definition of Subsumption
Architecture (at least that everyone can agree upon), but I think if
you:  a. define more than one behaviour, where: b. each behaviour has a
priority and can be overridden by a higher-priority behaviour, you're
most of the way there. There is a quite complex inhibition feature in
the original papers that according to what I've heard hasn't been
implemented consistently and may no longer be considered a part of the
state of the art. Whether or not that inhibition feature is a requirement
is up for grabs, depending on the when and who of the definition.

We could nit-pick around the edges of that (certainly) but if you aren't
worried too much about the details you've basically got the gist of it.

But you have opened a enormous can of worms by bringing up this topic
(even more than PID controllers!) so I expect there will be some fruitful
debate...

Cheers,

Murray

...........................................................................
Murray Altheim <murray18 at altheim dot com>                       = =  ===
http://www.altheim.com/murray/                                     ===  ===
                                                                    = =  ===
     In the evening
     The rice leaves in the garden
     Rustle in the autumn wind
     That blows through my reed hut.
            -- Minamoto no Tsunenobu



More information about the DPRGlist mailing list