Author Archives: thomas

Flexible machine clamping system

Workbench with

While waiting for Bitraf‘s new Shopbot to make its way across the Atlantic ocean, I busied myself upgrading the Bitraf workshop.

We’d managed to get all the parts for the new workbenches milled out before Jens Dyvik moved his Shopbot to Fellesverkstedet, but we still needed a system for holding our small machines safely in place.

I briefly thought of mounting them directly to the workbench surface, but didn’t want to commit to having a particular machine locked to one spot. I was pretty sure we’d get additional suitable machines in the future, and some machines you really want to be able to move around to adjust to the task at hand.

So, I wanted a more flexible solution that would allow both moving and swapping of machines relatively easy. Comprehensive googling didn’t really turn up any solutions I liked, so I had to come up with something myself.

You’ll probably get a decent idea of how it works from looking at the pictures, but I’ll describe it, too, for clarity.

At the back of the workbench, I’ve mounted several rails, with a 45 degree chamfer cut at the front. The face of the chamfer faces down.

At the front of the workbench, I’ve mounted similar rails with the chamfer facing backwards and down. These are hinged, as can be seen in the picture below.

Closeup of clamp in closed position

Closeup of one of the clamps in its closed position

All machines are mounted securely on a square plate with a 45 degree chamfer on all edges. The chamfer is the reverse of the rail chamfers. So, with the addition of a bit of rubber along the rail, the plates and their machines are held securely in place.

When we want to move or swap one of the machines, we undo the wingnuts for the appropriate rail and flip it back, like so:

Closeup of open clamp

Closeup of one of the clamps in its open position

Open clamp

One of the clamps in its open position

Since the plate is square, we’re free to rotate the machines if we need to, and still mount it securely. This is a particularly great advantage with the sander in the picture below, since it allows us to set up optimum angles and space for our sanding.

Sander mounted on base plate

Having the sander mounted on a square base plate is particularly useful, since we often need to rotate the machine to accommodate different working angles

Drill press

All in all, I’m pretty pleased with this system. It was made with mostly scrap materials, and really keeps the machines well in place. The disadvantage, of course, is that it’s hard to use the workbench for other purposes with the rails mounted. Then again, we have other workbenches for other purposes, so that’s not too big a sacrifice.

Set pieces, decorations and booths for a web conference

Trees, pallet stalls, a coffee booth and some arrow signs. (Photo: Thomas Winther)

Trees, pallet stalls, a coffee booth and some arrow signs. (Photo: Thomas Winther)

For the 2014 edition of WebdageneNetlife Research‘s annual web conference, I made quite a few different things. The picture above shows a partial selection of the stuff I built:

  • Sponsor stalls built from standard Euro pallets, a top plate and some standard boards and planks. I made 9 of these, in varying sizes and configurations (signs were painted by Netlife Research).
  • A coffee booth in the form of a cottage set piece, with fancy jigsaw puzzle joinery on the front and a proper scaffolding on the back to keep it upright.
  • A bunch of arrow signs and stands for them (right hand side of the picture).
  • 15 spruce shaped set pieces with two different heights (160 and 180 cm tall).

The building of the trees presented a few challenges, mainly due to a bit of material shortage.

Netlife’s original wish was to have them built from mint green Valchromat, which turned out to be a bit hard to get a hold of within the limited time available. The local supplier only had a few plates of varying thickness, so we ended up using some green, moisture resistant MDF for about half of the trees instead.

The varying thicknesses and two different materials meant I had to adjust the drawings and CNC toolpaths through several iterations, as well as do multiple tolerance tests to make sure everything fit snugly, while still being possible to disassemble.

To get the most out of the available material, I also decided to change the way the trees were built. The original plan was to simply have two tree silhouettes with a vertical slot halfway from the top or bottom, and then just slide them together. This would effectively double the material usage on the larger trees, though, so I ended up splitting one of the silhouettes in two, flipping the two halves upside down and placing them on each side of the full silhouette on the milling cutsheet. These two half silhouettes would then connect with each other through the full silhouette and be secured with wedges. A bit hard to explain through text, so here’s a picture of it!

Tree construction principle. This particular specimen is a scaled down version I made as a sort of elaborate Christmas greeting to a few of my customers.

