Introduction: Autonomous, Self-Assembling Robots

Picture of Autonomous, Self-Assembling Robots

How to build your own autonomous, self-assembling robots. This project describes every detail of the robots used in our scientific research including CAD files, source code, assembly instructions, etc. Hopefully everything you would need to reproduce our experiments, or have a fun toy. A portion of the research was published in Nature, a copy of that paper is attached below. Also attached below is an extract from the PhD thesis which contains a summary of all the experiments performed using these robots and details about their construction and specifications. Lastly, videos of several of the experiments are attached. For further information beyond the specifics relating to these robots, go to: http://alumni.media.mit.edu/~saul/PhD

Step 1: Making the Printed Circuit Boards (PCB's)

Picture of Making the Printed Circuit Boards (PCB's)

The PCB's were designed using the Eagle PCB design software (http://www.cadsoft.de). I've attached the Eagle CAD files as well as the Gerber files. The Gerber files are what you can send directly to a PCB fabrication service to get the boards made. I also included panelized gerber files - this version has 16 of the robot pcb's per panel for more cost efficient manufacturing.

Step 2: Electronics Overview

Picture of Electronics Overview

We designed the electronics to be simple and flexible, because we had not finalized the robot design when we started and planned to try a variety of control algorithms, actuators, and communications methods. We also needed the electronics to be small and light. We decided to go with fairly small SMT parts for the final design, and were able to get a microcontroller, 10 status LED's, 4 FET's for driving actuators, and the programming/power header onto the 25mm x 25mm board, plus connection points for 4 actuators and 4 sensors. We tried making the board even smaller, but it became too hard to assemble. Our strategy for simple and flexible worked out - we've since used leftover boards for 3 other, totally unrelated projects.

Step 3: Actuators Overview

Picture of Actuators Overview

The robot has two electromagnetically-actuated latches. The red arm of the latch has a 3mm cube magnet (NdFeB type) press-fit into it, while the yellow base of the robot has a cylindrical coil press-fit into it. The coils were custom-made to the following specifications: 700 turns of 42-guage magnet wire, 4mm length, wound on a 2mm spindle. This resulted in a diameter of approximately 4mm OD, 2mm ID. We selected these coil specifications so that we could drive them directly from the robot power source and have a reasonable amount of power. We originally tried to put a magnetic core in the coil, which makes it much more powerful, but we could not find a core which did not remain magnetized after the coil turned off, and we did not have the capability to reverse the coil polarity (this requires 4 FET's per actuator instead of 1).

Step 4: Communications

Picture of Communications

The robots use inductive coupling for short-range wireless communications. Each robot has 4 small (3mm x 2mm) coils, one on ecah face. They are mounted flush with the face, so that when two robots properly mate on a face, the coils are always within a couple mm of each other. Recall that we are using a simple 8-bit microcontroller with 1K of RAM, maximum analog-to-digital sampling rate of 10khz, and total clock rate of 8Mhz. There is no digital-to-analog circuitry at all. So I doubt that it is possible to transmit or receive AM or FM since the coil's resonant frequency is higher than the A/D sample rate, and there is no way to generate sine waves anyway. Also there is not enough computing power for much FFT. So instead we realized that we had very little data to send, so we could do it very slowly. We simply send electromagnetic pulses by turning on and off the comm coil. Each time the coil is turned on or off, it generates a short EM pulse train at its natural frequency. Any nearby coil is magnetically coupled, and generates corresponding pulses at its output. We just look for those pulses using the A/D on the microcontroller. Since the pulse frequency is higher than the A/D sample rate, we can't count on seeing every pulse. So we send a lot of pulses and do a lot of looking. It works. The Biggest Hack Ever! Once there are a bunch of these robots all bouncing around on the air table, the environment gets pretty chaotic. We kept adding layers of error-detection and correction in the software, and eventually got the comms reliabilty up to perhaps 1 error per hour for 50 randomly colliding units. After all this, the data transfer rate between two robots is 2 bytes every 2 seconds. That's Bytes, not kilo-bytes. Maximum, assuming no data collisions or errors. Each coil is used for both sending and receiving data, so there sometimes is a collision requiring retransmit. Sending data takes about 200ms and is done randomly within a 2000ms window, with retransmit on collision.

Step 5: Microcontroller Code

Picture of Microcontroller Code

i've attached the AVR microcontroller code below. the code implements the following self-assembly algorithms which are shown in the videos:

1) line-forming. a mixed set of yellow and green tiles will assemble into yellow lines and green lines.

2) error-correcting crystal formation: a single 'seed' crystal will grow in a spiral to form a perfect checkerboard of yellow and green tiles

3) infection and reprogramming: tiles initially assemble using the crystal-formation algorithm. then a viral tile is introduced which inserts a new program that propagates through the crystal. the crystal breaks up and the units form lines using the line-forming algorithm

