left-front-quarter-lower1

BEAM robotics is a way of thinking about and building robots with roots in the “behaviorist” or “actionist” robotics movement of the 1980s. Rather than relying on microprocessors, programming, and digital logic, BEAM designs favor discrete components, stimulus-response control systems, and analog logic. From a design perspective, BEAM robotics is about getting the most complex and interesting behaviors using the simplest circuits, actuators, and components. Therein lies the challenge.

BEAM is an acronym for:

  • Biology — BEAM robots take inspiration from nature, especially “simple” organisms like plants, worms, and insects. They are often classified by their primary sensor system: audiotropes respond to sound, thermotropes respond to heat, radiotropes respond to radio sources, etc. They can be further subdivided by their type of movement or positioning mechanism: sitters, squirmers, jumpers, fliers, rollers, walkers, and so forth.
  • Electronics — BEAM robotics requires clever circuit design. Unlike digital systems where you just have to interconnect all the right pins and make sure their voltages go high and low at the right times, BEAM robots use analog circuits, which are more subtle. Designing digital circuits is more like computer programming, while designing analog circuits is more like plumbing.
  • Aesthetics — BEAM robotics is as much art as science. That a design “look cool” is not always a priority for engineers, but the BEAM approach emphasizes the importance of looks, though not just for their own sake. Rather, polished aesthetics are a test that mature BEAM designs should pass. A good-looking robot has been designed and constructed with close attention to detail. Its form is a refined, efficient, natural, logical reflection of its function. People who see it will recognize its beauty and want to preserve it, so aesthetics becomes a “survival” function, as well.
  • Mechanics — Sometimes a mechanical solution is cheaper, easier, or more robust than an electronic one. For example, rather than complicate a circuit with electronic motor controls, BEAM designs often adopt simple mechanical “hacks” (like steeply tilting the motors or using small-diameter wheels) to regulate motor speed.

The SunBEAM Seeker is a very simple phototrope (meaning it responds to light) based on Randy Sargent’s classic “Herbie” design, which he originally developed for a line-following competition at the Seattle Robotics Society’s 1996 “Robothon” event. Using as few as six components, the “Herbie” circuit produces a robot that will follow a black line traced on a white floor or, with the photosensors pointing upward as in this version, seek out the brightest light source in a room.

We published a more complex version of the Herbie design as Mousey the Junkbot back in MAKE Volume 02. To the basic design, Mousey adds a pushbutton “bump” switch and a relay that temporarily reverses the motors so that, on running into something, the robot will back up for a few moments before it begins steering toward the light again, hopefully clearing whatever obstacle it ran into during the next attempt.

The SunBEAM Seeker borrows the LED “pilot light” and current-limiting resistor from the Mousey design, but uses IR phototransistors instead of diodes. It also adds a roller lever limit switch that serves as a tail-wheel so the bot will automatically turn on when you set it down, and off when you pick it up again (or if it flips over).

How It Works

The core of the “Herbie” circuit is the LM386 power amplifier chip. To simplify a bit, we can think of the chip as a “black box” with inputs and outputs that respond in predictable ways, and don’t have to completely understand what’s going on inside.

SunBEAM Seeker Component Schematic No words

First, on the input side, there are pins 2 and 3. Basically, the chip is constantly comparing the voltages on these two pins, and responding to the difference between them. Since we’ve connected light sensors to pins 2 and 3, the chip is responding to the difference in light levels detected by these two sensors — i.e. the different brightnesses “perceived” by the robot’s right and left “eyes.”

On the output side, there’s pin 5. When you first look at the circuit, you may be confused about how the two motors, which are connected in series between power and ground, can be independently controlled at all. The key is understanding what’s going on between them, at their shared connection with pin 5. In essence, when one eye is “seeing” a brighter light than the other, pin 5 acts as a current source at a voltage very close to the main power supply voltage. In this case, both terminals of motor M1 are at nearly the same potential, and it does not turn; only motor M2, which is connected between pin 5 and ground, is powered. It’s as if you put a jumper wire between pin 5 and Vcc. In the opposite situation, when the other eye is “seeing” the brighter light, pin 5 acts as a current sink, shunting any positive potential straight to the chip’s ground connection at pin 4. In this case, it’s as if you put a jumper between pin 5 and ground; only M1 is powered, and the current that passes through it then “takes the easy way out” and goes straight to ground, through the chip, instead of passing through M2.

