Identified Components and Modules

Peter Soetens <[email protected]>
Newsgroups gmane.science.robotics.orocos.user
Organization KU Leuven
Message-ID <[email protected]>
Hello,

Since the paper defining our motion control framework with its components and 
modules is still in the pipeline, I'll give a short summary about what has 
been found.  The paper is far more elaborated and I hope a draft will be 
posted soon.

At the moment, the following components are identified :
(where each component resides in its own subdirectory. )

HeartBeatGenerator
Our virtual clock.  Generates time-events (which for example start a thread), 
synchronises component clocks, prioritises timing events. This is a core 
component.

EventHandler
Handles all events not coming from the HeartBeatGenerator. All forms of 
communication can be seen as events. This component decouples event generator 
from event receiver and may execute additional methods (defined by the event) 
as a response to an event.
This is a core component. 

ExceptionHandler
Handles inter-component exceptions, can bring the system to a safe state. 
Secures the stability of the whole system in contrast to local component 
exception handling.

ServoLoop
Controls the actuators

MotionGenerator
Generates setpoints, possibly taking in account the kinematic model and other 
factors. Multiple motion generators may exist in the system with different 
levels of complexity ( a simple interpolator is still called 'motion 
generator' )

Actuator ( with many subtypes )
Any kind of motor or moving part used by the robot to interact with its 
environment.

Sensor   ( with many subtypes )
Any kind of input for our (robot-) system

CommandInterpreter
The core input of the system, gets commands from the user, most commands go 
to the TaskManager, some directly to other components (not yet defined).

TaskManager
With the help of the ComponentSupervisor, Tasks are delegated to other 
components through this manager. It has knowledge of deadlines, distributed 
tasks and the capabilities of the system. It is responsible for configuration 
during runtime and startup time. This thing is huge.

ComponentSupervisor
Takes care of the more technical management of components, this means that it 
has a database of all present components and does nameserving.  Most likely 
delivers ORB/distributed capabilities.  This is a core component.

ObjectFactory
Manages creation and destruction of objects in the whole system. This is a 
core component for real time systems since all objects must be created at 
startup time.

Estimator
Creates/updates models of the system and the environment.

Monitoring
collects data from the system to hand it over to the user.  Used for logging, 
simulation / visualisation purposes.

This list is not exhaustive and I'll get hopefully more input from you all.

The following modules have been identified :

ControlModule
this can be anything, ranging from PI controller to unit converters, to be 
short, anything that can be used in a control loop.

Thread
When started, this will execute ( most likely periodically ) a certain method 
of the Component.

ICC CommandInterpreter
Interprets inter-component commands and delegates them internally to the 
right module. This is our main ``port'' for communication.

FiniteStateMachine
Optionally, the component can be a FSM, with each state executing / running a 
number of modules.

ConfigurationModule
Internally configures / manages the modules present in the component.  Has 
the meta information about the internals of a component. Only needed for more 
complex components (consisting of more than one module).

ProxyModule
Keeps local images of remote components.  Decouples the updating of new 
information with the delivery of information to the component.

ExceptionModule
Makes sure that the internal state of the component is kept consistent when 
an exception occurs.

It was easier to define components than to find modules.  Modules provide 
local functionality which can be used in a wide range of components. The 
identification of modules is more of a software designer problem than a 
framework designer problem and I expect that it will be more implicitly 
solved during the building of the framework. Most software patterns might be 
good candidates to become modules.

In Object Oriented approaches, the modules will be more likely single objects 
with a defined responsibility.  It is evident that these objects will be used 
across components, to comply with reusability.

The above is list of components and modules is hardly nuancated and most of 
them need to be put in perspective or described more technically.

Nevertheless, comments are welcome :-)

kind regards,

Peter Soetens
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.