Timelapse toolkit for the Exploratorium

I’ve been doing some development work at the Exploratorium, and my latest project is now ready to go live. It is a general purpose, highly configurable timelapse recording program, that will soon be incorporated into an interesting experiment in social dynamics (I’ll tell you what it is when it goes live).

Exploratorium timelapse toolkit

The program is developed in Max/MSP, and contains a lot of useful features:

  • Live preview of camera input
  • Timestamping of recorded frames can be turned on or off
  • Can be controlled with a rotary encoder (big free spinning knob) allowing users to “travel backwards in time”
  • Timed recording, you can have it start and stop recording a timelapse movie at specific times
  • User configurable recording interval and/or difference threshold (ie. record a frame when something changes)
  • Disk based buffering of the current recording, so you can scroll back and forth while it is recording
  • Program saves all settings automatically, making it possible to run unattended and on a schedule

The system is designed to be sufficiently flexible and configurable that it can be deployed in multiple situations where timelapse recording is interesting.

Baby stroller hacking – multicolor, remote-controlled LEDs

Nik and I had an awesome baby! His name is Javier Jun-Hong, and his special superpower is breastfeeding. Here he is:

Javier is preoccupied by the situation

Javier is preoccupied by the situation

Now, as everyone knows, having a baby is a great opportunity to launch a variety of different toy-making and hacking projects. The first one is to enhance his stroller with remote-controlled multicolor LEDs. I picked up some parts from Elemental LED, and put it together over the course of an evening. I used zip ties to hold the LED strips to the bottom of the stroller basket. The power pack and controller fit nicely under the footrest, and are held in place with velcro. Stroller folding is completely unaffected. Looks pretty good! And so does Javier’s mom!

Variable rate time-lapse video using motion detection

As part of a larger project involving timelapse video, I developed a technique that uses motion detection to identify frames for capture, and skips over frames where nothing is happening.

The video on the left implements this technique. You can see how it works, by skipping the stops at the stations in the video. The video on the right is original source video, sped up to match the duration of the video on the left. You can see that it does not skip the stops at the station.

I implemented this in Max/MSP/Jitter. The basic algorithm keeps track of the last frame written, and constantly compares the incoming video feed with that frame, calculating a constant difference score that tracks not only the number of differing pixels, but also the amount of difference. When this difference exceeds a defined threshold, then it captures that frame.

Comparing against the last frame captured, instead of simply the previous frame, ensures that even gradual changes will be recorded.

Things I have learned (part 3)

Yet more random learnings…

  1. On long trips, driving at around 55 mph will get you to your destination faster and more relaxed than by speeding – fewer fuel stops outweigh the greater speed
  2. Before asking questions, ask yourself if you really want to know the answer, or if you’re just showing off
  3. Get duplicates of any key toiletries (toothbrush, deodorant) and travel accessories (phone chargers, plug adapters) and keep them packed, next to your suitcase. This way you can pack for trips the night before and still brush your teeth before going to the airport.
  4. Telling someone to “just be yourself” is rarely good advice. However, telling them to pretend to be someone else opens up the door to learning and transformation.
  5. Never buy just one tube of toothpaste. Get two or three at a time, you’ll run out less frequently. Same goes for toilet paper, buy the jumbo pack.
  6. Change only one variable at a time
  7. Whenever you’re trying to get something done with a group of people, communicate constantly. Communicate more than you might think is necessary.
  8. You can’t make anything from a good mango that is better than that. Just eat it raw.
  9. Once you get started on a difficult task, it will seem a lot easier.
  10. Memories are startlingly inaccurate. Keep records. Revisit them and be surprised.

Making a Makerbot (part 5) – Kapton and Makergear nozzle

Last time I checked in, I had added the heated build platform and a Paxtruder to the Makerbot. However, things were not quite perfect: things were not sticking to the platform, and I kept getting occasional jams in the nozzle. I could tell things were not quite moving, because I could see the filament “snaking” in the extruder body.

The first problem was solved easily: ordering a roll of 4″ wide thin Kapton tape from here. It just about matches the width of the build platform, adheres easily, and most importantly, hot ABS sticks to it like there’s no tomorrow, with no need to sand it or otherwise prepare it.

For the second issue, I turned to the increasingly vibrant 3rd party Makerbot parts market, and ordered a Makergear plastruder. This is a replacement for the Makerbot nozzle, which makes a number of important changes to the design, including a stronger PEEK insulator instead of the existing teflon, a ceramic heating element instead of wrapped nichrome, and a much heavier nozzle head.

New Kapton and Makergear nozzle

New Kapton and Makergear nozzle

The Makergear nozzle comes with a clever mounting bracket, but unfortunately it doesn’t fit my Paxtruder, so I salvaged the big retainer washer from another nozzle, and mounted it the 0ld-school way. Nice how you can get two upgrades from completely different sources to work together.

These two elements have led to really reliable printing – don’t need a raft, and no filament jams. I printed one half of the Blender monkey, and was pleased with the results. I had been printing slightly hotter than necessary to try to prevent jams, and now I think I can dial the temperature down a bit.

Suzanne the Blender Monkey

Suzanne the Blender Monkey

I’ll print the other half of the monkey later. I accept it will come out better, less floppy ears…

Making a Makerbot (part 4) – Paxtruder

An area that causes problems in the Makerbot is the filament drive mechanism. It has to be adjusted just so, or the filament will get jammed or strip. ┬áThe system that keeps the filament engaged with the drive wheel is an acrylic idler wheel, which is sometimes uneven or wobbles. Also, the adjustment for idler wheel clearance is finicky, requires two tools (hex key and wrench) and can’t be made while the Makerbot is operating.

