Table of Contents

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.

$an0a3e8

$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.

$ad04f9c

$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...

$pm04

$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.

$sm

$HP (Apply Home Position)

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

$hp

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.

#pu0a03

#PO (Pop a Function)

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

#po

#RI (Reset the Interpreter)

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

#ri

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.)

>MH00
Test                
1
00
01
03
1
32
0
02

>MF
00
00
0064
0000ffff0000ffff0000ffff0000ffff
0000ffff0000ffff0000ffff0000ffff
0000ffff0000ffff0000ffff0000ffff

>MF
00
01
0064
0000ffff0000ffff0000ffff0000ffff
0000ffff0000ffff0000ffff0000ffff
0000ffff0000ffff0000ffff0000ffff

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.

>js

>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.

>ho00064

>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.

>ma00064

>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.

>mi0afff

Group of Getter Command

<JS (Dump the Joint Settings)

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

<js

At that time, outputting result like json below.

[
    {
        "@device": <integer>,
        "max": <integer>,
        "min": <integer>,
        "home": <integer>
    },
    ...
]

<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.

<mo00

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.

<vi

At that time, outputting result like json below.

{
    "device": <string>,
    "codename": <string>,
    "version": <string>
}