4) DNA replication: a single strand (4-mer, 5-mer, etc) is introduced into a pool of free units. the DNA is exponentially replicated using an error-correcting algorithm with only local state and local message-passing - just like the real thing.

each unit is programmed with the code which contains all algorithms. then, a special 'programming' unit is used which can easily set the active algorithm and active color of each unit.

Step 6: Overview of the Making the Robots

1. fabricate printed circuit boards
2. populate printed circuit boards with components
3. program microcontroller
4. fabricate robot plastic parts
5. assemble robot plastic parts
6. assemble magnetics into robot frame
7. assemble electricals into robot frame
8. test

still need to upload cad files for robots.
related projects: how to make the air hockey table, how to make the battery charger, how to make the test and debug devices

Comments

johnyradio (author)2014-06-15

hi, would love to watch your videos, but they all say "Your Video Is Being Processed! Check Back Soon!"

tinker234 (author)2011-06-01

wow could is hrink them down further and futher just to see them asmebale a complex object

tinker234 (author)2011-05-25

reminds me of replactors now to make them smaller

tzq33tdq (author)2011-02-04

how would i make its communications via infared? would it be possible to minaturise them? using smaller components that is.

Ceaton99 (author)2011-01-11

Is there any way to make these like cubes

tanmanknex (author)2009-02-09

sorry i dont understand, im just getting into electronics and cnc and stuff, but what are all of the different files for?

red-king (author)tanmanknex2009-02-28

most of them are .mov files(videos) they're more than likely just tutorials and other such videos showing you how it works.

dknutson (author)red-king2010-07-15

ermm.... yea... sure they are... yea...

red-king (author)dknutson2010-08-05

???

DeusExMach (author)2008-04-17

at first, I was going to point out that your microcontroller isn't lined up, polarity-wise (the notched corner usually matches the part marking on the pcb/pwb/wtf-ever) Then I noticed ALL the corners are notched. Did you use the writing on the MC to orient your polarity, or does it not matter?

JermsG (author)DeusExMach2009-09-19

I could be mistaken, but it looks like there's a small circular indent in the top left of the m/c, sorta hiding under that wire. Yes it would definitely matter, so if I'm wrong and there's no indent, they must have used the writing to orient it as you suggest.

Gamernotnerd (author)2009-08-01

Do you realize what you have done? You will kill us all!

incorrigible packrat (author)2008-04-17

Silly monkeys! It's all fun and games until Skynet gets us, or Replicators take over. I won't mention "The Matrix" 'cuz that's just stoopid. I mean, come on Wackoffski brothers or whatever you call yourselves, have at least some regard for thermodynamics.

LEAVE KEANU ALONE!!!!! just kidding ;+)

