Does this project spark your interest?

Become a member to follow this project and don't miss any updates

The Emergence Project

An experiment in group machine intellegence (Or lack thereof...)

Similar projects worth following
This project is submitted for

This project was created on 06/28/2014 and last updated 5 months ago.

The original impulse for this project was to make solar powered BEAM-style robots that would dart from light spot to light spot continually recharging themselves before moving on. As we were contemplating how to do this, we decided the use of a microcontroller was all but inevitable, and we wondered how we could utilize it's capabilities. At this point we began to run into the concept of emergence.

Emergence: In philosophy, systems theory, science, and art, emergence is conceived as a process whereby larger entities, patterns, and regularities arise through interactions among smaller or simpler entities that themselves do not exhibit such properties.

In other words, emergence happens when a group stops being just a collection of individuals, and starts to become a flock, or a hive, or a nest.

Our intention is to build a small swarm of robots and see if emergent behavior arises through their repeated cooperation and interaction with each other.

The idea is to build a number of small (palm sized), simple (using the BEAM 'less is more' philosophy), 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.

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...

Read more »


Project logs
  • Progress! No Kidding!

    5 months ago • 0 comments

    Greetings True Believers! We have actually made some headway!

    Bad news: We had to move to 3v Arduinos. The last thing we wanted to do was order all new microcontrollers, but we did so in the best interests of the project. It's time to get moving for cryin' out loud...

    Good news: We seriously doubt the old controllers will go to waste (we are in a hackerspace, after all). The other upshot is that we weren't sure everything was going to work together at our previous voltage. 5v was on the edge of the electronics' tolerances, and we had our fingers crossed for much of the time. But now, we know that everything is compatable with everything else. Hopefully, this will keep gremlins to a minimum.

    We've also veered a bit with our testing direction. These power problems have convinced us to forgo any further sensor or behavior testing until we get everything else ironed out. So, we decided that the next goal we should attempt to hurdle is to have the 'bots moving on their own (as we've already done) but now on their own solar power. One upshot of this is that with the solar cell added, we can see if everything fits, and get closer to the final size and layout. Since Frankie's brain got scrambled and circuit board fried due to bad soldering, we decided that he would undergo the retrofit first.

    Frankie's now a bit wider and longer than Johnny, to accommodate the solar cell, but only a minimal amount. Our first guess at the bot's size was pretty damn close. Also, we're now using the electronics that were purchased for the final swarm for Frankie's new brain. Johnny's got his own new brain as well, but it will remain in the job tray until his own retrofit. Everything is still breadboards and jumper wires, but the earlier rat's nest has been cleaned up considerably and contained inside the 'bot. The next step will be getting Frankie's obstacle sensors hooked up, then we'll see how long the solar cell takes to charge him, and how well and how long he can move on that power.

    See? Progress!

  • Our Kingdom for a Charge...

    6 months ago • 0 comments

    Well, the battery charging boards have arrived. As much as we hate to admit it, this might have been the way to go from the very beginning. The new boards have more than a few advantages. They are specifically designed to charge Li-Ion batteries from solar cells, and it adds the capability of charging the 'bots via USB. As an added benefit, it also allows you to patch into the status LEDs (ready, charging, low) and use them as digital inputs to the Arduino. In short, we can let the charging board monitor the battery voltage without having to write a separate voltage monitoring script for the Arduino. Any chance we can get away with writing less code to debug, the better.

    There has been another complication, however. The cheap Li-Ion batteries we were going to use are essentially useless. We assembled the first of the boards, plugged in the solar cell, and set it aside to charge. We were alarmed when it claimed to be 'ready' after just a couple minutes. A quick test with a voltage meter confirmed our fears. The batteries had been allowed to go totally and completely flat, which is a death sentence for Li-Ion batteries. They wouldn't take any charge at all.

    This is a major stumbling block. The vast majority of available Li-Ion choices out there are 3.7v. Our choice of components was geared towards 7v. If we dropped the operating voltage we would have to order all new electronics. Another problem with dropping the voltage down was that it limited future versatility. If someone later decides to expand on what we do with the Emergence Project, we would almost guarantee the first thing that will be tried is to bump the processor up to a Raspberry Pi or a BeagleBone Black. Both run on 5v, just like our Arduino. We wanted to make building a Raspberry or BeagleBone based 'bot (or upgrading older, existing 'bots) as easy as swapping out the processor without changing any of the other components.

    However, the is a ray of hope. After a quick look on eBay, it seems that comparable new batteries of the type we wanted to use aren't hideously expensive. It does mean going even further over budget (from $3 per battery to $10-15) but at this point, it seems the way to go. Sheesh... More money. What next?

  • We're Back! (Again)

    6 months ago • 0 comments

    Greetings True Believers! We're back! Again! I'd like to thank all of you that have kept the faith, and also welcome the newcomers.


    All right, here's the latest: the Emergence Project lost momentum for a while, but we're back up and running again. The last week has been spent trying various solar cell / battery / charging circuit combinations, attempting to hit the bots' butter zone for power use vs. charge rate, as well the components that would be needed. This process has proved to be incredibly irritating. So, seeing as how the credit cards are finally clear of the holiday purchases, it was decided to cut through the Gordian Knot and just order a battery charging board.

    The board is specifically made for use with solar cells, and will also allow us to move to lithium ion batteries as opposed to NiCads. As an added benefit, we found some very cheap lithium batteries, originally made for use with Canon camcorders.

    The power system is the last of our major technical hurdles. While the charging boards have officially put us over budget, we've decided that just biting the financial bullet is the best thing to do for the project. At some later date we may come back to revisit the issue and drop the price per bot back down, but right now, it's time to put our collective heads down and power forward. The vast majority of our parts are in and ready to go, so once we get this issue nailed down, we should start rolling downhill fairly quickly. Hopefully.

View all 20 project logs


Adam Fabio wrote a year ago point
Great project Greg! I miss those old BEAM bots. Thanks for entering your robot in The Hackaday Prize. Keep the updates coming! can't wait to see when you have the solar system working!

Are you sure? yes | no

Greg Daneau wrote a year ago point
Thanks for your vote of confidence Adam! I believe I may have bitten off a bit more than I can chew, but I've already taken the leap. I'll be sure to keep the updates coming, I'm sure there will be plenty of entertaining misadventures to come!

Are you sure? yes | no

Similar projects