Commands, event generators and perceptions of
resources interact with I/O controllers in order to
obtain sensor or to set actuator values.
Organization of Resources and robot controller
also follow a “hierarchical” approach. Each layer
represents a “level of control and decision” in the
controller activities. The upper layer incorporates
entities embedding complex decision-making
mechanisms like modes, supervisors and mission
manager. The intermediate layer incorporates
entities like control schemas (commands), observers
modules (event generators, perceptions) and reflex
adaptation activities (inside actions). The lower
layer (I/O controllers) interfaces upper layers with
sensors, actuators and communication peripherals.
3 COMPONENT LANGUAGE
The CoSARC language is devoted to the design and
implementation of robot controller architectures.
This language draws from existing software
component technologies such as Fractal (Bruneton
& al., 2002) and Architecture Description
Languages such as Meta-H (Binns & al., 1996). It
proposes a set of structures to describe the
architecture in terms of a composition of cooperating
software components.
A software component is a reusable entity subject
to “late composition”: the assembly of components
is not defined at ‘component development time’ but
at ‘architecture description time’. The main features
of components in the CoSARC language are internal
properties, ports, interfaces, and connections. A
component encapsulates internal properties (such as
operations and data) that define the component
implementation. A component’s port is a point of
connection with other components. A port is typed
by an interface, which is a contract containing the
declaration of a set of services. If a port is ‘required’
(resp. ‘provided’), the component uses (resp. offers)
the services declared in the interface typing the port.
All required ports must always be connected
whereas it is unnecessary for provided ones. The
component’s internal properties implement services
and service calls, all being defined in the interfaces
typing each port of a component. Connections are
explicit architecture description entities, used to
connect ports. A connection is used to connect
‘required’ ports with ‘provided’ ones. When a
connection is established, the compatibility of
interfaces is checked, to ensure ports connection
consistency. The advantage of the “late
composition” is the improvement of the reusability
of components (more independent from each other
than objects), and of the modularity of architectures
(possible change of components and connections).
The CoSARC language defines four types of
components (presented below). Each of them is used
to deal separately with a specific preoccupation
during controller architecture design.
3.1 Representation Components
This type of component is used to describe a robot’s
“knowledge” as regards on its operative part, its
mission and its environment. Representation
components are used to satisfy the “real-world
modeling” preoccupation, but their use can be
extended to whatever developers consider as the
knowledge of the robot. They can represent concrete
entities, such as those relating to the robot’s physical
elements (e.g. chassis and wheels of a vehicle) or
elements of its environment. They can also represent
abstract entities, such as events, sensor/actuator data,
mission orders, control or perception computational
models, etc. When a developer wants to represent
the fact that a specific model is applied on a specific
(operative) part of the robot, it just has to connect
those two representation components: that
corresponding to the computational model with that
related to the operative part. For example, Fig. 2
illustrates how to apply a control law to a vehicle.
Representation components are ‘passive’ entities
that only act when one of their provided services is
called. They only interact according to a
synchronous communication model. Internally,
representation components consist of object-like
attributes and operations. Operations implement the
services declared in provided ports and they use
services declared in interfaces of required ports.
Representation components are incorporated and/or
exchanged by components of other types, such as
control components and connectors. Representation
components can also be composed between
themselves when they require services of each-other.
Indeed, a representation component consists of a set
of provided ports that allows other representation
components to get the value of its “static” physical
properties (wheel diameter, frame width, etc.) and/or
to set/get the current value of its “dynamical”
properties (velocity and orientation of wheels, etc.).
Fig. 2 shows a simple example of composition. The
representation component called
VehiclePosition-
ControlLaw
consists of:
- a provided port, typed by the VehicleActuators-
ValueComputation
, through which another component
(a control one for instance) can ask for a
computation of the actuator’s value to be applied.
- and two required ports. The first one is typed by
the
VehiclePhysicalPropertiesConsultation interface, the
second one by the
VehicleDynamicProperties interface.
These interfaces are necessary for the computation
MANAGING CONTROL ARCHITECTURES DESIGN PROCESS - Patterns, Components and Object Petri Nets in Use
225