I n t r o

This is a attemp to build up a robot form scratch. Planed is a six legged robot with 18 servos, each leg has tree servos and a own control.

The project is hosted on

SourceForge.net Logo


P h i l o s o p h i e

This project follows the UNIX Way:

  • A module, programm, command, procedure and/or a function does ONE thing, but this it does as good as ever possible.
  • You can do complicated things by gluing simple things together.
  • Configuration is done via text files that you can edit without complicated tools.

  • R e q u i r e m e n t s

  • A unix like system (cygwin, linux, os x, ...)
  • wx windows for gtk version 2.4 with opengl support

  • F i r s t   R e s u l t s

    download the project direct from the CVS with

    cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/alita login

    cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/alita co alita

    cd alita/utils

    make clean all

    open three shells sh1, sh2, sh3

    sh1> leg -f ../data/frontleft.cal | multi -s -a127.0.0.1 -p5000 -n1

    sh2> leg -f ../data/frontright.cal | multi -s -a127.0.0.1 -p5000 -n1 -e

    sh3> multi -r -p5000 | servo -s /dev/ttyS0

    Now a stream of values could be send via keyboard or via pipe to the legs processes to move the legs. The command take the first value for the first specified servo the next value for the second specified servo an so on.

    The command servo works for mini SSC II only

    Instead of the command servo you also could run the simulation 3dModel in 3d folder:

    sh> leg -f ../data/frontright.cal | 3dModel


    W e   A r e   W o r k i n g   O n

  • In circuit programmer for Microchip PIC, with a embedded test
  • 3D simulator, to make it possible for others to join easily this project
  • Multiplexer/demultiplexer, send one command line to multiple process and to serialize command lines from mulitple processes to one process, unidirektional (like a unix pipe).
  • Mathematical model. First a forward kinematic model and then try to solve the equitation (which will have two solution with only one reasonable solution).

  • N e x t   S t e p s

  • Build up a own hardware with a PIC to controll/view the servos of a single leg over serial line (like the mini SSC II)
  • Calbrator to store the calibration points
  • Controller to tell the robot what to do (walk, stop, level, ...)
  • Stepper with 4 inputs and 3 outputs to feed the leg command with possitions depending on phase (a, ia), level (l) and radius (r). To speed up we do this stepper with a elman neuronal network, because direkt calculation would be very time expensive.
  • Build up a mathematical model to calculate a set of learn patterns. (Are there any mathematical freaks, which could like to do this? a povray script is available if this would help)
  • Input devices for the controller (i.e. a joystick).
  • Then we should be able to calibrate a leg with the following script

    joystick | ctrl -c | servo /dev/ttyS0

    After this we are able to let the machine walk with the following script

    joystick | ctrl -w /dev/ttyS0 | multi -s -a127.0.0.1 -p5000 -n6;
    multi -r -p6000 | servo /dev/ttyS0;
    for i in `seq 1 6`
    do
    multi -r -p500$i | step | leg -f leg$i.cal | multi -s -a127.0.0.1 -p6000 -n1
    done

    We have 6 command chains for the legs, one control chain to feed the leg chains and one output chain to move the servos of all legs. The control it self gets the feedback of the servos from the same serial line. The mulitplexor/demultiplexor is needed to split the control output to all leg command chains and to serialize the output of these chains to the servo command. All commands should be configurable as much as possible to use them for other projects too (great dream).


    M a t h e m a t i c s

    We need a mathematical model of a feet. I have now some first results I want to make public [ia97lies]:

  • Transformation from the a-koordinate system to b-koordinate system over a k-koordinate system.

    First rotation (phi) is over the z(a) axis (i.e. phi = -85 degrees, for the front left leg). Seconde rotation (psi) is over the y(k) axis (allways psi = -45 degrees).

    phi [degrees]psi [degrees]
    front right leg85-45
    front left leg-85-45
    middle right leg100-45
    middle left leg-100-45
    back right leg115-45
    back left leg-115-45



    A vector in the a-koordinate system can be calculated with the vector in the b-koordnate system as follow:




    The otherway around can be done as follow:




  • Forward kinematic. There are two solutions to reach a point in space with the leg, but only one solutions is reasonable.

    l1 is the shortest distance between alpha axis and the beta axis, l2 is the shortest distance between beta axist and the gamma axis and l3 is the shortes distance between gamma axis and the foot end point.

  • P r o j e c t   H e l p

    If you are handy with linux, mathematics, neuronal networks, electronics, construction, programming, documentation or even with HTML you are welcome to help.

    mail to ia97lies at users.sourceforge.net


    G a l l e r y

    3D Real Plans Movies