Robot Arm is a Fast Learner

Not long ago, machines grew their skills when programmers put their noses to the grindstone and mercilessly attacked those 104 keys. Machine learning is turning some of that around by replacing the typing with humans demonstrating the actions they want the robot to perform. Suddenly, a factory line-worker can be a robot trainer. This is not new, but a robot needs thousands of examples before it is ready to make an attempt. A new paper from researchers at the University of California, Berkeley, are adding the ability to infer so robots can perform after witnessing a task just one time.

A robotic arm with no learning capability can only be told to go to (X,Y,Z), pick up a thing, and drop it off at (X2, Y2, Z2). Many readers have probably done precisely this in school or with a homemade arm. A learning robot generates those coordinates by observing repeated trials and then copies the trainer and saves the keystrokes. This new method can infer that when the trainer picks up a piece of fruit, and drops it in the red bowl, that the robot should make sure the fruit ends up in the red bowl, not just the location where the red bowl was before.

The ability to infer is built from many smaller lessons, like moving to a location, grasping, and releasing and those are trained with regular machine learning, but the inference is the glue that holds it all together. If this sounds like how we teach children or train workers, then you are probably thinking in the right direction.

Continue reading “Robot Arm is a Fast Learner”

Modified Baby Monitor Interrupts Your Groove in Case of Emergency

You try to be good, but the temptation to drown out the noise of parenthood with some great tunes is just too much to resist. The music washes over you, bringing you back to simpler times. But alas, once you plug in the kids started running amok, and now the house is on fire and there’s the cleaning up to do and all that paperwork. Maybe you should have tried modifying a baby monitor to interrupt your music in case of emergency?

Starting with an off-the-shelf baby monitor, [Ben Heck] takes us through the design goals and does a quick teardown of the circuit. A simple audio switching circuit is breadboarded using an ADG436 dual SPDT chip to allow either the baby monitor audio or music fed from your favorite source through to the output. [Ben] wisely chose the path of least resistance to detecting baby noise by using the volume indicating LEDs on the monitor. A 555 one-shot trips for a few seconds when there’s enough noise, which switches the music off and lets you listen in on [Junior]. The nice touch is that all the added components fit nicely in the roomy case and are powered off the monitor’s supply.

Maybe you’d prefer listening to the nippers less than watching them? In that case, this impromptu eye-in-the-sky baby camera might be a better choice.

Continue reading “Modified Baby Monitor Interrupts Your Groove in Case of Emergency”

AVR Hardware Timer Tricked Into One-Shot

[Josh] has written up two posts that those of you who use AVRs might find handy. The first post documents a C library that implements a jitter-free one-shot timer. The second post explains how it works. We think it’s such a good idea that we’re going to spoil it for you, but go ahead and read his links and check out his code.

A one-shot is a pulse generator that runs once and only once. You trigger it, it produces the desired pulse, and that’s all she wrote. Why is this handy? Many external ICs that you’ll interface with have minimum durations for signal pulses that must be respected. You could program the AVR to toggle a pin high and then sit around and wait until it’s time to toggle the pin low again, but this wastes valuable CPU time, isn’t going to be very precise, and is susceptible to timing discrepancies if interrupt routines fire in the mean time.

You’d think that you could use the hardware timers for this, but it’s not straightforward. Normally, the timers are free-running; the counter that’s keeping track of time rolls over the top and starts over again. But we just want one pulse.

[Josh]’s very clever idea abuses the timer/counter’s TOP and MATCH values in “Fast PWM” mode. Essentially you trick the counter into never matching by setting TOP below MATCH. This means that the counter spins in its loop between zero and TOP forever, doing nothing.

To break it out of its loop and enable the one-shot, you manually set the counter to a value above TOP and let it go. As it counts up, it’ll eventually hit MATCH, turn on your pin, and then keep counting. When it rolls over the top (255 + 1 = 0 for the 8-bit AVRs), your pin will be correctly turned off again and then the counter re-enters its loop. The one-shot won’t fire until you manually set the counter higher than TOP again.

So there you have it, a one-shot depending only on the hardware timer/counter module and thus immune to jitter and consuming no CPU time at all. Our hats off to you, [Josh]. Clever hack.