SIC Devices

What Is a Device?

A device is a collection of sensors and actuators. Sensors are used for collecting input, and actuators are used for output.

In order to collect and send data to and from the SIC framework, drivers have been provided to emulate the various sensors and actuators used in SIC. Please refer to the specific device that you need to use for drivers details.

How to Use a Device?

Our framework abstracts away the device itself by making use of its sensors and actuators. That is, our services are device-independent, but instead depend only on sensors and actuators. Thus, any device can be used as long as its sensors and actuators are supported by the service needed to run.

  1. Connect the device to the same network as the machine running the service for the device

  2. (Optional) Start the device’s driver on the machine running the service

  3. Start the docker services to be run on the device

    • if the device is correctly connected to the machine running the service, then it will be automatically detected when docker is started

  4. Run the desired script

Example

For examples for running specific scripts, check out Services - Restructured .

Adding new devices

The code for all current devices can be found at Bitbucket and Bitbucket. There are two shared libraries that handle a lot of the common logic that is needed to interact with our framework: one for Python-based integrations (our robot-installer installs this on Nao/Pepper robots for example) and one for Java-based integrations (using Maven, used in all non-NAOqi devices currently). There are 9 different types of devices supported within the framework at this time:

  • Cameras

  • Microphones

  • Robot bodies

  • Speakers

  • Browsers

  • Google Assistant-enabled devices

  • GUI controllers (custom external programs interacting with the framework)

  • Puppets (a special instance of a robot body that can only receive motion inputs)

  • Loggers (used to aggregate logs, grouped in sessions, from multiple sources in a single CSV)

One physical Pepper robot for example is thus composed of multiple ‘SIC devices’. Adding an additional device-type requires updates to the connectors (EIS and Python), as would adding entirely new inputs and/or outputs (i.e. by adding additional handlers in those connectors). However, adding a new device of an existing type without any unique handling will work without any adjustments elsewhere. Take a look at the code of the existing devices or our Architecture page for more insights.

If you developed support for an additional device, feel free to open a pull request to our repositories!

Â