Multitouch mlitch21 on 23 Jun 2009 02:43 pm
Better Tracking on the Touchkit
I’ve been working with the Touchkit for a while and have found that there are some tracking issues with the hardware. Particularly, when sliding a finger across the surface the tracker can lose the finger and pick it back up later. This issue causes a problem when writing an application for the Touchkit, since the programmer will expect an action like this to be continuous.
Testing:
I performed 65 trials of dragging my finger across the Touchkit in one continuous motion with average pressure. I recorded the points of presses and drags and plotted them in Matlab, while I varied the lighting, background color, and sensitivity of the table and found that white background, lights on and 30 vision threshold gave the best results. Next, I did 15 more trials with these or similar settings, and calculated the distance and time between the last drag point recorded and a new touch for the optimal settings. Finally, I wrote an algorithm that uses a pointer to the default finger tracking object, which I can update when I find that a new touch is not the same as the previously lost one, based on its time and distance apart.
Results:
I found that with the optimal settings, 57% of the trials yielded one continuous touch. With a distance parameter of 25 pixels and a time of 40 ms in my algorithm the success rate would be 93% (only one failed trial). Below are two Matlab graphs of the same continuous touch. The first is plottedĀ using the default tracking object’s data and the second is plotted using my pointer’s data.

figure 1. Matlab graph of tracked data from the default object

figure 2. Matlab graph of tracked data from my pointer to the default object
The blue circles on the figure indicate a detected press. Notice the first figure shows several detected presses, while the second figure only detects one. Figure 2 shows that my algorithm correctly tracks the finger gesture.
Mike Litchfield
on 30 Jun 2009 at 12:03 pm 1.Andrew Kun said …
Should you also interpolate between points to get a continuous curve?
on 06 Jul 2009 at 8:29 am 2.Mike Litchfield said …
I am currently looking into that idea. Since I do not know where the ‘lost’ touch is going when it is lost, I would have no data to plot to it. This is a valid idea though, to keep the continuity of the movement, so I will be exploring a prediction method where I could use previous movements to predict the future path if the touch is lost. Since the time period is also very small (50 ms) an error in the prediction would not likely cause major problems, and could even be backtracked.