The Golem Project

Automatic Design and Manufacture of Robotic Lifeforms
Hod Lipson and Jordan B. Pollack

Right now we have over 15,000 clients and over 900 active servers worldwide. The servers are screensavers themslves, so they are not always active. If you havent done so already, please join our mailing list.

Frequently Asked Questions (FAQ) for Golem@Home and LiveTruss:

  • Is this project like SETI@Home?
  • When do creatures migrate?
  • What is the status and history of this project?
  • Are there security/privacy issues?
  • Is there going to be a Linux/Mac/Other version?
  • I'm working behind a Firewall/Proxy and my Golem can't connect to the main server.
  • Can I get the source code for this software?
  • When/how should I e-mail you a creature?
  • I am getting "Server connected but connection refused". What does this mean?
  • LiveTurss slows down any other program I'm using.
  • Can I run Golem@Home not as a a screen saver?
  • In what language is this project written?
  • The program complains it can't find OpenGL32.dll / Wininet32.dll
  • The program complains it can't find InternetAutoDial or other entry point.
  • What do the colors mean?
  • What about other environments, like sand, mud, water? Sensors? What about food and energy? Robots fighting and competing? What features are you planning to add?
  • What is the difference between ".evo" and ".ltf" files?
  • What communication ports is Golem using?
  • The program crashed when...
  • Is there a page with statistics, groups, cpu usages, or a hall of fame?
  • How can I get a physical instance of my creature?
  • I want to generate my own landscape.
  • I can't find the help file
  • In LiveTruss, how can I quit and afterwards continue evolving the same population?
  • My computer crashed while running LiveTruss. Is all the evolution data lost?
  • How can I track the evolutionary process?
  • Is there an uninstall program?
  • What is considered a good fitness?
  • How long should it take to evolve something interesting?
  • I've been running Golem for some time but it does not seem to be making any progress. All I can see are bars with fitness zero.
  • My computer has dual CPU. Does the program make use of it?
  • When LiveTruss is evolving, I see nothing much on the screen.
  • How can I make pictures and movies of robots I evolved?
  • Is there a mailing list?

  • Is this project like SETI@Home?

    The Golem@Home project is similar to Berkeley's SETI@Home (search for extra-terrestrial life) in that it harnesses idle CPU across the Internet to perform massively distributed computation using screen savers. In an interesting way, both projects are searching for other forms of life - one in outer space and the other in the virtual world ("Artificial Life").

    But the two projects differ in architecture: While SETI has a centralized server that distributes raw data to clients and collects processed data, the Golem project is decentralized. It models isolated pools of evolution with sparse interaction. Once you start running the screen-saver, it needs no data - its starts from scratch. It will contact the main Golem server only to get a few IP addresses of other screensaver, and then will communicate with them directly and sparsely (say, once in a week or two) to allow single creatures to migrate. It will gradually learn about other servers available and determine which of them are close and reliable. So it is not important if your Golem screensaver cannot establish contact right away, or even if it rarely is online. It only needs occasional access, and will hardly ever contact the central Golem server after the first time.

    The central Golem server does not collect results. We rely on the fact that 'good' creatures will survive long enough that they will eventually reach us by migration. But still, if you notice an exceptionally interesting creature, we ask that you let us know.

    When do creatures migrate?

    Once in a while (say, once in one or two weeks), the computer will randomly select 1-3 creatures out of its population and migrate them to another screensaver with which it has established connections. Any creature out of the current population might be selected. The migrating creatures will leave copies of themselves on the source machine, and will replace randomly chosen individuals on the target machines. You cannot influence this migration process, but it will not occur if either the source or target populations are very young (less than 72 CPU hours old).

    What is the status and history of this project?

    The Golem@Home project is new (started in the summer of 2000), and still under development. We are working to improve the process, make it more reliable, solve bugs, and address the incoming flux of feature wish lists. In particular, we're trying to understand the dynamics of the computation. Please bear with us and check for new revisions.

    Right now we have over 15,000 clients and over 900 active servers worldwide. The servers are screensavers themslves, so they are not always active.

    Are there security/privacy issues?

    We tried very hard to maintain security and privacy. Here are the key points:

    Is there going to be a Linux/Mac/Other version?

    We are not currently developing for alternative platforms, but we might consider this as the project expands.

    I'm working behind a Firewall/Proxy and my Golem can't connect to the main server.

    We are working on a solution for proxies and firewalls. But as mentioned above, it is not immediately critical that your screensaver is able to communicate with the central server or anybody else around the world. You might want to use the advanced settings to key in IP addresses of some other Golems on your local area network, so that they can join forces. When we release a proxy/firewall version, then your creatures will also be able to migrate out to the world.

    Can I get the source code for this software?

    We are not currently releasing source code for this project; we might consider doing so only for research collaboration with other academic institutes.

    When/how should I e-mail you a creature?

    E-mail us a creature when it is interesting: This can be either that it has a particularly high fitness (say, above 1.0, and you haven't sent anything like it before), or when it locomotes in an interesting way, for example if it lifts itself off the ground as in bipedal or quadrapedal locomotion. Don't send us those that look like they're moving "illegally" (e.g. sliding on the floor). When you find one, flip through the population and use "Save Individual" to generate an "ltf" file, and e-mail that to us as an attachment. In the body of the e-mail, briefly state the fitness and a description of how it moves.

    I am getting "Server connected but connection refused". What does this mean?

    It might be that there is a lot of web traffic, that there is some proxy/firewall problem or some other bug. As mentioned above, it is not immediately critical that you establish contact. Golem will automatically try again later, but check out for new revisions anyway.

    LiveTurss slows down any other program I'm using.

    LiveTruss, the standalone version of the Golem, is not intended to run "in the background". You might use it to examine populations evolved by the screensaver, or just to replicate results we showed in the paper.

    Can I run Golem@Home not as a a screen saver?

    Golem is only intended for use as a screen saver. We do not yet have a version that runs "in the background". We might develop one later.

    In what language is this project written?

    This project is written in Visual C++ for Windows. It uses OpenGL for the graphics and Winsock for communications.

    The program complains it can't find OpenGL32.dll / Wininet32.dll

    Try downloading these libraries from Microsoft.com. Best to just to do a "Windows Update" from http://windowsupdate.microsoft.com/. You might also need to update your SHLWAPI.DLL, but windows update should take care of all of that. If you are runing Win95/OSR1, you can get the OpenGL file for that version from Microsoft, at
    ftp://ftp.microsoft.com/Softlib/MSLFILES/Opengl95.exe

    The program complains it can't find InternetAutoDial or other entry point.

    Try downloading an updated version of Wininet32.dll for your operating system. Best to just to do a "Windows Update" from http://windowsupdate.microsoft.com/. You might also need to update your SHLWAPI.DLL, but windows update should take care of all of that.

    What do the colors mean?

    The color have no functionality, but they are inherited from parent to child. So if two creatures have similar body parts with similar colors, it is likely they are descendants of a common ancestor - the more similar they look, the more recent that ancestor.

    What about other environments, like sand, mud, water? Sensors? What about food and energy? Robots fighting and competing? What features are you planning to add?

    Generally, we will add more complexity to the substrate and environment. But we want to keep things simple so that we might understand why and how things happen. In particular, we are working on interaction between robots because we believe that is key in obtaining complexity.

    What is the difference between ".evo" and ".ltf" files?

    An individual creature is stored in an ".ltf" file (stand fore Life Truss File). An entire population of robots are stored in an ".evo" file. You can load a population through the population/load command.

    What communication ports is Golem using?

    Golem uses ports 23049 and 23051.

    The program crashed when...

    Check for new releases that might contain fixes. Also, you might try installing on another machine just to make sure its not some particular feature of your computer. Explain details and circumstances; in particular, under what circumstances can you repeat the crash? We have seen some problems with particular hardware configuration or locally adapted windows versions.

    Is there a page with statistics, groups, CPU usages, or a hall of fame?

    There is no such page yet, but once it picks up we will make one to provide daily updates.

    How can I get a physical instance of my creature?

    The current version does not generate physical machines. If you want one, you can send us the file and we might generate the STL file for you. If you have a rapid-prototyping machines, you can use the STL file to print your own robots. You can also download the STL file for some of the exiting robots. If you don't have your own 3D printer, and you are very rich, you might ask a rapid prototyping service bureau to print the STL file for you (~$1500). In any case, you will have to decide if you want a static machine, a machine that has the degrees of freedom but no actuators, or one with accommodations for real actuators.

    I want to generate my own landscape.

    You can generate your own landscape by generating a binary STL file containing the tessellation of the terrain. To generate an STL file, use any CAD package, or generate the file directly according to the format specifications. Then, import the STL file as the landscape. Alternatively, you can generate a terrain by importing an image (then the height of the terrain will be proportionate to the intensity of the image), or import a text file where each line contains three points (nine coordinates) of a triangular facet of the mesh.

    I can't find the help file.

    There is no help file yet, but check for updates soon, and read through this faq.

    In LiveTruss, how can I quit and afterwards continue evolving the same population?

    You need to save the population using population/save. This creates an "evo" file. Next time, load the population using population/load, and select "continue evolving".

    My computer crashed while running LiveTruss. Is all the evolution data lost?

    No, LiveTruss creates checkpoint files according to the date, every half hour or so. You can load that checkpoint file (they come in pairs; chose the most recent one).

    How can I track the evolutionary process?

    You can use LiveTruss to load the ".evo" file, then select commands under evolve/population or evolve/history to get some idea of what went on.

    Is there an uninstall program?

    Yes, look under start/settings/control-pannel/add-remove-programs, and select "Golem".

    What is considered a good fitness?

    A good fitness is around 1.0 or higher.

    How long should it take to evolve something interesting?

    Anything between a few hours to a few days. Depends on speed of your processors and luck.

    I've been running Golem for some time but it does not seem to be making any progress. All I can see are bars with fitness zero.

    Be patient, or try resetting the population. That helps sometimes.

    My computer has dual CPU. Does the program make use of it?

    LiveTrus does make use of multiple processors, but the current version of Golem does not.

    When LiveTruss is evolving, I see nothing much on the screen.

    LiveTruss does not waste CPU on animation, but Golem does. To view the creatures, stop the evolution and flip through the population.

    How can I make pictures and movies of robots I evolve?

    For an image, orient the creature so that it looks nice on the screen. Use view/snapshot to copy the picture to the clipboard, and you can then paste it into any other program like MS-Word or Adobe Photoshop.

    To make a movie, resize the window until it is small (or else your video file will be huge). Orient the creature so that it looks nice on the screen. Simulate it once (ctrl-s) to see how it moves. Then seect view/start-recording and select some format that has compression (like Cinepack by Radius). Now press ctrl-s to simulate again. Every frame is recorded, and a beep made, so things might be a bit slow. You can zoom in or out or change the viewpoint while the movie is being recorded. You can halt the simulation early by pressing Escape. When you are done, select "Stop Recording". The video will be called "LiveTruss.avi".

    If you post the image or movie on the web or publish it anywhere, please acknowledge our project and give a link to it.

    Is there a mailing list?

    Yes, if you havent done so already, please join our mailing list.

     


    Copyright (c) 2000
    Lipson & Pollack

     Comments?
    lipson@cs.brandeis.edu

    Updated