right-side-profile

Project Steps

The guts

First, we’ll construct the power system, which consists of 2 battery holders and 2 switches wired in series — a “master” power switch and a “tail dragger” roller switch that cuts the power when the robot is not resting upright.

Remove the threaded “ears” from the ends of the slide switch by bending them back and forth with pliers until the metal fatigues and breaks. File off any sharp edges that remain on the switch body.

Clean the back of one battery pack and the sides of both switches with a paper towel moistened with rubbing alcohol. Cut and apply small sections of double-sided foam tape, as needed, to attach the switches to the battery pack as shown. Center the roller switch along the bottom edge, and put the slide switch in the upper right corner about 1/8″ back from the right end. Cut, strip, and solder the red battery pack lead, as shown, to connect the 2 switches in series.

TIP: The foam tape is white or slightly off-white. Once I’ve got it in place, I like to color the edges black with a permanent marker for looks.

Cut the red lead off the other battery pack right where it connects to the terminal inside the battery holder, as shown. We’re going to solder a wire here to connect the 2 battery packs in series.

The body

Besides corralling the power cells, the battery holders form the structural frame for our robot. Each battery holder contains 2 × 1.5V AA cells (3V together), and they are wired in series to give a total of 6V.

Apply foam tape to the exposed side of the 2 switches, as before. Route the wires as shown in the photo — one red lead goes out the side, and one goes out the top. Thread the black lead into the second battery holder through the opening where the red lead you removed used to come out. Remove the protective film from the foam tape and attach the battery holders back-to-back, with the switches sandwiched between them.

Cut, strip, and solder the black lead to the battery clip terminal where you removed the red lead earlier. This connects the 2 battery holders in series.

CAUTION: Be careful not to overheat the battery holder terminal while soldering, or you may melt it loose from the plastic around it.

Clean the front side of the body with rubbing alcohol, then cut and apply a piece of Superlock fastener tape to fit it.

The legs

Each motor has 2 flat sides. One of them has some vent slits punched in it that should be left open. Clean the side without the vents with rubbing alcohol, then apply 2 small strips of Superlock fastener tape, as shown.

NOTE: Superlock is strong. If you cover the entire surface of the motor with it, you may find later that the adhesive fails before the hook/loop joint does. I recommend a small rectangle at the top and bottom edges on each motor instead.

Use a sharp hobby knife to cut 2 fresh pencil erasers off right at the ferrule. “Stab” one eraser onto each motor shaft to serve as a wheel. Push it all the way up the motor shaft, then pull it back a little to make sure it doesn’t rub the casing. Center the shaft in the eraser carefully or the wheel will wobble.

Attach the motors to the front of the body using the Superlock fasteners as shown. You’ll probably want to experiment with adjusting their angle later, but for now we just want to hold everything in place for soldering.

NOTE: Resist the temptation to adjust the motor positions right away. The Superlock adhesive will form a stronger bond if you wait 24 hours before applying tension.

Attach the front red lead to the outboard terminal on the “starboard” motor. (I didn’t like the exposed red color, so I covered my red lead with a small piece of black heat-shrink tubing, just for aesthetics.)

Attach the black lead to the inboard terminal on the “port” motor. Attach a second black lead, made from leftover battery holder wire, to the same terminal. About 4″ should be plenty. Leave its other end loose for now.

Attach one lead (again, 4″ or more is good) to each of the 2 remaining motor terminals. These will both connect to pin 5, and you may want to indicate them by using some special color. I used a long green breadboard jumper for each one.

NOTE: You can also just interconnect the 2 “shared” motor terminals with a shorter length of wire, and only run one of them to the IC. I found it hard to fit more than one jumper wire through the hole in each motor terminal and opted to run a full, single lead to each. I think it’s better looking, too.

The head

Cover the leads of both IR detectors with heat-shrink tubing except for about 5/16″ (measured on the longer lead) at the ends. Heat the tubing using a heat gun, hair dryer, or butane lighter to shrink it in place. The leads function as maneuverable “eye stalks,” and insulating them above the PCB keeps them from shorting if they get bent or twisted together.

Solder the LM386 chip, the resistor, the LED, the black jumper wire, and the two IR detectors to the PCB as shown. Refer to the photographs, assembly diagram, and circuit schematic to make sure you’ve got all the solder-side connections right.

