Minutes of meeting at LAAS (22-23 April)

Herman Bruyninckx <[email protected]>
Newsgroups gmane.science.robotics.orocos.user
Message-ID <Pine.LNX.4.44.0204241855590.32708-100000@pc25-213.mech.kuleuven.ac.be>
Minutes of the Orocos meeting at LAAS-Toulouse, 22-23 April 2002

Topics
1. Component architectures
2. Component interface description
3. Object libraries
4. Version 1.0 specifications
5. Actions

Present:
Sara Fleury, Anthony Mallet, Anders Oreback, Peter Soetens, Herman
Bruyninckx (minutes)

---------------------------------------------------------------------

1. Component architectures
We discussed what types of components Orocos needs. The difference
between the types lies in the different architecture, and hence the
different support the component needs from the framework.  For
example, all the components that LAAS uses at this moment are
structured as a simple finite state machine, without the need for
events, or for distribution over multiple processor; the application
builder fills in some functions and data structures in a standard
template, and the component is generated automatically. The servo
control components Leuven is working on have more advanced needs for
distribution and event handling. Etcetera. 

We identified (as a minumum) the following three types of
fundamentally(?) different architectures:
 - Feedback control 
 - Robotic service
 - Autonomous system 
These coincide, not by accident, with the classical three layers of
an autonomous system: reactive, coordination, deliberation, or any of
the other names this pattern is known under. One specific aspect of
robotic components is that their actions often involve interaction
with the physical world, so things such as complete control and
atomicity of actions can not be guaranteed.

(Note: the structuring into the above-mentioned types still needs
elaborate discussion on the mailinglist. So, don't interpret it as the
official Orocos point of view on this matter.)

The goal is to define widely accepted architectures for each. More
detailed reports will become available in the near future, but
the basic features underlying the architectures are as follows:

 - Feedback control: ``feedforward, feedback and observer''
   sub-components, that process data from the sensors and turn them
   into data for the actuators; all this in hard real-time and with
   configurable reporting to the ``outside world.''

 - Robotic service: ``reading device, processing its data, making
   the data available to users of the service''. Real-time is not
   really important; services are often completely independent;
   communication over a network is important.

 - Autonomous system: ``monitoring data made available by robot service
   devices, recognize the context in which particular data is useful for
   the completion of the task at hand, apply this data to determine the
   next action of robot''. This architecture is a heavy user of
   robotic services, in a very dynamically changing configuration.
   Centralization of decision making is typical, but the services can be
   distributed over a network.

Within each architecture, all sub-components are at the same level
from the point of view of the component builder; i.e., the component
doesn't know anything about the architecture it is used in. It's the
application builder that puts an architecture onto the components he
uses. Therefore, each application (level) has a ``supervisor''
component: it's the only one that knows (or has to know) about the coupling
between the components that the architecture introduces in this
application. So, it's also this supervisor that processes service
requests for the application, and that translates them into
``elementary'' service requests for the sub-components it uses.


2. Component interface description
LAAS is developing its new generation of the Genom tool. This tool
reads in a textual specification of the interface of a component, and
processes it into executable code and threads. The tool covers three
goals: (i) it is a formal description (``contract'') of a component,
(ii) it alleviates the burden for a component builder to know about
the internals of the architecture his component will use, and (iii) it
makes sure the binary component it builds from this specification
obeys the interface (by construction).

Any component should have some sort of interface description,
but not necessarily an automatic tool to build the binary component.
We decided to think together about the formal description in the
coming weeks, and see how the Genom structure needs to be adapted to
cover the two other above-mentioned types of architectures. (If,
contrary to what we expect now, no need for a different specification
arises, this means that the components are not really fundamentally
different!)

The practical short-term approach we agreed on is:
 - let's try what comes out of the adaptation of the current Genom
   specification, allowing possibly for a temporary phase of rapidly
   changing API.
 - let's only introduce new architectures when the urgent need arises.
   (Because we prefer simplicity over feature richness in these early
   stages of the project.)
 - let's go through the CORBA 3.0 specs and get as many definitions
   and concepts out of it that are directly relevant for Orocos, in
   order to define a terminology that is very well defined and
   standardized.  Things that come to mind immediately are: Which of the
   four different types of CORBA components do we need in Orocos? What
   keywords from CORBA do we use in the component interface
   specification? What CORBA services do we adopt in Orocos? What is a
   component according to CORBA? Etcetera.
 - let's define ``Orocos Version 1.0'' goals. 

All these short-term activities (i.e., for the next two months) should
be accessible through the Orocos web site. Maybe tools such as Wiki
should be used to foster co-development on the different subjects. 

We should look at existing interface specification efforts, such as
DAIS (``Distributed Acquisition of Information Systems'') in the OMG
Manufacturing group and others, for inspiration and reality checks.


3. Object libraries
There is an urgent need to define the object classes that are relevant
to robotics, because using the same libraries is a key enabler for
exchange and/or co-development of functionality, and for exchange of
components. The component interfaces should use these objects whenever
possible, instead of functionaly identical but syntactically unrelated
data structures and methods.


4. Version 1.0 specifications
These are targets for Orocos Version 1.0:
 - class libraries: position and motion representations; servo
   controllers; (Distributed) Finite State Machines; event handling;
   communication; robot kinematics; robotic devices.
 - components: formal specification of the three above-mentioned
   architectures, with reference implementations.
 - initial applications: position controlled manipulator arm; mobile
   platform with basic reactive navigation skills.
 - builds for Linux, RTLinux, and RTAI.
 - extend Comedi device driver library with the few missing devices
   (encoders).


5. Actions
 - Expect some actions from Leuven w.r.t. the web support for
   cooperative development of the Version 1.0 specifications.
 - Everybody should give feedback about the Version 1.0
   specifications.
 - LAAS and Leuven will make reports available on the component
   architectures they are working on. Both have published already
   preliminary versions some months ago, but these versions are currently
   undergoing extensive adaptation.
 - Leuven will initiate the definition of the class libraries for the
   most common objects: positions, controllers, kinematics,
   communication, device interfaces, etc.
 - Everybody should collaborate on the class libraries.
 - Leuven will update the web glossary, with the relevant terminology
   from the CORBA 3.0 standard.
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.