Oh. I was in no way disparaging the acting talent of Mr. Reeves, he just had so little to work with, script-wise, in those films, ha... hah... haah... hahaha HA HA! (sorry, I just couldn't type that with a straight face...)

bennett012 (author)2009-05-14

i wish i knew half of the words you guys were using =\

NTT (author)2009-04-07

This is an exceptionally intriguing project. It has a stark resemblance to biomechanics (amino acid complexing for example). Very good work!

Pumpkin$ (author)NTT2009-05-11

my thought exactly, won't be long until we have cyber-mechanical-bio forms XD

Pumpkin$ (author)2009-05-11

Congrats. You've made one of my dreams come true. I now have two working robotic cupholders that can navigate from bluetooth beacons I built!!! I feel fulfilled.

bowmaster (author)2009-02-23

So you put them on an air hockey table and they fly around hooking on to each other? Why?

mettaurlover (author)bowmaster2009-04-01

A better question: Why not?

bowmaster (author)mettaurlover2009-04-01

That's true.

hellstudios (author)bowmaster2009-04-01

Indeed.

bowmaster (author)hellstudios2009-04-01

They should have spikes.

hellstudios (author)bowmaster2009-04-01

oh my god yes.

bowmaster (author)hellstudios2009-04-01

And lasers.

hellstudios (author)bowmaster2009-04-03

You're Reading My Mind.

bowmaster (author)hellstudios2009-04-05

And a nitro booster.

hellstudios (author)bowmaster2009-04-05

GET OUT OF MY HEAD!

bowmaster (author)hellstudios2009-04-05

But it's cozy. I also don't have to worry about running out of space to put stuff. JK. I might add a Nerf turret on top of one of these.

Fieldownage (author)bowmaster2009-05-09

Why to add a nerf turret if you could add paintball or airsoft gun. Of course it would be a lot bigger but still an idea...

bowmaster (author)Fieldownage2009-05-09

Full-auto shuriken launcher.

wee_man (author)2009-04-26

Two words "Holy Crap". Now make this with larger tiles and make is so they can arrange 3D. Hehe as if 2d cells was enough to scare my ill-techo mum

mettaurlover (author)2009-04-01

hmm... maybe i'll find out how to make a few of these that can't jam communications, like using twice as many comm coils, half for sending and half for recieving...

bobbyk881 (author)2007-05-18

don't forget the 3 laws of robotics!

sockeye101 (author)bobbyk8812007-05-19

forget it, they cant learn

bobbyk881 (author)sockeye1012007-05-19

who

sockeye101 (author)bobbyk8812007-05-20

the robots, they cant take in knowlege and react on it except for accepting or denying another robot.

rvbfan101 (author)sockeye1012009-03-23

:O But then you surely haven't read some of the Foundation series my good friend!

bobbyk881 (author)sockeye1012007-05-21

that true

photozone (author)2008-08-11

Hi! Dan,
I am also using eagle software lite version & I think It is very useful for people like me.
The article is very useful.

http://www.photozonegraphics.com

DrWeird117 (author)2008-07-07

well, they worked but, uh....he spilled the lemonade i asked for...dumbass robot

rainwolvves (author)2008-06-07

inspired by optimus prime, huh?

-Aj- (author)2008-04-18

om nom nom little botties. hmm cool little chaps you got there, and thanks for the instuctable on them. ahh must finish trying to figure out my self constructing ones. is a doosey. at the moment the only thing they try to do is self DEstruct. : \ (well more or less anyway)

freshnessninja (author)2008-04-16

can't wait to go, mit or bust. even if i'm not going to major in robotics, there will be people around showing this stuff off.

Omega192 (author)2008-03-30

see, its amazing things like this that make me want to go to MIT so badly :]. amazing little things, so small, yet are capable of such tasks. and it took me a bit to realize theyre moving around because theyre on an airhockey table :P

bumsugger (author)2008-03-16

Nice,neat well explained Instructable "Dan," up to your usual standard.Congratulations.

perkinsb1024 (author)2008-03-15

I think I love you :D This is incredible! I'd love to get some of those. I may just have to order those circuit boards. Great job!

AzurusNova (author)2008-02-21

Are there any videos around on the net of these in operation?

Gnome (author)2007-09-24

Man, that attached pdf sure is impressive. This instructable is just baffling. Congratulations.

About This Instructable

64,679views

184favorites

License:

Bio: Dan Goldwater is a co-founder of Instructables. Currently he operates MonkeyLectric where he develops revolutionary bike lighting products.
More by dan:Giant Xylophone made from Bed SlatsEasy Mothers Day Fudge (with small child)Mosaic Tile Pixel Art Car
Add instructable to: