Thursday, February 22, 2007

Virtual Bot vs Lego Bot

I've always wanted to create a sentient Lego robot. For a long time now I have had plans to try create a large computer bank running some kind of AI/learning program that wirelessly transmits with a Lego robot. The new NXT system from Lego and the open standards they've implemented definitely makes this a possible reality.

Things this robot should one day implement, among other things are, a visual processing system, feedback from sensors on the body, and should be able to fire various motor skills. The body sensors should mostly include sensors to indicate touch and feel (sensing bodily harm).

Now as of last week I just became a dedicated WoW player. Besides the mixed responses you may give about the game or greater culture of it, listen to the idea. What about bridging the control of a WoW character to an AI program as I wanted to link to my Lego robot?.. Now I have heard of 'botting' programs that are already (although illegally) available to gamers that allow them to put their character on 'auto-pilot'. Thus they can level their character without going through the painstaking chore of culling 1000's of creatures.

So whats the difference? I don't want to create a program for someones levelling convenience, I want to create a sentient program that lives inside the game. The AI program would live and believe it exists inside of another world. It wouldn't just run ten spells by sequence to gain a level - It will think it is fulfilling its purpose. It wont run from a higher levelling creature because its programmed to - It will run for its very life. The robot will live and learn within the rules and boundaries of the game. There is definitely a certain philosophical aspect to be taken into account to understand where I'm going with the idea. Kinda reminiscent of the Matrix. Human players being human and this robot being,.. I dunno a virus or independent program...

Now implementing this thought experiment would most definitely breach Blizzards ToS (See 14.a). I do understand that Blizzard would not want unmanned characters destroying everything in the game world as this would ruin the game play for the human players. So don't worry Blizzard I'm not going to do it. I wouldn't know how anyway,.. my experience goes as far as Lego I'm afraid.

Distributed Processing System

So - if I want to build an AI program that can respond in real-time and act really clever and learn and things like that, then I reckon I'm gonna need a really powerfull PC and some darned well honed programming skills. Well I'd like to think I have both but in reality those can both be put to question....

I pretty much know I'll never get my hands on an uber super PC or server - yeh, money doesnt grow on trees in South Africa either.. So I've started wrapping my mind around building a massively distributed and parallel processing system. In the end these prove to be more powerfull in terms FLOPS they can process per time anyhow. But the challenge to myself is to build one that can receive input, process it, and return output all in real-time.

A list of existing projects similar to this and their purposes can be found here -

My Incredible Full Adder

It has been a long time quest of mine to build a mechanical Von Neumann machine. Lego is a particuarly interesting platform to try this on. Recently my sister reminded me of a game I used to play back in the day when the world was a lot bigger,.. The Incredible Machine (TIM). Classic game in it's time (in my opinion), and still fun to create the odd Rube Goldberg machine.

After finding the game and reacquanting myself with the devices and physics, I set out to create something usefull (this is relative..) I set off with designing some logical gates. The AND, OR, and NOT gates were a breeze, but the XOR gate was more of a challenge. Size is critical here.. It's not an option to build an XOR out of OR's and AND's.

Heres a picture of my AND gate.
The link between the gates was a red laser. Red laser on = 1, Red laser off = 0.

Here's the links to all my gates: AND, OR, XOR, and NOT.

Now the only logical thing (excuse the pun) to do when you've built these gates is construct a full adder. Here it is.

The fullsize image can be downloaded here.