So you have received your new TouchKit system, want to get it working and run your first HelloWorld-like app. You have come to the right place. What follows is the canonical setup procedure. For additional assistance please contact us through our mailing list.
The TouchKit Spark package comes with screen, camera, lens, infrared filter, power adapter, and firewire cable. For a complete multitouch system you will also need a recent (as in <5 year old) computer with a firewire interface and a video projector. While we have setup the screen by leaning it against a stack of books in the past we definitely suggest properly mounting it into a table, wall, or on a stand for proper use.
The setup process breaks down to:
Before you even hook up the hardware it's usually a good idea to make sure the programming environment is ready for use. Check out VirtualAwesome to see how you can do this for your favorite IDE on your favorite OS. The immediate goal is getting exampleTouchkitSimple to run. By default this example will run with a test video feed so you see right away if the app works. Once you have the hardware hooked up you can change to the live camera feed by setting bLiveVideo = true; in MyApp.cpp and verify the hardware just as easily.
It's up to you how you mount the screen. One thing to keep in mind, the camera and projector need a certain spacing behind the screen. The stock camera lens is quite flexible so you usually have to work around the throwing ratio of the projector. Say your projector has a throwing ratio of 0.5 (typical for short throw projectors). This means you need a distance of half the screen width (+ projector casing length).
The easiest way to mount the screen is to remove some of the assembly screws and use these holes for mounting. We highly recommend using plastic screws since acrylic has a tendency to produce small cracks under high stress such as around metal screws.
When you mount the projector your goal is to neatly fill the screen with the projected image. The better you can match the two the easier it will be to calibrate the tracking data to it. Many projectors have keystone settings which will significantly simplify this task.
The camera needs to be mounted in a similar fashion. Primarily you want to have a nice view of the entire projected image. It is not necessary to perfectly frame the screen. In fact you can use a slightly angled view to your advantage. It allows you to reduce reflection hot spots of very bright projectors. As long as your camera sees the entire screen you are good.
If you are unsure we can suggest the following two mounting option. One uses tape and insulation foam board and works well for a lab setup. The other is based on a custom-welded steel-tube frame and makes the screen very presentable. If you don't have access to a welder, you can also try mimicking the design in a heavy wood. Please note: both setup guides were originally created for an older version of the TouchKit. They still apply but the measurements and dimensions are off.
Any app based on VirtualAwesome will have a calibration setup panel because this panel is built into the API. If you run exampleTouchkitSimple and take a quick look at the source code (MyApp.h, MyApp.cpp) you will see what I mean. Also make sure you run this example off the actual live feed by setting bLiveVideo = true; in MyApp.cpp if necessary.
Calibration is a simple matter of moving the four red squares to the corners of the projected image. Easy! Well, there is more. Also make sure the lens focus and lens iris is adjusted to get crisp and well-illuminated touch points.
You should now have a working system. It's time to write your own applications. A good starting point for this is the VirtualAwesome Documentation.