`
`
`
`111111111111111111111111111ps1J111J18111J111111111111111111111111111111
`
`(12) United States Patent
`Kahn et al.
`
`(10) Patent No.:
`(45) Date of Patent:
`
`US 7,881,902 B1
`Feb. 1, 2011
`
`(54)
`
`HUMAN ACTIVITY MONITORING DEVICE
`
`(75)
`
`Inventors: Philippe Kahn, Aptos, CA (US);
`Arthur Kinsolving, Santa Cruz, CA
`(US); Mark Andrew Christensen, Santa
`Cruz, CA (US); Brian Y. Lee, Aptos, CA
`(US); David Vogel, Santa Cruz, CA (US)
`
`(73)
`
`Assignee: DP Technologies, Inc., Scotts Valley, CA
`(US)
`
`* )
`
`Notice:
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 0 days.
`
`(21)
`
`Appl. No.: 12/694,135
`
`(22)
`
`Filed:
`
`Jan. 26, 2010
`
`Related U.S. Application Data
`
`(63)
`
`Continuation of application No. 11/644,455, filed on
`Dec. 22, 2006, now Pat. No. 7,653,508.
`
`(51)
`
`(52)
`(58)
`
`Int. Cl.
`(2006.01)
`GO1C 22/00
`(2006.01)
`G06F 19/00
` 702/160; 377/24.2; 702/97
`U.S. Cl.
`Field of Classification Search
` 33/700,
`33/701; 73/1.01, 1.37, 1.38, 1.75, 1.76, 1.77,
`73/1.78, 1.79, 1.81; 377/1, 13, 15, 17, 20,
`377/24, 24.1, 24.2; 702/1, 85, 97, 127, 141,
`702/150, 155, 158, 160, 187, 189
`See application file for complete search history.
`
`(56)
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`4,285,041 A
`4,578,769 A
`5,446,725 A
`5,446,775 A
`5,593,431 A
`5,955,667 A
`
`8/1981 Smith
`3/1986 Frederick
`8/1995 Ishiwatari
`8/1995 Wright et al.
`1/1997 Sheldon
`9/1999 Fyfe
`
`5,976,083 A
`6,013,007 A
`6,135,951 A
`6,145,389 A
`6,369,794 B1
`6,493,652 B1
`6,513,381 B2
`6,522,266 B1
`6,532,419 B1
`6,539,336 B1
`6,611,789 B1*
`6,700,499 B2
`6,790,178 B1
`6,813,582 B2
`
`Richardson et al.
`11/1999
`Root et al.
`1/2000
`10/2000 Richardson et al.
`11/2000 Ebeling et al.
`4/2002 Sakurai et al.
`12/2002 Ohlenbusch et al.
`2/2003 Fyfe et al.
`2/2003 Soehren et al.
`3/2003 Begin et al.
`3/2003 Vock et al.
`8/2003 Darley
`3/2004 Kubo et al.
`9/2004 Mault et al.
`11/2004 Levi et al.
`
`702/160
`
`(Continued)
`
`OTHER PUBLICATIONS
`
`"Wearable Health Reports," Technology Review, Feb. 28, 2006,
`http://www.techreview.com/
`printer friendly article aspx?id+16431, Mar. 22, 2007, 3 pages.
`
`(Continued)
`
`Primary Examiner Edward R Cosimano
`(74) Attorney, Agent, or Firm Blakely, Sokoloff, Taylor &
`Zafman, LLP; Judith A. Szepesi
`
`(57)
`
`ABSTRACT
`
`A method for monitoring human activity using an inertial
`sensor includes continuously determining an orientation of
`the inertial sensor, assigning a dominant axis, updating the
`dominant axis as the orientation of the inertial sensor
`changes, and counting periodic human motions by monitor-
`ing accelerations relative to the dominant axis.
`
`11 Claims, 9 Drawing Sheets
`
`500
`
`(scan
`
`)
`•
`Set Stepping
`Samplingcate 52¢
`
`Recognize First Step
`514
`
`Set IZ a,noltwCadence
` 514
`
`
`
` ore,'-' ,. %2L'
`
`t
`
`CounSet
`441* No
`
`524
`
`Add One to Buffered
`Step Count
`5124
`
`No
`
`Reset Suffered
`Step Count to Zero
`53.1
`
`594
`
`564
`
`41—
`
`Set New Cadence
`Window
`5li
`
`DAM
`
`580
`
`Add Buffered Step 10)
`Actual Step Count end
`Initiate Stepping Alb
`
`HTC v. Uniloc
`
`Page 1 of 19
`
`HTC Ex. 1001
`
`
`
`US 7,881,902 B1
`Page 2
`
`U.S. PATENT DOCUMENTS
`
`6,823,036 Bl
`6,826,477 B2
`6,836,744 Bl
`6,881,191 B2
`6,885,971 B2
`6,898,550 Bl
`6,928,382 B2
`6,941,239 B2
`6,959,259 B2
`6,975,959 B2
`7,010,332 Bl
`7,072,789 B2
`7,092,846 B2
`7,148,797 B2
`7,158,912 B2
`7,169,084 B2
`7,171,331 B2
`7,200,517 B2
`7,212,943 B2
`7,220,220 B2
`7,297,088 B2
`7,328,611 B2 *
`7,334,472 B2
`7,353,112 B2
`7,387,611 B2
`7,457,719 Bl
`7,526,402 B2
`7,647,196 B2 *
`7,653,508 Bl *
`7,753,861 Bl *
`2002/0089425 Al
`2002/0109600 Al
`2002/0151810 Al
`2003/0018430 Al
`2003/0109258 Al
`2003/0139692 Al
`2004/0225467 Al
`2005/0033200 Al
`2005/0222801 Al
`2005/0232388 Al
`2005/0232404 Al
`2005/0238132 Al
`
`11/2004 Chen
`11/2004 Ladetto et al.
`12/2004 Asphahani et al.
`4/2005 Oakley et al.
`4/2005 Vock et al.
`5/2005 Blackadar et al.
`8/2005 Hong et al.
`9/2005 Unuma et al.
`10/2005 Vock et al.
`12/2005 Dietrich et al.
`3/2006 Irvin et al.
`7/2006 Vock et al.
`8/2006 Vock et al.
`12/2006 Albert
`1/2007 Vock et al.
`1/2007 Tsuji
`1/2007 Vock et al.
`4/2007 Darley et al.
`5/2007 Aoshima et al.
`5/2007 Stubbs et al.
`11/2007 Tsuji
`2/2008 Klees et al.
`2/2008 Seo et al.
`4/2008 Choi et al.
`6/2008 Inoue et al.
`11/2008 Kahn et al.
`4/2009 Tenanhaus et al.
`1/2010 Kahn et al.
`1/2010 Kahn et al.
`7/2010 Kahn et al.
`7/2002 Kubo et al.
`8/2002 Mault et al.
`10/2002 Wong et al.
`1/2003 Ladetto et al.
`6/2003 Mantyjarvi et al.
`7/2003 Barrey et al.
`11/2004 Vock et al.
`2/2005 Soehren et al.
`10/2005 Wulff et al.
`10/2005 Tsuji
`10/2005 Gaskill
`10/2005 Tsuji
`
`10/2005 Sugai
`2005/0240375 Al
`11/2005 Howell et al.
`2005/0248718 Al
`1/2006 Seo et al.
`2006/0020177 Al
`5/2006 Silk
`2006/0100546 Al
`6/2006 Case et al.
`2006/0136173 Al
`10/2006 Chin et al.
`2006/0223547 Al
`3/2007 Darley et al.
`2007/0061105 Al *
`3/2007 Devaul et al.
`2007/0063850 Al
`3/2007 Park et al.
`2007/0067094 Al
`4/2007 Nissila et al.
`2007/0082789 Al
`6/2007 Rosenberg
`2007/0125852 Al
`6/2007 Ballet et al.
`2007/0142715 Al
`9/2007 Darley et al.
`2007/0208531 Al *
`2/2009 Kahn et al.
`2009/0043531 Al
`9/2009 Kahn et al.
`2009/0234614 Al *
`2009/0319221 Al * 12/2009 Kahn et al.
`2010/0056872 Al * 3/2010 Kahn et al.
`2010/0057398 Al * 3/2010 Darley et al.
`
` 702/182
`
` 702/142
`
` 702/141
` 702/141
` 600/300
` 702/160
`
`OTHER PUBLICATIONS
`
`Dao, Ricardo, "Inclination Sensing with Thermal Accelerometers",
`MEMSIC, May 2002, 3 pages.
`Lee, Seon-Woo, et al., "Recognition ofWalking Behaviors for Pedes-
`trian Navigation," ATR Media Integration & Communications
`Research Laboratories, Kyoto, Japan, 4 pages.
`Margaria, Rodolfo, "Biomechanics and Energetics of Muscular
`Exercise", Chapter 3, pp. 105-125, Oxford: Clarendon Press 1976.
`Mizell, David, "Using Gravity to Estimate Accelerometer Orienta-
`tion", Seventh IEEE International Symposium on Wearable Comput-
`ers, 2003, 2 pages.
`Ormoneit, D., et al., "Learning and Tracking Cyclic Human Motion,"
`Encyclopedia of Library and Information Science, vol. 53, supple-
`ment 16, 2001, 7 pages.
`PCT International Search Report and Written Opinion for Interna-
`tional Application No. PCT/US2008/072537, mailed Oct. 22, 2008,
`10 pages.
`PCT International Search Report and Written Opinion for PCT/
`US2009/48523, mailed Aug. 27, 2009, 8 pages.
`Weinberg, Harvey, "MEMS Motion Sensors Boost Handset Reliabil-
`ity"
`Jun.
`2006,
`http://www.mwd.com/Articles/Print.
`cfm?ArticleID=12740, Feb. 21, 2007, 4 pages.
`
`* cited by examiner
`
`73/290 V
`
`702/149
`702/160
`600/595
`
`HTC v. Uniloc
`
`Page 2 of 19
`
`HTC Ex. 1001
`
`
`
`U.S. Patent
`
`Feb. 1, 2011
`
`Sheet 1 of 9
`
`US 7,881,902 B1
`
`Filter
`120
`
`Acceleration
`Measuring
`Logic
`105
`
`Timer
`170
`
`Dominant Axis Logic 127
`Dominant
`Rolling Average
`il-
`Axis Setting
`Logic 135
`Logic
`+4
`140
`Cadence Logic
`132
`
`'Jr
`
`•
`/ Cadence
`Window
`150
`
`t
`
`Threshold
`Comparator
`160
`
`Measurement
`Selection
`Logic 145
`
`• +
`Measurement
`Comparator
`155
`
`/Final Step/
`Count
`
`175
`
`i Step Count /
`Buffer
`4
`165
`
`Mode
`Logic
`190
`
`Step Counting Logic 130
`
`Electronic Device 100
`
`Figure 1
`
`HTC v. Uniloc
`
`Page 3 of 19
`
`HTC Ex. 1001
`
`
`
`wawa °S*9
`
`6 JO Z WIN
`
`Ill Z06`188`L Sf1
`
`7--207
`
`.---- 205
`
`via
`
`Time (s)
`203
`
`• %
`%
`
`1
`
`I
`
`,t
`
`•
`
`0
`
`0
`
`I
`
`3
`
`•_I
`
`1 I ... %
`
`../
`
`..
`
`•
`
`•
`•
`•
`
`•
`
`I
`
`•
`
`i.
`•
`2. '
`•
`. i,.
`♦
`.
`.
`r#:
`1
`__._.
`
`1
`
`•
`•
`•
`
`I
`.
`
`:
`.
`
`t a.
`
`1
`I
`I
`
`1
`
`200
`
`Step
`
`Step
`
`230
``-'\
`
`235
`Step
`
`-1
`
`245
`Step
`1' *
`
`250
`
`Step
`
`Step
`
`217_x+
`
`t
`
`215
`
`P 2 /
`
`r
`
`233
`
`300
`
`200
`
`100
`
`0
`
`Acceleration (g)
`
`-100
`
`•1
`i.
`.
`
`..
`... ,
`
`I
`
`i
`
`e
`, o
`I
`0
`
`.1 1
`,
`1
`t
`1
`, .
`%
`.. ..
`..
`•• .
`•
`..
`1
`_
`
`a
`
`i
`
`'•.11..4.!4.40...
`
`i
`i
`
`
`
`.
`•
`-200 :-.;,—
`
`-....
`
`.....- — - — ----
`
`-300
`
`- f--.—"
`'
`1 2 1,,,
`•
`-
`..:,.
`
`t• .1
`•
`
`i j
`a.
`
`.......
`t
`
`1
`
`
`'
`... .
`1 't.
`s
`t .
`
`, 1 1
`,
`i
`%...%..
`--!:' .;
`
`•
`.
`•
`
`9
`.4
`"
`
`' i....*.e . s. ,
`I ' ..
`
`.
`
`I
`
`.
`
`t.,...4,
`......_,...,..
`1:..
`t..
`
`.44
`4••• I
`
`.
`
`.....`, .
`
`I
`
`.•'.
`
`•
`
`I.
`
`I .
`-4----1-
`I
`I
`
`240
`
`255
`
`Figure 2
`
`HTC v. Uniloc
`
`Page 4 of 19
`
`HTC Ex. 1001
`
`
`
`U.S. Patent
`
`Feb. 1, 2011
`
`Sheet 3 of 9
`
`US 7,881,902 B1
`
`300
`
`----
`
`A
`
`Sleep
`Conditions
`Met
`
`0 ,- --- Initial State
`Thr,
`n-- No Activity
`
`Sleep Mode 305
`
`1
`'\___ Detect Accelerations
`
`No Steps
`
`Entry Mode 315
`__..1
`N Steps in Cadence
`
`Stepping Mode 325
`
`Steps in
`Cadence
`
` No Steps Detected Within
`Cadence Window
`
`X Steps in
`Cadence
`
`e•-----...........s.....
`
`
`
`Exit Mode 335
`
`Figure 3
`
`HTC v. Uniloc
`
`Page 5 of 19
`
`HTC Ex. 1001
`
`
`
`U.S. Patent
`
`Feb. 1, 2011
`
`Sheet 4 of 9
`
`US 7,881,902 B1
`
`_,--- --''‘
`
`400
`
`C Start )
`
`•
`Set Sleep Mode Sampling Rate
`405
`
`•
`Take Measurement(s) of Acceleration Data
`410
`
`Acceleration
`Detected?
`415
`
`Yes
`
`(-Initiate Entry
`
`Mode 420 _}
`
`Figure 4
`
`HTC v. Uniloc
`
`Page 6 of 19
`
`HTC Ex. 1001
`
`
`
`U.S. Patent
`
`Feb. 1, 2011
`
`Sheet 5 of 9
`
`US 7,881,902 B1
`
`500
`
`C Start
`
`•
`Set Stepping
`Sampling_ Rate 504
`I
`•
`Recognize First Step
`510
`•
`Set Default Cadence
`Window 514
`
`•
`Set Buffered Step
`Count to One 520
`
`524
`
`Recognize
`Additional
`Step?
`
`Yes
`•
`Add One to Buffered
`Step Count
`560
`
`Yes
`
`530
`
`Still
`In Cadence
`Window?
`No
`•
`Reset Buffered
`Step Count to Zero
`534
`
`M Steps
`in Buffered Step
`Count?
`
`Yes
`
`564
`
`570
`
`Set New Cadence
`Window
`574
`
`Yes
`
`Cadence
`Window =
`Default?
`
`540
`
`Yes
`
`Acceleration
`Detected?
`
`No
`
`•
`Initiate Sleep Mod
`544
`
`584
`
`Steps in
`Buffered Step
`Count?
`
`Yes Add Buffered Steps to
`Actual Step Count and
`Initiate Stepping Mode
`
`580
`
`Figure 5
`
`HTC v. Uniloc
`
`Page 7 of 19
`
`HTC Ex. 1001
`
`
`
`U.S. Patent
`
`Feb. 1, 2011
`
`Sheet 6 of 9
`
`US 7,881,902 B1
`
`Start
`
`600
`
`Thk
`
`Set New Cadence
`Window 610
`
`615
`
`Recognize Step?
`
`es
`
`Add One to Step
`Count 620
`
`Yes
`
`625
`
`Still
`In Cadence
`Window?
`
`No
`
`C
`
`Initiate Exit Mode
`630
`
`Figure 6
`
`HTC v. Uniloc
`
`Page 8 of 19
`
`HTC Ex. 1001
`
`
`
`U.S. Patent
`
`Feb. 1, 2011
`
`Sheet 7 of 9
`
`US 7,881,902 B1
`
`_/--
`
`700
`
`( Start
`•
`Initiate (Reset)
`Step Timer
`705
`
`Add One to
`Buffered Step
`Count 710
`
`ok-cld Buffered Stepstc
`Actual Step Count and
`Return to Stepping Mode
`720
`
`4
`
`Yes
`
`Buffered Step
`Count = X?
`
`715
`
`725
`
`(Clear Buffered Ste
`Yes Yes
`Count and Initiate
`4
`rltry Mode 73(1)
`
`Step Timer
`Elapsed?
`
`735
`
`Recognize
`Additional
`Step?
`
`Yes
`
`Figure 7
`
`HTC v. Uniloc
`
`Page 9 of 19
`
`HTC Ex. 1001
`
`
`
`U.S. Patent
`
`Feb. 1, 2011
`
`Sheet 8 of 9
`
`US 7,881,902 B1
`
`C Start )
`
`.7 -----' 800
`
`Take Measurement(s) of Acceleration Data 805
`
`Filter Measurement(s) 810
`
`Orient Device by Assigning Dominant Axis 812
`
`Measurement(s) Within Cadence
`Window? 815
`
`Yes
`
`Acceleration Along Dominant Axis
`Greater Than Lower Threshold?
`
`Yes
`
`Acceleration Greater Than
`Previous Measurement(s)?
`
`Yes
`
`Acceleration Lower Than
`Upper Threshold?
`
`No
`
`820
`
`No
`
`825
`
`Yes
`
`830
`
`CCount Step 835
`
`•
`No Step
`Counted 840
`
`Figure 8
`
`HTC v. Uniloc
`
`Page 10 of 19
`
`HTC Ex. 1001
`
`
`
`U.S. Patent
`
`Feb. 1, 2011
`
`Sheet 9 of 9
`
`US 7,881,902 B1
`
`900 -----------
`
`C Start
`
`Detect Period of Stepping Cadence 910
`
`Create Rolling Averages of Accelerations 915
`
`Assign Dominant Axis
`
`920
`
`-1-
`( End
`
`Figure 9
`
`HTC v. Uniloc
`
`Page 11 of 19
`
`HTC Ex. 1001
`
`
`
`1
`HUMAN ACTIVITY MONITORING DEVICE
`
`US 7,881,902 B1
`
`The present patent application is a continuation of U.S.
`application Ser. No. 11/644,455, filed on Dec. 22, 2006, now
`U.S. Pat. No. 7,653,508.
`
`5
`
`FIELD OF THE INVENTION
`
`2
`FIG. 8 illustrates a flow diagram for a method of recogniz-
`ing a step in accordance with one embodiment of the present
`invention, in accordance with one embodiment of the present
`invention; and
`FIG. 9 illustrates a flow diagram for a method of orienting
`an inertial sensor, in accordance with one embodiment of the
`present invention.
`
`This invention relates to a method of monitoring human
`activity, and more particularly to counting periodic human
`motions such as steps.
`
`BACKGROUND
`
`The development of Micro-Electro-Mechanical Systems
`(MEMS) technology has enabled manufacturers to produce
`inertial sensors (e.g., accelerometers) of sufficient size, cost,
`and power consumption to fit into portable electronic devices.
`Such inertial sensors can be found in a limited number of
`commercial electronic devices such as cellular phones, por-
`table music players, pedometers, game controllers, and por-
`table computers.
`Step counting devices are used to monitor an individual's
`daily activity by keeping track of the number of steps that he
`or she takes. Generally, step counting devices that utilize an
`inertial sensor to measure motion to detect steps require the
`user to first position the device in a limited set of orientations.
`In some devices, the required orientations are dictated to the
`user by the device. In other devices, the beginning orientation
`is not critical, so long as this orientation can be maintained.
`Step counting devices are often confused by motion noise
`experienced by the device throughout a user's daily routine.
`This noise causes false steps to be measured and actual steps
`to be missed in conventional step counting devices. Conven-
`tional step counting devices also fail to accurately measure
`steps for individuals who walk at a slow pace. Such step
`counting devices can fail to operate for seniors and others
`walking at a slow pace.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`The present invention is illustrated by way of example, and
`not by way of limitation, and can be more fully understood
`with reference to the following detailed description when
`considered in connection with the following figures:
`FIG. 1 is a block diagram illustrating one embodiment of
`an electronic device;
`FIG. 2 illustrates an exemplary cadence of motion graph
`that measures time versus acceleration, in accordance with
`one embodiment of the present invention;
`FIG. 3 shows a state diagram for the behavior of a system
`of monitoring human activity using an inertial sensor, in
`accordance with one embodiment of the present invention;
`FIG. 4 illustrates a flow diagram for a method of operating
`an electronic device in sleep mode, in accordance with one
`embodiment of the present invention;
`FIG. 5 illustrates a flow diagram for a method of operating
`an electronic device in entry mode, in accordance with one
`embodiment of the present invention;
`FIG. 6 illustrates a flow diagram for a method of operating
`an electronic device in stepping mode, in accordance with one
`embodiment of the present invention;
`FIG. 7 illustrates a flow diagram for a method of operating
`an electronic device in exit mode, in accordance with one
`embodiment of the present invention;
`
`DETAILED DESCRIPTION
`
`10
`
`Embodiments of the present invention are designed to
`monitor human activity using an inertial sensor. In one
`embodiment, a dominant axis is assigned after determining an
`orientation of an inertial sensor. The orientation of the inertial
`15 sensor is continuously determined, and the dominant axis is
`updated as the orientation of the inertial sensor changes. In
`one embodiment, periodic human motions are counted by
`monitoring accelerations relative to the dominant axis.
`FIG. 1 is a block diagram illustrating an electronic device
`20 100, in accordance with one embodiment of the present
`invention. The electronic device 100 in one embodiment
`comprises an acceleration measuring logic 105, a filter 120, a
`dominant axis logic 127, a step counting logic 130, a timer
`170, and a final step count 175. In one embodiment, the
`25 electronic device 100 is a portable electronic device that
`includes one or more inertial sensors. The inertial sensors
`may measure accelerations along a single axis or multiple
`axes. The inertial sensors may measure linear as well as
`rotational (angular) accelerations. The electronic device 100
`30 may be used to count steps or other periodic human motions.
`Steps may be accurately counted regardless of the placement
`and/or orientation of the device on a user. Steps may be
`accurately counted whether the electronic device 100 main-
`tains a fixed orientation or changes orientation during opera-
`35 tion. The electronic device 100 may be carried in a backpack,
`pocket, purse, hand, or elsewhere, and accurate steps may still
`be counted.
`The acceleration measuring logic 105 measures accelera-
`tion data at a sampling rate. The sampling rate may be fixed or
`40 variable. In one embodiment, the acceleration measuring
`logic 105 receives a timing signal from the timer 170 in order
`to take measurements at the sampling rate. The acceleration
`measuring logic 105 may be an inertial sensor.
`In one embodiment, measurement data is processed by the
`45 filter 120 to remove noise. The filter 120 may be implemented
`in hardware, software, or both hardware and software. The
`filter 120 may include a high pass filter, a low pass filter, a
`bandpass filter, a bandstop filter and/or additional filters. The
`filter 120 may include a digital filter and/or an analog filter. In
`50 one embodiment, a hardware digital filter includes at least one
`of a finite impulse response (FIR) filter and an infinite impulse
`response (IIR) filter. In one embodiment, an N-tap hardware
`digital FIR filter is used. The use of a hardware FIR filter may
`reduce power consumption by reducing and/or eliminating
`55 software digital filtering.
`In one embodiment, the filter 120 includes multiple filters,
`and a determination of which filters to apply to the measure-
`ment data is made based upon an operating mode of the
`electronic device 100. In one embodiment, the selection of
`6o which filters to use is determined by the type of user activity
`detected. For example, a low pass filter may be used to remove
`high frequency noise that would interfere with step counting
`when a user is walking. In contrast, a high pass filter may be
`used when quick motions are to be monitored.
`Filtered measurement data may be passed on to the domi-
`nant axis logic 127 and the step counting logic 130. In one
`embodiment, the dominant axis logic 127 includes a cadence
`
`65
`
`HTC v. Uniloc
`
`Page 12 of 19
`
`HTC Ex. 1001
`
`
`
`US 7,881,902 B1
`
`3
`logic 132, a rolling average logic 135, and a dominant axis
`setting logic 140. In an alternative embodiment, more or
`fewer logics may be used to determine a dominant axis.
`Alternative means of identifying a dominant axis may be used
`in other embodiments.
`In one embodiment, the dominant axis logic 127 is used to
`determine an orientation of the electronic device 100 and/or
`an inertial sensor within the electronic device 100. In alter-
`native embodiments, other logics may be used to determine
`an orientation of the electronic device 100.
`Referring to FIG. 1, the cadence logic 132 may determine
`one or more sample periods to be used by the rolling average
`logic 135, and may determine a cadence window 150 to be
`used by the step counting logic 130. In one embodiment, the
`cadence logic 135 detects a period and/or cadence of a motion
`cycle. The period and/or cadence of the motion cycle may be
`based upon user activity (e.g. rollerblading, biking, running,
`walking, etc).
`Many types of motions that are useful to keep track of have
`a periodic set of movements. Specific periodic human
`motions may be characteristic of different types of user activ-
`ity. For example, to walk, an individual must lift a first leg,
`move it forward, plant it, then repeat the same series of
`motions with a second leg. In contrast, a person rollerblading
`performs a repeated sequence of pushing, coasting and liftoff
`for each leg. For a particular individual, the series of walking
`motions will usually occur in about the same amount of time,
`and the series of rollerblading motions will usually occur in
`the same amount of time. The repeated set of motions can be
`considered a unit, and defines the motion cycle. The amount
`of time that it takes to complete one motion cycle defines the
`motion cycle's period, and the number of motion cycles that
`occur in a given unit of time define the motion cycle's
`cadence. For simplicity, the term "step" is used in this appli-
`cation to describe the user activity being evaluated. However,
`in the context of this application, the term "step" should be
`taken to mean any user activity having a periodic set of
`repeated movements.
`FIG. 2 illustrates an exemplary motion cycle graph 200 that
`measures time versus acceleration, in accordance with one
`embodiment of the present invention. The exemplary motion-
`cycle graph 200 shows acceleration data taken with a single
`tri-axis inertial sensor. The acceleration at a given period of
`time is represented for a first axis 203 of the inertial sensor, a
`second axis 205 of the inertial sensor, and a third axis 207 of
`the inertial sensor. In one embodiment, the cadence logic 132
`of FIG. 1 analyzes the acceleration along the first axis 203,
`second axis 205 and third axis 207 to detect a motion cycle.
`Once a motion cycle is detected, a period of the motion cycle
`is determined, and a cadence of the motion cycle is deter-
`mined. FIG. 2 shows an exemplary period of a motion cycle
`215 for the third axis 207, the period being approximately 0.6
`seconds. The same period can also be seen to a lesser degree
`in the second axis 205 and the first axis 203. The correspond-
`ing cadence to the motion cycle is approximately one hundred
`motion cycles per minute.
`In one embodiment, once a stepping period (or other
`motion cycle period) is determined, that period may be used
`to set the cadence window (the allowable time window for
`steps to occur). In one embodiment, the period is updated
`after each step. The current stepping period may be a rolling
`average of the stepping periods over previous steps, as dis-
`cussed in more detail with reference to the rolling average
`logic 135 of FIG. 1.
`A cadence window may be used to facilitate accurate mea-
`surement of a step, or other periodic human motion. A
`cadence window is a window of time since a last step was
`
`5
`
`4
`counted that is looked at to detect a new step. A cadence
`window may be set based on the period and/or cadence of the
`actual motion cycle (e.g., a stepping period), on set limits,
`and/or on other determiners.
`Referring to FIG. 2, an exemplary first cadence window
`240 and second cadence window 255 are shown. The first
`cadence window 240 may be defined by a first cadence win-
`dow minimum 230 and a first cadence window maximum
`235. The second cadence window 255 may be defined by a
`io second cadence window minimum 245 and a second cadence
`window maximum 250. In one embodiment, the cadence
`window minimums 230 and 245 and cadence window maxi-
`mums 235 and 250 are determined by measuring lengths of
`time since the most recent step was counted. In one embodi-
`15 ment, this length of time is measured via the timer 170 of FIG.
`1. In other embodiments, other variables may be used to set
`the cadence window. For example, cadence windows may be
`determined by measuring cumulative amounts of accelera-
`tion that have been measured since the previous step was
`20 counted.
`Returning to FIG. 2, cadence windows may be used to
`count steps until an expected step is not encountered. In one
`embodiment, new cadence windows are determined periodi-
`cally. In one embodiment, the cadence window is a dynamic
`25 cadence window that continuously updates as a user's
`cadence changes. For example, using a dynamic cadence
`window, a new cadence window length may be set after each
`step. The cadence window minimums may be determined by
`subtracting a value from the stepping period, and the cadence
`30 window maximums may be determined by adding a value to
`the stepping period. In one embodiment, the cadence window
`maximums are preset, and the cadence window minimums
`are updated after each step is counted. In one embodiment, the
`cadence window minimums are preset, and the cadence win-
`35 dow maximums are updated after each step is counted. In one
`embodiment, both the cadence window minimums and
`cadence window maximums are updated when a step is
`counted. In one embodiment, the current cadence window
`minimum is determined by subtracting 200 ms from the cur-
`40 rent stepping cadence period. In one embodiment, the
`cadence window minimum has a minimum value of 240 ms.
`In the illustrated embodiment of FIG. 2, a first step 217 is
`counted at 0.65 seconds, and a second step 232 is counted at
`approximately 1.15 seconds. The first cadence window 240
`45 opens at approximately 0.4 seconds from the first step 217,
`and closes at approximately 0.8 seconds from the first step
`217. As shown, the second step 232 falls within the first
`dynamic cadence window 240. A third step 233 falls within
`the second dynamic cadence window 255, which may have a
`so second cadence window minimum 245 and second cadence
`window maximum 250 that are different from the first
`cadence window minimum 230 and first cadence window
`maximum 235. The illustrated second cadence window mini-
`mum is about 0.35 seconds from the second step 232, and the
`55 second cadence window maximum 250 is about 0.75 seconds
`from the second step 232. Other cadence window minimums
`and maximums are also possible. When motion criteria (e.g.,
`threshold conditions) are met within a cadence window, a step
`is detected, whereas when motion criteria are met outside of
`60 the cadence windows no step is detected.
`If no previous steps have been detected, there is no cadence
`minimum, and a step may be detected at any time that motion
`criteria are met. If fewer than the required number of steps to
`determine a dynamic cadence window have been detected,
`65 then the cadence window may have a default minimum and
`maximum value. In one embodiment, the cadence window
`has a default minimum of around 325 ms and a default maxi-
`
`HTC v. Uniloc
`
`Page 13 of 19
`
`HTC Ex. 1001
`
`
`
`US 7,881,902 B1
`
`5
`mum of around 1000 ms. Once enough steps have been
`detected to determine a dynamic stepping cadence or period,
`the cadence window may be set to the determined stepping
`period plus or minus an error factor. In one embodiment, a
`count of between about two to about ten periodic human
`motions is sufficient to set a dynamic cadence window.
`The cadence of any periodic human motion will generally
`not change more than a certain amount in a given time period.
`In one embodiment, the cadence window may be sufficiently
`wide to continue counting periodic human motions even
`when a stepping cadence changes. In one embodiment, the
`cadence window is narrower, and steps may not be counted
`when a stepping cadence changes. So as not to miss steps,
`once a new stepping cadence is detected, previous measure-
`ments may be examined to determine whether they register as
`steps under the new stepping cadence and a new cadence
`window. Therefore, steps may be counted even if they did not
`occur in the original cadence window. The cadence window
`may update dynamically to a user's actual cadence. Human
`cadences change within a known window of rates, and so
`steps can be differentiated from other noise. This may ame-
`liorate and/or eliminate missed step counts due to changes in
`cadence.
`In one embodiment, when steps repeatedly occur at a time
`different from the current stepping period, a new stepping
`period and a new cadence window are set. For example, when
`the stepping period is 0.7 seconds, and a step occurs about
`every 0.6 seconds enough times in a row, then the stepping
`period is changed to 0.6 seconds and a new cadence window
`is set based on the changed stepping period.
`Returning to FIG. 1, once the stepping period is detected,
`the cadence logic 132 may set one or more sample periods for
`the rolling average logic 135 to use based upon the stepping
`period. In one embodiment, the sample period(s) are set such
`that at least one sample period is approximately the length of,
`or longer than, the stepping period. In one embodiment, a
`sample period is set such that it is a multiple of the stepping
`period.
`The rolling average logic 135 creates one or more rolling
`averages of accelerations as measured by the inertial sensor
`(s) over the sample period(s) set by the cadence logic 132. The
`rolling averages of accelerations may be used for determining
`an orientation of the electronic device, for determining
`thresholds to compare acceleration measurements against,
`and/or for other purposes. In one embodiment, the rolling
`average logic 135 creates a rolling average of accelerations
`for determining an orientation of the electronic device 100,
`the rolling average having a period that is at least the stepping
`period. In one embodiment, the rolling average logic creates
`a rolling average of accelerations for determining a lower
`threshold to compare acceleration measurements against, the
`rolling average having a sample period that is at least twice
`the stepping period.
`The rolling average logic 135 may create one or more
`rolling averages of data other than accelerations. In one
`embodiment, the rolling average logic 135 creates a rolling
`average of stepping periods, where the rolling average is the
`rolling average time between steps. In one embodiment, the
`rolling average of stepping periods is calculated over the past
`four counted steps. The rolling average of the stepping peri-
`ods may be used by the cadence logic 132 to determine a
`cadence window and a current stepping cadence.
`In one embodiment, rolling averages may be maintained in
`registries that keep track of rolling average values and the
`number of samples that were used to calculate current rolling
`average values. When a new measurement is taken, it can be
`incorporated into the previous rolling average value, and the
`
`6
`registry can than be updated with a new rolling average value.
`Alternatively, the rolling averages may be maintained by
`buffering the measurements used to calculate the rolling aver-
`ages. As the buffers fill, oldest measurement data can be
`5 discarded and replaced by new measurement data. The mea-
`surements in the buffer can be averaged after each measure-
`ment to determine a new rolling average.
`In one embodiment, the dominant axis setting logic 140
`determines an orientation of the electronic device 100 and/or
`10 the inertial sensor(s) within the electronic device 100. The
`orientation may be determined based upon the rolling aver-
`ages of accelerations created by the rolling average logic 135.
`In one embodiment, once the orientation is determined, a
`dominant axis is assigned based upon the orientation. Deter-
`15 mining an orientation of the electronic device 100 may
`include identifying a gravitational influence. The axis with
`the largest absolute rolling average may be the axis most
`influenced by gravity, which may change over time (e.g. as
`the electronic device is rotated). Therefore, a new dominant
`20 axis may be assigned when the orientation of the electronic
`device 100 and/or the inertial sensor(s) attached to or embed-
`ded in the electronic device 100 changes.
`In one embodiment, the actual axis with the largest abso-
`lute rolling average over the sample period is assigned as the
`25 dominant axis. In alternative embodiments, the dominant axis
`does not correspond to one of the actual axes of the inertial
`sensor(s) in a current orientation, but rather to an axis that is
`defined as approximately aligned to gravity. In one embodi-
`ment, the dominant axis corresponds to a virtual axis that is a
`30 component of a virtual coordinate system. In one embodi-
`ment, the dominant axis setting logic 140 assigns the domi-
`nant axis by performing a true gravity assessment, such as by
`doing trigonometric calculations on the actual axes based on
`the gravitational influence. In one embodiment, the dominant
`35 axis setting logic 140 assigns the dominant axis by comparing
`the gravitational influence to a data structure such as a lookup
`table, associative array, hash table, adjacency matrix, etc.
`Returning to FIG. 1, the step counting logic 130 may
`include a measurement selection logic 145, a cadence win-
`40 dow 150, a measurement comparator 155, a threshold com-
`parator 160, a step count buffer 165, and a mode logic 190.
`The measurement selection logic 145 may determine which
`measurements from the measurement buffer to use to deter-
`mine if a step has occurred. In one embodiment, the measure-
`45 ment selection logic 145 may monitor accelerations relative
`to the dominant axis, and select o