Received: from watserv1.uwaterloo.ca (watserv1.waterloo.edu) by karazm.math.UH.EDU with SMTP id AA06017 (5.65c/IDA-1.4.4 for ); Mon, 14 Oct 1991 17:41:36 -0500 Received: by watserv1.uwaterloo.ca id ; Mon, 14 Oct 91 18:35:47 -0400 Date: Mon, 14 Oct 91 18:35:47 -0400 From: Dave Stampe-Psy+Eng Message-Id: <9110142235.AA18567@watserv1.uwaterloo.ca> To: galt%peruvian@cs.utah.edu, lance@roi.ca41.csd.mot.com Subject: Re: simple code to get simple gestures Cc: glove-list@karazm.math.uh.edu > From glove-list-request@karazm.math.UH.EDU Mon Oct 14 15:44:19 1991 > To: galt%peruvian@cs.utah.edu > Subject: Re: simple code to get simple gestures > Cc: glove-list@karazm.math.uh.edu > From: Lance Norskog > > > Yes, Fred Brooks of the Pixel-Planes project said that predictive > tracking should work best. > > Graphics Gems II has a thing on predictive coding as compression technique. > Here's the idea: you have a state machine which reads a sample stream and > guesses the next sample, and output the difference between your guess > and the actual sample. This should give you lots of samples with low > values, suitable for Huffman or dictionary compression. I've been > itching to try this on sound samples. The article does it on pictures, > and shows the error output as a separate picture. It's an excellent > demonstration of the principle. > > A first attempt would track the slope of the last few samples, thus > extending the first derivative out. If you assume that the input > stream is delayed by X milliseconds, and it samples at half your > update rate, you can create a separate one-dimensional tracker > for each of (X, Y, Z, rot) and do a better job than drawing > from raw input. You can also reject weird inputs, and average > noisy ones. > > If you move your hand fast and then stop, the predictive tracking > will overshoot and come back to the resting place. Cest la vie. > > I'd say it's time to sample movements, run the output through > a statistics package, and figure out just what kind of error > you need to deal with. > > Lance Norskog > Sounds like a Kalman predictive filter. The question is, how much will the overshoots affect operator performance? If you're going to develop the code for such a filter, I hope you make several versions, using different delays. This would allow users to match the filter to their own system's video display, rendering and processing times. Isuggest multiples of 33 mS. Also, it would be interesting to set up a simple system using a "bar" cursor or other easy-to-draw symbol, and try out the effect of changing the filter coefficients. After all, we're getting into psychophysics here, and that is *not* an easy field to predict. I've noticed weird "viscous" effects using head-position to cursor feedback with a system delay of 50 mS or less. Addition of hysterisis of 1/6 visual degree stopped that, and reduced noise, but at the cost of some of the "reality" feel of the system. It's amazing how little it takes to make such feedback feel like a "tool" rather than an extension of the body. Dave Stampe