Sphero Robots support three programming languages on every Robot that can provide some basic autonomous functions. The easiest to learn and is used by our education program is Macros, followed by OrbBasic, and finally the latest and most powerful, OVAL. These languages all provide autonomous functionality for fast changing colors or other feedback that would normally be limited to the 12 commands per second limit when communicating with a host device.
Control System & Motors
Sphero robots have a complex stabilization and control system that provides an easy way to move the robot using 'roll' commands, yet provides direct access to the internal motors by bypassing the control system.
Sphero robots have two LEDs, a main RGB Led and a blue tail-light that are independently accessible via the API and SDKs.
Sensor data is available via the sensor streaming API/SDK Commands. Sensors include a very accurate IMU, Collision Detection algorithm, and Locator.
Sphero robots contain a powerful Inertial Measurement Unit (IMU) used to stabilize the robot during navigation. The Sphero IMU contains an Accelerometer and Gyrometer which can be used as inputs to sense freefall, jumps, tricks, and human handling of the robot.
Every Sphero robot contains a complex collision detection algorithm. Since this algorithm needs very high fidelity IMU data to correctly detect collisions and can be slightly different based on the robots mechanical design it has been implemented on the Robot instead of streaming the data back to the host device.
Sphero Locator is a feature that provides real-time 2D position and velocity information about the robot. Much like IMU data, Locator data is available via the Streaming protocol in the SDKs.
Ollie and our future Bluetooth 4.0 robots give access to Signal Quality which can be used to detect gross proximity to the host device. Sphero, the robot, does not support Signal Quality.
The easiest way to develop Macros is via a mobile visual development tool called MacroLab. MacroLab is available for Apple and Android. Macros excel at fast color changes, fades, and other semi-autonomous functions that would normally be limited by bluetooth bandwidth. For more information see: Macros.
OrbBasic is a text-based programming language that is easy to experiment with via the OrbBasic App available in the Apple and Android App Stores. OrbBasic, like Macros, are a resource that provides for autonomous behavior and provides programmable conditionals that Macros don't support. For more information see: OrbBasic.
Oval is a subset of the computer language C with a few extra features to support streaming and asynchronous communication. It provides 32-bit floating point and signed integer types but does not include pointers, structs, or unions. Oval gives the developer direct access to sensor data, and control system parameters. For more information see: Oval.
API & SDK Commands
API Commands are a set of commands that are generated on a host (mobile) device and transmitted via Bluetooth to the robot for execution. By definition there is some latency from the time the command is generated and sent and hence why the onboard robot language interpreters are so important. Also, due to bandwidth constraints the robot is limited to accepting about 12 commands per second via Bluetooth. The Objective-C, Swift, and Android SDKs abstract the API Commands into SDK Commands and hide the actual protocol for ease of development.