Patent ID: 7778792

Claim:
A motion module for incorporation in a portable device, comprising: a processor module, including a processor and a processor readable memory disposed to store data and instructions for execution by said processor; a motion sensing module in electrical communication with the processor module, said motion sensing module including: an accelerometer disposed to provide an analog acceleration signal associated with one or more axes of motion of said portable electronic device; an analog to digital (A/D) converter disposed to receive said analog acceleration signal and generate a plurality of digital acceleration values; and a signal processing module disposed to generate, from said plurality of digital acceleration values, a plurality of relative velocity values and a plurality of relative position values, and store, in said memory, said plurality of relative velocity values and said plurality of relative position values; wherein the signal processing module includes: a first integrator module disposed to generate, based at least in part on said plurality of digital acceleration values, said plurality of relative velocity values; and a second integrator module disposed to generate, based at least in part on said plurality of relative velocity values, said plurality of relative position values; and wherein the signal processing module further includes a Kalman filter module disposed to: receive, at a Kalman filter input, said plurality of digital acceleration values, said plurality of relative velocity values, and said plurality of relative position values; apply a Kalman filtering process to said plurality of relative acceleration values, said plurality of relative velocity values, and said plurality of relative position values so as to provide a plurality of interpolated position values; and store said plurality of interpolated position values in said memory; and wherein the signal processing module further includes a vector quantization module disposed to: receive position calibration data, including a set of predefined positions; receive said plurality of interpolated position values; generate, based at least in part on said position calibration data and said interpolated position values, a first implied position value, where said first implied position value is based on one of said predefined positions; and store said first implied position value in said memory.