Commander Console

Download Commander Console Firmware Sketch (For Arduino/Seeeduino)

The Commander Console is an Arduino based control box that will allow you to precisley control the InterbotiX Robot Arms.

Currently the Commander Console is offered as a DIY project. To build a commander console you will need the following:

  • Arduino, Seeeduino, or other Arduino IDE compatible microcontroller
  • 5 Joysticks (Only 6 axises will be used, see below)
  • 4 Pushbuttons
  • Wired serial connection or Wireless XBee connection


Console wiring diagram

Device Arduino Port
Joystick - X-Axis Analog 0
Joystick - Y-Axis Analog 1
Joystick - Z-Axis Analog 2
Joystick - Wrist Angle Analog 3
Joystick - Wrist Rotate Analog 4
Joystick - Gripper Analog 5
Button - R1/Change Mode Digital 5
Button - R2/Move To Home Digital 6
Button - R3/Debug Output Digital 7
Button - L4/User Defined Digital 8
Output Data Digital 1/TX
Output Ground Ground

Connect the Output Ground to ground on the ArbotiX and Output Data to the RX pin on the ArbotiX Robocontroller.

Command Console Packet Structure

The Command Console will send a ten byte packet every 33ms. This packet includes the following data

Packet # Packet Info
1 Fixed Header - 0xff
2 X-Axis Change
3 Y-Axis Change
4 Z Axis Change
5 Wrist Angle Change
6 Wrist Rotate Change
7 Gripper Change
8 Buttons
9 Extended Instruction
10 Checksum

"Change" byte structure

  • Each 'Change' packet is transmitted as an unsigned byte (values 0 to 255).
  • Once received by the commander console library on the ArbotiX Robocontroller, these values go through the formula
    Change Packet Value - 128
    This will shift the values to (-128 to 127).
  • The code running on the ArbotiX Robocontroller will add the value between (-128 to 127) to the current position of the parameter you are trying to change.
  • For example we will look at the X-Axis Change value
    • Transmitting a value 128 will be converted into 0 and cause no change in the value.
    • Transmitting a value 255 will be converted into 128 and increase the X-Axis Value as much as quickly as possible.
    • Transmitting a value 0 will be converted into -128 and decrease the X-Axis Value as much as quickly as possible.

    Button Byte Structure

    The button byte contains the current state of up to 8 pushbuttons. The default commander console will only use 4 of those buttons, the lower half byte of the button byte.

    Bit # 8 7 6 5 4 3 2 1
    Button LT RT L6 L5 L4 R3 R2 R1
    Hex Decimal Binary Buttons Active
    0x00 0 00000000 none
    0x01 1 00000001 R1
    0x02 2 00000010 R2
    0x03 3 00000011 R1,R2
    0x0f 15 00001111 R1,R2,R3,L4

    Extended Byte Structure

    • The extended instruction byte is currently not used for any built in functionailty
    • The extended instruction byte can be used by the user to pass information to the
    • Future versions of the ArbotiX Commander firmware will support requesting data from the Arm


    The checksum can be calculated as follows:

    • Add up the first 9 bytes
    • Isolate the low-byte of the sum
    • Invert the byte

    The Arduino Code for this operation would be

    (unsigned char)(255 - (x_axis+y_axis+z_axis+w_angle+w_rot+gripper+buttons)%256)