Tree construction principle. This particular specimen is a scaled down version I made as a sort of elaborate Christmas greeting to a few of my customers. (Photo: Thomas Winther)

And here’s a picture of two of the full scale trees, assembled and ready.

A closer look at the trees

A closer look at two full size trees. (Photo: Thomas Winther)

Netlife Research wanted their own pallet stalls painted in their signature green. Here’s a picture of them. Next to the larger one, there’s the “wishing tree” that I also made. Sadly, I was too busy building to get a proper picture of it, but the idea was that conference guests would pick a note from the basket, write a wish for their company on it and hang it on the tree’s branches.

Netlife stand and wishing tree

Netlife stand and wishing tree. (Photo: Thomas Winther)

Netlife also wanted five simple tents to act as semi-private hangout spots. Here’s a finished frame, showing the collapsible construction. Note the bottom straps, keeping the tent from kneeling.

An unclothed tent frame, showing the construction principle

An unclothed tent frame, showing the construction principle. (Photo: Thomas Winther)

Netlife sewed the tent fabric themselves and dressed it all up with cushions:

Finished tent with cloth Netlife-sewn cloth and pillows for the visitors to plop themselves down on

Finished tent with Netlife-sewn cloth and pillows for the visitors to plop themselves down on. (Photo: Thomas Winther)

And finally, they wanted a campfire built. That’s a literal “built”, as it had to be sturdy enough to not fall over if someone bumped into it. So, the whole thing is kept together with screws and glue, with a few loose logs leaning on the main construction for good measure. The concept for this campfire was that people would gather round it to have their phones, tablets and various other electronic paraphernalia charged, whilst socializing freely. That may sound a bit silly, but it worked like a charm and it turned into a very popular spot.

The symbolic bonfire for socializing and the charging of phones etc

The symbolic bonfire for socializing and the charging of phones and other peripherals. (Photo: Thomas Winther)

For this project, Netlife Research provided me with concept drawings and a few starter Illustrator files, and it was up to me to do detailed construction drawings where necessary and figure out the practicalities of how to make everything sturdy and fit for purpose. And actually build all of it, of course!

Modular exhibition stand

Stacked boxes with storage

Stacked boxes with storage (Photo: Thomas Winther)

I made a modular exhibition stand system. It’s highly flexible and can be used for building display, storage and seating facilities. It’s sturdy, requires no tools for assembly and uses no hard-to-find spare parts. And it looks good, too (he said, modestly)!

The concept, which was thought up by the great guys at Ren Reklame (Norwegian website) when Oikos wanted to replace their old, worn exhibition stand, is deceivingly simple: Stackable boxes.

More specifically: Boxes, measuring 50*50*50 cm, with one side panel open. These were to be stacked in various configurations, the box dimensions allowing for quick assembly of stands of a decent size. The open side means the interior of the box can be used for storage or display, depending on which way it’s pointed.

Boxes stacked arranged like a counter

Standard counter configuration, with display niches. Or storage, depending on which way the counter faces. (Photo: Thomas Winther)

Boxes stacked as a wider counter, with various objects on display

A more elaborate configuration (Photo: Thomas Winther)

Two boxes stacked

A tall table or small counter with storage (Photo: Thomas Winther)

One box with a pillow on it

A stool (Photo: Thomas Winther)

I helped further develop the concept, figured out a good way to connect the boxes, made the production drawings and milled out the parts. Then I got some excellent help from Ida at Oikos, who assisted me with the sanding, gluing and staining of the boxes to keep costs down.

The boxes are pretty stable and sturdy by themselves when stacked, but a system for connecting the boxes was needed for added safety and more configuration flexibility. The solution for this was 4 precisely matched holes in every box side, allowing for bolt-and-wingnut assembly no matter which way each single box pointed.

Closeup of a bolt and wingnut holding boxes together

Closeup of a bolt and wingnut holding boxes together (Photo: Thomas Winther)

For some added finesse, I milled out a bolt head shaped pocket around each bolt hole. This pocket holds the bolt in place while the wingnut is tightened by hand.

Closeup of bolt holder hole

Closeup of bolt holder hole (Photo: Thomas Winther)

