Communication Channels

Learn about the channels at the core of the BOW API.

What is a channel?

To make the process of controlling robots intuitive, we refer to their capabilities in terms of a small number of easy to understand communications channels based on human equivalents. In the case of data coming from the robots, these channels equate to human sensory modalities; in the case of data being sent to the robot they equate to modes of action, e.g., speech or through the motor system.

Sensory Channels

Sensory channels represent all the data collected by the sensors on the robot and, just like in humans, all of this data is broken down into individual senses. The below table shows all the available BOW channels, the human equivalent for each, and a breakdown of the types of sensors covered by each modality.

Channel NameHuman Sense EquivalentRobot Sensors
AuditionHearingMicrophones
VisionSightCameras, RGB-D sensors
TactileTouchHaptics, touch sensors
ProprioceptionAwareness of body's own positionJoint angles, joint velocities, joint torques, joint names, joint min and max, IK objective status, Effector positions
InteroceptionAwareness of own internal state, e.g. hunger, thirst, temperature, etc...Battery voltage, connection status, fault codes, accelerometers, gyroscopes, tilt sensors
ExteroceptionAwareness of the surrounding environment, e.g. temperature, pressure, light levels, etc...Sonar, lidar, thermometers, pressure sensors, lights sensors, cliff sensors, GPS, compass

Action Channels

Action channels represent all the data which can be transmitted to the robot and cause it to act upon its environment, whether that is through movement, audio or some other mechanism. These different mechanisms are broken down into individual channels which are detailed in the table below.

Channel NameHuman EquivalentRobot Output
MotorPhysical ActionsMotor movements, both joints and wheels
SpeechTalkingText output (Terminal), text-to-speech audio output
VoiceTalkingDirect audio streaming to speakers
EmotionEmotionExpressiveness in the form of sounds, lights and predetermined motion patterns

Robot Specific Channel

There are rare cases where a robot has a unique attribute that either cannot be represented by the existing set of channels or where doing so would be overly complicated or unnecessary, for example a robot specific sensor or a set of joints which are visual only. For these rare cases we provide the flexibility of custom two-way data channels that are robot specific, but we strive to fit all robot functionality within the existing channel types.

The BOW SDK

There are four simple functions which form the basis of all BOW enabled applications:

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 channels. For more complex applications, such as multi-robot control, it is necessary to use the individual lower level functions.

Get

This reads in a data message from the robot on an open channel. The data which is returned depends on the name of the channel from which get is called (e.g., myrobot.vision.get()):

  • 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 - Feedback about the robot's internal state; battery level, temperatures, fault codes, etc...
  • Exteroception - Readings from the robot's sensors which reveal information about it's environment; sonar, lidar, temperature, pressure, etc...
Set

This sends a data message to the robot on an open channel. The data which needs to be sent depends on the name of depends on the name of the channel from which set is called (e.g., myrobot.motor.set()):

  • 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.

The BOW Data Message

The BOW Data Message is a unique data structure that is capable of representing the information that is required to communicate with any robot, regardless of its form factor or specific sensor and motor capabilities. This means that your application is able to control any robot without the need to rewrite your code or spend days understanding the nuances of each robot you want to interact with. By breaking the capabilities of all robots down into communication channels that exchange these messages, and correspond to human-centric sensor modalities and modes of action (e.g. vision, speech, proprioception, etc...), the BOW Data Message allows you to intuitively gather data from and control any robot.

On this page