SICService subtypes description

Description of all service subtypes

SICService

For a SICService, the execute will be called once all input buffer contain a timestamp aligned message.

This means that, we expect to have at least one message of each type, and the messages are within some threshold of the difference of their timestamp. This timestamp is based on the data origin of the message, e.g. the time of capture of the camera, to be able to fuse data together. This is needed to, for example, prevent bounding boxes detected a second ago to be overlayed on a much newer image.

This timestamp threshold can be adjusted by setting MAX_MESSAGE_AGE_DIFF_IN_SECONDS. If you need larger buffers, to for example accommodate for a fast and slow data source, you can adjust MAX_MESSAGE_BUFFER_SIZE.

The execute function has a single parameter: a inputs dict, which has the message types as key and the message itself as value’s.

The key is given by the SICMessage.id(index=0) function, with an optional parameter. This is used in the case where there are duplicate input types, e.g. a camera message from two different NAO’s. Use image = inputs[CompressedImageMessage.id(1)].image to access images from the second NAO. The index is dependent on the order in which they are provided as inputs to this service in the SICApplication. For more information see https://socialrobotics.atlassian.net/wiki/spaces/CBSR/pages/2164391937/Architecture+v2#The-ID-function.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

verhaaaal