NOTE: Pins 1 and 8 are directly connected to each other using solder beads on the bottom of the PCB. Shorting pins 1 and 8 this way puts the amplifier chip into “high gain” mode.

NOTE: Pin 7 is not used in this circuit. It is soldered in place for strength, but should not connect to anything else.

It's alive!

Thread the loose wires from the motors into the body in front of the slide switch, then back up out the top immediately behind it. Cut, strip, and solder the wires — power (red), black (ground), and the 2 “shared” motor leads (green) — to connect the PCB as shown.

Apply double-sided adhesive foam tape “ears” on the undersided of the PCB — one to either side of the solder traces — as shown. Cut the tape to match the profile of the PCB and, if you like, color the edges with permanent marker.

Clean the top of the body with rubbing alcohol, then remove the tape backing and press the PCB into place as shown.

Make sure the slide switch is in the rearward “off” position, then install 4 AAA batteries in the holders.

Flip the slide switch forward, find a sunbeam on a smooth floor, and set your completed bot down on it. If everything’s working right, the robot will come alive when the roller switch presses down, and will speed off happily in search of the brightest light in the room.

Care and feeding

The angle of the motors on the front of the body affects the speed and power of the robot’s drive system. A steeper, more vertical angle will drive slower but stronger, while a shallower, more horizontal angle will be faster but weaker.

You can adjust the bot’s stance by bending the roller switch lever arm with a pair of pliers. Be sure to make the bend behind the little button under the lever that actually trips the switch. Bending it down will shift the bot’s weight forward, giving it a more “hunched over” look, while bending it up will shift the weight backward into a more “laid back” stance.

The IR detector “eyes” can be adjusted left, right, up, and/or down to bias the bot’s steering in one direction or the other. A bot that prefers turning one direction or the other can often be corrected by adjusting the eyestalks to compensate.

Conclusion

This handy troubleshooting chart for Herbie-style robots is adapted from David Hrynkiw's and Mark Tilden's outstanding book, Junkbots, Bugbots, and Bots on Wheels (definitely essential reading if you're interested in the subject of BEAM robotics):

If your robot ...

  • ... does nothing: First, disconnect the battery and make sure nothing is getting hot. Then search for an accidental "solder blob" short or other wiring error. If everything is wired correctly, make sure the battery isn't dead—you should measure at least 6V across the 2 packs in series. Finally, check that the switches aren't bad or miswired by testing them with a multimeter.
  • ... spins clockwise in place: The left motor is running backwards. Reverse its connections and try again.
  • ... spins counterclockwise in place: The right motor is running backwards. Reverse its connections and try again.
  • ... runs in clockwise circles: Shine a strong light on the robot while it's running. If there’s no reaction, you have a wiring problem, perhaps on the motor itself or on one of the light sensors. If there is a change, like the circles getting bigger, try bending the right eyestalk further outward.
  • ... runs in counterclockwise circles: Same deal, but on the other side. Shine a strong light on the robot and see if it reacts. If not, look for a wiring error. If so, try bending the left eyestalk further outward.
  • ... runs backwards: Both motors are running in reverse. Swap the connections on both motors and try again.

Going Further

Using larger AA batteries and holders (instead of AAA) will result in a heavier robot (not necessarily a bad thing) with a longer battery life and more room to "backpack" components on top. This could be a good first step toward adding the relay and the other components needed for a Mousey-style "panic" reflex. See Mousey the Junkbot in MAKE Volume 02, Mark Tilden and David Hrynkiw's book, or this project on Instructables for more information.

One of the neat features of the Mousey design is that it uses light-emitting diodes (LEDs) wired in reverse as light sensors. Just as turning an unpowered motor generates electricity at the terminals, shining a light on an LED produces measurable currents across its leads. What's more, LEDs can be used to detect light of particular colors — for instance a blue LED wired in reverse is more responsive to blue light than to other colors. (See Forrest Mims' How to Use LEDs to Detect Light in MAKE Volume 36.) What about adding a "bull" reflex that makes your robot "charge" when it sees the color red? What other color-responsive behaviors can you imagine?

What about other components? Reach into your junk-box and pull something out at random. Do you understand how it works? How can you hack it to add interesting behaviors to your own BEAM robot designs? As always, we'd love to hear about your creations in the comments below!