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
Wiring
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 into0
and cause no change in the value. - Transmitting a value
255
will be converted into128
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 Examples
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
Checksum
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)
- Transmitting a value