Project: Build an endtable type box with a multitouch system built into the top surface using stuff you probably already have at home (minus the lasers).
What this project will cover:
- Making a mockup in Google Sketch up
- Building the box and early prototypes
- Using 850nm IR Lasers with your multitouch rig
- Modifying a PS3 eye camera for use on Linux and installing a BandPass filter
- Design decisions and using Brass rods
- Upholstery with Faux Leather
- Thought for the future. What could be done differently.
1. Making a mockup in Google Sketch-up.
What is google sketch up?
Google sketch up is a simple to use program for designing your projects on the computer. II will enable you to build simple mockups in 3d to assist you in seeing problems that may arrise before you build your prototype(s). It has already helped me many times in identifying something that would have been a problem had I not built it ahead of time in google sketch up.
Rather than write a whole tutorial on this subject I will point you to the place I found when learning how to build a simple mockup of my end-table. This is a fantastic resource and is only one of many aviable on the internet.
Google Sketchup for Wood Workers: http://sketchupforwoodworkers.com/
Where can I download Sketchup?
There are both paid-for versions and free versions of sketchup.
There are currently clients for Windows XP/Vista/7 & Mac OSx(10.4+) Some report success using sketchup on Linux with wine.
You can download Sketchup from Google here: http://sketchup.google.com/
2. Building the box and early prototypes
How should I get started?
The first thing you should decide on is what type of multi-touch system do you want to make.
There are a many different methods to achieve the same result. I suggest reading about multi-touch at the nuigroup forums. There is a huge amount of information about multi-touch and a great community of people to assist you with your build. You can read here about the different types of multi-touch interfaces to build.
My particular build us using a LLP with a LCD screen rather than a projector. As always, your milage may vary.
This is part of the fun. For my early prototype I figured that all I really needed was a bag of IR led's (around 850nm) Some Foamcore, my LCD, PS3 Camera and a laptop. This is enough to build a very cheap version of the finished project. Its always nice to see that it will "work" beofre investing a lot of time in the project.
In this particular case you can even build your base setup without the need for IR led's You will however need some sort of IR light source (such as a TV remote) to have your camera pick up and track a blob for testing.
Link to the whole album here:
Check below for a video of the prototype working:
3. Using 850nm IR Lasers with your multitouch rig.
Most important! Get --- Eye --- Protection, as in NOW.
Working with any type of laser is dangerious and can cause serious and perminate damage to your eyes. This is NOT something you want to have to worry about.
I ordered some glasses from http://www.dragonlasers.com/ and they work great. I highly suggest them as thier shipping was very fast and the glasses appear to be of good quality.
You will need the following.
4x 850nm 10mw IR lasers. Mine are from Aixiz
4x 120 Degree line generator's for your 4 lasers. I also ordered these from Aixiz
Some Notes: The lasers I got run off about 3.2VDC Make sure you do not do something like apply +12v or you will fry the laser. Its an expensive lession at $30/laser.
The laser's are also firmly in the IR range, you will not be able to see any "dot" or "beam" without using an IR camera or camera modified to see IR. Make sure to use your modified IR camera to calibrate your "dot" for you laser and to focus your beam from your line generator.
You will want to place your lasers on all four corners of your touch surface to eliminate dead spots.
The reason that you need more than one or two lasers is that if you were to have an object or your hand on the touch surface you would then block the path of the laser beam and any object placed behind the obstruction would not register as a "blob". The easy way we use to get around this is to just use more lasers heh. A simple way to visualize this is to turn on a light and place a solid object infront of it. The shadow you see would be the area that the camera would NOT see as no IR light would be able to reflect off objects in this dead zone.
Once completed you will need to make sure each laser is calibrated to have the line/beam just barely above the surface of your touch plane. It will not inject light into you're glass/plexi but will be just slightly above it. When your finger or an object breaks the beams path IR light will be reflected down through your touch surface and into your IR sensing camera. Each object or finger is then identified as a blob that can then be tracked.
Because you probably have a computer power supply in your cabinet it is liekly that you have a good source of +12v power. If we use some simple voltage regulation we can just tap the +12v line for the power supply and run the lasers in simple series. This cuts down on your wireing and will aloow you to power all four lasers off the existing power source inside your cabinet.
Look at the following to build one of these...
4. Modifying a PS3 eye camera for use on Linux and installing a BandPass filter
To tie all of this together we need to have the following equipment.
- 850nm BandPass Filter (Found mine here)
- PS3 Eye Cam (Check Ebay, should cost you around $30ish)
- A precision screwdriver set
You will need the following software.
- Your Favorate Linux distribution (I will be using Arch Linux)
- PS3 camera driver for Linux (This way we can get 100 FPS which makes for smoother tracking)
You will want to take apart your PS3 eye cam so we can remove the IR filter. This will allow the camera to see the wavelength we are using with our lasers.
There is a very complete and well put together guide on doing this here: http://www.peauproductions.com/blog/2009/02/23/ps3-eye-camera-band-pass-filter-insertion-updated/
Installing Linux Driver for PS3 Eye Cam
Once you complete the installation of the BandPass filter you are ready to start configuring the software. We will start by installing the proper driver for the camera. It most likely works already but we really want to get as high FPS (Frames Per Second) as possible. This allows for smoother and faster tracking and should give you an overall better feeling interface.
5. Design Decisions and using Brass Rods
For my overall design I wanted something that would have a somewhat "aged" feel to it. I am not going for a "steampunk" style but The exposed brass and Faux leather seems to fit well.
Because of how I built the box I needed a way to add upholstered panels to the outside of the box without adding a whole bunch of weight. For this I chose to use a thin cardboard like material that has a lot of rigiosity. If I had to do this again I would have probably tried to upholster the sides of the box before attaching them together. This would have eliminated the need for the Black undercoating you see around the box as well as some of the annoyance of getting the upholstered panels attached to the main box.
For the "fraiming" around the screen I wanted a good pronounced border that would stick out well. I chose to use Brass rods for this. I also took some brass plating and shaped it to act as covers for my lasers. This will keep them from getting bumped after they have been calibrated.
Overall I was very pleased with how the fake leather turned out. The pictures really do not do it justice.
6. Upholstery with Faux Leather
Upholstery is a lot easier than you think. You will want to get your hands on the following.
- Spray on upholstery glue
- Upholstery foam (i used 3/4inch thickness)
- Very sharp Xacto knife and/or sharp sissors
The first thing you will want to do is to measure out each section of your upholstery foam. I found that a felt-tipped pen works very well for marking lines on your upholstery foam. You will want to take off about 1/4 of an inch off each side of your section. This will allow the faboric you strech over the foam to have a sort of natural tappering towards the end of the board.
There is little special about this. You will need to do this for each section including the top section. The top will most likely be the hardest and will require you to wait to install any of your framing before you do the upholstery as the hobbie nails used to fix the brass will also serve the purpose to better fix the upholstery to the top of your end-table or cabinet.
You can check my galleries here to see what I did for my upholstery process.
7. Thoughts for the Future
- These are the few things I would have probably done differently if I were to do this all over again.
- I would have tried to upholster each large square piece of my end-table before fixing them together to cut down on the amount of materials and the annoyance of attaching them together.
- I would have invested in some better tools for cutting the Brass to get cleaner/nicer looking cuts.
- I would have origionally drilled several holes in the base of the end-table to add 3-5 Fans. I had to modify my design late in the process to account for 2x fans that were needed to keep the system from overheating.
- I would love to use abagleboard for this rather than an small ITX computer. It would use less power and would be way more efficient but for a first try I wanted simplicity in setup.
- I will in the future be writing and posting a guide on the software you should be using to set this whole system up to run happily in linux and to have pointer intergration as well as other "cool" tricks.
For all of the other pictures of the build and test process check out the Hacktheory Picasa public gallery here: