Sunday, November 10, 2013

Kinect Pin Art (FAIL)

Back in the winter of 2011 to the spring of 2012, I worked on a project that did not go well. The idea was to take Kinect (a motion sensing camera from Microsoft) depth information and use the information to move a matrix of pins. The goal was to simulate a low resolution "pin art" toy in near real time.  The pixels did move based on depth information from the Kinect, but all of the 60 pixels were not finished.  It would have been nice to have a video of the operational pixels, but I did not get one at the time.

Figure 1: A pin art toy from E-bay

I recently saw this video from a group of 5 people from MIT:
The idea is similar to my Kinect Pin Art project. Although, they did a much, much better job of implementation.

Here is the hardware video I put together:

Since Hack-a-day has been asking for "failed" projects, this is my contribution.

There were two main difficulties:
1) Get the depth information from a Kinect sensor.
2) Build a 6x10 matrix of linear motion pixels.

The main difficulty was getting an array of pixels to move in a linear fashion over 1 to 2 inches. The least expensive way I could come up with linear motion in near real time was using a series of mini servos attached to the pixels through bicycle cables. The figure below shows only the bottom hobby servo tray installed on the plywood base.

Figure 2: The bottom servo tray installed early in the development

The "pixels" were the top half of Bic ballpoint pins.

Visual Basic Express 2010 was used to gather depth information from the Kinect sensor. In the figure below, the depth information is shown on the image near the middle. The user clicks and drags a rectangle over the middle image. The little green squares represent where the depth information would be gathered to be sent out to the servo controller.
Figure 3:  The desktop software in operation

The off the shelf servo controller could drive 32 servos.  There were two of them to drive the 60 servos needed for the display.

Why did the project fail?
Mostly, the hardware was my downfall. The bicycle cable and pixels tended to bind up at random times. PVC boards were used to hold the pixels. The drill holes through the PVC boards needed to be about 2.5 inches long. Drill bits tend to wander around some when going through PVC. Several different things were tried to prevent the pixels from binding up: aluminum tubing, and a bicycle cable alignment board. (see the images below)
The hardware as it stands today (there were only two servo trays attempted):

 Figure 4:  Two of the pixels sticking out of the pixel holders

Figure 5:  Aluminum alignment tubes for the bicycle cable

Figure 6:  All of the hardware

Looking back on the project, there are several things I could have done differently:
-As the Mythbusters say “When in doubt, lubricate!” (or some thing like that). Anyway, the bicycle cables could have used some generous lube.
-Instead of drilling such long holes, a couple of pre-drilled boards (like pegboard) would have helped out greatly for holding the pixels.
-Several parts of the hardware assembly screams out for either 3D printed parts or machined parts.

Anyway, if there are any other ideas on improvements to the hardware, I would like to hear them in the comments.