1. Step

Download PortMon from http://download.sysinternals.com/Files/PortMon.zip

2. Step
Start PortMon

Go to menupoint Computer / Connecto local

3. Step
Start Heart2Heart Software

Now you can monitor what commands are sent to the robot if you are doing some actions in the heart2heart software.

The basic figures and the Kondo-Robot we are playing with has 19 servo motors, which are provided to have DOR (degrees of rotation) with 0-270 degrees. The GUI (graphical user interface) HearttoHeart program provided with the KBot (Kondo-Robot) is designed to work on 24 servo motors. Also the controllers on the Kbot has space to add in the additional modules like any sensors and actuators.

One can program the KBot by creating a .csv file in Ms.Excel. This file is fed into the H2H (Heart to Heart) software which helps in writing the program onto the KBot. The H2H software also has a synchro option which is helpful for the real time movement of the KBot. This software also helps in reading out the values from the bot. The preliminary research made on the KBot and the GUI resulted in knowing the importance of the initial values (initial orientations of the servo motors) in programming the KBot. One can find the initial orientations (i.e when the KBot is standing) of the servo motors in the Initial Orientations file. These values were provided with the KBot and can be changed in the HTH.ini file provided with the software.

First observation was, i am unable to read the written .csv file into the H2H software as it is. The orientations were changed when imported into the H2H software. I have come to know that the changes are effected by the initial orientations (what ever the values we edit in the HTH.ini file) of the motors. One needs to take care that the initial orientations are summed up to the programmable values in order to result the desired outputs. This results in the correct program of the bot.

With this small script the Servo degrees can be set by matlab.

 
% Define Serial Port for communication with the Kondo Robot
s=serial('COM1','Baud',115200,'DataBits',8,'StopBits',1,'Parity','none');
 
% Set RCB-1 Servo Position From Robot
cmd=hex2dec('FD');
% ID 0 means Channel 1:12
% ID 1 means Channel 13:24
ID=hex2dec('00');
% Servo Speed
Speed=hex2dec('07');
% Degrees in Hexadecimal representation
ch(1)=hex2dec('00');
ch(2)=hex2dec('07');
ch(3)=hex2dec('5A');
ch(4)=hex2dec('E1');
ch(5)=hex2dec('E1');
ch(6)=hex2dec('5A');
ch(7)=hex2dec('B4');
ch(8)=hex2dec('AD');
ch(9)=hex2dec('50');
ch(10)=hex2dec('E1');
ch(11)=hex2dec('E1');
ch(12)=hex2dec('E1');
 
% Calculate Checksum
TX_checksum=bitand(cmd+ID+Speed+sum(ch),hex2dec('7F'));
 
% Open Serial port and Send Data to the Kondo Robot
fopen(s);
fwrite(s, [cmd,ID,Speed,ch(1:end),TX_checksum], 'uint8');  
fclose(s);

RCB-1

Command Reference

2005.02 v1

For Blue Version servos

This is a partial translation of the Kondo Robot’s

“RCB –1 CommandVer1B.pdf”

Please email and additions or corrections to:

dan@sjrobotics.org

http://www.sjrobotics.org

translated by Daniel Albert

Set RCB-1 ID

[ T X ]

CMD1 CMD2   ID  CHKSUM

1                     2                 3                 4                      [byte]

[ R X ]                         30 mSec Timeout

ID    ACK

1                 2             [byte]

fangulaaa

Parameters

Possible Values

Description
CMD 1 FFh First part of command
CMD 2 5Ah Second part
ID 00h ~ 1Fh Board ID #
CHKSUM ** 00h ~ 7Fh (CMD1 + CMD2 + ID) & 7F
ACK 06h Acknowledgement

** & is a logical AND, + is an add

example chksum :  (FFh + 5Ah + 2h) & 7f = 5Bh

Get RCB-1 ID

[ T X ]

CMD    CHKSUM

1                     2                      [byte]

[ R X ]                         30 mSec Timeout

ID    CHKSUM

1                      2               [byte]

Parameters

Possible Values

Description
CMD FEh Command
TX CHKSUM 00h ~ 7Fh CMD & 7Fh
ID 00h ~ 1Fh Board ID #
RX CHKSUM 00h ~ 1Fh ID & 7Fh


Send RCB-1Servo Position To Robot

[ T X ]

CMD    ID    SPD CH1 … CH12 CHKSUM

1              2               3             4                      15                    16              [byte]

[ R X ]                         30 mSec Timeout

ID    ACK

1                 2             [byte]

Parameters

Possible Values

Description
CMD FDh Command
ID 00h ~ 1Fh Board ID #
SPD 00h ~ 07h Speed
CH1….CH12 00h ~ B4h * Servo degree  (90 = 5Ah)
CHKSUM 00h ~ 7Fh (CMD + ID + SPD + CH1 …+ CH12) &7Fh
ACK 06h Acknowledgement

