Tuesday, May 24, 2011
Robotic Desklamps at the Maker Faire
Well, that was pretty awesome. Finished 5 C.A.R.D.L.E. robotic desk lamps, and brought four of them to the Maker Faire (only 4 would fit on my table!). Along the way, I had to drill and tap 140 holes, all of which lined up. Mostly. So anyway, they were there, and they worked. I showed with my talented pals at Applied Kinetic Arts, and as usual we won an Editor's Choice blue ribbon.
The software was reasonably rudimentary, but I had a few nice things, and the best thing was I could drive all the lamps with one joystick. Prudently, I made the slew rate programmable, and tweaked it down considerably both for smoothness and so kids could drive it. (Whatever they are learning in school these days, "gentle" seems to evaporate from their vocabulary the minute they get a joystick in their hands.)
Video credit: E. Codel
Here's a screencap of the software. This was written in python using the wxPython gui library and wxFrameBuilder. This is just a fantastic combination: you can get a beautiful native (but cross-platform!) user interface up and running in one minute. Seriously. (Of course it took me a little longer...)
So it looks kind of complicated: I guess it is a little, given there are 35 degrees of freedom to control (each one of 5 lamps has four servo joints as well as lamp color, represented as hue, saturation, and value). If you think of the rotating base as swivel hips, the torso can move in and out, and the head can move both up and down and swivel left and right. These four servo positions can each be controlled independently and together.
The "Smoothing" and "Speed" sliders control how quickly the color or position transitions. The "auto" controls set a sinusoidal wave to control any joint (or color or brightness) with adjustable amplitude and frequency. This was particularly handy for the Maker Faire: I could set up the lamps to do some relatively interesting motions automatically, and wander away from the table to check out some of the other great stuff on offer.
The "Spread" slider controlled how similar the colors were on each lamp. Setting that to zero meant all the lamps had the same color. A small value gave colors close in hue value, and a larger value spread the colors across the rainbow. As the "Hue" slider (or joystick) was moved, each lamp can change smoothly though the rainbow, with the others closely matching or wildly different depending on the setting.
Something I was really pleased to get working was the was the "Delay" slider: this added an increasing delay to each lamp in turn, which gave a pleasing balletic effect -- when one lamp moved, the others followed in a graceful sequence.
Well, there's lots more to document, but perhaps in later posts. I'll leave you with a photo of the high-current LED driver board that let me control more than 10 watts of full-color LEDs.
Photo: Soo-Hwa Yuan
In closing, I must thank all the folks for help and support. Meredith for helping with the fabrication; Doctor Popular for encouragement and some great pictures, Eddie Codel for the video above, Michael Prados and Soo-Hwa Yuan for photos and video; Conor McQuaid for helping with LED driver prototypes, Lee Sonko for obtaining a critical part, and lastly the Awesome Foundation for the grant and the psychological boost in the butt!