Re: [Core] Components design

Herman Bruyninckx <[email protected]>
Newsgroups gmane.science.robotics.orocos.user
Message-ID <Pine.LNX.4.33.0109071227220.18973-100000@pc25-213.mech.kuleuven.ac.be>
On Fri, 7 Sep 2001, Anthony Mallet wrote:

>
> Herman Bruyninckx wrote :
> | Next to this "specification" face of components, I think there is also a
> | "framework" aspect: components should have a prescribed set of
> | "meta/supervisor" functionalities:
>
> IMHO that's the primary goal of the module specification.
> So I completely agree on that.

Ok. But one thing has been made clear once again: we need to define
our terminology :-) I'll make a page for this purpose, and fill it
with the preliminary glossary of terms that I can come up with.

> Yes that's an important point. I think that can be provided by the
> standard "software pattern" of the modules.
> Btw, I'm not sure to understand well "software pattern". Do you think
> it's the same as a "canvas" ?

Yet another terminology problem :-) I use the term "software pattern"
as it is used in the books about this subject. I have the links on the
orocos web page.

> | but I tend to suggest that our components
> | should have two faces: one with their user functionality, another one
> | to allow the "supervisor" in the system to make the system dynamically
> | reconfigurable.
>
> Well, I think there must be no difference between a "human user" of a
> module and a "software user".

No, but maybe there is a difference between a normal user and an
authorized user (i.e., one that can change the configuration of the
whole system)?


> The only differences will be located
> at the other end of the "modules" (a user will have an interface to
> control things and a supervisor will run some code, but from the "module"
> point of view this should not make any difference).

Depends on whether we want to put an authentication server in the
system. I don't think we should go that way in the near future, but it
will definitely be an issue later on.

> Regarding "dynamic reconfiguration", if you're speaking of "parameters"
> for the algorithms I think they should be programable using "services"
> provided by the modules.

I thought about more than just parameters (this is "normal" use of the
modules): replacing one module by another one is a reconfiguration
feature that should not be done at the same level as the call of a
method on a module.

> | > This description [...] should also be generic
> | > enough to fit in the requirements of every module (ranging from
> | > rtlinux in-kernel tasks to any-time userland processes).
> |
> | I don't quite understand what you mean with this last sentence...
>
> Well I think we must describe the "requirements" of every
> module (time of execution, periodicity, real-time or any-time, bandwith
> required on input or ouput data, etc...).

Ok! These are constraints which would allow the "supervisor" user to
reconfigure dynamically; for example: the same module structure could
be used for soft real-time, but also for hard real-time, but in both
cases some of the IPC (for example) should be different.

> If we come up with several "systems", these systems should be
> able to find the necessery information to decide if they can handle a
> particular module or not. For instance, the current version of GenoM
> cannot handle timers below 5ms. If a module requires more precise
> control, GenoM should be able to say "I can't run that module".

Indeed. This is what I call "supervisor" mode. (Another thing we
should find a name for :-)

Herman
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.