U.S. patent application number 12/236433 was filed with the patent office on 2009-05-28 for methods and systems for sensing equilibrium.
This patent application is currently assigned to iShoe. Invention is credited to Katherine E. Forth, Erez Lieberman, Ricardo Piedrahita, Qian Yang.
Application Number | 20090137933 12/236433 |
Document ID | / |
Family ID | 40670353 |
Filed Date | 2009-05-28 |
United States Patent
Application |
20090137933 |
Kind Code |
A1 |
Lieberman; Erez ; et
al. |
May 28, 2009 |
METHODS AND SYSTEMS FOR SENSING EQUILIBRIUM
Abstract
Systems and methods for monitoring equilibrium of a user are
presented. A stability monitoring device in a shoe insole area
utilizes pressure sensors to measure pressure information in
real-time. The pressure information is transmitted over an RF
network to a device for analyzing the pressure information and
calculating postural state information including the current
postural state, next postural state, and/or a range of postural
stability. The person or a third party may be notified if the
postural state information indicates an unstable state.
Additionally, the postural state information may be analyzed to
determine activity level of the user, diagnostic information, or
performance information. Metrics may be displayed by the system for
assisting physical therapy or training regimens.
Inventors: |
Lieberman; Erez; (Cambridge,
MA) ; Forth; Katherine E.; (Houston, TX) ;
Piedrahita; Ricardo; (Boulder, CO) ; Yang; Qian;
(Pembroke Pines, FL) |
Correspondence
Address: |
TOWNSEND AND TOWNSEND AND CREW, LLP
TWO EMBARCADERO CENTER, EIGHTH FLOOR
SAN FRANCISCO
CA
94111-3834
US
|
Assignee: |
iShoe
Cambridge
MA
|
Family ID: |
40670353 |
Appl. No.: |
12/236433 |
Filed: |
September 23, 2008 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
60990817 |
Nov 28, 2007 |
|
|
|
Current U.S.
Class: |
600/595 |
Current CPC
Class: |
A61B 5/6807 20130101;
A61B 5/1038 20130101; G16H 40/67 20180101; A61B 5/1036 20130101;
A61B 2562/046 20130101; A61B 5/4023 20130101; A61B 5/1123 20130101;
G01G 19/44 20130101; G06F 19/00 20130101; A61B 5/0022 20130101;
A61B 5/1116 20130101; G01G 23/3735 20130101; A61B 2562/0247
20130101; A61B 5/1117 20130101; A61B 5/6829 20130101; A61B 2503/40
20130101; A61B 5/1118 20130101 |
Class at
Publication: |
600/595 |
International
Class: |
A61B 5/103 20060101
A61B005/103 |
Claims
1. A system for determining postural stability comprising: a shoe
insole; one or more input sensors housed in the shoe insole,
wherein the one or more input sensors are configured to produce
pressure information proportional to mechanical pressure placed on
the one or more input sensors; a communications module housed
within the shoe insole and coupled with the one or more input
sensors, the communications module including a first communications
transceiver and configured to receive the pressure information from
the one or more input sensors and transmit the pressure information
using the first communications transceiver; a communications medium
coupled with the first communications transceiver, the
communications medium configured to transmit and receive
communications signals; and a computing device including a second
communications transceiver coupled with the communications medium,
wherein the computing device is configured to receive the pressure
information from the communications module using the second
communications transceiver and determine postural stability from
the pressure information.
2. The system of claim 1, wherein: the communications module
further comprises a buffer memory; and the communications module is
further configured to buffer the pressure information using the
buffer memory for a predetermined amount of time before
transmitting the pressure information using the first
communications transceiver.
3. The system of claim 1, wherein the one or more input sensors are
piezoelectric force sensors.
4. The system of claim 1, wherein the communications medium
comprises a wireless communications medium.
5. The system of claim 4, wherein the wireless communications
medium comprises a Bluetooth communications link.
6. The system of claim 1, wherein the computing device determines
postural stability using at least one of the following: a Hidden
Markov Model, a forward algorithm, a Viterbi algorithm, a
forwards-backwards algorithm, and a Baum-Welch algorithm.
7. The system of claim 1, wherein the shoe insole is one of a
medical scale or a mat.
8. A system for determining postural stability comprising: an
article of footwear including an insole portion; one or more input
sensors housed in the insole portion of the article of footwear,
wherein the one or more input sensors are configured to produce
pressure information proportional to mechanical pressure placed on
the one or more input sensors; a communications module including a
first communications transceiver, wherein the communications module
is housed in the article of footwear, coupled with the one or more
input sensors, and configured to receive the pressure information
from the one or more input sensors and transmit the pressure
information using the first communications transceiver; and a
computing device including a second communications transceiver,
wherein the computing device is configured to receive the pressure
information from the communications module using the second
communications transceiver and the computing device contains
instructions on a computer-readable medium to determine postural
stability from the pressure information.
9. The article of footwear of claim 8 wherein the communications
module further includes a buffer memory; and the communications
module is further configured to buffer the pressure information in
the buffer memory for a predetermined amount of time before
transmitting the pressure information using the first
communications transceiver.
10. The article of footwear of claim 8, wherein the article of
footwear is a horseshoe.
11. A method for determining postural stability of a person,
comprising: providing an article of footwear worn by the person
with an insole portion; providing one or more pressure sensing
transducers in the insole portion of the article of footwear;
reading the one or more pressure sensing transducers; generating
pressure information proportional to the mechanical pressure placed
on the one or more pressure sensing transducers; transmitting the
pressure information; receiving the transmitted pressure
information; and calculating postural state information for the
person based on the received pressure data information.
12. The method of claim 11, further comprising: notifying the
person if the postural state information indicates a predetermined
condition, wherein the predetermined condition includes one of the
following: a stable postural state, an unstable postural state, and
a partially stable postural state.
13. The method of claim 11, further comprising: notifying a third
party monitoring person if the postural state information indicates
a predetermined condition, wherein the predetermined condition
includes one of the following: a stable postural state, an unstable
postural state, and a partially stable postural state.
14. The method of claim 13, wherein the third party monitoring
person is one of a doctor, a physician assistant, a nurse, a
physical therapist, a personal trainer, or a recreation
therapist.
15. A method for determining postural stability in a person, the
method comprising: receiving a first pressure information from one
or more pressure sensors, the first pressure information
proportional to the mechanical pressure placed on the one or more
pressure sensors; storing the first pressure information;
calculating a range of postural stability for the person from the
first pressure information; receiving a second pressure information
from the one or more pressure sensors, the pressure information
proportional to the mechanical pressure placed on the one or more
pressure sensors; calculating a current postural state for the
person based on the second pressure information; and calculating a
next postural state for the person based on the current postural
state and the range of postural stability.
16. The method of claim 15, wherein calculating the next postural
state is further based on a predetermined probability of
transitioning between postural states.
17. The method of claim 15, further comprising: notifying the
person if the next postural state matches a predetermined
condition, the predetermined condition one of a stable postural
state, an unstable postural state, or a partially stable postural
state.
18. The method of claim 15, further comprising: notifying a third
party monitoring person if the next postural state matches a
predetermined condition, the predetermined condition one of a
stable postural state, an unstable postural state, or a partially
stable postural state.
19. A system for determining postural stability of a person, the
system comprising: an article of footwear, said article of footwear
including: an insole portion, one or more input sensors for
measuring pressure housed in the insole portion, wherein the one or
more input sensors are configured to produce pressure information
proportional to mechanical pressure placed on the one or more input
sensors, and a communications module including a first wireless
communications transceiver, wherein the communications module is
housed in the article of footwear, coupled with the one or more
input sensors, and configured to receive the pressure information
from the one or more input sensors and transmit the pressure
information using the first wireless communications transceiver; a
communications medium coupled with the first wireless
communications transceiver; a second wireless communications
transceiver coupled with the communications medium and configured
to receive the pressure information from the communications module;
a stability processing device electrically coupled with the second
wireless communications transceiver and configured to acquire the
pressure information from the second wireless communications
transceiver and determine postural stability information from the
pressure information; and a display device electrically coupled
with the stability processing module, configured to display the
postural stability information.
20. The system of claim 19, wherein the second wireless
communications transceiver, the stability processing device, and
the display device are each comprised in a computing device.
21. The system of claim 19, wherein the stability processing device
comprises a server computer.
22. The system of claim 19, wherein the second communications
transceiver communicates with the stability processing device via a
computer network.
23. The system of claim 19, wherein the stability processing device
communicates with the display device via a computer network.
24. The system of claim 19, wherein the second communications
transceiver and the display device are each comprised in a
computing device, the computing device coupled with the stability
processing device via a computer network.
25. The system of claim 19, wherein: the stability processing
device is further configured to determine postural analysis
information, the postural analysis information comprising one or
more of the following: activity information, performance
information, fatigue information, diagnostic information, a
statistic, a score, and a simulation; and the display device is
further configured to display the postural analysis
information.
26. A scale for determining postural stability of a person, the
scale comprising: a body portion; one or more input sensors for
measuring pressure housed in the body portion, wherein the one or
more input sensors are configured to produce pressure information
proportional to mechanical pressure placed on the one or more input
sensors; a stability processing module housed in the body portion,
the stability processing module configured to analyze the pressure
information and determine based on the pressure information a
person's postural stability; and a communications module including
a first wireless communications transceiver, wherein the
communications module is housed in the scale, coupled with the
stability processing module, and configured to receive the
determined postural stability and transmit the determined postural
stability using the first wireless communications transceiver.
27. The scale of claim 26, further comprising a display device
coupled with the body potion, the display device configured to
display the determined postural stability to the person.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is related to U.S. Provisional Application
No. 60/990,817 (Attorney Docket No. MIT-007PR), filed Nov. 28,
2007, hereby expressly incorporated by reference in its entirety
for all purposes.
FIELD OF THE INVENTION
[0002] The present invention relates, in general, to sensing
equilibrium in a person, and more particularly, to using sensors in
footwear to sense and display equilibrium information.
BACKGROUND OF THE INVENTION
[0003] While some people have excellent posture, many people have
poor posture. Poor posture can lead to postural instability as a
person ages and/or when the person is injured. Other causes for
postural instability include the return of a person from a zero
gravity environment, a lack of exercise, and/or an injury. While a
person's postural stability may be measured in a lab environment
currently, the high cost, limited availability, and inability to
gather data throughout daily activities limits access to such
devices for posture measurement for a majority of the population.
As such, analysis for many segments of the population that would
otherwise benefit from detection and correction of postural
stability is not obtained. Hence, there is a need for improved
methods and systems in the art.
BRIEF SUMMARY OF THE INVENTION
[0004] Embodiments of the present invention provide devices,
systems, and methods for determining equilibrium in a user. Some
embodiments of the present invention comprise a device including
input sensors and a communications module. In one embodiment the
input sensors and the communications module are housed in a shoe
insole. In an alternate embodiment, the input sensors and the
communications module are housed in an article of footwear such
that the input sensors are in the insole portion of the article of
footwear. Embodiments of the communications module may be
configured to read the input sensors and transmit the sensor
information to an external device over a communications link such
as, for example, a Bluetooth wireless network.
[0005] Some embodiments of the present invention describe systems
comprising an article of footwear including pressure sensors, a
first communications module coupled with the pressure sensors, a
second communications module coupled with the first communications
module, a stability processing module, a postural analysis module,
and a display device. The first communications module reads the
pressure sensors and transmits the pressure information to the
second communications module. The second communications module
receives the pressure information and relays the information to the
stability processing module. The stability processing module
determines postural stability metrics and may display the postural
stability metrics on the display device.
[0006] In one embodiment, a method for determining equilibrium in a
user may include using pressure sensors to sense pressure at
different locations under a persons feet. The method may further
include transmitting the pressure information and receiving the
pressure information. The method may then include calculating the
current postural state, the next postural state, and/or a range of
postural stability. Further, the method may include notifying the
person or a third party monitoring person if the next postural
state meets a predetermined condition.
[0007] In an alternate embodiment a method for determining
equilibrium in a user may include the steps of receiving pressure
information from one or more pressure sensors and calculating a
range of postural stability from the pressure information. The
method may further include receiving additional pressure
information from the pressure sensors and calculating the next
postural state of a person using the pressure information and the
range of postural stability. Further, the method may include
notifying the person and/or a third party monitoring person if the
next postural state meets a predetermined condition.
BRIEF DESCRIPTION OF THE DRAWINGS
[0008] FIG. 1 is a block diagram illustrating a system for
measuring postural stability using a pressure sensing device,
according to one embodiment of the present invention.
[0009] FIG. 2 is a block diagram illustrating a pressure sensing
device in a shoe insole, according to one embodiment of the present
invention.
[0010] FIG. 3 is a block diagram illustrating components of a
communications module used in a pressure sensing apparatus,
according to one embodiment of the present invention.
[0011] FIG. 4A is a block diagram illustrating example equilibrium
safe zones of postural stability, according to one embodiment of
the present invention.
[0012] FIG. 4B is a block diagram illustrating an example
punctuated equilibrium, according to one embodiment of the present
invention.
[0013] FIG. 5 is a block diagram illustrating a state diagram for
calculating the next postural state from one or more past postural
states, according to one embodiment of the present invention.
[0014] FIG. 6 is a block diagram illustrating a system for
measuring postural stability using a pressure sensing shoe insole,
according to one embodiment of the present invention.
[0015] FIG. 7 is a block diagram illustrating a system for
measuring postural stability using a pressure sensing shoe insole,
according to one embodiment of the present invention.
[0016] FIG. 8 is a block diagram illustrating a system for
measuring postural stability using a pressure sensing scale or mat,
according to one embodiment of the present invention.
[0017] FIG. 9 is a block diagram illustrating a pressure sensing
device contained in a shoe, according to one embodiment of the
present invention.
[0018] FIG. 10 is a block diagram illustrating a pressure sensing
device contained in a horseshoe, according to one embodiment of the
present invention.
[0019] FIG. 11 is a block diagram illustrating a shoe insole
apparatus for measuring postural stability, according to one
embodiment of the present invention.
[0020] FIG. 12 is a block diagram illustrating methods for
measuring equilibrium in a user and notifying the user of unstable
posture, according to one embodiment of the present invention.
[0021] FIG. 13 is a block diagram illustrating methods for
determining the next postural state of a person based on pressure
information, according to one embodiment of the present
invention.
[0022] FIG. 14 is a block diagram illustrating components of a
computing device used in a system for measuring postural stability,
according to one embodiment of the present invention.
[0023] In the appended figures, similar components and/or features
may have the same reference label. Further, various components of
the same type may be distinguished by following the reference label
by a letter designation that distinguishes among the similar
components. If only the first reference label is used in the
specification, the description is applicable to any one of the
similar components having the same first reference label.
DETAILED DESCRIPTION OF THE INVENTION
[0024] In general, aspects of the present invention relate to
methods and systems for monitoring a person's postural state (e.g.,
standing, falling, etc.). The postural state information can be
used to notify the person and/or a third party monitoring person if
the person's postural state indicates a stable state, an unstable
state, compromised state (e.g., drunkenness, hypoxia, sprained
appendage, broken appendage, etc.) and/or a partially stable state.
Additionally the postural state information can be used to
calculate metrics regarding postural stability and display the
metrics to the person and/or a third party.
[0025] Specific details are given in the description to provide a
thorough understanding of various embodiments of the present
invention. It will be apparent, however, to one skilled in the art
that embodiments of the present invention may be practiced without
some of these specific details. In other instances, well-known
structures and devices will be shown without unnecessary detail in
order to avoid obscuring the embodiments.
[0026] The ensuing description provides exemplary embodiments only
and is not intended to limit the scope, applicability, or
configuration of the disclosure. Rather, the ensuing description of
the exemplary embodiments will provide those skilled in the art
with an enabling description for implementing an exemplary
embodiment. It should be understood that various changes may be
made in the function and arrangement of elements without departing
from the spirit and scope of the invention as set forth in the
appended claims.
[0027] Furthermore, circuits, systems, networks, processes, and
other components may be shown as components in block diagram form
in order not to obscure the embodiments in unnecessary detail. In
other instances, well-known circuits, processes, algorithms,
structures, and techniques may be shown without unnecessary detail
in order to avoid obscuring the embodiments.
[0028] Also, it is noted that individual embodiments may be
described as a process which is depicted as a flowchart, a flow
diagram, a data flow diagram, a structure diagram, or a block
diagram. Although a flowchart may describe the operations as a
sequential process, many of the operations can be performed in
parallel or concurrently. In addition, the order of the operations
may be re-arranged. A process is terminated when its operations are
completed, but could have additional steps not included in a
figure. A process may correspond to a method, a function, a
procedure, a subroutine, a subprogram, etc. When a process
corresponds to a function, its termination can correspond to a
return of the function to the calling function or the main
function.
[0029] According to one embodiment of the present invention, FIG. 1
is exemplary of a system 100 for monitoring a person's postural
stability. In the exemplary embodiment, the system comprises
pressure sensing devices 120a and 120b (generally 120) worn by a
person 110, and a computing device 140. Pressure sensing devices
120 measure and transmit pressure information over a communications
link 130 to computing device 140. In one embodiment pressure
sensing devices 120 are piezoelectric force sensors. In some
embodiments, computing device 140 is a special purpose device
designed to be used in stability monitoring system 100. In
alternate embodiments computing device 140 is a general purpose
device such as a personal computer, laptop, PDA or smart phone.
Merely by way of example, communications link 130 is shown as a
radio frequency (RF) link, but it will be appreciated that
communications link may comprise any type of wired or wireless link
known in the art.
[0030] FIG. 2 illustrates one embodiment of pressure sensing
devices 120. In the exemplary embodiment, pressure sensing devices
120 comprise shoe insoles 210a and 210b (generally 210) which
include input sensors 220a and 220b (generally 220) and
communication modules 240a and 240b (generally 240). In an
alternative embodiment, instead of shoe insoles a scale (e.g., a
medical scale), a mat, a ski boot, a ski, or any other footwear may
be used to house sensors 220a and 220b as well as communications
modules 240a and 240b. The input sensors 220 measure sensor
information (e.g. pressure information, etc.). The sensor
information is transmitted from the input sensors 220 to the
communications modules 240. For example the input sensors 220 may
be pressure sensors, and transmission from the input sensors 220 to
the communications module 240 can be via wires (not shown) embedded
in the insole 210. Merely by way of example, the input sensors may
be FlexiForce.RTM. Piezoresistive Load/Force Sensors made by
Tekscan, Inc., global positioning sensors (GPS), accelerometers,
gyrometers, etc.
[0031] In one embodiment, a mat and/or medical scale may house
sensors 220a and 220b as well as communications modules 240a and
240b in order to capture and transmit pressure data and, therefore,
gather equilibrium data about a person, according to aspects of the
present invention. For example, a patient with balance,
coordination, and other equilibrium problems may be placed on the
medical scale or mat, and a medical professional may monitor the
patient's equilibrium. The medical professional would receive
detailed real-time information about the patient's balance,
coordination, and equilibrium, and accordingly make a medical
diagnosis. Furthermore, the medical professional can take
corrective action based on the gathered data to fix problems with
the patient's balance, coordination, and/or equilibrium.
Furthermore, each of the embodiments of the present invention
described herein can be implemented using such a mat or scale
described above as opposed to using footwear, or the like.
[0032] The shoe insoles 210 may be manufactured from suitable
insole materials including, without limitation, foam, rubber,
plastic, cork, and/or other materials suitable for shoe insole
construction. It will be appreciated that the material selection
may be determined from factors, including without limitation,
durability, flexibility, and/or protection of internal
components.
[0033] The communications modules 240 may read the input sensors
220, generate sensor information, and transmit the sensor
information to the computing device 140. The communications modules
240 may optionally buffer the sensor information before
transmitting it to the external device. The communications modules
240 may transmit the data to computing device 140 using
communications link 130. The communications link may be a Radio
Frequency link (RF), an infrared link, a Wi-Fi link, a USB link, a
Firewire link, or any other wired or wireless link known in the
art. Additionally, the communications modules may optionally
perform other processing steps on the sensor information before
transmitting the sensor information to the computing device 140
(e.g. linearity correction, data transform, etc.).
[0034] While the exemplary shoe insoles shown in FIG. 2 have two
input sensors 220 per insole 210, one in the forefoot and one in
the heel, it may be desirable to have any number of input sensors
in each insole, placement of input sensors in a variety of
locations, and possibly different numbers of input sensors in each
insole. It may be appreciated that the number of input sensors 220
used in the pressure sensing device 120 may determine the
dimensionality of information from the input sensors 220. For
example, one pressure sensor in each insole would provide one
dimension of pressure information indicating center of mass in the
left to right direction, while two pressure sensors per insole, one
in the heel and one in the forefoot would provide two dimensions of
pressure information indicating the center of mass relative to both
the left to right and anterior to posterior directions. It will be
appreciated by one skilled in the art that sensor number and
position may be adapted for various applications that require
different dimensionality of postural stability information.
[0035] FIG. 3 shows a simplified block diagram of one embodiment of
communications module 240. As illustrated, communications module
240 may contain one or more sensor biasing circuits 305, one or
more sensor measuring circuits 310, processing circuit 315, and
communications circuit 320. The communications module 240 also may
optionally include program memory 325 and/or buffer memory 330.
Sensor biasing circuit 305 may contain amplifiers and/or other
active or passive components required to provide excitation,
linearity compensation, and/or gain of the input sensors 220 for
the required sensitivity. Communications module 240 may have one
sensor biasing circuit for each input sensor 220. It will be
appreciated that communications module 240 may comprise one or more
integrated circuits (e.g. microcontroller, etc.), and/or discrete
components on a printed circuit board, a flexible printed circuit
board, or other electronic packaging technology. A power source
such as a battery may be attached by any suitable arrangement for
providing power to the circuits of the communications module 240.
In addition, energy harvesting may be used as an alternative energy
source.
[0036] In the exemplary embodiment described above, sensor
measuring circuit 310 samples the output of the input sensors 220
driven by sensor biasing circuits 305 and produces digital data
values. Sensor measuring circuit 310 may have an internal timing
circuit to determine the sampling frequency, or alternately the
sampling frequency may be determined by processing device 315.
Processing circuit 315 receives the digital data values from the
sensor measuring circuit 310, can write and read pressure data
values from buffer memory 330, and transfer pressure data values to
communications circuit 320. Processing circuit 315 may write the
pressure data values to buffer memory 330 for a predetermined
period of time, or until buffer memory 330 has received a certain
quantity of pressure data values, at which time processing circuit
315 may read a quantity of pressure data values from buffer memory
330 and transfer the quantity of pressure data values to
communications circuit 320. Communications circuit 320 may receive
the pressure data values from processing device 315 and transmit
the pressure data values over communications link 130 to computing
device 140. For example, buffer memory 330 may be a 256 MB memory,
and processing circuit 315 may write the pressure data values to
buffer memory 330 until buffer memory 330 is at full capacity or
close to full capacity (e.g. 90% capacity, 95% capacity, etc.), at
which time processing circuit 315 reads the pressure data values
previously written to buffer memory 330 and transfers the pressure
data values to communications circuit 320 to be transmitted over
communications link 130 to computing device 140. It will be
appreciated that design considerations such as buffer memory size,
power consumption, system cost, and/or communications link
parameters may be considered in determining the quantity of
pressure data values stored and/or the period of time that data
values are stored in buffer memory 330 before the transmission of a
quantity of data values by communications circuit 320.
[0037] Sensor measuring circuit 310 may contain analog to digital
converters (ADCs), timers, and other discrete or integrated
components used to convert the analog output of the input sensors
220 to digital data values. Processing circuit 315 can comprise any
general purpose processor, a microprocessor, and/or other suitably
configured discrete or integrated circuit elements. Program memory
325 may be any type of non-volatile storage medium including
solid-state devices such as EPROM, EEPROM, FLASH, MRAM, or similar
components for data storage. Buffer memory 330 may be any type of
volatile or non-volatile storage element including solid-state
devices such as DRAM, SRAM, FLASH, MRAM, or similar components for
data storage. Communications circuit 320 may transmit and receive
data over any type of communications link, for example,
communications circuit 320 may comprise a wireless transceiver
utilizing an RF network such as a Bluetooth network. Communications
circuit 320 may include authentication capability to limit transfer
of pressure information from insoles of one person to only
authorized devices. Additionally communications circuit 320 may
encrypt data before transmission in order to prevent unauthorized
access of the information.
[0038] In an illustrative embodiment of stability measurement
device 120, the input sensors 220 are piezoresistive force sensors
connected by wires in insole 210 to the communications module 240.
The communications module 240 may contain sensor biasing circuits
305 which provide excitation voltage and amplification to the
piezoresistive force sensors 220, resulting in a force to voltage
conversion. Sensor measuring circuits 310 may sample the analog
sensor output at a sampling rate of 100 Hz and produce digital
pressure information. The digital pressure information may be
stored in a non-volatile buffer memory 330 and periodically read by
processing circuit 315 and transmitted by communications circuit
320 to computing device 140 over a Bluetooth network 130. In
alternate embodiments, other types of input sensors 220 may be
used, different sample rates may be used, another type of
communications link 130 may be used, other types of buffer memory
330 may be used, etc. as may be desirable in a particular
embodiment.
[0039] Computing device 140 contains instructions on a machine
readable medium to receive the pressure information from the
pressure sensing device 120 and determine postural state
information. In some examples, computing device 140 determines the
current postural state by calculating the center of force of the
person. Additionally computing device 140 may calculate the next
postural state. Computing device 140 may utilize a Hidden Markov
Model (HMM) calculation to determine the current and/or next
postural state. The HMM calculation utilizes a set of probabilities
for each postural state to determine the next postural state. If
the next postural state is stable, then computing device 140
continues to monitor the person. If the next postural state is
unstable, then computing device 140 may notify and/or alert the
person and/or a third party of such instability.
[0040] In some examples, the determination of the next, current,
and/or past postural states utilizes a posterior decoding
algorithm, a Bayesian segmentation, a graphical model, a
choice-point method, and/or any other type of algorithm that
classifies time periods into static and/or dynamic periods. A
dynamic Bayesian network can be, for example, utilized to determine
the next and/or past postural states based on the current postural
state.
[0041] In other examples, the determination of the next, current,
and/or past postural states utilizes a forward algorithm, a Viterbi
algorithm, a forwards-backwards algorithm, Baum-Welch algorithm,
and/or any other type of algorithm that classifies time periods
into static and/or dynamic periods. The forwards-backwards
algorithm or Viterbi algorithm can be, for example, utilized to
determine the probability of the next state (e.g., dynamic,
equilibrium). The Baum-Welch algorithm can be, for example,
utilized to determine the range of postural stability and/or the
probabilities of transitioning between states. In some examples,
the HMM calculation determines the next state, the current state,
and/or one or more past states (e.g., five, ten). The HMM
calculation can be, for example, utilized to determine the
probabilities of the sequence of the past states, the current
state, and/or the next state. The sequence of the past states can
be, for example, utilized to calculate the probability of the next
state.
[0042] The computing device 140 may perform postural analysis using
the postural state information to monitor, track, and/or notify the
person regarding their postural states. The postural analysis can,
for example, comprise storing the postural state information for
historical analysis by the person being monitored and/or a third
party monitoring person (e.g. doctor, physical therapist, personal
trainer, etc.). In some examples the postural analysis can comprise
determining metrics including activity information (e.g. walking,
running, sitting, equilibrium and dynamic states (which highlight
the punctuated nature of, for example, standing), etc.),
performance information (e.g., time spent walking, time spent
running, etc.), and/or fatigue information (e.g. time spent close
to outer range of postural stability, time spent close to center of
postural stability, etc.). In other examples the postural analysis
can comprise generating diagnostic information (e.g., limp,
lameness, neural condition, muscular condition, vision-related
condition, etc.), a statistic (e.g. percentage of time running,
percentage of time sitting, etc.), a score (e.g. number of falls
per day, average number of falls per month, etc.), a simulation
(e.g. with increased physical therapy will the number of falls
decrease, with increased training can the athlete distribute
his/her mass better, etc.), and/or any other type of metric based
on the stored postural state information. The computing device 140
can display the metric information, the statistic, the score,
and/or the simulation for use by the person being monitored and/or
the third party utilizing the display device. The computing device
can alternately store the metric information, the statistic, the
score, and/or the simulation for further analysis.
[0043] In some examples, computing device 140 determines the range
of postural stability for a person utilizing pressure sensing
device 120. The range of postural stability can be, for example,
unique for the person since the range of postural stability can be
affected by age, activity level, postural stance, weight, medical
history, and/or any other factor that can affect a person's
posture. In other examples, the range of postural stability is
determined based on sensor information which is stored by the
computing device 140. The range of postural stability can be
determined, for example, by processing the stable postural states
to determine the range of stable postural states. The determination
of the range of the postural stability can occur, for example, in
real-time while the user is wearing the pressure sensing device
120. In some examples, the range of postural stability is based on
a person's center of gravity. A person's center of gravity can
vary, for example, in a range because a human can be modeled as an
inverted pendulum in which an upright stance is an unstable
equilibrium. Since small natural center of mass deviations (e.g.,
breathing, limb movements, head movement) can disrupt the
equilibrium, then the pendulum (i.e., the person) can tip over
without appropriate sensory-motor control. Generally, standing
posture utilizes subconscious sensory feedback mechanisms (e.g.,
vision, tactile sensations, vestibular organs) to maintain upright
stance (i.e., a stable postural state). An advantage of determining
the postural stability of a person is that the person can have a
real-time readout of their capacity to balance at any given point
in time. Alternatively, the device may be used to determine
postural stability and balance in robots, animals (e.g., horses,
donkeys), etc.
[0044] Although FIG. 1 illustrates the computing device 140
associated with the person 110 that is associated with the sensor
information, the computing device 140 can be utilized by a third
party (e.g. doctor, physical therapist, personal trainer, etc.) to
track the postural states of the person (e.g., a patient, an
athlete, etc.). In one embodiment, the computing device 140 may be
used by the third parties to track the progress of a patient as the
patient relearns and/or refines skills such as standing, walking,
and/or running.
[0045] In some examples, the range of postural stability is
pre-determined for the person based on preset parameters. For
example, there can be preset parameters based on a person's age,
weight, height, activity level, and/or any other type of parameter
associated with posture. In some examples, the range of postural
stability is a global optimum. The global optimum indicates, for
example, that there is a single optimal point for upright posture.
If a person is not at the optimum, then the person's body always
directs the person towards the optimum.
[0046] In other examples, the range of postural stability is a safe
zone. FIG. 4A illustrates an example safe zone 405 with center of
force from left-foot to right-foot plotted on the X-axis and center
of force in the anterior to posterior direction plotted on the
Y-axis. The safe zone can be, for example, a zone of upright
posture. Inside this zone, a person is stable with regard to
postural stability and a person moves around this zone at random.
Every person can, for example, have a safe zone. The safe zone for
every person can be, for example, unique from other safe zones as
illustrated by safe zones 410, and 415 for other persons.
[0047] In some examples, the range of postural stability is a
punctuated equilibrium. The punctuated equilibrium can be, for
example, a safe zone with a constant turnover of transient
equilibria. The transient equilibria form, persist, and dissipate
following control failure (e.g., not in equilibrium, including
falling down). Following a control failure, a new equilibria forms
and control is restored. FIG. 4B illustrates an exemplary
punctuated equilibrium 420. In punctuated equilibrium 420, a first
transient equilibria 430 forms, persists, and dissipates through
dynamic trajectory 435, momentarily leaving punctuated equilibrium
420, but returning to a second transient equilibria 440.
Subsequently, the second transient equilibria 440 dissipates
through dynamic trajectory 445, leading to a third transient
equilibria 450. Third transient equilibria 450 persists and
dissipates through dynamic trajectory 455 leading to escape from
punctuated equilibrium 420. Furthermore, dynamic trajectories may
lead to new equilibria (i.e., "escape" trajectories) and while
other dynamic trajectories lead back to the old equilibrium (i.e.,
non-escape dynamic trajectories, or "return" trajectories). One way
to determine the difference between the two types of dynamic
trajectories is that if a dynamic trajectory starts and ends in
roughly the same place, then it is a "return" trajectory, otherwise
it is an "escape" trajectory.
[0048] It may be desirable to determine the probabilities of
transition between postural states. The probabilities can be, for
example, determined based on the stored sensor information and/or
the range of postural stability. For example, the HMM calculation
utilizes various states (e.g., current state, one or more past
states) and the probabilities of the hidden states (e.g., current
state, one or more past states) to determine the next postural
state. FIG. 5 illustrates an example flowchart for determining the
probability of the next postural state, according to one embodiment
of the present invention. For example, if FIG. 5 is utilized in
conjunction with Table 1 and Table 2, then the probability of the
next postural state can be determined. S.sub.i,
S.sub.i+1,S.sub.i+2, and S.sub.i+3 represent the states and
O.sub.i, O.sub.i+1, O.sub.i+2, and O.sub.i+3 represent the possible
observations.
TABLE-US-00001 TABLE 1 Emission Probability S.sub.i Equilibrium
Dynamic O.sub.i Fast Velocity 0.2 0.7 Slow Velocity 0.8 0.3
TABLE-US-00002 TABLE 2 Transition Probability S.sub.i Equilibrium
Dynamic S.sub.i Equilibrium 0.98 0.02 Equilibrium 0.32 0.68
[0049] In some examples, the observation O.sub.i 510 is utilized
with the past states (e.g., S.sub.1-1, S.sub.i-2, S.sub.i-3, etc.
(not shown)) and the probabilities of the sequence of the past
states to determine the probability of the current state S.sub.i
505. The probabilities of the observation O.sub.i 510 in the
emission probability, Table 1, and the transition probability,
Table 2, can be, for example, utilized together to determine the
probability of the current state S.sub.i 505 and/or the next state
S.sub.i+1 515. For example, if the past four states were in
equilibrium, then the probability that the current state will stay
in equilibrium, the probability that the current state will change
to dynamic, and the probability of the state associated with the
observation are all utilized to determine the current state and/or
the next state. As another example, if the sequence of the past
four states is equilibrium, dynamic, equilibrium, and equilibrium,
then the probability of these transitions in relation to each
other, the probability of the current state changing or staying the
same (in this example, equilibrium), and the probability of the
state associated with the observation are utilized to determine the
current state and/or the next state. An advantage is that the
context of the transitions and/or no transitions between the past
states is utilized to determine the next state thereby providing
the calculation with a history. In some examples, the dynamic state
represents three possible outcomes. The three possible outcomes are
return to present equilibrium, transition to new equilibrium, or
falling down. In other examples, the observations include sitting,
standing, kneeling, lying down, falling, and/or any other postural
position of a person. In yet other examples, the observations
(e.g., O.sub.i) include any type of observation of postural state
(e.g., falling, standing, running, walking, etc.). In some
examples, velocity includes the center of mass velocity for the
structure. The center of mass velocity can be, for example,
measured by the input sensors (e.g., pressure sensors). The slow
velocity and fast velocity can be, for example, relative such that
what is slow for one person is fast for another, slow at one time
is fast at another, etc.
[0050] As another example, the HMM calculation utilizes various
states and the probabilities of the next hidden state to determine
the next postural state. For example, if FIG. 5 is utilized in
conjunction with Table 3 and Table 4, then the probability of the
next postural state can be determined. In some examples, the
computing device 140 analyzes the range of postural stability to
determine the current postural state and/or the next postural
state. If the received pressure information is within set
parameters of the range (e.g., 25% to 75%, 10% to 90%), then the
stability processing module will determine that the next postural
state is equilibrium (e.g., equilibrium running, equilibrium
walking, equilibrium standing, etc.). If the received pressure
information is not within the set parameters of the range, then the
stability processing module will determine that the next postural
state is dynamic (e.g., dynamic falling, dynamic walking, dynamic
standing, etc.). In other examples, the probabilities of two or
more possible next postural states are the same and/or
substantially similar, so the next postural state cannot be
determined. In these examples, the computing device 140 processes
the input information received from the input sensors, the range of
postural stability, and/or the current postural state to determine
the next postural state. In some examples, the computing device 140
processes the input information received from the input sensors,
the range of postural stability, the current postural state, and/or
the next postural state to determine if activity (e.g., alarm,
email, notification, etc.) should be initiated based on the
processing. In other examples, the processing applies one or more
rules to determine if a condition occurs. For example, the person
entered a dynamic state more than ten times in a thirty minute
period. As another example, the person has been in a dynamic state
for 75% of the time over the past twenty four hours. The rules can
be, for example, predetermined (e.g., set of rules based on age,
set of rules based on a medical condition, etc.), automatically
generated (e.g., the person is usually in equilibrium 90% of the
time in a two hour period so any percentage less than 90% in a two
hour period sends an email to the person's caregiver, etc.), and/or
entered by the user or a third party. The automatically generated
rules can be, for example, based on individual characteristics
(e.g., specific percentage of state over time, number of times in
dynamic state per hour, etc.), general characteristics (e.g., age
range, medical condition, etc.), and/or any other metric. The
activity that is initiated can be, for example, setting off an
alarm, notifying the person, notifying a third party (e.g., sending
an email to the doctor, sending a text message to the caregiver,
etc.), and/or any other type of notification and/or alarm.
TABLE-US-00003 TABLE 3 Emission Probability S.sub.i Dynamic
Equilibrium Standing Standing Walking Running O.sub.i Fast Gait and
0.15 0.01 0.04 0.60 Fast Velocity Fast Gait and 0.20 0.03 0.30 0.06
Slow Velocity Slow Gait and 0.40 0.01 0.06 0.32 Fast Velocity Slow
Gait and 0.05 0.05 0.60 0.02 Slow Velocity Slow Gait and 0.20 0.30
0.00 0.00 No Velocity No Gait and 0.00 0.60 0.00 0.00 No
Velocity
TABLE-US-00004 TABLE 4 Transition Probability S.sub.i+1 Dynamic
Equilibrium Standing Standing Walking Running S.sub.i Dynamic 0.60
0.30 0.05 0.05 Standing Equilibrium 0.25 0.60 0.10 0.05 Standing
Walking 0.20 0.05 0.60 0.15 Running 0.12 0.10 0.18 0.60
[0051] FIG. 6 illustrates an alternative embodiment for the present
invention of a system 600 for utilizing pressure sensing devices
120 to determine a user's postural state and optionally display
information regarding the user's postural state. In pressure
monitoring system 600, pressure sensing devices 120 measure and
transmit pressure information over an RF network link 130 to
computing device 140. Computing device 140 is coupled via a network
605 to a server 620 and a user computer 610. The server 620 is
optionally coupled with a database 615 either directly or via the
network 605. Computing device 140 may determine postural state
information including next, current, and/or past postural states
and communicate the postural state information to the server 620
via the network 605. The server 620 may perform postural analysis
using the postural state information to monitor, track, and/or
notify the person regarding their postural states. The postural
analysis may comprise for example, storing the postural state
information for historical analysis by the person being monitored
and/or a third party monitoring person (e.g. doctor, physical
therapist). The server 620 may notify the person being monitored
and/or a third party monitoring person by communicating messages
with the computing device 140 or the user computer 610.
[0052] In some embodiments server 620 is a web server and the
network 605 is the Internet. The web server 620 receives the
pressure information from the computing device 140 via the Internet
605. A web server application program running on web server 620 may
determine postural state information and perform postural analysis.
The postural state information (e.g., previous postural state,
current postural state, next postural state, etc.) or postural
analysis information (e.g., diagnostic information, statistics,
performance information, etc.) may be viewed on a device connected
to the Internet (e.g. user computer 610, computing device 140,
etc.) and including a web client application such as a web browser
by the person utilizing pressure sensing devices 120 and/or a third
party monitoring person.
[0053] The advantages of transferring more of the computing
functionality from computing device 140 to server 620 include, for
example, simplifying the computing requirements of computing device
140, centralizing the data management and processing, and allowing
ease of updating of software components because only the server
application program may need to be updated instead of software
residing on a large number of separate computing devices. It will
be appreciated that the computing functionality required for
determining postural state information, performing postural
analysis, and displaying postural state information may be
accomplished by a number of computing devices communicating via a
network or a single stand-alone computing device as the application
requires.
[0054] FIG. 7 illustrates another alternative embodiment of the
present invention of a system 700 for utilizing pressure sensing
devices 120 to determine a user's postural state and optionally
display information regarding the user's postural state. System 700
shows pressure sensing devices 120 communicating to a network 605
through a network access point 725. Pressure sensing devices 120
may communicate to network access point 625 utilizing an RF network
link 130 such as Bluetooth, WiMax, any of the suite of IEEE 802.11
protocols, or any other standard or custom wireless link protocol.
Network access point 725 communicates with network 605 through any
suitable wired or wireless network connection. Thus, through the
network 605 pressure sensing devices 120 can communicate to a user
computer 610 or a server 620. Determining postural state
information and performing postural analysis may be accomplished by
either user computer 610 or server 620. The person being monitored
and/or a third party monitoring person may be notified by
communicating messages with the user computer 610.
[0055] FIG. 8 illustrates an alternative embodiment of the present
invention of a system 800 for using a scale or mat device to
determine a user 110's postural state and optionally display
information regarding the user 110's postural state. Alternative to
using a shoe to capture pressure data and ultimately calculate a
user's stability, balance, posture, etc., a scale (or mat) 805 may
be used. In one embodiment, scale 805 may be similar to a medical
or diagnostic scale, such that the user 110 (i.e., the patient)
stands, walks, jogs, etc. and pressure readings may be gathered
using input sensors 220a and 220b. In an alternative embodiment,
instead of a scale or a mat, a treadmill device may be used to
determine the user's stability.
[0056] As the user interacts with the scale 805, the pressure data
may be captured and transmitted to, for example, network access
point 725 using communications modules 240a and/or 240b.
Accordingly, such pressure data may then be transmitted over
network 605 to user computer 610 or server 620. Alternatively,
scale 805 may include a display 810 which may be configured to
display postural balance information. Furthermore, the determining
of postural state information and performing postural analysis may
be accomplished by either user computer 610 or server 620. Hence,
for example, a medical professional may use user computer 610 to
monitor user 110's postural state(s) and analyze the information to
form medical opinions regarding user 110's medical conditions, if
any. Alternatively, scale 805 may be used for analyzing the
athletic performance ability of user 110. For example, an elderly
patient which may be prone to falls may use scale 805 to receive
preventative screening in order to take corrective action prior to
the elderly person experiencing a fall, or the like. One skilled in
the art would be aware of medical, athletic, and other uses for
such a stability sensing scale, mat, treadmill, etc. In an
alternative embodiment, scale 805 may further include a stability
processing module 815 which may be used to determine user 110's
postural stability similar to personal computer 610 and server
620.
[0057] FIG. 9 illustrates a further embodiment of a pressure
sensing device situated in shoe 900 with shoe upper 930, shoe sole
920, shoe insole 910, input sensors 220, and communications module
240. Shoe 900 may be one of any type of shoes including, without
limitation, dress shoes, athletic shoes, work boots, hiking boots,
etc. Input sensors 220 may be placed in insole 910 of shoe 900 or
if located in the sole 920 of shoe 900 may be located towards the
top of the sole 920 such that the pressure on the sole is not
dispersed appreciably before impinging on the input sensors 220.
Communications module 240 may be located in the shoe upper 930, the
shoe sole 920, the shoe insole 910, and/or another location in shoe
900. As in other embodiments, transmission of information between
input sensors 220 and communications module 240 may be by wires
embedded in the insole 910, shoe sole 920, and/or shoe upper 930.
It will be appreciated by one skilled in the art that
communications module 240 may be split into a number of components,
the components being located in any portion of the shoe 900 and
connected by wires or other connecting technology to achieve the
functionality of communications module 240 described above. The
communications module 240 transmits the sensor information to a
device external to the shoe using a communications link. For
example, the communications link may be a wireless link such as a
Bluetooth network and other body area network.
[0058] FIG. 10 illustrates an alternative embodiment of a pressure
sensing device situated in a horseshoe 1005. In one embodiment,
horseshoe 1005, similar to shoe 900 (FIG. 9), may include input
sensors 220a and 220b, as well as communications module 240.
Accordingly, horseshoe 1005 may be placed on a horse (or other
hoofed animal) in order to gather pressure/stability data for the
animal wearing horseshoe 1005. Accordingly, such gathered
information may be transmitted to an external computing device
(e.g., a computer, a PDA, a server, etc.) via communications module
240.
[0059] For example, a racehorse may be fitted with horseshoe 1005
to identify a sprain, determine flaws in their running style,
anticipate a fatal fall, determine the quality of the horse, etc. A
skilled equestrian could analyze the stability determinations
received from horseshoe 1005 to make such determinations. It should
be noted that any number of horseshoes may be placed on a horse
(i.e., a number between 1 and 4) in order to make accurate
stability determinations. Alternatively, horseshoe 1005 may be used
to determine if an animal has experienced a sprang or a break.
[0060] FIG. 11 illustrates yet another embodiment of the present
invention of a stability measurement device 1100 with insoles 210a
and 210b (generally 210), input sensors 220a and 220b (generally
220), communications modules 240a and 240b (generally 240), and
stability processing module 1150. In this embodiment,
communications modules 240 communicate with one another over a
communications link 130 and stability processing module 1150 is
electrically coupled with one or more communications modules 240.
Stability processing module 1150 may be coupled through wires to
one or more communications modules 240 or wirelessly to one or more
communications modules 240. Stability processing module 1150
performs postural state analysis as described above and may
communicate postural state information to the user through tactile
feedback devices (not shown), communication with an external device
to display postural state information, and/or downloading of stored
postural state information from stability measuring device 1100 to
a computing device for further analysis or display. It will be
appreciated that the functionality of communications modules 240
and stability processing module 1150 may be split into a number of
components, the components being located in any portion of the
insoles 210 and connected by wires or other connecting technology
to achieve the functionality of communications modules 240 and
stability processing module 1150 described above. Additionally it
will be appreciated that some or all of the components of
communications modules 240 and stability processing module 1150 may
be outside of insoles 210, for example, in other portions of an
article of footwear.
[0061] Furthermore, stability measuring device 1100 may be used in
a virtual reality (VR) and/or gaming environment. For example, as a
player wearing shoes with insoles 210a and 210b plays a video game
or maneuvers in a VR environment, pressure data may be gathered and
stability determinations may be made for the player. As such, if
the player falls down, the game/VR environment would make the video
game avatar fall as well. Alternatively, if the player sits down,
runs, jumps, etc., the game avatar would similarly perform such
movements. Thus, by determining the player's postural state using
stability measuring device 1100, the same or similar movements can
be captured and placed in the gaming environment making the game
completely interactive
[0062] FIG. 12 shows a flow diagram of illustrative methods for
monitoring postural stability of a person. The method begins at
step 1210 where pressure sensors are provided in the insole portion
of an article of footwear to measure pressure impinged by the
person on a supported surface. The pressure sensors are read at
step 1215 and the pressure information is transmitted at step 1220.
The pressure information is received at step 1225 and postural
state information is calculated at step 1230 using the pressure
information. The postural state information is analyzed at step
1235. If the postural state information indicates a predetermined
condition then the person and/or a healthcare professional is
notified at step 1240. If the postural information does not
indicate the predetermined condition then the method returns to
step 1225 to receive more pressure information. The predetermined
condition may be a stable postural state, an unstable postural
state, and/or a partially stable postural state.
[0063] FIG. 13 shows a flow diagram of illustrative methods for
determining postural stability. The method begins at step 1305
where a first pressure information is received. The first pressure
information is stored at step 1310. A range of postural stability
is calculated at step 1320 from the first pressure information. A
second pressure information is received at step 1315. The current
postural state is calculated from the second pressure information
at step 1325. The next postural state is calculated from the
current postural state and the range of postural stability at step
1330. The next postural state is analyzed at step 1335. If the next
postural state matches a predetermined condition, then the person
and/or a healthcare professional may be notified at step 1340. If
the next postural state does not match the predetermined condition,
then the method returns to step 1315 to receive additional pressure
information.
[0064] It will be appreciated that either the computing device 140
and/or user computer 610 of various embodiments can be a general
purpose computer (including, merely by way of example, personal
computers, smartphones, workstation computers, and/or laptop
computers running various standard or mobile versions of
Microsoft.RTM. Corp.'s Windows.RTM., Apple Corp.'s Macintosh.RTM.,
UNIX based operating systems, GNU/Linux based operating systems, or
other commercially available operating systems). The computing
device 140 and/or user computer(s) 610 may also have any of a
variety of applications, including one or more development systems,
database client and/or server applications, and web browser
applications. Alternatively, the computing device 140 and/or user
computer 610 may be any other electronic devices, such as
thin-client computers, Internet-enabled mobile telephone, and/or
personal digital assistant, capable of communicating via a network
(e.g., the network 605 described below) and/or displaying and
navigating web pages or other types of electronic documents.
Although various embodiments are shown with one computing device
140 and/or one user computer 610, any number of computing devices
and/or user computers may be supported.
[0065] FIG. 14 illustrates an exemplary computer system 1400, in
which various embodiments of the present invention may be
implemented. The system 1400 may be used to implement any of the
computers or computing devices described above (e.g. user computer
610, computing device 140, server 620). The computer system 1400 is
shown comprising hardware elements that may be electrically coupled
via a bus 1405. The hardware elements may include one or more
central processing units (CPUs) 1410, one or more input devices
1420 (e.g., a mouse, a keyboard, etc.), and one or more output
devices 1425 (e.g., a display device, a printer, etc.). The
computer system 1400 may also include one or more storage device
1415. Storage device(s) 1415, can comprise, without limitation,
local and/or network accessible storage, removable and/or
integrated storage, and/or can include, without limitation, a disk
drive, a drive array, an optical storage device, a solid-state
storage device, such as a RAM and/or a read-only memory ROM, which
can be programmable, flash-updateable and/or the like.
Communications subsystem 1430, can include, without limitation, a
modem, a network card (wireless or wired), an infra-red
communication device, a wireless communication device and/or
chipset (such as a Bluetooth.TM. device, an 802.11 device, a WiFi
device, a WiMax device, cellular communication facilities, etc.),
and/or the like. The communications subsystem 1430 may permit data
to be exchanged with a network (such as the network described
below, to name one example), and/or any other devices described
herein. In many embodiments, the computer system 1400 will further
comprise a working memory 1435, which can include a RAM or ROM
device, as described above. In some embodiments, the computer
system 1400 may also include a processing acceleration unit (not
shown), which can include a DSP, Application Specific Integrated
Circuits, a special-purpose processor and/or the like.
[0066] The computer system 1400 may also comprise software
elements, shown as being currently located within a working memory
1435, including an operating system 1440 and/or other code 1445,
such as an application program (which may be a client application,
web browser, mid-tier application, RDBMS, etc.). It should be
appreciated that alternate embodiments of a computer system 1400
may have numerous variations from that described above. For
example, customized hardware might also be used and/or particular
elements might be implemented in hardware, software (including
portable software, such as applets), or both. Further, connection
to other computing devices such as network input/output devices may
be employed. Software of computer system 1400 may include code 1445
for implementing embodiments of the present invention as described
herein.
[0067] In one aspect, the invention employs a computer or computing
device (such as the computer system 1400) to perform methods of the
invention. According to a set of embodiments, some or all of the
procedures of such methods are performed by the computer system
1400 in response to processor 1410 executing one or more sequences
of one or more instructions (which might be incorporated into the
operating system 1440 and/or other code, such as an application
program 1445) contained in the working memory 1435. Such
instructions may be read into the working memory 1435 from another
machine-readable medium, such as one or more of the storage
device(s) 1415. Merely by way of example, execution of the
sequences of instructions contained in the working memory 1435
might cause the processor(s) 1410 to perform one or more procedures
of the methods described herein.
[0068] The terms "machine-readable medium" and "computer readable
medium", as used herein, refer to any medium that participates in
providing data that causes a machine to operate in a specific
fashion. In an embodiment implemented using the computer system
1400, various machine-readable media might be involved in providing
instructions/code to processor(s) 1410 for execution and/or might
be used to store and/or carry such instructions/code (e.g., as
signals). In many implementations, a computer readable medium is a
physical and/or tangible storage medium. Such a medium may take
many forms, including but not limited to, non-volatile media,
volatile media, and transmission media. Non-volatile media
includes, for example, optical or magnetic disks, such as the
storage device(s) 1415. Volatile media includes, without
limitation, static or dynamic memory, such as the working memory
1435. Transmission media includes coaxial cables, copper wire and
fiber optics, including the wires that comprise the bus 1405, as
well as the various components of the communication subsystem 1430
(and/or the media by which the communications subsystem 1430
provides communication with other devices). Hence, transmission
media can also take the form of waves (including without limitation
radio, acoustic and/or light waves, such as those generated during
radio-wave and infra-red data communications).
[0069] Common forms of physical and/or tangible computer readable
media include, for example, a floppy disk, a flexible disk, hard
disk, magnetic tape, or any other magnetic medium, a CD-ROM, any
other optical medium, punchcards, papertape, any other physical
medium with patterns of holes, a RAM, a PROM, an EPROM, a
FLASH-EPROM, any other memory chip or cartridge, a carrier wave as
described hereinafter, or any other medium from which a computer
can read instructions and/or code.
[0070] Various forms of machine-readable media may be involved in
carrying one or more sequences of one or more instructions to the
processor(s) 1410 for execution. Merely by way of example, the
instructions may initially be carried on a magnetic disk and/or
optical disc of a remote computer. A remote computer might load the
instructions into its dynamic memory and send the instructions as
signals over a transmission medium to be received and/or executed
by the computer system 1400. These signals, which might be in the
form of electromagnetic signals, acoustic signals, optical signals
and/or the like, are all examples of carrier waves on which
instructions can be encoded, in accordance with various embodiments
of the invention.
[0071] The communications subsystem 1430 (and/or components
thereof) generally will receive the signals, and the bus 1405 then
might carry the signals (and/or the data, instructions, etc.,
carried by the signals) to the working memory 1435, from which the
processor(s) 1410 retrieves and executes the instructions. The
instructions received by the working memory 1435 may optionally be
stored on a storage device 1415 either before or after execution by
the processor(s) 1410.
[0072] In one aspect, the invention employs a network 605 to
perform methods of the invention. It will be appreciated that
network 605 can be any type of network familiar to those skilled in
the art that can support data communications using any of a variety
of commercially-available protocols, including without limitation
TCP/IP, SNA, IPX, AppleTalk, and the like. Merely by way of
example, the network 605 maybe a local area network ("LAN"), such
as an Ethernet network, a Token-Ring network and/or the like; a
wide-area network; a virtual network, including without limitation,
a virtual private network ("VPN"); the Internet; an intranet; an
extranet; a public switched telephone network ("PSTN"); an
infra-red network; a wireless network (e.g., a network operating
under any of the IEEE 802.11 suite of protocols, the Bluetooth
protocol known in the art, and/or any other wireless protocol);
and/or any combination of these and/or other networks such as GSM,
GPRS, EDGE, UMTS, 3G, 2.5 G, CDMA, CDMA2000, WCDMA, EVDO, etc.
[0073] In some embodiments, the invention employs a server computer
620 to perform methods of the invention. The server computer 620
might include one or more application servers, which can include
one or more applications accessible by a client application running
on the user computer 610, the computing device 140 and/or other
user computers or servers. Merely by way of example, the server 620
can be one or more general purpose computers capable of executing
programs or scripts in response to applications running on the user
computer 610, the computing device 140 and/or other servers,
including without limitation web applications (which might, in some
cases, be configured to perform methods of the invention). Merely
by way of example, a web application can be implemented as one or
more scripts or programs written in any suitable programming
language, such as Java.TM., C, C#.TM. or C++, and/or any scripting
language, such as Perl, Python, or TCL, as well as combinations of
any programming/scripting languages. The application server 620 can
also include database servers, including without limitation those
commercially available from Oracle.TM., Microsoft.TM., Sybase.TM.,
IBM.TM. and the like, which can process requests from clients
(including, depending on the configuration, database clients, API
clients, web browsers, etc.) running on a user computer 610 and/or
another server.
[0074] In some embodiments, the application server 620 can create
web pages dynamically for displaying the information in accordance
with embodiments of the invention. Data provided by the application
server 620 may be formatted as web pages (comprising HTML,
Javascript, etc., for example) and/or may be forwarded to computing
device 140 or user computer 610 via a web server (as described
above, for example). Similarly, a web server might receive web page
requests and/or input data from computing device 140 or user
computer 610 and/or forward the web page requests and/or input data
to an application server. In some cases, a web server may be
integrated with the application server 620. In some embodiments,
the application server 620 may create web pages dynamically for
displaying on an end-user (client) system. The web pages created by
the web application server may be forwarded to computing device 140
or user computer 610 via a web server. Similarly, the web server
can receive web page requests and/or input data from computing
device 140 or user computer 610, and can forward the web page
requests and/or input data to an application and/or a database
server. Those skilled in the art will recognize that the functions
described with respect to various types of servers may be performed
by a single server and/or a plurality of specialized servers,
depending on implementation-specific needs and parameters.
[0075] As present in some embodiments, the system may also include
one or more databases 615. The database(s) 615 may reside in a
variety of locations. By way of example, a database 615 may reside
on a storage medium local to (and/or resident in) one or more of
the servers 620 or computers 610. Alternatively, it may be remote
from any or all of the servers 620 or computers 610, and/or in
communication (e.g., via the network 605) with one or more of
these. In a particular set of embodiments, the database 615 may
reside in a storage-area network ("SAN") familiar to those skilled
in the art. Similarly, any necessary files for performing the
functions attributed to the servers 620 or user computers 610 may
be stored locally on the respective computer and/or remotely, as
appropriate. In one set of embodiments, the database 615 may be a
relational database, such as Oracle.RTM. 10g, which is adapted to
store, update, and retrieve data in response to SQL-formatted
commands.
[0076] In accordance with some embodiments, one or more servers 620
can function as a file server and/or can include one or more of the
files (e.g., application code, data files, etc.) necessary to
implement methods of the invention incorporated by an application
running on computing device 140, user computer 610 and/or server(s)
620. Alternatively, as those skilled in the art will appreciate, a
file server can include all necessary files, allowing such an
application to be invoked remotely by computing device 140, user
computer(s) 610 and/or server(s) 620. It should be noted that the
functions described with respect to various servers herein (e.g.,
application server, database server, web server, file server, etc.)
can be performed by a single server and/or a plurality of
specialized servers, depending on implementation-specific needs and
parameters.
[0077] The term "machine-readable medium" includes, but is not
limited to portable or fixed storage devices, optical storage
devices, wireless channels and various other mediums capable of
storing, containing or carrying instruction(s) and/or data. A code
segment or machine-executable instructions may represent a
procedure, a function, a subprogram, a program, a routine, a
subroutine, a module, a software package, a class, or any
combination of instructions, data structures, or program
statements. A code segment may be coupled to another code segment
or a hardware circuit by passing and/or receiving information,
data, arguments, parameters, or memory contents. Information,
arguments, parameters, data, etc. may be passed, forwarded, or
transmitted via any suitable means including memory sharing,
message passing, token passing, network transmission, etc.
[0078] Furthermore, embodiments may be implemented by hardware,
software, firmware, middleware, microcode, hardware description
languages, or any combination thereof. When implemented in
software, firmware, middleware or microcode, the program code or
code segments to perform the necessary tasks may be stored in a
machine-readable medium. A processor(s) may perform the necessary
tasks.
[0079] While the invention has been described with respect to
exemplary embodiments, one skilled in the art will recognize that
numerous modifications are possible. For example, the methods and
processes described herein may be implemented using hardware
components, software components, and/or any combination thereof.
Further, while various methods and processes described herein may
be described with respect to particular structural and/or
functional components for ease of description, methods of the
invention are not limited to any particular structural and/or
functional architecture but instead can be implemented on any
suitable hardware, firmware and/or software configuration.
Similarly, while various functionality is ascribed to certain
system components, unless the context dictates otherwise, this
functionality can be distributed among various other system
components in accordance with different embodiments of the
invention.
[0080] Moreover, while the procedures comprised in the methods and
processes described herein are described in a particular order for
ease of description, unless the context dictates otherwise, various
procedures may be reordered, added, and/or omitted in accordance
with various embodiments of the invention. Moreover, the procedures
described with respect to one method or process may be incorporated
within other described methods or processes; likewise, system
components described according to a particular structural
architecture and/or with respect to one system may be organized in
alternative structural architectures and/or incorporated within
other described systems. Hence, while various embodiments are
described with--or without--certain features for ease of
description and to illustrate exemplary features, the various
components and/or features described herein with respect to a
particular embodiment can be substituted, added and/or subtracted
from among other described embodiments, unless the context dictates
otherwise. Consequently, although the invention has been described
with respect to exemplary embodiments, it will be appreciated that
the invention is intended to cover all modifications and
equivalents within the scope of the following claims.
[0081] In the foregoing description, for the purposes of
illustration, methods were described in a particular order. It
should be appreciated that, in alternate embodiments, the methods
may be performed in a different order than that described. It
should also be appreciated that the methods described above may be
performed by hardware components or may be embodied in sequences of
machine-executable instructions, which may be used to cause a
machine, such as a general-purpose or special-purpose processor or
logic circuits, programmed with the instructions to perform the
methods. These machine-executable instructions may be stored on one
or more machine-readable mediums, such as CD-ROMs or other type of
optical disks, floppy diskettes, ROMs, RAMs, EPROMs, EEPROMs,
magnetic or optical cards, flash memory, or other types of
machine-readable mediums suitable for storing electronic
instructions. Alternatively, the methods may be performed by a
combination of hardware and software.
[0082] While illustrative embodiments of the invention have been
described in detail herein, it is to be understood that the
inventive concepts may be otherwise variously embodied and
employed, and that the appended claims are intended to be construed
to include such variations, except as limited by the prior art.
* * * * *