Let's Make Robots!

DarwinBot lives

This continues my previous experiments with evolutionary code generation. I built the simplest robot imaginable to test out pieces of code. This is 1069-H1 aka "DarwinBot".

It has a Picaxe for a brain, two actuators and two sensors. But most of all, it has a symbiont robot inside. A second robot, with its own brain. The second robot is called the "Arbiter". The Arbiter's function is to judge the "fitness" of DarwinBot's behaviour and report that back to my computer.

So now I finally have a way to evaluate the value of the DNA or programming produced by my genetic algorithm. The feedback loop is closing.

Arbiter can also judge the code produced by YOU! DarwinBot is fully interactive. It's not only hooked up to the Internet via video, but also via a chat channel (IRC). Using a few very simple commands, you can submit a picaxe basic program to be uploaded into DarwinBot.

A so called "IRC-bot" called reception_bot will receive your code and put it in a queue on disk. Each piece of code will be automatically checked and uploaded. You will see live on video what DarwinBot does with your code. It might be nothing, it might be mayhem. That is supposed to be a surprise!

Reception bot "will add your biological and technological distinctiveness to our own." Once your code has been accepted, it is added to the growing gene pool (which sits on my hard drive). The "monkeys" in my computer will use it for all their copying and pasting. The better your DNA fits the situation, the more likely it will be reused for new DNA.

My overall feedback system is not yet complete, unfortunately. I am still writing new scripts to communicate with my arbiter bot. I also want to give the fitness score back to you. And I want to share all the "successful" DNA with everybody, so that you can learn from other people's successes and mistakes. Stay tuned for updates. Here follows a short handbook for DarwinBot programmers as it exists today.

1) Visit DarwinBot's Ustream channel: http://www.ustream.tv/channel/darwinbot
2) Make sure you've got chatting rights in the IRC channel. Say hello to the others there.
(try signing up with Ustream, if you're not allowd to speak)
3) If others are in the channel, observe what they are doing (probably just scratching their heads in frustration and impatience, just like you).
4) In order to submit your code, you must use two commands for reception_bot. Commands start with a semicolon ;

;accept   and    ;end

5) You start your code with ;accept. reception_bot announces "now accepting DNA named "domqe" to be submitted by XYZ ..."
6) Then, paste or type your code. One-liners are easiest. Multi-liners are also welcome.
7) Close your submission with ;end. You will notice "now storing DNA named "domqe" submitted by XYZ ..."
8) Wait for the system to process your DNA and watch what happens.

A few notes:
reception_bot assigns a random five letter name (like domqe) to your code. It will be the identification code for future reference.
Your IRC user name will be stored with the DNA.
It will take a while before your DNA is uploaded. The system is not (yet) capable of informing you what it is doing. Be patient.
Other people may be submitting code at the same time. reception_bot only accepts code from one person at the time.
Do not forget to close with ;end, or reception_bot will wait forever (this will be improved later).
The ustream link is eating up my DSL bandwidth. DarwinBot will not be on-line 24x7.
If you prefer your own IRC client, visit irc://chat1.ustream.tv/darwinbot .
Any questions, requests, suggestions and remarks about this experiment are welcome, here on this page, in the comments.

And finally:
If you like mysteries: try and figure out the wiring of DarwinBot! Report back here on this page. Share your findings. Consider this an on-line puzzle adventure game. Once y'all figured out how the bot is wired, I will have finished the feedback system. Then you can start comparing scores.

reception_bot.pl_.txt4.8 KB

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

WTF? Why I never saw this? Why is it offline?

This is cool, rik, IRC controlled ustream-filmed and all.. Can we get this on air again? I want this on the front page!!

An overseen perl!

You're (again) beating a dead horse! The project died for so many reasons. But the remote control concept of it can be used by anyone.

Who wants to make (another) Live video Robot for the front page? Make it remote controlled please. IRC is just one of many ways. Reactions welcome in this thread or elsewhere.

You have got to stop killing them horses, they where meant to live!

I want to make my chess robot able to be controlled via ustream, but do not know how. Would be awesome to have live chess matches with it and LMR members.

--== YES ==--

