Wednesday, August 15, 2012

Robbie, the open humanoid robot

This is the project I have been working on this year. The tittle of the project is "Development of a Open Platform for Research on Humanoid Robots", it's basically the implementation of the project I did last year.

This robot is used/will be used to test control stability, sensor fusion, stereo vision and path planning algorithms. Currently, my team and I are gradually releasing all of our source. Ultimately, a public repository will be created, containing the necessary information to replicate this project.

This is a very big project, which I'll analyze in the following sections.

Simulation (Not released yet)

Our previous project used Simulink to simulate Robbie in a virtual environment. Since simulation times were no good, we decided to switch to ODE (Open Dynamics Engine), which doesn't looks as nice as Simulink, but its simulation times are way better.

Robbie in a virtual environment. ZMP inverted pendulum not part of the simulation.

My friend Victor is in charge of this section. We haven't released the source code yet, but probably we'll release it as a Eclipse project.

Mechanics (Not released yet)

Materials: Alluminium, 18 Hitec HS-645MG servomotors and 2 Towerpro SG-90 micro servomotors.

This is how the Robbie looks today:

Robbie, the humanoid robot

Drawings not yet released.

Electronics (Partially released)

The electronics are splitted in 3:

  • F4Dev: Sensor / actuator manager and stability controller.
  • Distribution board: For servo connectors.
  • Beagleboard: For image processing.
Robbie's brain

Firmware ("Partially" released)

The firmware is built on top of bareCortexM, an Eclipse based IDE for ARM Cortex M processors, and libstm32pp, a template peripheral library. Both projects are open source.

The final firmware has yet to be released.

Software Interface (Old version released)

The software interface, qSerialTerm, allows the user to:
  • Send messages to Robbie.
  • Visualize moving plots of Robbie's sensor readings
  • Manually control Robbie's servomotors.
qSerialTerm, a Qt based serial port interface

Sensor fusion

From the orientation sensors (accelerometer, gyroscope and magnetometer) readings we compute an absolute orientation, using Madwick's MARG algorithm. This algorithm computes the orientation of Robbie's torso, seen from the coordinate system formed by the gravity axis (-Z axis) and the geographic north (Y axis).

I owe you a video here.

This computed orientation is important for the stability control and will later be used for path planning.

Control Stability

The accelerometer data is used to compute a stability indicator, named Zero Moment Point (ZMP). This indicator plus the giroscope readings are the core of Robbie's stability control.

Robbie's stability control maximizes its support polygon, i.e. maintains its foot parallel to the floor, and also maintains its ZMP inside its support polygon, this guarantees dynamic stability.

I owe you another video here.

Stereo Vision

Robbie has a stereo camera (a Minoru 3D webcam to be precise), which in essence are two cameras properly aligned to resemble human eyes. Using a stereo vision algorithm, the video streams from these two cameras can be used to obtain a sense of depth.

Minoru 3D webcam, a.k.a. Robbie's head

We use a stereo vision algorithm to compute the distance from Robbie to objects, and this information is used as a obstacle detector.

My friend Santiago trying to punch Robbie testing Robbie's stereo vision.

My friend Santiago is in charge of this part. Source code not released yet.

Early footage

On the following video, you can see Robbie doing tracking of gait trajectories without stability control.

Robbie walking, without stability control. (Feb 2012)


  • Prof. Jose Oliden, our advisor
  • Victor Paredes and Santiago Cortijo, team members
  • Control systems and Artificial Intelligence Research Group (GISCIA)
  • National University of Engineering (UNI)

1 comment:

  1. How about if you have a pet robo???
    Meet the multi-talented Humanoid Robot- AIHRO...!!!
    Do Watch and Share