This same bolt system is also used for attaching signs or other paraphernalia to the boxes. Here’s the sign I made for the Oikos stand, at the boxes’ debut at this year’s Øya festival:

A logo sign for Oikos

The sign was made from thinner, stained plywood, with the logo milled 2 mm deep to expose the underlying material (Photo: Thomas Winther)

Since the boxes were supposed to withstand people sitting on them, I made them from 18 mm thick plywood. The final boxes are very sturdy, but also heavy enough that they would be uncomfortable to move around if the handle edges were sharp. So, I decided to mill a comfortable, two-sided bevel around each handle hole.

Closeup of a handle, with bevelled edges for comfort

Closeup of a handle, with bevelled edges for comfort (Photo: Thomas Winther)

The boxes and sign were stained with environmentally friendly stain from Biofa and Livos (both Norwegian websites), to let the wood texture show through. Since Oikos actually wanted the boxes to look a bit worn, we purposely did only one coating. Here’s a closeup:

Closeup of the stained wood

Closeup of the stained wood (Photo: Thomas Winther)

 

Milling insulation foam

Melted isolation foam on milling bit

Photo: Thomas Winther

A while ago, I milled out a set of large letters for Ingrid Solvik. They would spell out BANK over a large doorway in a commercial she was working on. Since they’d need some handling and mounting in a somewhat difficult location, she wanted them done in foam. More specifically: insulation foam, as this was easy to get on short notice and carried a reasonable price tag.

In total, we milled twelve letters, which would later be sandwiched together in layers of three to form the final letters. This meant we had to do a fair bit of milling, and since this was a bit of a rush job, I set the feed rate rather high for our first try.

The pros of a high feed rate is not only that the job gets done quicker, but also that heat buildup is lessened along the way. Partly because the milling bit spends less time in any given spot, but mostly because the milled chips of material is what actually transports most of the heat away as they fly off. Higher feed rate = more material getting removed = more heat removed.

The cons of a high feed rate is that the milling bit might break more easily if it’s moved through the material faster than it’s able to cut its way through, that you might get less precision if the milling bit is slightly bent (but doesn’t break) and that the cut surface gets a rougher finish.

The latter con became rather apparent during the first run. The insulation foam wasn’t exactly ideal milling material; the cut surface had lots of almost-but-not-quite severed “strings” of foam left. These had to be meticulously rubbed off by hand and left a terrible mess. So, in an attempt to reduce this, I lowered the feed rate.

Which worked, to an extent.

However, as I got more into the swing of things and worked quicker, heat started building up in the milling bit without me noticing. When I got to the second-to-last letter, the temperature quite clearly reached the melting temperature of the insulation foam, as I heard the milling sound change ominously and a foul smell appeared.

I stopped the Shopbot within a couple of seconds – but a respectable layer of melted foam still managed to accumulate on the milling bit (see the photo above). Luckily, it was easy enough to remove with pincers after a bit of a cooldown.

Lessons learned: When milling an unfamiliar material, regularly check for heat buildup. And prepare for a major cleanup operation afterwards if the material is insulation foam, those little wisps of foam get everywhere. I even had to vacuum the walls up to shoulder height!

Little Bzzztrd synthesizer/noisemaker

All the Little Bzzztrd boxes, neatly in a row

Photo: Thomas Winther

A while ago, I made a simple synthesizer/noisemaker, with matching amplifier and loudspeaker boxes. I call it the Little Bzzztrd, which will make more sense when you hear it in action in the demo clip below :-D

A few months prior to making these boxes, I had attended Nicolas Collins‘ excellent Hardware Hacking workshop at Atelier Nord. One of the many fascinating things we learned about there was how to “misuse” a simple logic chip (a Hex Schmitt Trigger, for those interested) to make one or more nicely buzzing, square wave oscillators. At the end of the workshop I had a finished synth sporting two oscillators, with a potentiometer controlling the pitch of the first one and a light sensitive resistor controlling the pitch of the other. Which was cool enough – although the light sensitivity made it a bit unpredictable.

