Specifications - Protocol

Basic Specification

In sending a command, firstly send header that defined as 3 characters. Secondly formatting and send each argument.

Before sending a command, client must convert binary-expression to ascii-expression. (If the client sending a command without conversion, PLEN’s moving is different from you intended.)

No differences the command line made of upper case or lower case. Required baud-rate is 2,000,000.

Group of Controller Command

$AN (Apply Native Value)

Args Roles Min (dec) Max (dec) Format
DEVICE_ID Set a device id. 0 23 0 padding,hex,2 bytes
VALUE Set to apply native value. -2048 2047 0 padding,hex,3 bytes

example:
If you want to apply 1000 to device 10, send command below.

$AD (Apply Diff Value)

Args Roles Min (dec) Max (dec) Format
DEVICE_ID Set a device id. 0 23 0 padding,hex,2 bytes
VALUE Set to apply diff value. -2048 2047 0 padding,hex,3 bytes

example:
If you want to apply home value – 100 to device 4, send command below.

$PM (Play a Motion)

Attention!
You could also use “$MP”, but this is deprecated.

Args Roles Min (dec) Max (dec) Format
SLOT Set to read slot. 0 89 0 padding,hex,2 bytes

example:
If you want to play slot 4, send command below. See also…

$SM (Stop a Motion)

Attention!
You could also use “$MS”, but this is deprecated.

example:
If you want to stop a motion, send command below.

$HP (Apply Home Position)

example:
If you want to apply home position, send command below.

Group of Interpreter Command

#PU (Push a Function)

Args Roles Min (dec) Max (dec) Format
SLOT Set to read slot. 0 89 0 padding,hex,2 bytes
LOOP_COUNT Set number of play. 0 255 0 padding,hex,2 bytes

example:
If you want to push function that plays slot 10 three times, send command below.

#PO (Pop a Function)

example:
If you want to pop a function, send command below.

#RI (Reset the Interpreter)

example:
If you want to reset the interpreter, send command below.

Group of Setter Command

>MH (Set a Motion Header)

Args Roles Min (dec) Max (dec) Format
SLOT Set to write slot. 0 89 0 padding,hex,2 bytes
NAME Set a motion name. White space padding,20 bytes
USE_LOOP Use loop function or not. 0 1 True (1) or false (0), 1 byte
LOOP_BEGIN Set a loop beginning frame. 0 255 0 padding,hex,2 bytes
LOOP_END Set a loop ending frame. 0 255 0 padding,hex,2 bytes
LOOP_COUNT Set a loop count. (255 as infinity.) 0 255 0 padding,hex,2 bytes
USE_JUMP Use jump function or not. 0 1 True (1) or false (0), 1 byte
JUMP_SLOT Jump to the slot after stopped the motion. 0 255 0 padding,hex,2 bytes
USE_EXTRA Use extra function or not. (WIP) 0 1 True (1) or false (0), 1 byte
FRAME_LENGTH Set a frame length. 1 20 0 padding,hex,2 bytes

example:
Please get more details at “>MF” section.

>MF (Set a Motion Frame)

Args Roles Min (dec) Max (dec) Format
SLOT Set to write slot. 0 89 0 padding,hex,2 bytes
FRAME_ID Set a frame id. 1 20 0 padding,hex,2 bytes
TRANSITION_TIME_MS Set a transition time (msec). 32 65535 0 padding,hex,4 bytes
VALUE[DEVICE_ID] Set to apply value. (*1) -32768 32767 0 padding,hex,4 bytes

(*1) Sum of devices is 24 and the all are servo motors in current implementation.

example
Introduce how to install a motion below.

Args Values
SLOT 0
NAME Test
USE_LOOP True
LOOP_BEGIN 0
LOOP_END 1
LOOP_COUNT 3
USE_JUMP True
JUMP_SLOT 50
USE_EXTRA False
FRAME_LENGTH 2
Args Values
TRANSITION_TIME_MS 100
VALUE[EVEN] 0
VALUE[ODD] -1

Please send command below. (Do not need to insert CR, LF, or CRLF actually.)

If you are interested deeply, please see also the implementation on the Control Server.

>JS (Reset the Joint Settings)

example:
If you want to reset the joint settings, send command below.

>HO (Set a Home Value)

Args Roles Min (dec) Max (dec) Format
DEVICE_ID Set a device id. 0 23 0 padding,hex,2 bytes
VALUE Set to apply home value. -2048 2047 0 padding,hex,3 bytes

example:
If you want to apply 100 as home value to device 0, send command below.

>MA (Set a Max Value)

Args Roles Min (dec) Max (dec) Format
DEVICE_ID Set a device id. 0 23 0 padding,hex,2 bytes
VALUE Set to apply max value. -2048 2047 0 padding,hex,3 bytes

example:
If you want to apply 100 as max value to device 0, send command below.

>MI (Set a Min Value)

Args Roles Min (dec) Max (dec) Format
DEVICE_ID Set a device id. 0 23 0 padding,hex,2 bytes
VALUE Set to apply min value. -2048 2047 0 padding,hex,3 bytes

example:
If you want to apply -1 as min value to device 10, send command below.

Group of Getter Command

<JS (Dump the Joint Settings)

example:
If you want to dump the joint settings, send command below.

At that time, outputting result like json below.

<MO (Dump a Motion)

Args Roles Min (dec) Max (dec) Format
SLOT Set to read slot. 0 89 0 padding,hex,2 bytes

example:
If you want to dump slot 0, send command below.

At that time, outputting result like “motion.json”. (See also…) However, property “device”‘s type is not string but integer defined as device id in “device_map.json“.

<VI (Dump the Version Information)

example:
If you want to dump the version information, send command below.

At that time, outputting result like json below.