Re: A working document

Anthony Mallet <[email protected]>
Newsgroups gmane.science.robotics.orocos.user
Organization LAAS (CNRS) - Toulouse - France
Message-ID <[email protected]>
Herman Bruyninckx wrote :

| > Yes, definitely. Codels are made of code, and perform tasks on data that
| > come from elsewhere.
| >
| > The purpose of modules is to give a specification of their interface in
| > terms of functionality, so that the decision procedures can do symbolic
| > reasonning. Besides this, you are free to put what you need into the
| > codels. For instance, I see no problem in sharing the same class between
| > several modules, and thus use a pure object oriented approach _within_
| > codels, to manipulate the structure that are exchanged between the
| > modules.
| 
| Mmmm, I really don't like this too much: you have no encapsulation of
| the data in this way, and that will lead to
| uncontrolled/undeterministic behaviour sooner or later. I mean: a
| codel can not rely on having a consistent view on the data, if this
| data is ``somewhere else''...

Let me try to explain further:

What I meant by data is actually the production of other modules (aka
'posters' in the current version of GenoM).
Basically, posters are shared data structures, which are expected to be
always 'consistent', because every particular poster is produced by a
_single_ module. There are problems in maintaining such a consistency,
but we have begun to work on a framework that solves some problems (we
called this 'data tagging', where tags can be the time of acquisition,
the configuration of a sensor, the position of the robot, etc.).

Thus posters are (or should be :) 'consistent data structures'. Using the
data contained within posters can be done thanks to a library which can
be shared between the producer and the consumer.

Does this match your ideas better?


| This seems to correspond to what I had in mind: the ``dummy user''
| doesn't have to take care about communication, but the ``advanced
| user/application builder'' does. Both use different codels, I guess.

Yes, but 'different codels' does not makes sense to me:

I would distinguish 3 class of user:
. adavanced/application builder (whole system knowledge)
. module developer (single module knowledge)
. dummy user (user of the system/modules, and/or developer of other modules)

Only the first type of user  cares about communication mechanisms (setup,
implementation etc.).
The second type describes its needs in terms of communication (data
structures?).
The third one does not (should not have to) care of communication.

Codels are written by the second class of user (and that's all what is
needed to write a module, besides the interface description). Basically,
you can see codels much like 'callbacks'. codels interface the library
which implements a functionality, and the 'module engine', which should
be standard and common to all modules. The module engine will receive
requests for services, schedule codel execution, spawn threads/tasks and
so on, but this is 'hidden' for the module developper.

Thus there is only one type of codel: it receives data, and structures
the execution of an algorithm. Everything else belongs to the first type
of user.
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.