As I played with it, I found myself wanting more precise control and a wider selection of sound combinations. Also, I was about to make my first foray into CNC milling. So, I decided to build a similar circuit with three oscillators controlled by potentiometers, make a custom designed box for it and top it off with matching boxes for an amplifier and loudspeaker – so I could listen in style to the wonderful racket the circuit would make :-)

Since the loudspeaker box would be the simplest of the three boxes, I started with that one. I drew the design in Inkscape, with the useful Tabbed Boxmaker plugin providing the necessary calculations for generating the outlines of the parts in one fell swoop. Drawing and placing my broken note logo and the hole+pocket for the RCA connector was all that remained before the parts could be milled:

Freshly milled parts for loudspeaker box

Photo: Håkon Wium Lie

The material was a piece of grey Valchromat HDF that Jens generously gave me. I painted it before milling, to get this nice three-dimensional effect:

Closeup of broken note logo

Photo: Håkon Wium Lie

In hindsight, I should’ve used a different type of paint and been more thorough in my preaparatory work. I ended up using an acrylic paint, and didn’t sand or clean the surface before I painted. As can be seen in the picture above and other places on the boxes, this led to more fraying around the milling edges than necessary.

A bit of assembly:

Partially built loudspeaker box, connector mounted

Photo: Thomas Winther

Due to the nature of CNC milling, each tab in the corner joints had two small holes in the inner corners. Since I harvested the speaker driver from a closed box loudspeaker, I wanted to keep this custom box reasonably airtight, too. Sugru to the rescue! A bit pricey, perhaps, but still a very quick and tidy way of sealing those holes.

Loudspeaker box internals, sealed with Sugru

Photo: Thomas Winther

Finished loudspeaker

Photo: Thomas Winther

With that out of the way, I set about designing the box for the actual synth. This was quite a bit more complicated; with multiple connectors, holes and pockets for switches and potentiometers, a service hatch and some graphic elements. I intentionally overloaded this design, with large graphical elements and oversized switches. A loud design for a loud and obnoxious synth :-)

Synth box parts, fresh off the CNC mill

Photo: Thomas Winther

Partly assembled synth box

Photo: Thomas Winther

Synth box interior

Photo: Thomas Winther

Synth service hatch

Photo: Thomas Winther

That last picture above is of the service hatch, which allows me to replace the battery and get at this rat’s nest of jumper cables:

Peek through service hatch into synth interior, electronics installed

Photo: Thomas Winther

Here’s the finished synth:

Finished synth

Photo: Thomas Winther

I wanted to assemble the final box – the amplifier – at Bitraf‘s (Norwegian language website) stand at this year’s Maker Faire Oslo. Bitraf is part co-working space, part hackerspace and part makerspace. The idea was that we would bring Bitraf to Maker Faire, instead of just showing up and displaying things we had made. This seemed to work well, both my box building and other projects attracted the interest of the Maker Faire visitors.

Building the amplifier box at Maker Faire Oslo, 2014

Photo: Håkon Wium Lie

Here’s the finished amplifier:

Finished amplifier box

Photo: Thomas Winther

Custom shelving unit

Shelving unit in place

Photo: Thomas Winther

My friends Hugo and Anja needed a shelving unit with several sizing and fitting constraints. Having seen and liked the box design I used on my Little Bzzztrd synth/noisemaker, Hugo asked me if I could help them out. You can see the final result in the picture above; more details below.

The unit is made from the same material as the Little Bzzztrd boxes, Valchromat – a type of HDF (High Density Fibreboard). I deliberately made the joints such a tight fit that I had to hammer the parts together. This resulted in a sturdy construction in and of itself, but as an extra structural backup, I used glue and wood screws to hold the back wall on.

Getting the joints tight enough to achieve that hammer fit – and still be able to actually assemble the parts – required high precision when drawing the unit. There was a noticeable difference even when making as small adjustments as 7 to 8 hundredths of a millimeter. Good thing I was using Rhinoceros, which makes working at this precision level a breeze :-)

Even if Rhinoceros’ (Rhino among friends) primary domain is 3D modelling, I think its 2D capabilities are far superior to most dedicated 2D applications I’ve tried. This is especially true when it comes to accuracy and ease of use. Here are some of the 2D parts in Rhino:

