Systems and Methods for Determining the Orientation of Motion-Sensing Devices During Physical Activity
A computer-implemented method for providing real-time performance feedback includes receiving uncalibrated time-series motion data generated by one or more motion sensors coupled directly or indirectly to an athlete while performing a downhill snow sport, the motion sensor(s) having an unknown rotational orientation relative to the athlete; determining an estimated rotational offset of the motion sensor(s) relative to a body-segment coordinate frame of the athlete, the rotational offset determined using a calibration model; transforming, by the one or more processors, the uncalibrated time-series motion data to calibrated time-series motion data according to the estimated rotational offset, the calibrated time-series motion data aligned with the body-segment coordinate frame; and processing the calibrated time-series data, with the one or more processors, to determine one or more metrics for the athlete.
1 . A computer-implemented method for providing real-time performance feedback, comprising:
a. receiving, at one or more processors, uncalibrated time-series motion data generated by one or more motion sensors coupled directly or indirectly to an athlete while performing a downhill snow sport that includes curved turns, the one or more motion sensors having an unknown rotational orientation relative to the athlete;
b. feeding the uncalibrated time-series motion data into a calibration model executed by the one or more processors, the calibration model configured to determine an estimated rotational offset of the one or more motion sensors relative to a body-segment coordinate frame of the athlete;
c. transforming, by the one or more processors, the uncalibrated time-series motion data to calibrated time-series motion data according to the estimated rotational offset, the calibrated time-series motion data aligned with the body-segment coordinate frame; and
d. processing the calibrated time-series data, with the one or more processors, to determine one or more metrics for the athlete.
2 . The method of claim 1 , wherein the one or more motion sensors include(s) only a three-dimensional (3D) gyroscope and/or a 3D accelerometer.
3 . The method of claim 1 , wherein determining the estimated rotational offset includes (i) aligning a vertical axis of the body-segment coordinate frame with gravity and (ii) selecting a rotation about the vertical axis that maximizes time-smoothed lateral acceleration during a plurality of the curved turns relative to fore-aft acceleration.
4 . The method of claim 1 , wherein execution of the calibration model is triggered at turn boundaries detected from zero-crossings of roll, extrema of yaw rate, and/or sign changes in lateral acceleration.
5 . The method of claim 1 , wherein:
the one or more motion sensors is/are disposed in a motion-sensing device, and
the method further comprises sending the uncalibrated time-series motion data from the motion-sensing device to a portable computer, the portable computer including the one or more processors.
6 . The method of claim 1 , wherein the one or more motion sensors is/are disposed in a portable computer, the portable computer including the one or more processors.
7 . The method of claim 6 , wherein the portable computer comprises a smartphone.
8 . The method of claim 1 , wherein the calibration model comprises a trained machine-learning (ML) model configured to determine the rotational offset of the one or more motion sensors directly from the uncalibrated time-series motion data.
9 . The method of claim 8 , wherein the trained ML model was trained with a plurality of sets of randomly rotated time-series motion data, each set of randomly rotated time-series motion data having a respective known rotational offset relative to the body-segment coordinate frame.
10 . The method of claim 8 , wherein:
the one or more motion sensors is/are disposed in a portable computer,
the portable computer comprises a smartphone, and
the uncalibrated time-series motion data used to train the trained ML model are only smartphone inertial data acquired during reference carved turns.
11 . The method of claim 1 , further comprising:
processing the calibrated time-series data, with the one or more processors, to evaluate a performance of the athlete; and
producing real-time sensory feedback to the athlete, the real-time sensory feedback corresponding to the performance of the athlete.
12 . The method of claim 1 , further comprising producing real-time sensory feedback to the athlete, the real-time sensory feedback corresponding to the one or more metrics.
13 . The method of claim 12 , wherein the real-time sensory feedback includes a coaching cue.
14 . The method of claim 1 , wherein the calibration model comprises an attitude estimator or a quaternion estimator algorithm.
15 . The method of claim 1 , wherein the body-segment coordinate frame includes yaw, pitch, and roll axes that are mutually orthogonal.
16 . The method of claim 15 , wherein the calibration model is configured to independently determine a respective estimated rotational offset with respect to each of the yaw, pitch, and roll axes.
17 . The method of claim 1 , wherein:
the uncalibrated time-series motion data are received from a plurality of motion-sensing devices, each motion-sensing device including a respective one or more motion sensors, and
the method further comprises:
time-synchronizing the uncalibrated time-series motion data from the plurality of motion-sensing devices before the uncalibrated time-series motion data; and
feeding time-synchronized uncalibrated time-series motion data into the calibration model to determine a respective estimated rotational offset of each motion-sensing device relative to the body-segment coordinate frame of the athlete.
18 . The method of claim 17 , wherein the estimated rotational offsets for left and right devices are determined jointly using the time-synchronized uncalibrated time-series motion data to maximize inter-device symmetry of roll and yaw waveforms during a respective curved turn.
19 . The method of claim 17 , wherein the motion-sensing devices include a first motion-sensing device associated with a first foot or a first leg on a first side of the athlete, and a second motion-sensing device associated with a second foot or a second leg on a second side of the athlete.
20 . The method of claim 19 , wherein the calibration model is configured to predict the first and second sides.
21 . The method of claim 1 , further comprising determining a state orientation estimate for the one or more motion sensors based, at least in part, on the estimated rotational offset.
22 . The method of claim 21 , further comprising determining, by the one or more processors and with the calibration model, a confidence value representing an uncertainty associated with the estimated rotational offset.
23 . The method of claim 22 , wherein the state orientation estimate is updated using a dynamic state estimator that receives as inputs at least the confidence value and the estimated rotational offset.
24 . The method of claim 23 , wherein the dynamic state estimator maintains independent sub-states and covariance for yaw, pitch, and roll and weights model updates inversely to a model-predicted axis-specific uncertainty.
25 . The method of claim 23 , wherein the dynamic state estimator includes a Bayesian filter.
26 . The method of claim 25 , wherein the Bayesian filter comprises a Kalman filter.
27 . The method of claim 23 , further comprising injecting process noise into the dynamic state estimator, the process noise corresponding to an elapsed time since a last state orientation estimate and/or a difference between a current estimated rotational offset and a last estimated rotational offset.
28 . The method of claim 22 , wherein the state orientation estimate includes three independent sub-states representing yaw, pitch, and roll axes.
29 . The method of claim 22 , further comprising transforming buffered uncalibrated time-series motion data for the downhill snow sport using the state orientation estimate so that historical motion data and current motion data share a common frame of reference.
30 . The method of claim 22 , further comprising persisting an updated state orientation estimate in non-volatile memory operably coupled to the one or more processors, at an end of a downhill snow sport session and initializing a subsequent downhill snow sport session with a persisted updated state orientation estimate.
31 . The method of claim 1 , further comprising:
e. feeding the calibrated time-series motion data into the calibration model to determine an updated estimated rotational offset of the one or more motion sensors relative to the body-segment coordinate frame of the athlete;
f. transforming, by the one or more processors, the calibrated time-series motion data to updated calibrated time-series motion data according to the updated estimated rotational offset; and
g. repeating steps e and f iteratively wherein in a current iteration the calibrated time-series motion data fed into the calibration model in step b is the updated calibrated time-series motion data transformed in step f in a last iteration.
32 . The method of claim 1 , further comprising triggering an execution of step b in response to a calibration event.
33 . The method of claim 32 , wherein the calibration event includes a completion of a curved ski turn, a completion of a ski run, a transition onto a ski lift, and/or an explicit user input.
34 . A portable computer comprising:
one or more processors;
a plurality of motion sensors in communication with the one or more processors;
non-volatile computer memory operably coupled to the one or more processors, the non-volatile computer memory storing computer-readable instructions that, when executed by the one or more processors, cause the one or more processors to:
a. receive at least a set of uncalibrated time-series motion data generated by the one or more motion sensors while an athlete performs a downhill snow sport that includes curved turns, the one or more motion sensors having an unknown rotational orientation relative to the athlete;
b. transform the set of uncalibrated time-series motion data to a set of calibrated time-series motion data by rotating the set of uncalibrated time-series motion data according to a current rotation estimate for the one or more motion sensors, the current rotation estimate determined relative to a body-segment coordinate frame of the athlete;
c. determine, with a calibration model running on the one or more processors, a predicted rotation estimate for the set of calibrated time-series motion data relative to the body-segment coordinate frame of the athlete;
d. combine the predicted rotation estimate and the current rotation estimate to form a model rotation estimate;
e. determine an updated rotation estimate, relative to the body-segment coordinate frame of the skier, for the one or more motion sensors based at least in part on the model rotation estimate; and
f. replace the current rotation estimate with the updated rotation estimate.
35 . The portable computer of claim 34 , wherein the computer-readable instructions, when executed by the one or more processors, further cause the one or more processors to determine, with the calibration model, a model error estimate of the model rotation estimate.
36 . The portable computer of claim 35 , wherein in step e the updated rotation estimate for the one or more motion sensors is determined using as inputs the model error estimate, the model rotation estimate, and a current state error estimate for the current rotation estimate.
37 . The portable computer of claim 36 , wherein the computer-readable instructions, when executed by the one or more processors, further cause the one or more processors to determine the updated rotation estimate and the current state error estimate using a dynamic state estimator running on the one or more processors.
38 . The portable computer of claim 37 , wherein the dynamic state estimator comprises a Kalman filter, a Bayesian filter, or a recurrent neural network.
39 . The portable computer of claim 36 , wherein the computer-readable instructions, when executed by the one or more processors, further cause the one or more processors to:
g. determine, using the dynamic state estimator, an updated state error estimate using as inputs at least the model error estimate and the current state error estimate for the current rotation estimate; and
h. replace the current state error estimate with the updated state error estimate.
40 . The portable computer of claim 39 , wherein the computer-readable instructions, when executed by the one or more processors, further cause the one or more processors to inject additional uncertainty into the dynamic state estimator, the additional uncertainty corresponding to an elapsed time since a last state orientation estimate and/or a difference between the current rotation estimate and a last rotation estimate.
41 . The portable computer of claim 39 , wherein the computer-readable instructions, when executed by the one or more processors, further cause the one or more processors to process a plurality of sets of the uncalibrated time-series motion data in a plurality of loops through steps a-h so as to iteratively update (a) the current rotation estimate of the one or more motion sensors and (b) the current state error estimate of the current rotation estimate.
42 . The portable computer of claim 41 , wherein each set of the uncalibrated time-series motion data represents a predetermined time period or a time between a last calibration event and current calibration event.
43 . The portable computer of claim 34 , wherein the computer-readable instructions, when executed by the one or more processors, further cause the one or more processors to:
analyze the set of calibrated time-series data to detect a curved turn performed by the athlete;
transform at least a portion of the set of uncalibrated time-series motion data corresponding to the detected curved turn to respective calibrated time-series motion data using the updated rotation estimate determined in step e; and
process the respective calibrated time-series motion data to analyze a performance of the athlete during the detected curved turn.
44 . The portable computer of claim 43 , wherein transforming the at least a portion of the set of uncalibrated data corresponding to the detected curved turn uses the updated rotation estimate determined after the detected curved turn, thereby aligning historical and current data to a common frame.
45 . The portable computer of claim 43 , wherein the computer-readable instructions, when executed by the one or more processors, further cause the one or more processors to produce a sensory feedback signal that generates sensory feedback to the athlete, the sensory feedback corresponding to the performance of the athlete during the turn.
46 . The portable computer of claim 34 , wherein the portable computer comprises a smartphone.
47 . The portable computer of claim 34 , wherein the calibration model comprises a trained machine-learning (ML) model.
48 . The portable computer of claim 47 , wherein the trained ML model was trained with a plurality of sets of randomly rotated time-series motion data, each set of randomly rotated time-series motion data having a respective known rotational offset relative to the body-segment coordinate frame of the athlete.
49 . A system comprising:
one or more motion-sensing devices, each motion-sensing device configured to be coupled at an unknown orientation to a skier, a ski boot, a ski binding, and/or a ski, each motion-sensing device including:
one or more motion sensors configured to generate uncalibrated time-series motion data corresponding to a movement of the skier;
first communications circuitry;
one or more first processors coupled to the one or more motion sensors and the first communications circuitry; and
a portable computer in communication with the one or more motion-sensing devices, the portable computer comprising:
second communications circuitry;
one or more second processors coupled to the second communications circuitry; and
non-volatile computer memory coupled to the one or more second processors, the second non-volatile computer memory storing computer-readable instructions that, when executed by the one or more second processors, cause the one or more second processors to:
a. receive one or more sets of uncalibrated time-series motion data, each set of uncalibrated time-series motion data sent from a respective motion-sensing device;
b. transform the one or more sets of uncalibrated time-series motion data to one or more sets of calibrated time-series motion data, respectively, by rotating each set of uncalibrated time-series motion data according to a respective current rotation estimate for each motion-sensing device relative to a body-segment coordinate frame of the skier;
c. determine, with a calibration model running on the one or more second processors, for each motion-sensing device: a respective model rotation estimate for each set of calibrated time-series motion data relative to the body-segment coordinate frame of the skier;
d. combine the respective relative model rotation estimate and the respective current rotation estimate to form a respective model rotation estimate for each motion-sensing device;
e. determine a respective updated rotation estimate, relative to the body-segment coordinate frame of the skier, for each motion-sensing device based at least in part on the respective model rotation estimate; and
f. replace the respective current rotation estimate for each motion-sensing device with the respective updated rotation estimate.
50 . The system of claim 49 , wherein:
the one or more motion-sensing devices comprises a plurality of the motion-sensing devices, and
time-synchronization between the motion-sensing devices is/was established by estimating and removing round-trip latency through repeated timestamp exchanges and/or by detecting a common impulsive event captured by onboard microphones or accelerometers.
51 . The system of claim 49 , wherein the one or more motion-sensing devices comprises at least a first motion-sensing device configured to be coupled to a first pant leg, a first ski boot, a first ski binding, or a first ski, and a second motion-sensing device configured to be coupled to a second pant leg, a second ski boot, a second ski binding, or a second ski.
52 . The system of claim 49 , wherein the computer-readable instructions, when executed by the one or more second processors, further cause the one or more second processors to determine, with the calibration model, a respective model error estimate of the respective model rotation estimate.
53 . The system of claim 52 , wherein in step e the respective updated rotation estimate for each motion-sensing device is determined using as inputs the respective model error estimate, the respective model rotation estimate, and a respective current state error estimate for the respective current rotation estimate.
54 . The system of claim 53 , wherein the computer-readable instructions, when executed by the one or more second processors, further cause the one or more second processors to determine the respective updated rotation estimate and the respective current state error estimate using a dynamic state estimator running on the one or more second processors.
55 . The system of claim 54 , wherein the dynamic state estimator comprises a Kalman filter, a Bayesian filter, or a recurrent neural network.
56 . The system computer of claim 54 , wherein the computer-readable instructions, when executed by the one or more second processors, further cause the one or more second processors to:
g. determine, using the dynamic state estimator, a respective updated state error estimate using as inputs at least the respective model error estimate and the respective current state error estimate for the respective current rotation estimate; and
h. replace the respective current state error estimate with the respective updated state error estimate.
57 . The system of claim 56 , wherein the computer-readable instructions, when executed by the one or more second processors, further cause the one or more second processors to inject additional uncertainty into the respective updated state error estimate.
58 . The system of claim 56 , wherein the computer-readable instructions, when executed by the one or more second processors, further cause the one or more second processors to process a respective plurality of the sets of uncalibrated time-series motion data from each motion-sensing device in a plurality of loops through steps a-h so as to iteratively update (a) the respective current rotation estimate for each motion-sensing device and (b) the respective updated error estimate of each motion-sensing device.
59 . The system of claim 49 , wherein the calibration model comprises a trained machine-learning (ML) model.
60 . The system of claim 59 , wherein the trained ML model was trained using a plurality of sets of randomly rotated time-series motion data, each set of randomly rotated time-series motion data having a respective known rotational offset relative to the body-segment coordinate frame of the skier.
61 . The system of claim 49 , wherein the computer-readable instructions, when executed by the one or more second processors, further cause the one or more second processors to:
analyze the one or more sets of calibrated time-series motion data to detect a ski turn performed by the skier;
transform at least a portion of the one or more sets of uncalibrated time-series motion data corresponding to the ski turn to respective calibrated data time-series motion data using the respective updated rotation estimate determined in step e; and
process the respective calibrated data time-series motion data to analyze a performance of the skier during the ski turn.
62 . The system of claim 61 , wherein the computer-readable instructions, when executed by the one or more second processors, further cause the one or more second processors to produce a sensory feedback signal that generates sensory feedback to the skier, the sensory feedback corresponding to the performance of the skier during the ski turn.