The SDK

This page outlines the basic concepts which underpin our software development kit (SDK), for the specifics of your chosen language visit the Documentation Reference.

There are 4 simple functions which form the basis of all BOW enabled application:

Quick Connect

A helpful connect function which enables you to start a connection to any robot which is online and associated with your account. The quick connect function uses BOW Hub to log in, connect to your selected robot and open all relevant modalities. For more complex applications, such as multi-robot control, it is necessary to use the individual lower level functions.

Get Modality

This reads in a data message from the robot on an open modality channel. The data which is returned depends on the name of the modality passed to the function:

  • Audition - Audio data from the robot's microphone(s)
  • Vision - Image frames from the robot's camera(s)
  • Proprioception - Feedback about the robot's joint positions and states
  • Tactile - Readings from the robot's touch and haptic sensors
  • Interoception Coming Soon - Feedback about the robot's internal state; battery level, temperatures, fault codes, etc...
  • Exteroception Coming Soon - Readings from the robot's sensors which reveal information about it's environment; sonar, lidar, temperature, pressure, etc...
Set Modality

This sends a data message to the robot on an open modality channel. The data which needs to be sent depends on the name of the modality passed to the function:

  • Motor - Data which commands the robot's motors/joints to given locations, angles or velocities
  • Voice - Audio data to be played through the robot's speaker(s)
  • Speech - Text to either be said by the robot if it has TTS capabilities or printed to a console if not
  • Emotion - A collection of data which controls any cosmetic abilities of the robot; lights, eyes, etc...
Close Client

A function which closes all open modalities and terminates any connections with robots. Similar to quick connect, this may not be appropriate for more complicated applications such as multi-robot control, where you may wish to disconnect with only one robot. In this case you would make use of lower level functions such as disconnect.