Received: from watserv1.uwaterloo.ca (watserv1.waterloo.edu) by karazm.math.UH.EDU with SMTP id AA06855 (5.65c/IDA-1.4.4 for ); Mon, 14 Oct 1991 21:05:44 -0500 Received: by watserv1.uwaterloo.ca id ; Mon, 14 Oct 91 21:58:04 -0400 Date: Mon, 14 Oct 91 21:58:04 -0400 From: Dave Stampe-Psy+Eng Message-Id: <9110150158.AA23815@watserv1.uwaterloo.ca> To: dstamp@watserv1.uwaterloo.ca, 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 A "Kalman filter" refers to any of a class of predictive filters. The simplest predictive filter is just a "highpass" type. What I gather from your talk of "states" is that you are referring to a "state-variable" type of filter. OK, enough of the technical terms. Basically, what you need to do is to look up some signal-processing or control textbooks. Alternatively, there should be some software available to generate your filter code given delays, etc. Now the bad news. This type of filter will always have overshoots and delays at any change of velocity of the glove. This means that the image of the glove will play catch-up when motion starts, and will continue moving after motion ceases, then go backwars to correct itself. This can be disconcerting to the user! The predictive filters also tend to increse noise in position. The "jitter" in the hi-res mode (if it is just a quick jump to the wrong position and back) can be removed at the cost of more delay-- just add a glitch detector to the glove data output. Alternatively, the derivative or highpass terms of the predictive filter can be limited, but this might cause weird effects during fast motions. From what I've read about flight simulators, the best way to find the correct filter coefficients is to compute them as usual, then get into an interactive program (using the glove to move a cursor), and test the "feel" of the system. Try several different sets of coefficients, then use the intuition you'll develop to tweak the program. Hope you can find some references that are more CS based, or sample code. All the stuff I have assumes familiarity with Laplace transforms and other scary stuff (typical engineering overkill). Dave Stampe