* Red version additional values

  • DDh = free
  • DEh = 1
  • DFh = 2
  • E0h = 3
  • E1h = Low
  • E2h = High

Get RCB-1Servo Position From Robot

[ T X ]

CMD    ID  CHKSUM

1              2               3                     [byte]

[ R X ]                         30 mSec Timeout

ID    CH1 … CH12 CHKSUM

1                 2             [byte]

Parameters

Possible Values

Description
CMD FCh Command
ID 00h ~ 1Fh Board ID #
CH1….CH12 00h ~ B4h * Servo degree  (90 = 5Ah)
TX CHKSUM 00h ~ 7Fh (CMD + ID) & 7Fh
RX CHKSUM 00h ~ 7Fh (ID + CH1 + … + CH12) & 7Fh
  • Red version additional values
    • DDh = free
    • DEh = 1
    • DFh = 2
    • E0h = 3
    • E1h = Low
    • E2h = High


Set RCB-1 Home Position

[ T X ]

CMD   ID  CHKSUM

1            2                 3                       [byte]

[ R X ]                         10 mSec Timeout

ID    ACK

1                 2             [byte]

Parameters

Possible Values

Description
CMD FBh Command
ID 00h ~ 1Fh Board ID #
CHKSUM 00h ~ 7Fh (CMD + ID) & 7Fh
ACK 06h Acknowledgement

Get RCB-1Home Position From Robot

[ T X ]

CMD    ID  CHKSUM

1              2               3                     [byte]

[ R X ]                         30 mSec Timeout

ID    CH1 … CH12 CHKSUM

1                 2             [byte]

Parameters

Possible Values

Description
CMD FAh Command
ID 00h ~ 1Fh Board ID #
CH1….CH12 00h ~ B4h * Servo degree  (90 = 5Ah)
TX CHKSUM 00h ~ 7Fh (CMD + ID) & 7Fh
RX CHKSUM 00h ~ 7Fh (ID + CH1 + … + CH12) & 7Fh
  • Red version additional values
    • DDh = free
    • DEh = 1
    • DFh = 2
    • E0h = 3
    • E1h = Low
    • E2h = High


Set an RCB-1 Motion Position

[ T X ]

CMD   ID  MOTION# POS# SPD CH1 … CH12 CHKSUM

1            2                 3                         4                5            6                         17                18              [byte]

[ R X ]                         10 mSec Timeout

ID    ACK

1                 2             [byte]

Parameters

Possible Values

Description
CMD F9h Command
ID 00h ~ 1Fh Board ID #
MOTION# 00h ~ 27h One of 40 motions
POS# 00h ~ 63h One of 100 position in this motion
SPD 00h ~ 07h Relative Speed between positions
CH1…CH12 00h ~ B4h Servo degree where 5Ah = 90 degrees
CHKSUM 00h ~ 7Fh (CMD + ID+ MOTION# + POS# + SPD +

CH1 +… + CH12) & 7F

ACK 06h Acknowledgement


Get an RCB-1 Motion Position

[ T X ]

CMD   ID  MOTION# POS# CHKSUM

1            2                 3                         4                       5                [byte]

[ R X ]                         30 mSec Timeout

ID  SPD CH1 … CH12  CHKSUM

1            2             3                    14                         15           [byte]

Parameters

Possible Values

