Dynamic system construction¶
To ensure an easy-to-use system, we implemented as the main class a wrapper that integrates the different main components, and hides their connections where possible. This main class is called BlackboardSystem, since the blackboard is the central component of our platform. This is an excerpt of its definition:
class BlackboardSystem
properties
blackboard;
blackboardMonitor;
scheduler;
robotConnect;
dataConnect;
methods
BlackboardSystem()
setRobotConnect( robotConnect )
setDataConnect( connectorClassName )
buildFromXml( xmlName )
addKS( ks )
createKS( ksClassName, ksConstructArgs )
numKSs()
run()
The engine of our system is distributed across the BlackboardSystem
,
Blackboard
, BlackboardMonitor
and Scheduler
classes, with the
BlackboardSystem
class holding instances of the latter three. These four
classes each have genuine responsibilities: the BlackboardSystem
integrates
the framework parts, responsible for constructing and setting up the system. The
blackboard is the central storage of functional data and knowledge sources. It
holds a data map that saves arbitrary knowledge source data along time, together
with methods to add and recall data from within knowledge source code.
Additionally, the knowledge sources themselves are put into blackboard storage
by the BlackboardSystem
.
The BlackboardMonitor
is responsible for creating bindings on demand between
knowledge sources, by instantiating event listeners. It keeps track of these
bindings and maintains the agenda of knowledge sources. The Scheduler
is
the executive component of the system. While the BlackboardMonitor
keeps
control of the knowledge sources in the agenda, the Scheduler
decides about
the order of those knowledge sources to be executed. It does that based on the
attentional priorities of the knowledge sources.
Fig. 44 shows the system class diagram.

Fig. 44 Class diagram of the whole blackboard system. The BlackboardSystem
class is the integrative system component holding the other modules
and giving access to system functionality.
An example of an XML-configured blackboard system is shown below. Two identity knowledge sources are connected to the Auditory front-end, and triggering an identity decision knowledge source.
<blackboardsystem>
<dataConnection Type="AuditoryFrontEndKS"/>
<KS Name="baby" Type="IdentityKS">
<Param Type="char">baby</Param>
<Param Type="char">6687829ce1a73694a1ce41c7c01dec1b</Param>
</KS>
<KS Name="femaleSpeech" Type="IdentityKS">
<Param Type="char">femaleSpeech</Param>
<Param Type="char">6687829ce1a73694a1ce41c7c01dec1b</Param>
</KS>
<KS Name="idDec" Type="IdDecisionKS">
<Param Type="int">0</Param>
<Param Type="int">1</Param>
</KS>
<Connection Mode="replaceOld" Event="AgendaEmpty">
<source>scheduler</source>
<sink>dataConnect</sink>
</Connection>
<Connection Mode="replaceOld">
<source>dataConnect</source>
<sink>baby</sink>
<sink>femaleSpeech</sink>
</Connection>
<Connection Mode="replaceParallel">
<source>baby</source>
<source>femaleSpeech</source>
<sink>idDec</sink>
</Connection>
</blackboardsystem>
Several core functionalities are provided through the BlackboardSystem
class:
Connecting a Robotic platform or the Binaural simulator to the Blackboard system. The connected robot or simulator must implement the robot interface for delivering audio ear signals and commanding movement and head rotation. The blackboard system and all its components including the knowledge sources get access to the audio stream and robot actions through this connection (
setRobotConnect
method).Setting the type of the module that integrates with the Auditory front-end, instantiating it and connecting it to the Blackboard system. This module is a knowledge source itself, responsible for processing the ear signals into cues (such as interaural time differences) needed by other knowledge sources. The Auditory front-end itself is connected to the Robotic platform or the Binaural simulator in order to obtain the ear signals. (
setDataConnect
method).Instantiating and adding knowledge sources. These knowledge sources must inherit from
AbstractKS
(see abstract knowledge source) orAuditoryFrontEndDepKS
(see Section Auditory signal dependent knowledge source superclass: AuditoryFrontEndDepKS) to be able to be interfaced and run by the system. Knowledge sources that inherit fromAuditoryFrontEndDepKS
automatically get connected with the Auditory front-end by the system in order to place their signal/cue requests.Adding and instantiating knowledge sources can take place both before or while running the system; it can be done from outside the system or from inside knowledge sources. This enables the development of top-down controlling knowledge sources from higher cognitive experts running in the system (
addKS
orcreateKS
method).The start-up configuration of the system can completely be defined by an XML file; the system is then constructed before running by loading this file. Of course this configuration can be changed dynamically while executing the system. The XML description needs at least a
dataConnection
node specifying the type of the Auditory front-end module; then, it can also containKS
nodes with parameters to construct knowledge sources, andConnection
nodes that specify event bindings between knowledge sources. See the code listing from above for an example (buildFromXml
method).Starting the execution of the system. This triggers the blackboard system to request data from the robot/binaural simulator connection, and subsequent action by the Auditory front-end and all knowledge sources that are connected. The system will not stop execution before the Robotic platform or the Binaural simulator sends an ending signal (
run
method).