Fortunately, there is a lot of great innovation on this front: a fellow called Charles Pax has created the Paxtruder, which uses a Delrin piston and a screw mechanism for the filament drive. Another member of the Thingiverse community, inspired by this, has created a version of the Paxtruder that is a drop-in replacement for the original extruder body, and uses many of the same parts.

A friend of mine very kindly offered to laser-cut the acrylic parts, and I machined a scrap of Delrin to make the pusher, and now I have my very own Paxtruder:

Drop-in Paxtruder in place

Drop-in Paxtruder in place

It looks great, and works great. It is trivial to get the filament driver pressure exactly right. In addition, the design of the Paxtruder makes it super easy to remove the motor (to clean the gear), and to remove the nozzle assembly. I highly recommend it as an upgrade to the Makerbot.

Assembled Paxtruder

Assembled Paxtruder

This whole process reflects the power of Open Source hardware: many of the enhancements I’ve made to the Makerbot come from the community, which is empowered to innovate and share. Some of the enhancements can even be made using the Makerbot itself, in a virtuous cycle of machine evolution. Eventually these improvements get rolled into the current production model of the Makerbot. I suspect something like the Paxtruder will be the basis of the upcoming Mk. 5 extruder.

Things I have learned (part 2)

Here’s another batch:

  1. When someone asks if you know something, a simple “yes” is rarely the best answer. Stating what you know and confirming it is better.
  2. Constraints increase creativity
  3. Doing things, however imperfectly, has an effect. Just thinking about things does not.
  4. Dessert recipes in English almost always benefit from halving the amount of sugar in them. (This is not always true for recipes in other languages.)
  5. You are not aware of the effect alcohol has on your mind, body and personality until you give it up for a month – and it’s greater than you think.
  6. Travelling to do something or meet someone is more memorable than travelling to see something
  7. When working with someone skilled in another domain, try to learn enough of what they do to be able to have an informed conversation.
  8. Children are not little adults, their lives have an internal logic of their own which should be acknowledged.
  9. Fatigue is often a symptom of dehydration – drinking water is sometimes more effective than coffee, or a nap.
  10. Paying attention to a safety briefing is always a good idea: the downside might be a few minutes wasted, the upside might be saving your life.

Making a Makerbot (part 3) – heated build platform

I got around to assembling the heated build platform for my Makerbot. The heated platform is super-useful, as it prevents printed pieces from warping as they cool, and removes (sometimes) the need for a “raft” to help pieces adhere to the platform.

Heated build platform in action, printing an Escher cookie cutter

Heated build platform in action, printing an Escher cookie cutter

I’d been put off by the large number of surface mount components involved, but it turned out to be much easier than expected. The 20+ resistors and LEDs are cosmetic, they light up with a red glow when the platform is heated, but I figured I might as well assemble them too. I was able to put the whole thing together in less than an hour, with no special surface mount materials or techniques. Just put solder on a row of pads, pushed the pieces in to place, melted the solder, then went back and soldered the other side of the piece with a tiny drop.

I ended up making a few mods to the platform (this seems to be a recurring theme…)

  • First, I inserted a six-pin Molex type connector to make it easy to unplug and remove the platform.
  • Second, I encountered the common issue where the MOSFET on the extruder controller shuts down due to excess current, so I set it up such that the heated platform is controlled via a 12V relay (only $7 from Radio Shack). Took about 10 minutes to do, and now the thing works very reliably. The instructions for doing this are on the Makerbot wiki (look for “alternate wiring – relay”) – highly recommended.
  • Finally, I used a countersink bit and some M3 countersunk screws to make the surface of the build platform completely level. Gives a bit more usable print area, and avoids problems with the nozzle hitting the bolts.

Things I have learned (part 1)

First in a series of things I have learned that are not immediately obvious.

  1. People who know how to ask for help are more popular and successful than those who offer unsolicited help
  2. When someone is snoring, gently stroking their neck along the line of the carotid artery will silence them
  3. In an organization, misbehavior by members low in the hierarchy is usually an institutional problem, misbehavior by leaders is usually an individual problem
  4. Adding a teaspoon of vinegar to the water is crucial to successfully poaching eggs
  5. When solving a technical problem, knowing what tool to use is most of the solution
  6. Limiting options increases productivity
  7. Being able to create positive emotional states in others is key to success in life
  8. The best work often comes from the people who produce the most work
  9. If a shoe is not comfortable when you first try it on, it will never become comfortable
  10. The meaning of a message is determined by the receiver, not the sender

Making a Makerbot (part 2)

Added some additional finishing touches to the Makerbot today to make disassembly easier, and make it easier to manage.

First, a terminal block mounted on the extruder body. This allows individually disconnecting the motor and the heater barrel from the extruder, and using shorter wires.

Terminal block on extruder head

Terminal block on extruder head

Unfortunately, the spacing on the bolt holes in the terminal block does not match the spacing of the bolts on the extruder, so I made a simple adapter with a piece of scrap plastic. I also reversed two of the M3 50 bolts, so that the terminal block mounts on the back of the extruder. This improves visibility of the filament guide, and makes running the wires from the motor easier. It also makes it possible to remove the extruder motor (ie. for cleaning the drive gear) without taking the extruder out of the Makerbot.

Second, I added a 6-pin molex connector into the bundle of cables that runs between the extruder and the controller board, in order to allow for easy disconnection of the entire extruder as a unit. I figure I’ll do the same when the Mk. 5 extruder becomes available.

Molex connector for extruder cables

Molex connector for extruder cables

And finally, some spiral cable wrap to keep everything tidy. It turns out it really helps to keep the cables out of harm way as the Z stage goes up and down.



Now time to settle down for some serious printing…