
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