2D drawing of parts in RhinocerosAfter drawing the parts in 2D, I tested that everything fitted together as it should by extruding the 2D parts to 3D and assembling them in Rhino. Good thing I did, too – since I discovered a couple of things that had to be changed!

3D extruded and assembled parts

Next came milling the parts out – and then, with one assembling/hammering session and several rounds of sanding and painting, I went from this…

Shelving unit parts

Photo: Thomas Winther

…to the final unit in this post’s main picture.

Now, a couple of images highlighting the sizing and fitting constraints I mentioned earlier. The unit had to fit around this hatch without blocking it…

Shelving unit fitting snugly around service hatch

Photo: Thomas Winther

…under this control box and into the corner next to the doorway.

Shelving unit fitting under control box

Photo: Thomas Winther

And finally, painting these corner joints proved the most challenging part of the job:

Corner joint

Photo: Thomas Winther

Motion controlled slideshow

Motion controlled slideshow installation

Photo: Thomas Winther

I recently finished my work on a physical installation in the new finn.no store (“En slags butikk“). I’ve covered a couple of the more technical aspects of this in my two previous posts – here’s a more accessible overview of the installation :-)

The installation is basically a motion controlled slideshow. Swipe your hand to the left over the Leap Motion sensor (mounted in the left wooden box in the picture) and the current picture slides left and a new picture slides in from the right. Swipe your hand to the right, and the opposite happens.

