ArduMY

How we communicate with Arduino

Subpages

Topics

  • communications
  • architecture

ArduMY™ is a protocol designed to communicate robot actuator configuration and state from OctoMY™ to Arduino® over a serial link, either wired (D-SUB/USB) or wireless (Bluetooth).

While ArduMY™ is (as the name suggests) geared towards Arduno, it was made in a way that would make it easily adaptable to other MCU/SOC devices.

ArduMY™ Logo

The main features of the protocol are as follows:

Protocol Commands

CommandSerializer and CommandParser are at the top level. They are responsible for the main flow of commands from application (serializer) to controller (parser). The 1-byte commands are:

Command Description
OCTOMY_SYNC Synchronize in the case that serial link failed and dropped one or more bytes. Done at interval and at error detected to keep the link healthy.
OCTOMY_AWAITING_COMMAND Ready to accept command.
OCTOMY_SET_ACTUATOR_COUNT The actuator count will change. The next byte is the new actuator count (0-255). NOTE: It is expected that when the number of actuators decrease, the remaining actuators will retain their previous configuration. NOTE: It is expected that when the number of actuators increase, the new actuators will be reset to default configuration.
OCTOMY_SET_ACTUATOR_CONFIG The actuator configuration will change for one actuator. The next byte will identify the actuator (0-255), and its entire configuration data will follow.
OCTOMY_SET_ACTUATOR_VALUES The value of one or more actuators will change. The following 1 to 32 bytes (8 to 256 bits) is a bitmap that identifies which of the actuators that are marked for change, followed by the change for each actuator in batches per representation.
Reserved for future New commands may be added to this list in later versions.

It is understood that the application is always responsible for communication. This means that the application cannot make any assumptions about what the controller thinks, and so the application will build up all data in the controller at each start, and after each subsequent failure/interval to make sure that the application can know the current state of the controller with high certainty.

Building up of data in the controller from the application follows these steps: 1. Serial synchronization to make sure serial communication is stable. 2. Set actuator count 3. Set configuration for all actuators one by one 4. Set value of all actuators one by one

Actuator Configuration

The actuator config is very flexible. It will support the following settings: