Multi-touch table
The multi-touch table is aiming for creating an easy-to-use prototype platform for tabletop interaction. The goal of the table is that it can sense touch input as well as fiducial markers for object tracking. An online community, NUI Group, contains a lot of information about how to make this type of table through different types of technologies. The method I chose here is called Diffused Surface Illumination (DSI). The idea is putting the infrared(IR) LED strip on the side of the acrylic to illuminate the whole surface; therefore, the IR camera underneath can see the surface clearly without being affect by the projection on the surface.
Material and Equipments
The material and equipments I used for the table contains:
- ACRYLITE LED (EndLighten) Colorless 0E011 acrylic sheet
- ACRYLITE Satinice (Satin Ice) Colorless 0D010DF acrylic sheet
- Infrared LED strip
- 110V to 12V DC Regulator
- 0.5" & 0.25" plywood
- 0.25" pegboard
- Foamcore board
- 0.75" MDF
- Vinyl Sheet
- Kinect
- AAXA ST200 Pico Projector
Testing the IR edge lit and projection
We use Kinect as IR camera here. Kinect itself has IR LED array that projects an IR point cloud, which will interfere with the nicely diffused IR light comes out from the IR LED strips, so we need to block that LED array. The image bellow shows the Kinect with LED array blocked, and the Kinect's views with LED blocked and unblocked.
The video shows that Haman's eyes cannot see the light comes out from the IR LED; therefore, it won't affect the projection. Similarly, the IR camera cannot see the light comes out from the projector, and shows only black image before I turn on the IR LED strips.
Making of the Table
I first model the table in SolidWorks. In SolidWorks, I design every different part as "Part", and put everything together in "Assemble". For similar part with slightly different, I use configuration to modify those different, such as different height and drilling holes.
I made the four sides of the table with the CNC routing machine and connect the parts with dowels and glue. Then, I stick the LED strip on the table and place the acrylic sheets.
Laser cutting the cover
Finish
Projection Test
Testing the projection. At this point, the projector's HDMI port is still working fine, so the projection size is larger and can fit the whole screen. The resolution is higher (720p), too. The HDMI port then has a connection problem, so I switch to use the VGA port. However, the projection size is smaller, and I can only get 800 x 600 resolution.
Making the Tabletop Objects
I made the tabletop objects with MDF. I'll attach the fiducial marker underneath for object tracking later.
Tracking
All of the code can be found on Github. I use openFrameworks with some other add-ons, including ofxFiducialTracker. The video shows the tracking result. For the fiducial tracker, the program can get the marker size and the orientation information as well.
Removing light leakage.
The image on the left shows the side of the table is extremely bright. That is probably because we didn't cover the top of the LED strip. The extremely brightness will affect the detection. In the image, you can see the palm also reflecting lights, which we don't want. The image on the right shows the camera view after the top side of the LED strip is covered. The result is much cleaner.