barnholt.net > robots > zorc

About

ZORC

ZORC is a bipedal walking robot that evolved its own gait. Diploma thesis at the Department of Computer Science, University of Dortmund, supervised by Professor Wolfgang Banzhaf.

The Task

The final goal was a physical robot that walks. In a sim-to-real approach, training started on its digital twin, a virtual ZORC in the SIGEL simulator. Using the Genetic Programming paradigm, a software system was implemented allowing the robot

  1. to process various sensor inputs, and
  2. to control its servo-motors.

These basic commands, along with other simple operators (+, -, *, /, conditional operators, ..), could then be assembled into a virtual machine-code program by the Genetic Programming system.

In the SIGEL physics simulator, the virtual programs were interpreted and executed on a 3D model of ZORC. A so-called Fitness Function evaluated how good each program was at controlling and moving the robot. Once good enough, the programs were moved to the real robot - the interpreter no longer drove the simulation but the servos and sensors of the actual machine. There, the Genetic Programming process continued until a robust walking gait evolved.

SIGEL is an open-source simulation environment for walking robots, used here to train the virtual ZORC. The original project is on SourceForge; a modernized version is in progress on GitHub.

The diploma thesis "Evolution von Laufalgorithmen für die humanoide Roboterarchitektur 'ZORC' mittels Genetischer Programmierung" is available as a PDF (German).

Photos

Screenshots

Movies

See how ZORC learned to walk.

Simulated ZORC

Real ZORC

Big Presentation

  • ZORC project presentation 13.8 MB
    Held at the Informatiktage 2002 conference in Dortmund. Includes english and german descriptions of the project's steps and most of the movies above.

Sample Program

A hand-written sample in the virtual machine language used by SIGEL, showing how programs control the robot. It simply switches on all servo-motors to keep ZORC in an upright standing position.

LOAD 1,-128
LOAD 0,0
MOVE 1
LOAD 1,-127
LOAD 0,-15
MOVE 1
LOAD 1,-126
LOAD 0,-15
MOVE 1
LOAD 1,-125
LOAD 0,-20
MOVE 1
LOAD 1,-124
LOAD 0,-20
MOVE 1
LOAD 1,-123
LOAD 0,0
MOVE 1
LOAD 1,-122
LOAD 0,0
MOVE 1
LOAD 1,-121
LOAD 0,-15
MOVE 1
LOAD 1,-120
LOAD 0,-15
MOVE 1
LOAD 1,-119
LOAD 0,0
MOVE 1
LOAD 1,-118
LOAD 0,0
MOVE 1
LOAD 1,-117
LOAD 0,45
MOVE 1
LOAD 1,-116
LOAD 0,45
MOVE 1