Rod Logic for Mechanical Computer

Inspired largely by Chris Fenton’s Turbo Entabulator, and to some degree by Charles Babbage’s legacy, I started work on a rod computer.

The rod logic uses a completely different mechanism from the difference engine and the Turbo Entabulator.  Many people have constructed basic rod logic gates from Legos or other mechanical contrivances, but most of what I can find on Google is just single gates or an assembly of a relatively small number of gates.  I did find one very admirable effort by Robert Baruch at designing and building a larger scale system with many rods.

Also worth mentioning as prior art is a paper by Ralph C. Merkle that discusses rod logic with the goal of developing a MEMS device that might one day achieve higher density and efficiency than today’s electronic computers.

To get things started, I constructed a proof-of-concept prototype to test the feasibility with moderately sized pieces.  I also wanted to test a particular method for resetting the rods.

Merkle’s design focuses on a mechanism where the rods are reset by running the entire mechanism in reverse, which is important for minimizing energy dissipation.  I had wanted something more akin to regular gates, where information only propagates forward through the network and can feed back into itself.

Within my design I call the input and sensing elements ‘flags’ and ‘pins’ respectively.  If the extended position is considered ‘true’ and the blocked position is considered ‘false’, then each rod computes a NOR function of the perpendicular rods above and below.  Depending on the location of the flag, each input rod may block an output rod in either position, or both (not that useful) or neither.  The output is then true only when none of the input flags block the pins.

The problem with resetting occurs if a flag does not block a pin and the pin moves past the flag.  Then if the flag subsequently blocks the pin while the pin is still extended, the pin is stuck on the far side of the flag.  This prevents the rod from computing anything until the sequence is reversed in order to get the pin out from behind the flag.  With a large number of interacting rods this could be a difficult puzzle all by itself.

To accommodate the resetting and feedback, all rods have three positions instead of two.  Two of the positions correspond to the logical ‘true’ and ‘false’, and the third position is a ‘reset’ position where there are no flags to impede the movement of orthogonal rods.  In the diagram below the blue rods show the three positions.  The dark blue rectangles symbolize where the flags would be and the small orange squares represent the pins.  The left and middle blue rods represent a binary 1 and 0, and the blue rod on the right represents the reset position where the orange rod is not blocked.

Three Positions

Each rod has a forward direction, where pushing the rod will, through one or more pins, detect the presence or absence of flags.  The backward direction moves the rod to the reset position which deactivates any flags and will always allow the dependent rods to move.  This turns out to work nicely with four phases that are pushed in sequence.  The diagram below shows an arrangement with rods oriented north (blue), west (orange), south (green), and east (yellow).
Four PhasesHere at the blue/orange intersections, the blue rods can have flags and the orange rods have pins, such that the blue rods are input for the orange rods.  The orange rods are then input to the green rods, meaning that at the orange/green intersections, the orange rods have flags and the green rods have pins.  Likewise the green rods are input for yellow and yellow are input for blue.This arrangement is especially nice when it comes to resetting the rods.  If blue and green rods are pushed north together, the blue rods will compute based on the position of the yellow rods, and the green rods will reset, since they are pushed backwards.  Then if the orange and yellow rods are both pushed west, the orange rods will compute based on the position of the blue rods and the yellow rods will reset.  Since the green rods are reset, there will be no green flags to prevent the resetting of the yellow rods.  The problem of pins being stuck past the flags can’t occur because of the sequence of resetting: all the inputs (flags) are reset just prior to resetting the outputs (pins) that depend on them.Here is a demonstration of the cycle with one rod in each direction:

In this instance, the blue/orange (north to west) intersection replicates the value, meaning if the north rod is extended, then it does not block the west rod, and if the north rod is blocked, then it also blocks the west rod.

Three of the intersections are of this propagating type, and one intersection, the east to north intersection, is inverted.  So if the east rod is extended, it blocks the north rod, and if the east rod is blocked, then it does not block the north rod.

Later we’ll have to see how well this scales to dozens of gates or more…

So I Bought a 3D Printer

Yes, I had been working toward building my own RepRap style 3D printer / CNC mill.  Got the XYZ working, steppers, stepper drivers, and Arduino for control.  Got the Marlin firmware and pronterface host-side connected and working too.

The extruder was a bit of a challenge, though I did get part of the way there.  I had an aluminum heating block and thermistor and I had milled my own nozzle, but setting up a fourth stepper motor with gears or something similar was a bit daunting.  If only I could print some of the necessary pieces…

So I broke down and bought a PrintrBot Metal Simple.  I ordered the kit, not so much because it was cheaper, but so that I could have the experience of putting it together and I would get a good familiarity with all the pieces and how they work.

Unfortunately it has pretty well derailed my efforts at getting my home-built one working, because since I have a working one, I no longer need my RepRap.  I am not sure if this is good or bad — I think it is ultimately good because I can shift focus to more robotics and more original concepts, rather than spending energy on building yet another 3D printer.  The 3D printer problem is pretty much solved and with everyone jumping on the bandwagon, the 3D printer space is getting a bit crowded anyway.

The 12-foot walking rideable robot world is still wide open, with only a few exceptions.  Most are hexapods and there are no true bipeds that I know of.