The Linkage Computer

This is my final project for 6.849: Geometric Folding Algorithms by Prof. Erik Demaine, the happiest genius of the world.

In fact I prefer to call it ‘the origami class’, which sounds more obscure to my friends. And complex, curving origami was indeed what I expected myself to do at the beginning. Well, the field turned out to be much broader and even more interesting (absolutely an understatement).

Anyway one day we were introduced to Kemp’s Universality Theorem, which says ‘there is a linkage that signs your name’. In proving that Kemp invented 3 gadgets: multiplicator, additor and translator, which perform arithmetic operations on any input angle. Then the idea came to me that if we can design gadgets that perform boolean operations, we can build a computer from just hinged bars.

I always had a thing for mechanical computers. The article that talks about the rope-and-pulley computer by Apraphulians was my all-time favorite of Scientific Americans. This project might be a little nerdy, but who knows — mechanical logic gates do make sense on nanoscale and in extreme environments like outer space.

Here is how I represent bits with bars. Note that each bar is constrained to rotate in half plane so I gain a nice ‘black box’ feature where the implementation of one gadget does not disrupt the rest of the machine.

Here are the logic gates: translator (moving a logic state across space), invertor (X -> not X), AND gate / OR gate (they are mirrored image of each other). Watch the video to see how they work.

Using the above gadgets I will be able to build a full adder (A, B, Cin as input and S, Cout as output). I’ve made a simple simulation with Processing. Click the input bars to switch states:

The models I constructed use wood sticks and rivets. I also proposed another way of building the gadgets — cut and fold them from one piece of flat material. It would be awesome to cut a whole mechanical computer out of one piece of thin metal, roll it and take it with you to a place with no electricity and do some crazy computation.

I’ll be continuing this project during the winter break. Many thanks to Erik & Martin Demaine and Tomohiro Tachi. It’s been so cool!

Tools used: AutoCAD, Processing

17 Replies to “The Linkage Computer”

  1. Can you help us understand by constructing a sentence or situation that illustrates a computation that might apply? Maybe, add images or gravity sliders to the I & O sticks which appear female when upright but male when inverted. Then maybe it could illustrate XX, XY, YY gender outcomes.

  2. Hi Xiaoji

    This is extraordinary work, it made my day. When I was first looking at it a few days ago, I’d swear I saw some videos of them in action on youtube. Did I make that up?

    Please send the happy genius Erik my x+o and please take this further, it’s a great delight.

  3. The blogger mentions “Then the idea came to me that if we can design gadgets that perform boolean operations, we can build a computer from just hinged bars”

    google: antikythera mechanism

    Antikythera mechanism is an ancient mechanical computer designed to calculate astronomical positions.

    interesting connection

  4. I believe that you have a problem with Cin in simulation. When A and B are zero and Cin is one your outputs are one (and Cout should be zero).
    But this is very very fine work and I am simply fascinated!

  5. “I prefer to call it ‘the origami class’, which sounds more obscure to my friends.” … from this I conclude that you like to sound obscure to your friends. I think I like you 😉

    Seriously, this blog is awesome, the mechanical computer work is way cool. Thanks for posting!

  6. There is a mistake in your adder simulation. When (A,B,Cin) = (0,0,1), the output should be (S,Cout) = (1,0), but instead your machine outputs (1,1).

  7. I am attempting a similar project, except I am designing a NAND gate which I will use to make all the other gates. I am also designing a flip-flop so I can build state machines for simple but reliable controllers.

Leave a Reply

Your email address will not be published. Required fields are marked *