Roadmap to Orocos 1.0

Peter Soetens <[email protected]> Mon, 6 Mar 2006 11:00:56 +0100
Newsgroups gmane.science.robotics.orocos.user
Organization FMTC
Message-ID <200603061100.57097.peter.soetens__45146.5519065552$1141639378$gmane$org@fmtc.be>
Hi,

We had recently some off-list discussions about Orocos 1.0. The key question 
was: how much does Orocos need to be changed for - and which parts of Orocos 
will be in - the 1.0 release.  We believe we came to a realistic conclusion. 
It's first appropriate to explain how the 'Orocos Project' will be 
partitioned. There are top->down 3 layers : "Applications", "Components" and 
"Libraries". 

  O ----------------------------------------------
  R                 Applications
  O ----------------------------------------------
  C               Components
  O ----------------------------------------------
  S         Libraries (RTT/BFL/KDL/...)
---------------------------------------------------
              Operating System
---------------------------------------------------

The lowest level will exist out of 3 independent libraries:
The "Real-Time Toolkit", the "Bayesian Filtering Library" and the "Kinematics 
and Dynamics Library"

 Real-Time Toolkit (RTT)
This is a set of C++ classes which allows a developer to build
Orocos components (see later on). It provides the OS abstraction, low-level 
device drivers and device interfaces, and the 'task infrastructure' to build
components.  It also encapsulates any distribution (CORBA) specific code
required to distribute components. This is what we are now calling the 
'Real-Time Control Services' on our website. Beginning Orocos users will not 
be working immediately with this toolkit.

 Bayesian Filtering Library (BFL)
This C++ library can be used independent of Orocos today but will get a more 
prominent place on the Orocos webpage. It will be used by Orocos Components
which (actively) do intelligent sensor processing. Current BFL users will 
still be able to use this library as before.

 Kinematics and Dynamics Library (KDL)
This C++ library is today integrated within Orocos as the 'geometry' and 
'kindyn' packages. It will be split off as an independent library for 
kinematics usable by developers who do not wish to use the Real-Time Toolkit. 
Credits go to Erwin Aertbelien who developed a major part of this library, 
and new candidates are ready to take over the job.

 Control Components
The layer above these three libraries is taken by the Orocos "Control 
Component". A distributable entity which has a control oriented interface.
A single component may be well capable of controlling a whole machine,
or is just a 'small' part in a whole network of components, for example an 
interpolator or kinematic component. The components are built with the
"Real-Time Toolkit" and optionally make use of the BFL or KDL or any other 
library (like a vision toolkit). Most users will interface components through
their (XML) properties or command/method interface in order to configure their
applications. The current Orocos 'Control Kernel' components need to be 
converted in order to fit in this description and are to be split off in 
separate packages. The 'correct' interface is that of the 'TaskContext' class
as will be released in 0.22.0 and described in the "Component Builders Guide".

 Application Templates
The layer above the Control Components is formed by the "Application 
Templates". These are the kick-start 'Component tapers' which do nothing more
than selecting and connecting a few components which work well together in 
order to realise a running application. An application template should be so
simple that any Orocos user can pick one and modify it, hence it is the first 
thing a new user will encounter. An application template should be 
explainable on one page with one figure explaining the architecture. The 
current "Control Kernel" application template does not fit that description 
very well and will disappear as such. Also, an application template will have 
no longer any relation to 'C++' templates.

 The Release
So far the layers. Now about the release. This will consist of the "Real-Time 
Toolkit 1.0", a set of components built upon that interface and
the application templates to set up applications. The idea is that any 
component built upon that Toolkit version is connectable in the application.
The components themselves do not need to have the same version number,
although they need to have compatible data exchange ports and may depend upon 
each other.

 The Roadmap
One major release between 0.22.0 and 1.0 (thus 0.24.0) is planned to gather 
feedback and allow to merge projects 'gradually' into the main line. We'll 
use the Bugzilla 'Milestones' to denote the order or merging and if a feature 
is going to be part of 1.0 or later. The development plan (see the bottom of 
<http://www.orocos.org/developmentplan.html#timeline>) will be used to give a 
user friendly overview of the plans and progress. As you can see, the 1.0 
release is now scheduled for September 2006.

 Actions to be taken
Besides the 'usual' project merging, 3 large efforts need to complete for a 
successful 'launch':
1. Repartition Orocos as above.
2. Rewrite the website to clearly reflect this structure
3. Rewrite the documentation such that new users can gradually
    learn the system and clearly state who is targeted by which 
    documentation.
We'll be using the Bugzilla database for tracking these matters.

That's about it what I had to tell. Your opinions are welcome, as usual.

Peter

-- 
Peter Soetens -- FMTC -- <http://www.fmtc.be>