http://www.ustream.tv/recorded/7803470 shows last night's harvest. Not too many attempt because I shut down the DarwinBot. So that I could sleep in the next room.

This sounds like a fantastic little experiment and is certainly the most original project I have seen on LMR. Brilliant as usual Rik!

I wish you were on our side of the great video divide, so you could join in. We need a Picaxe guru in the group.

This is shaping up to be a nice prototype for internet enabled bots. Not so much the mechanic, but all the surrounding software. Rumour has it that a certain Chess Bot is following suit...

Just a snippet of last night's log:

[02:39] <TeleFox> ;accept
[02:39] <reception_bot> now accepting DNA named "cenci" to be submitted by TeleFox ...
[02:40] <TeleFox> for b1 = 0 to 9
[02:40] <TeleFox> pins = 85
[02:40] <TeleFox> pause 1000
[02:40] <TeleFox> pins = 170
[02:40] <TeleFox> pause 2000
[02:40] <TeleFox> next b1
[02:40] <TeleFox> pins = 0
[02:40] <TeleFox> ;end
[02:40] <reception_bot> now storing DNA named "cenci" submitted by TeleFox ...
[02:42] <TeleFox> I hope this motor driver is smoke-proof =)
[02:42] <TeleFox> ;accept
[02:42] <reception_bot> now accepting DNA named "cejke" to be submitted by TeleFox ...
[02:42] <TeleFox> pins = 5
[02:42] <TeleFox> pause 1000
[02:43] <TeleFox> pins = 10
[02:43] <TeleFox> pause 3000
[02:43] <TeleFox> pins = 0
[02:43] <TeleFox> ;end
[02:43] <reception_bot> now storing DNA named "cejke" submitted by TeleFox ...
[02:45] <TeleFox> ;accept
[02:45] <reception_bot> now accepting DNA named "kivcu" to be submitted by TeleFox ...
[02:45] <TeleFox> pins = 80
[02:45] <TeleFox> ;end
[02:45] <reception_bot> now storing DNA named "kivcu" submitted by TeleFox ...
[02:46] <TeleFox> aha, the upper nibble controls the motor then
[02:46] <TeleFox> ;accept
[02:46] <reception_bot> now accepting DNA named "keyba" to be submitted by TeleFox ...
[02:46] <TeleFox> pins = 160
[02:46] <TeleFox> ;end
[02:46] <reception_bot> now storing DNA named "keyba" submitted by TeleFox ...
[02:47] <TeleFox> ;accept
[02:47] <reception_bot> now accepting DNA named "danqo" to be submitted by TeleFox ...
[02:47] <TeleFox> pins = 0
[02:47] <TeleFox> ;end
[02:47] <reception_bot> now storing DNA named "danqo" submitted by TeleFox ...
[03:03] <TeleFox> ;accept
[03:03] <reception_bot> now accepting DNA named "peyqe" to be submitted by TeleFox ...
[03:03] <TeleFox> pins = 64
[03:03] <TeleFox> ;end
[03:03] <reception_bot> now storing DNA named "peyqe" submitted by TeleFox ...
[03:04] -TeleFox:#darwinbot- CHANGE TeleFox ;end ;accept
[03:04] <TeleFox> ;accept
[03:04] <reception_bot> now accepting DNA named "kilqi" to be submitted by TeleFox ...
[03:04] <TeleFox> pins = 16
[03:04] <TeleFox> ;end
[03:04] <reception_bot> now storing DNA named "kilqi" submitted by TeleFox ...
[03:05] <TeleFox> ;accept
[03:05] <reception_bot> now accepting DNA named "cinqu" to be submitted by TeleFox ...
[03:05] <TeleFox> pins = 32
[03:05] <TeleFox> ;end
[03:05] <reception_bot> now storing DNA named "cinqu" submitted by TeleFox ...

I can hear the sounds from DarwinBot in my bedroom. Don't expect this thing to work on school nights!

Nailing down the motor control bits was good fun actually, sadly I ran out of time to track down the inputs... although I did make a crude little PWM routine that made the arm go CW, then gradually slow and eventually go CCW.
Maybe tonight I'll get another crack at it =)