Emergence
Concept
In philosophy, systems theory, science, and art, emergence is the way complex systems and patterns arise out of a multiplicity of relatively simple interactions. Emergence is central to the theories of integrative levels and of complex systems.
The idea is to build a number of small (palm sized) and relatively inexpensive ($50 is the target) robots, and give them the basic abilities to communicate with each other and adapt to their environment. The idea is to see what kind of complex social behavior we can coax out of a multiple of relatively simple machines, and hopefully be surprised by something we didn't explicitly program them to do.
Directions and Plans
The 'bots are eventually going to be solar powered. They will sit collecting energy until they have enough to run through a movement or communications cycle. When they decide to move (the target is to have them move for 15-20 seconds every 15-20 minutes) they will wander randomly for the first half the cycle to ensure that they spread and explore. During the second half, they will realize that they're 'hungry' and will use light detection to head for the brightest area they can see, bettering their chances of recharging quickly.
A few of the settings (ones for, say, motor speed or level of contrast it looks for when seeking light) will be left for them to decide for themselves. When they sit out a cycle and go into a communications phase, they'll use IR LEDs to broadcast their efficiency level, and what their settings currently are. All the other 'bots in the immediate area will compare their own efficiency to the one broadcast, and nudge their own settings closer to the broadcasting 'bot's, or ignore them if they're doing better. Eventually, this yes/no better/worse behavior should help each other find the best settings for whatever environment that they're placed in.
To ensure that the 'bots go through the full range of their settings, random mutations will be introduced into their settings. Mutations that prove beneficial will spread through the swarm. The ones that don't will disappear within a few hours or days depending on how often they interact with their hivemates. This presented us with the first behavioral question we ran into before we'd even begun: Can the 'bots even exist individually? We didn't explicitly set out to design this behavioral aspect in, but a single 'bot might not be able to. It will still generate random mutations in it's code, but without at least one companion to compare it's efficiency with, it might get itself so far out of whack that the amount of power from sunlight it gathers during the day won't be sufficient for it to survive the night.
As for how the rest of the 'bots will spend the night, some members of the swarm may find themselves in a slightly better position than the rest. It may find it's way to a light that's been left on, or a bright spot beneath a window from a streetlight outside. If it manages to find one of these 'it's better than nothing' sources, it will remain in place and turn it's IR LED fully 'on'. This acts as a beacon for the rest of the members, who use the exact same light seeking script that they use to find sunlight during the day, except the brightest light it sees and steers towards is it's hivemate, and not the sun.
Once we get the 'bots built and programmed, we will wait and see how they act. Will they run about randomly during the day, or will they migrate from one side of the room to another following the sun's arc? Will they tend to roam alone, or will they travel in a pack? What happens when they reach a homeostasis with the environment we put them in? Will 'bots who have the same settings act exactly alike, or will individual traits arise? Will 'bots that live upstairs in the electronics area settle on the same settings as 'bots that live in the workshop, that gets no natural light at all? What happens if we introduce code that causes not just mutations in their settings, but also the code that they use to communicate with each other? We might wind up with two seperate subspecies that can't even communicate with each other. What happens if you mix them? Will one act as an invasive species, changing the settings of the natives, or will it's lack of ability to communicate doom it before it can learn the language of it's new hive? There's lots of questions to be answered...
So far two of the prototypes have been built (known as Frankie and Johnny) and are currently being put through their paces. A third prototype is also being constructed at this time.
Here is a 3D visualization:https://wiki.pumpingstationone.org/File:E.01.jpg
Here are two of the prototypes:https://wiki.pumpingstationone.org/File:Get-attachment2.jpg
Bill of Materials
From Solarbotics.com:
Processor: Ardweeny processor and FTDI adapter 1 @ $24.90 [1]
Motor driver board: 1 @ $8.95 [2]
Motor and wheel package: 2 @ $7.98 [3] Select motor GM9, wheel color preference
From Jameco.com:
Switches (for edge and obstacle sensing) 4 @ $1.75 [4]
The rest of the parts were bought locally from American Science and Surplus and Radio shack:
Small breadboard: 1 @ about $5 Radio Shack*
Spade connectors 22 gauge: about $3 Radio Shack*
5v voltage regulator: 1 @ about $3 Radio Shack*
4AA battery holder: 1 @ $1.25 Am Sci & Surp*
Switch: 1 @ $1 Am Sci and Surp*
Airline salt shaker (used as caster) 1 @ $.75 Am Sci and Surp*
10K Ohm resistors: 4 @ a few bucks for a handful*
Assorted jumper wires (mine came from an Arduino starter pack)
Welding wire scrounged from shop (for antennae)
Acrylic sheet for body*
Useful Links
This is the Github repository for the code we have so far. It is coded in Wiring, and we only have edge detection and obstacle avoidance at the moment. This needs a lot of work; all programmers welcome! The Github also contains Greg's email updates and other updates on the status of the project.
This project will be a PS1 entry for the 2014 Hackaday Prize project. [6]
We are indeed entered! Click on the link to vote for the greater glory of PS1!