The pictures shown are from typical vacation destinations – the idea being that store visitors would snap selfies of themselves in front of the canvas, upload them to Instagram (tagged with #enslagsbutikk) and thereby have the chance to win an actual vacation.

Functionally simple enough, but not without challenges:

  1. The installation is located in a somewhat spacious room with lots of light that might confuse the Leap Motion
  2. The built-in gestures that come with the Leap Motion API don’t include a generic full hand gesture, so I had to solve it without using those
  3. Given that the whole point was that people would take pictures of themselves in front of the canvas, the projection had to be done from the rear (to avoid shadows)
  4. Quite a bit of fiddling around and optimization had to be done to ensure a good enough motion detection reliability

The biggest issue in bullet point 4 above was that the store visitors were swiping their hands too close to the Leap Motion sensor. Swipes in the 0 to 4 centimeter zone would go undetected.

Since this proximity blind zone is a physical sensor limit with the Leap Motion, the only way to make sure people kept their hands far enough away was to mount a physical barrier that still didn’t block too much of the sensor’s view. I ended up milling a simple frame on Jens Dyvik‘s excellent CNC milling machine (a Shopbot) and mounting it around the sensor recess:

Standoff frame to keep people's swipes the required distance from the sensor

Photo: Thomas Winther

Although the main point of the frame is to keep swipes at a minimum distance from the sensor, it also provides two more advantages:

  • It limits the sensor’s side view, reducing “false positives”, ie. hand movements that the user didn’t intend as a swipe
  • It reduces light pollution from lighting sources in the room, improving the sensor’s frame rate

Summary time! Here’s what I did on this job:

  • Coded and otherwise made the slideshow app in Unity3d, hooking into Leap Motion’s Unity3D API
  • Specified how the Leap Motion sensor needed to be mounted to function well, including guidelines for the ambient lighting
  • Milled out a standoff frame to improve sensor accuracy
  • Set up a PC to run the app

Leap Motion full hand gesture

After figuring out how to handle the Leap Motion’s light sensitivity issues, I started producing the actual code for my finn.no app.

The app functionality specification was rather simple: swipe a hand left or right to navigate backwards or forwards through a slideshow, respectively. Digging into the Leap Motion’s Unity3D API, I began to suspect the built-in gesture functionality wouldn’t be adequate, since the app would be exposed to the general public with little or no guidance available.

The API comes with four different gestures defined:

  • KeyTap
  • ScreenTap
  • Circle
  • Swipe

The last one, Swipe, sounded like it would be perfect for my needs. Regrettably, it’s been named a bit inaccurately; a finger swipe is what triggers it. Any finger on a detected hand doing a quick swipe, to be more precise.

I used this Swipe gesture in the first prototype for the app, but upon testing at the physical installation location, it became clear that it was too easy to misuse. It would mostly detect the swipes just fine if the user had at least one finger separate from the rest of the hand, but had trouble if the finger in question was a thumb or the hand was clenched or all fingers gathered together.

A good rule of thumb for any type of development is that if something can be used wrong, someone will eventually do it. Probably sooner than you think.

With this in mind, I did some more research into how I could get the Leap Motion to recognise a hand swipe, rather than a finger swipe. After a nerve-wrecking experience with a Unity3D plugin that didn’t turn out as expected, I found that the best way to implement this particular gesture was by not using the API’s Gesture class at all (!)

The solution was using Motions instead. Here’s the basic description (from the Leap Motion docs) of what Motions are:

The Leap Motion software analyzes the overall motion that has occurred since an earlier frame and synthesizes representative translation, rotation, and scale factors.

IE: if everything that the Leap Motion is currently tracking is moving in one direction, the resulting Motion translation shows you which direction this is. If you move one hand to the left, you’ll get a vector indicating this direction and the magnitude of the movement.

With this information in hand, all I had to do was gather this information across a number of frames, and define what magnitude of movement across these frames were enough to constitute a gesture.

Here’s some sample, simplified code(C#) – with descriptive variable names and all:

string checkForSwipe()
{
    Vector motionSinceLastFrame = 
        LeapControllerThingy.Frame().Translation(LeapControllerThingy.Frame(1));
    if (motionSinceLastFrame.x > 8.0f)
    {
        continuousFramesThatRightMovementWasDetected++;
    }
    else
    {
        continuousFramesThatRightMovementWasDetected = 0;
    }
    if(motionSinceLastFrame.x < -8.0f)
    {
        continuousFramesThatLeftMovementWasDetected++;
    }
    else
    {
        continuousFramesThatLeftMovementWasDetected = 0;
    }

    if(continuousFramesThatLeftMovementWasDetected >= 
        numberOfContinuousUnidirectionalFramesNeededForGesture)
    	{
    return swipeDirection.Left.ToString();
    	}
    else if(continuousFramesThatRightMovementWasDetected >= 
        numberOfContinuousUnidirectionalFramesNeededForGesture)
    {
    return swipeDirection.Right.ToString();
    }
    else
    {
    return swipeDirection.None.ToString();
    }
}

The Leap Motion’s sensitivity to lighting

Hand holding a Leap Motion

Photo: Leap Motion Press Kit

I recently had the pleasure of developing a motion detector (Leap Motion) controlled Unity3D app for the newly opened finn.no store in Oslo, Norway. The physical installation this app would be a part of were to be placed in a somewhat large room, with multiple lighting sources. So I figured some research was due.

My first tests were disappointing, to say the least. The Leap Motion’s accuracy was, quite honestly, horrible. It kept losing track of my hands, could never discern more than one or two of my fingers at a time and had a really low frame rate when I checked Leap Motion control panel diagnostics.

Once I replaced the incandescent light bulb above my desk with an LED bulb, though, things picked up. Both hands and fingers were tracked quite well and everything seemed more responsive. This impression was confirmed by the diagnostics: the frame rate had more than tripled.

The Leap Motion uses a small array of infrared LEDs to bounce infrared light off anything within its range, picks the reflections up with its sensors and applies some software magic to discern hands, fingers and pointy objects. In the right conditions, this works pretty well. There are, however, some possible pitfalls that will degrade the sensor’s performance. The one that has the greatest potential to cause trouble is light pollution from nearby lighting sources. Luckily, with a bit of care, this problem might be mostly avoided.

Different types of lighting disturb the Leap Motion to varying degrees. By far, the two worst types are incandescent (“regular”) and halogen light bulbs. These give off a very small portion of their energy use as visible light; the rest is spent on heat and infrared light. LED bulbs and CFLs (Compact fluorescent lightbulbs), it turns out, not only use less energy but also give off way less infrared light, allowing your Leap Motion to work undistracted.

So, if you’re having trouble with your Leap Motion’s performance, try adjusting your lighting. Replace incandescent bulbs with LED bulbs or CFLs, angle the light sources differently or put up screens or other objects to block direct light onto the sensor surface. Also: keep it out of direct sunlight, too – there’s plenty of Leap Motion-distracting infrared in sunlight.