Description
CMD F8h Command
ID 00h ~ 1Fh Board ID #
MOTION# 00h ~ 27h One of 40 motions
POS# 00h ~ 63h One of 100 position in this motion
SPD 00h ~ 07h Relative Speed between positions
CH1…CH12 00h ~ B4h Servo degree where 5Ah = 90 degrees
TX CHKSUM 00h ~ 7Fh (CMD + ID + MOTION# + POS#) & 7Fh
RX CHKSUM 00h ~ 7Fh (ID+ SPD + CH1 +… + CH12) & 7F
ACK 06h Acknowledgement


Set RCB-1 Motion Position Count

[ T X ]

CMD    ID   MOTION#   COUNT CHKSUM

1               2                   3                                4                        5                [byte]

[ R X ]                         30 mSec Timeout

ID       ACK

1                    2          [byte]

fangula

Parameters

Possible Values

Description
CMD F7h Command
ID 00h ~ 1Fh Board ID #
MOTION# 00h ~ 27h(39) Motion #
COUNT 00h ~ 63h(99) Position Index Count
CHKSUM 0h ~ 7Fh (CMD + ID + MOTION# + COUNT) & 7F
ACK 06h Acknowledgement


Get RCB-1 Motion Position Count

[ T X ]

CMD    ID   MOTION#   CHKSUM

1              2                  3                                  4                   [byte]

[ R X ]                         30 mSec Timeout

ID    COUNT   CHKSUM

1                    2                             3             [byte]

Parameters

Possible Values

Description
CMD F6h Command
ID 00h ~ 1Fh Board ID #
MOTION# 00h ~ 27h(39) Motion # stored on RCB-1
COUNT 00h ~ 63h(99) The number of Positions in this Motion
TX CHKSUM 0h ~ 7Fh (CMD + ID + MOTION#) & 7Fh
RX CHKSUM 0h ~ 7Fh (ID + COUNT) & 7Fh


Set an RCB-1 Scenario Motion

[ T X ]

CMD   ID  SCENARIO    MOTIONIDX     MOTION#    CHKSUM

1              2                     3                                         4                                       5                                    6                 [byte]

[ R X ]                         30 mSec Timeout

ID    ACK

1                2        [byte]

Parameters

Possible Values

Description
CMD F5h Command
ID 00h ~ 1Fh Board ID #
SCENARIO 00h ~ 03h Bank number. One of four banks of motion sequences
MOTIONIDX 00h – C7h One of 200 Motion indexes in this scenario of motions
MOTION# 00h ~ 27h One of the 40 programmed motions
CHKSUM 00h ~ 7Fh (CMD + ID + SCENARIO + MOTIONIDX  + MOTION#) & 7Fh
ACK 06h Acknowledgement


Get an RCB-1 Scenario Motion

[ T X ]

CMD   ID  SCENARIO    MOTIONIDX      CHKSUM

1              2                     3                                         4                                        5               [byte]

[ R X ]                         30 mSec Timeout

ID   MOTION#    CHKSUM

1                    2                                    3              [byte]

Parameters

Possible Values

Description
CMD F4h Command
ID 00h ~ 1Fh Board ID #
SCENARIO 00h ~ 03h Bank number. One of four banks of motion sequences
MOTIONIDX 00h – C7h One of 200 Motion indexes in this scenario of motions
MOTION# 00h ~ 27h One of the 40 programmed motions
TX CHKSUM 00h ~ 7Fh (CMD + ID + SCENARIO + MOTIONIDX) & 7Fh
RX CHKSUM 00h ~ 7Fh (ID + MOTION#) & 7Fh


Set an RCB-1 Scenario’s Position Count

[ T X ]

CMD   ID  SCENARIO   COUNT   CHKSUM

1              2                     3                                4                             5                [byte]

[ R X ]                         30 mSec Timeout

ID    ACK

1                2        [byte]

Parameters

Possible Values

Description
CMD F3h Command
ID 00h ~ 1Fh Board ID #
COUNT 00h ~ C7h(200) Number of total positions in scenario
SCENARIO 00h ~ 03h Bank number. One of four banks of motion sequences
CHKSUM 00h ~ 7Fh (CMD + ID + SCENARIO + COUNT) & 7Fh
ACK 06h Acknowledgement


Get RCB-1 Scenario’s Motion Count

[ T X ]

CMD    ID   SCENARIO   CHKSUM

1               2                      3                                   4                  [byte]

[ R X ]                         30 mSec Timeout

ID    COUNT   CHKSUM

1                    2                             3              [byte]

Parameters

Possible Values

Description
CMD F2h Command
ID 00h ~ 1Fh Board ID #
SCENARIO 00h ~ 03h Bank number. One of four banks of motion sequences
COUNT 00h ~ C7h(200) Number of total positions in scenario
TX CHKSUM 0h ~ 7Fh (CMD + ID + SCENARIO) & 7Fh
RX CHKSUM 0h ~ 7Fh (ID + COUNT) & 7Fh


Set RCB-1 Software Switch Bits

[ T X ]

CMD   ID  SWITCH   CHKSUM

1              2               3                                4              [byte]

[ R X ]                         30 mSec Timeout

ID    ACK

1                2        [byte]

Parameters

Possible Values

Description
CMD F1h Command
ID 00h ~ 1Fh Board ID #
SWITCH 00h ~ 04h Bit 0 = SLEEP, Bit 1 = Motion

(bits 2-7 unused)

CHKSUM 00h ~ 7Fh (CMD + ID + SWITCH) & 7Fh
ACK 06h Acknowledgement


Get RCB-1 Software Switch Bits

[ T X ]

CMD    ID   CHKSUM

1               2                     3              [byte]

[ R X ]                         30 mSec Timeout

ID    SWITCH   CHKSUM

1                    2                                3             [byte]

Parameters

Possible Values

Description
CMD F0h Command
ID 00h ~ 1Fh Board ID #
SWITCH 00h ~ 03h Bit 0 = SLEEP, Bit 1 = Motion (bits 2-7 unused)
TX CHKSUM 0h ~ 7Fh (CMD + ID) &7Fh
RX CHKSUM 0h ~ 7Fh (ID + SWITCH) & 7Fh


Play an RCB-1 Motion

[ T X ]

CMD   ID  MOTION   CHKSUM

1             2                3                               4              [byte]

[ R X ]                         30 mSec Timeout

ID    ACK

1                2        [byte]

Parameters

Possible Values

Description
CMD EFh Command
ID 00h ~ 1Fh Board ID #
MOTION 00h ~ 27h One of the 40 programmed motions
CHKSUM 00h ~ 7Fh (CMD + ID + MOTION) & 7Fh
ACK 06h Acknowledgement


Play an RCB-1 Scenario

[ T X ]

CMD   ID  SCENARIO   CHKSUM

1              2                     3                                   4               [byte]

[ R X ]                         30 mSec Timeout

ID    ACK

1                2        [byte]

Parameters

Possible Values

Description
CMD EEh Command
ID 00h ~ 1Fh Board ID #
MOTION 00h ~ 27h One of the 40 programmed motions
CHKSUM 00h ~ 7Fh (CMD + ID + SCENARIO) & 7Fh
ACK 06h Acknowledgement


Set RCB-1 Remote Key Control Command?

[ T X ]

CMD   ID  ADDRESS  KEY1  KEY2  MOTION   CHKSUM

1              2                   3                         4                  5                        6                                7            [byte]

[ R X ]                         30 mSec Timeout

ID    ACK

1                2        [byte]

Parameters

Possible Values

Description
CMD EDh Command
ID 00h ~ 1Fh Board ID #
ADDRESS 00h ~ 9Fh See table below
KEY1 00h ~ 0Fh
KEY2 00h ~ 0Fh
MOTION 00h ~ 27h One of the 40 programmed motions
CHKSUM 00h ~ 7Fh (CMD + ID + ADDRESS + KEY1 + KEY2 + MOTION) & 7F
ADDRESS
1 Shiftkey (nashi) #00h ~ #1Fh
2 Shiftkey 1 #20h ~ #3Fh
3 Shiftkey 2 #40h ~ #5Fh
4 Shiftkey 3 #60h ~ #7Fh
5 Shiftkey 4 #80h ~ #9Fh

Get RCB-1 Remote Key Control Command

[ T X ]

CMD   ID  ADDRESS  CHKSUM

1              2                   3                                4                [byte]

[ R X ]                         30 mSec Timeout

ID    KEY1  KEY2  MOTION CHKSUM

1                2                  3                        4                          5              [byte]

Parameters

Possible Values

Description
CMD ECh Command
ID 00h ~ 1Fh Board ID #
ADDRESS 00h ~ 9Fh See table below
KEY1 00h ~ 0Fh
KEY2 00h ~ 0Fh
MOTION 00h ~ 27h One of the 40 programmed motions
TX CHKSUM 00h ~ 7Fh (CMD + ID + ADDRESS) &7Fh
RX CHKSUM 00h ~ 7Fh (ID + KEY1 + KEY2 + MOTION) &7Fh


Set RCB-1 Servo Trim

[ T X ]

CMD   ID    CH1 … CH12 CHKSUM

1             2               3                      14                   18              [byte]

[ R X ]                         30 mSec Timeout

ID    ACK

1               2             [byte]

Parameters

Possible Values

Description
CMD E9h Command
ID 00h ~ 1Fh Board ID #
CH1…CH12 00h ~ 27h Servo degree trim (00h = -20) (27h = +20)
CHKSUM 00h ~ 7Fh (CMD + ID + CH1 +…+ CH12) &7Fh
ACK 06h Acknowledgement


Get RCB-1 Servo Trim

[ T X ]

CMD   ID  CHKSUM

1            2                 3                [byte]

[ R X ]                         30 mSec Timeout

ID  CH1 … CH12  CHKSUM

1            2                      13                    14             [byte]

Parameters

Possible Values

Description
CMD E8h Command
ID 00h ~ 1Fh Board ID #
CH1…CH12 00h ~ 27h Servo degree trim (00h = -20) (27h = +20)
TX CHKSUM 00h ~ 7Fh (CMD + ID) &7Fh
RX CHKSUM 00h ~ 7Fh (ID + CH1 +…+ CH12) &7Fh


The idea is it to controll the Robot wireless.

One way could be to use a PS2 Wireless Controller and a microcontroller to decode the PS2 Signals and send the Commands through serial interface to the Kondo Controll PCBs.

This post should give an overview to the Kondo Robot.
This robot consist of 2 controll PCBs and 19 servo motors.

These Servo motors are PWM controlled.

Each servo motor is adressed through a channel as shown in the image below.

The Heart2Heart Programm delivered with the Robot sends the commands through the serial interface to the 2 Controll PCBs on the Kondo Robots back.