There are two parts to the commander protocol - the sending and the receiving ends. The receiving end is usually an ArbotiX robocontroller using the commander library to accept, parse and use commander data sent to it. The sending end does not require a specific library, just the ability to send a serial packet as outlined below. The commander packet is designed to be sent via a remote control like the ArbotiX Commander or Virtual Commander, though it can be sent via any device that can send a TTL serial signal to the arbotix or an XBee.
Enter in a value for each parameter. Be mindful of the limits for each parameter. This calculator will not check limits. Once all values are present, press 'Calculate' to generate a serial packet. You can then use the serial packet below the 'calculate' button in your application.
|Packet #||Description||Commander Library Call||Mixed Byte Commander Call|
|2||Look Joystick (Vertical)||command.lookv||command.pan(High Byte)|
|3||Look Joystick (Horizontal)||command.lookh||command.pan(Low Byte)|
|4||Walk Joystick (Vertical)||command.walkv||command.tilt(High Byte)|
|5||Walk Joystick (Horizontal)||command.walkh||command.tilt(Low Byte)|
|7||Extended Instruction Byte||command.ext|
The first four fields correspond to the commander's joysticks. Each axis on the left joystick (look) and the right joystick (walk) take up one field. When the joystick is centered, the value transmitted is
128. When the joystick is all the way left (vertical) or down (horizontal) the value is 3. When the joystick is all the way right(vertical) or up (horizontal) the value is 253.
On the receiving end, the commander library will shift these values for you. The shift is a simple
value - 128 operation. So when you send a
128, the receiving end will read a
0. When you send a
3, the receiving end will read a
-125, and when you send a
253, the receiving end will read a
It is also possible to combine 2 joystick bytes into a single high resolution value. The two
look byte can be read as
pan and the two
walk bytes can be read as
tilt by the commander library on the receiving end. The vertical byte is always the High byte while the horizontal byte is the low byte. Usually this is used to send a 10-bit analog value (0-1023) though it can send up to a 16-bit value (0-65535).
Button Byte Structure
|Button||Left Top||Right Top||Left 6||Left 5||Left 4||Right 3||Right 2||Right 1|
The extended byte can be used to send additional data. The exact function will depend on the firmware of your receiving robot.