You can start reading this page and use its information as soon as you have assembled your RAPIRO and installed the basic sketch with Rapiro connected to a usb port of my computer running windows 7. Commands are sent via the installed arduino IDE.

Those command can easily be sent via SSH once the raspberry PI is attached to RAPIRO.

here is a sample

  echo "#COMMAND" | sudo minicom -b 57600 -o -D /dev/ttyAMA0

where #COMMAND are below

Understanding the arduino Sketch

The default sketch contain all the basics to make the robot the bare minimum: it make the servos moves individually, change the colors of the LED, or make a pattern of movement.

If you know about arduino, reading the sketch should let you understand what the robot can do. Make sure you set arduino IDE with ARDUINO UNO as Rapiro's board is compatible with that. to access some of the basic commands, simply open the arduino IDE, open the serial monitor window and set the baud to 57600. on the command line, enter :

   #M1 - robot will move forward
   #M2 - robot will move backward
   #M3 - robot will turn right
   #M4 - robot will turn left
   #M5 - robot will raise his hand and wave the left hand. LED will become green and flashing
   #M6 - robot will lower his left hand. LED will become Yellow
   #M7 - robot will move both arm and contract his hands. LED will become Blue
   #M8 - robot will wave goodbye with his left arm. LED will become RED. 
   #M9 - robot will raise its right arm and move its waist. LED will become BLUE
   #M0 - robot will go to initial position

CAPS LOCK is important when you input a command via the serial monitor..

Reading through the //Rapiro.ino source code

Each movement of the preset (# M1 ~ # M9), consists of pattern of 8 frames. Each frame is defined values ​​uint8_t type sixteen (motion). This can be changed modifying the number of frame per pattern. MAXFN Lets take #M0 for example:

   uint8_t motion[MAXMN][MAXFN][16]={
   { // 0 Stop
LimbHeadwaistright shoulder yawRight shoulder pitchRight hand gripleft shoulder yawleft shoulder pitchleft hand griprigh foot yawright foot pitchleft foot yawleft foot pitchRedGreenBlueTime
frame no.1{ 90,90,0,130,90,180,50,90,90,90,90,90,0,0,255,10},
frame no.2{ 90,90,0,130,90,180,50,90,90,90,90,90,0,0,0, 0},
frame no.3{ 90,90,0,130,90,180,50,90,90,90,90,90,0,0,0, 0},
frame no.4{ 90,90,0,130,90,180,50,90,90,90,90,90,0,0,0, 0},
frame no.5{ 90,90,0,130,90,180,50,90,90,90,90,90,0,0,0, 0},
frame no.6{ 90,90,0,130,90,180,50,90,90,90,90,90,0,0,0, 0},
frame no.7{ 90,90,0,130,90,180,50,90,90,90,90,90,0,0,0, 0},
frame no.8{ 90,90,0,130,90,180,50,90,90,90,90,90,0,0,0, 0}

I put numbers so you can visually make sense of what a pattern is, and what a frame contain. Movements consist of pattern. Pattern are made of frames. Each frame contain the rotation angle of every servo, the values of the RGB LED and a Time to perform the action.

  Head horizontal rotation angle (Head yaw) 
    (left) 180 <---> 0 (right)
  Hip horizontal rotation angle (Waist yaw) 
    (left) 180 <---> 0 (right)
  Right shoulder up and down angle (R Shoulder yaw)
    (bottom) 0 <---> 180 (above)
  Open right shoulder angle (R Shoulder pitch)
    (closed) 90 <---> 180 (open)
  Right hand opening and closing angle (R Hand grip)
    (closed) 50 <---> 110 (open)
  Left shoulder up and down angle (L Shoulder yaw)
    (bottom) 180 <---> 0 (top)
  Open left shoulder angle (L Shoulder pitch)
    (closed) 90 <-> 0 (open)
  Left hand opening and closing angle (L Hand grip)
    (closed) 130 <---> 70 (open)
  Right foot horizontal rotation angle (R Foot yaw)
    (left) 0 <---> 180 (right)
  Twist angle of the right foot ankle (R Foot pitch)
    (inside) 0 <---> 180 (outside)
   Left foot horizontal rotation angle (L Foot yaw)
    (left) 0 <---> 180 (right)
  Twist angle of the left foot ankle (R Foot pitch)
    (inward) 180 <---> 0 (outward)
  Red intensity of the eye (R) 
     0 <---> 255
  Green intensity of the eye (G)
    0 <---> 255
  Blue intensity of the eye (B)
    0 <---> 255

Serial Input command accepted the following commands, "# M" other than, also accepts "# P", "# Q", "# C".

You can see them in the void loop

   void loop() {
    switch( {
     case 'M'
     case 'P'
     case 'Q'
Here are some other helpful commands

LED CODE sample

if you input


the led with put the Green intensity to 255 (MAX) in 10ms.

R,G,B values are between 0 and 255 T is the time component in ms, form 0 to 255.


Sxx refers to one of the 12 motors (from S00 to S11), A000 up to A180 is the angle where to servo incline, Txxx is the time to perform the movement. you can combine two commands, i tried more but it didn’t work..

  #PS00A000T010#PS00A180T010 - full head movement from side to side
  #PS01A000T010#PS01A180T010 - Waist
  #PS02A000T010#PS02A180T010 - r Shoulder
  #PS03A000T010#PS03A180T010 - r Arm
  #PS04A000T010#PS04A180T010 - r HAND
  #PS05A000T010#PS05A180T010 - l Shoulder
  #PS06A000T010#PS06A180T010 – l Arm
  #PS07A000T010#PS07A180T010 – l hand
  #PS08A000T010#PS08A180T010 - r Foot yaw
  #PS09A000T010#PS09A180T010 - r Foot pitch
  #PS10A000T010#PS10A180T010 - l Foot yaw
  #PS11A000T010#PS11A180T010 - l Foot pitch


excellent forum thread with a quick howto with the rapiro and how to assemble it.

Also this blog was very helpfull here is the part that i edited, but for further information, go to the side. I only aim to make a summary on the basic of the robot.

I found this japanese site, with the help of google translate, i managed to find some very useful informations.