Dance Robosapien Dance!
Note: if you want to ask questions or discuss this Robosapien software project, come visit our forum.
The Robosapien robot toy is already turning out to be a hardware hackers dream. The number of modifications appearing on the net is growing rapidly, everything from adding a volume control, adding a RF (radio frequency) link, a camera, and more.
However my current project is to make the Robosapien learn to dance on itís own. Thanks to a device created by Jon Rhees called the UIRT, which is a PC programmable infrared transceiver, I can use my Windows PC to control my Robosapien robot. To test the UIRT and I recommend using an inexpensive product called Girder.
This page will be updated as the project progresses, but here is the gist of it. Note: Genetic Algorithms will be referred to as GA and Genetic Programming will be referred to as GP. A dancelet is a short series of dance moves that are part of a larger dance.
Now that I have all of the infrared command codes that control the Robosapien loaded onto my PC, I can use techniques borrowed from Genetic Programming to get the Robosapien to dance. (Here is an excellent Genetic Programming Tutorial which you should read if you are not familiar with Genetic Programming. If you want to delve further and would like to understand Genetic Algorithms first which predate Genetic Programming, this page has an excellent set of Genetic Algorithm tutorials.)
Genetic Programming is similar but is not the same as Genetic Algorithms. The important difference is the use of S-trees. By using a tree structure (GP) as opposed to a linear list of genes (GA), it is easier to keep dance moves that are interesting grouped together during the crossover operation when new offspring are created. With GA, the crossover operation could easily tear apart an interesting dancelet. With GP, the dancelet can be passed on to other offspring intact.
I create an initial population of dances by randomly building trees of dance moves to create the initial population. Each node in the tree contains a single Robosapien command, which acts as a dance move. In addition, I added a pseudo-command called the wait command. It causes playing of the dance to halt temporarily, for an arbitrary number of milliseconds.
Coming next: The details on evolving the Robosapien dances.