The four interfaces ControllerInput, ControllerOutput, SensorInput and SensorOutput only work with floating point arrays. Parameters are little more comfortable as they also support other data type. But how can we manage more complex data that is can only be represented poorly by floating point values or even not at all? Examples are pictures produces by frame grabbers and maps created by autonmous vehicles during exploration of unknown environment. In MCA network transparent blackboards with individual content are provided. These are also accesible by MCAGUI.
Blackboards are managed by tBlackboardHandler wich is a member of each part. Every module has functions that forward corresponding commands to the local part in which it is embedded. As a result there is a list of all exisiting blackboards of a part and moreover the parts know also blackboards of other parts that are indicated to be "exported". Within a part every user is able to use blackboards that were created within this part and also blackboards which were created in other parts and are "exported" to other parts.
Identification of blackboards is done by a description and a content type. Both may be specified individually by the user. There are a couple of predefined common content types. Please have a look at the file base/include/BlackboardContentType.h. Userdefined types have to be at least different of these. When creating a new Blackboard additional information is nedded: The number of entries of the specified type and the size of these entries.
In order to simpify blackboard identification and creation tBlackboardInfo is to be used. The following example shows how a new blackboard is created. First a blackboard info is defined and then a new blackboard is added to the lists of blackboard.