Patent application title: Method and System for Comparing Performance Statistics with Respect to Location

Sign up to receive free email alerts when patent applications with chosen keywords are publishedSIGN UP

Abstract:

One embodiment of an invention which computes a location based alignment
of two tracks over a set route. Once aligned, a comparison of performance
statistics is made at each position along the track. Time and distance
gap information is also computed at each position. The results are then
displayed in a plot (17) so one can see where different performance
statistics changed, including time gap information (19). The data is also
linked to a map (8) so one can visualize the locations more clearly. It
is also possible to compare multiple tracks (25) to one reference track
(23) for greater insight.

Claims:

1. A method of comparing performance statistics at individual locations
along a route, comprising: a. a means to align tracks based on location,
b. a means to compare performance statistics at aligned positions, c. a
means to compute the time gap at aligned positions, d. a means to compute
the distance gap at aligned positions, e. a display to visualize the
results of the alignment and comparison, whereby said aligned tracks are
compared at each aligned location, said display depicting the results.

2. The tracks in claim 1 wherein said tracks represent a traversal over a
set course.

[0003] compare.c: A C program receiving as input two tracks and
outputting their alignment based on location. Inputs are Comma Separated
Value (CSV) files with TIME,LATITUDE,LONGITUDE on each line. Output is
one index pair per line, representing aligned points. The first of the
pair refers to the line of the first input file, ref.csv below. The
second of the pair refers to the line of the second file, other.csv
below. [0004] Input CSV example: [0005] 1,34.044984318,-117.165059354
[0006] 2,34.045006279,-117.164999004 [0007] 3,34.045138378,-117.164755678
[0008] Output file example: [0009] 1,5 [0010] 2,6 [0011] 4,9 [0012]
The program is written in the C programming language. The GNU Scientific
Library (availablet http://www.gnu.org/software/gsl/) is the only
required nonstandard library. A C compiler is required to compile the
code and one is available at little or no cost for most computer systems.
An example of compiling and running the code using the GCC Compiler
(available at http://gcc.gnu.org/) follows: [0013] >gcc -lgsl
-lgslcblas compare.c -o compare [0014] >./compare -r ref.csv -o
other.csv [0015] This example assumes that all the standard libraries
and the GNU Scientific Library are found in their default locations. If
this is not the case, additional parameters may be required by GCC.
[0016] Output is displayed to the terminal in the format described above.

BACKGROUND

Prior Art

[0017] Recently, tracking devices have become readily available. Most
utilize the Global Position System (GPS) to determine their location. A
tracker will, at the very least, record the user's position, and time at
that position. The recording is done at set intervals.

[0018] Depending on the application, the device may also record other key
performance statistics at each position. Cyclists, for example, may
record the location along with speed, distance traveled since start,
elapsed time, heart rate, pedaling cadence, power output, temperature,
etc.

[0019] As one travels a route, recorded positions are collected to form a
track. The track may represent a run, hike, bike ride, drive, etc. It may
also represent a sub-segment of such activities.

[0020] Some users want to compare their recorded tracks to others. Take,
for example, a competitive cyclist. The rider would like to compare their
ride, over a set course, to another rider's. They may also want to
compare to their own ride from another time.

[0021] There are many software applications available to view a recorded
track. Trackers provide a list of numbers, additional software is
necessary to make the information meaningful. The software may display
the track on a map and/or plot an elevation profile. These applications
take a single track and allow one to dissect different properties of that
single track only. They do not allow for direct comparisons between
tracks.

[0022] On Apr. 14, 2009, Strava Inc. released an Internet based
application, found at http://www.strava.com, for comparing tracks. The
application compares total performance statistics over user defined
intervals. It allows one to see how average statistics differed over an
interval. However, the application does not allow one to compare specific
points along the route, such as at the top of a hill.

[0023] Also, Strava's application does not allow one to see how much they
were ahead or behind the other user at specific points, also known as a
time or distance gaps. For example, rider A reached the top of a hill 15
seconds before rider B. Strava's application only provides a global
summary of a track, or track segment.

[0024] On Dec. 16, 2009, Peaksware, LLC released a software package known
as TrainingPeaks WKO+ Version 3.0. The software allows for the comparison
of tracks based on elapsed time only. One can see how they compared after
5 minutes. But it may have taken a different amount of time to reach
specific points. Using this software, one can only compare their
performance statistics after a given amount of time. They can not compare
statistics at specific points or locations, such as the top of a hill or
at a given turn on the route.

[0025] The elapsed time comparisons approach taken by TrainingPeaks WKO+
Version 3.0 also makes it difficult to compare the same sections of road
among tracks. One needs all trackers to start recording at the same
time/place. For example, rider A starts their tracker 10 minutes before
the start of their race and rider B starts their tracker at the actual
start. There elapsed time is now off by 10 minutes and there is no way to
realign them without extra information. Location data provides this
information and eliminates the need to start the trackers at the same
time.

[0026] On Aug. 28, 2009, Paul Mach, the inventor, published graphs
produced by an early embodiment of this invention on his website. The
information can be found at the world wide website
http://paulmach.com/090828/195022/. Only the results were provided, no
details of the embodiment of the invention were provided.

[0027] On May 15, 2010, the inventor again released information about the
invention. No details of the embodiment were provided, just the end
results produced. This embodiment was different from the one released on
Aug. 28, 2009 by providing users a way to interact with the data.

SUMMARY

[0028] In accordance with one embodiment this invention computes a
location based alignment of two tracks. Once aligned, a comparison of
performance statistics is made at each position along the track. Time and
distance gap information is also computed. The results are then displayed
in a table or graph format. This allows the user to see how time and
distance gaps changed and how performance statistics differed as the
route was traversed.

DRAWINGS--FIGURES

[0029] FIG. 1: An embodiment of a user interface which displays the
results of the performance statistics compared by location.

DRAWINGS--REFERENCE NUMERALS

[0030] 1 Title describing the comparison [0031] 2 Properties of the
comparison [0032] 3 Option for others to contribute their tracks [0033] 4
List of tracks, called rides in this embodiment, that can be added to the
plot (17) [0034] 5 Track along with its color used to show its data on
the map (8) and plot (17) as well as a comment and name of the individual
to whom it belongs [0035] 6 Extended description of the comparison shown
[0036] 7 Object that triggers a menu for interacting with the track
adjacent to it [0037] 8 Map of the area covered by the track [0038] 9
Display options for the map (8) [0039] 10 Map type options for the map
(8) [0040] 11 Track highlighted over the map (8) [0041] 12 Markers
showing the location of the tracked objects at a specific time
highlighted (21) on the plot (17) by the pointer (22) [0042] 13 Button to
toggle elevation underlay on the plot (17) [0043] 14 Button to toggle
speed of reference (23) underlay on the plot (17) [0044] 15 Toggle
buttons to display time gaps or distance gaps on the plot (17) [0045] 16
Toggle button to display grid over the plot (17) [0046] 17 Plot, x-axis
is distance traveled, left y-axis is elevation for the elevation underlay
that can be toggled with (13), right y-axis is for the time gap between
the reference rider (23) and other riders (25) [0047] 18 Elevation
underlay, toggled by button (13) [0048] 19 Plot lines indicating gaps
between reference track (23) and comparison tracks (25), colors
correspond throughout the figure including in the track list (4), map (8)
and table (26, 27, 28) [0049] 20 Horizontal line at 0 representing the
lack of gap between the reference track and itself (23) [0050] 21
Vertical line representing a position highlighted by the pointer (22),
stats for the position are shown in the table (26, 27) and the geographic
positions are highlighted on the map (8) with the markers (12) [0051] 22
Pointer used to highlight (21) part of the plot (17) [0052] 23 The
reference ride/track that is compared to the other rides (25) [0053] 24
Object that triggers a menu for interacting with the track adjacent to it
[0054] 25 List of rides/tracks being compared to the reference (23)
[0055] 26 Table with headings indicating information about the ride/track
that is displayed for the location highlight by (21) [0056] 27 Table with
headings indicating information about the comparison relative to the
reference (23) [0057] 28 Colors corresponding to the different tracks
(5), they correspond throughout the figure including the markers (12) in
the map (8) and the lines (19) on the plot (17)

GLOSSARY

[0057][0058] Distance Gap: The distance between two objects, whose
motions may be represented by a track, at a specific point and time. For
example, when rider A reached the top of the hill, rider B was 50 meters
behind. [0059] Latitude/Longitude Euclidean Distance: Let X be a point
with latitude and longitude components, X.lat and X.lng respectively. Let
Y be a similar, separate point. The latitude/longitude euclidean distance
is defined as the square root of:

[0060] (X.lat-Y.lat)*(X.lat-Y.lat)+(X.lng-Y.lng)*(X.lng-Y.lng) [0061]
Performance Statistics: Additional information recorded by a tracker
along with the position. For example, a tracker designed for cycling
would record the speed, distance traveled, elapsed time, elevation, heart
rate, pedaling cadence, power output, temperature, etc. This is in
addition to the standard position (can be latitude, longitude) and
current time. These additional pieces of information can change
drastically depending on, but not limited to, terrain, weather or user
fatigue. [0062] Position: Also known as a point. A position is a single
location returned by a receiver. It consists of the location (can be
latitude, longitude) and the current time. It may also contain other
performance statistics relevant to the current application. [0063]
Receiver: An electronic device that receives a signal and computes the
time and the position (can be latitude, longitude), of the device. [0064]
Route: A path, usually on the surface of the earth. Can also be thought
of as a race course or trail. [0065] Time Gap: The difference in time it
took two objects, whose motion may be represented by a track, to reach a
specific point. For example, rider A reached the top of the hill 5
seconds before rider B. [0066] Track: A collection of positions, or
points, recorded by a tracker as one traverses a route. The track may
represent an activity such as a run, hike, bike ride or drive. [0067]
Tracker: A special receiver that records the position information it
computes. As one moves, the tracker will record, at intervals, the time,
and the position (can be latitude, longitude). The tracker may also
record other information that is relevant to the current context.

DETAILED DESCRIPTION

[0068] This embodiment of the invention is described in the context of
cycling. However, all the ideas apply to any application where one wants
to compare two tracks over the same route. These other applications
include, but are not limited to, running, triathlon, hiking, or driving.

[0069] In the context of cycling, a track represents a bike ride. Such
tracks are collected using a tracker that travels with the cyclist as
they ride. The tracker may also record a number of other performance
statistics to better analyze the ride. The position, latitude and
longitude in this embodiment, and time are the only required items.
Speed, distance traveled and elapsed time can be estimated from the
position and time.

[0070] This invention compares two tracks based on location. If two people
ride the same route, we align their tracks so we can compare their
performance statistic at physical locations along the route. The location
based alignment allows one to also compute time gaps at each location,
ie. the difference in time it took each rider to reach a certain point.
After time gaps are computed one can then determine the distance gap
between the two riders at a given time.

[0071] We will consider two different types of comparisons between tracks.
The first is called an individual event. For this event each rider starts
at a different time and covers the same course. The second is called a
mass start event. It involves all riders starting together. In both cases
riders strive to complete the course in the shortest amount of time.

[0072] The invention consists of three main parts: the alignment of the
two tracks (I), the comparison of aligned points (II), and the display of
the results in a useful manner (III). [0073] (I) The alignment of two
tracks: [0074] Let A(j) be a point in track A and B(k) be a point in
track B. The problem can be summarized as: For each point A(j) we want to
find a matching point B(k). A match is defined as a correspondence, or
location match, among two points in a route. [0075] Each track is sampled
at discrete points. Thus, there is no guarantee there will be an exact
location match between tracks. We need to find the closest/best match.
[0076] A simple case is when two tracks represent a route that travels
directly from one location to the other. The alignment can be thought of
as laying one track on top of the other in two-dimensions. Then for every
point A(j) we find the closest point B(k). [0077] In other cases the
route is more complicated. For example, an out and back or involving
multiple laps. In the out and back case, simply finding the closest B(k)
to every A(j) does not work. A point A(j) representing the "out" part of
the route may be closest to a point B(k) in the "back" part of the route.
This situation is common due to inaccurate position data recorded by the
trackers.

[0078] One must take special care while doing the alignment due to these
more complicated cases. The algorithm below is one embodiment of this
part of the invention that is designed to address these problem.

[0079] The Algorithm: [0080] (i) For each track, the points are reduced:
[0081] When frequently sampling points and traveling in a straight line,
one ends up with many redundant points in the middle. These redundant
points do not add anything to the shape of the route. The Douglas-Peucker
Algorithm for polyline simplification is used to remove these types of
redundant points. A latitude/longitude euclidean distance threshold of
0.0005 is used in this embodiment. [0082] The result is a set of points
that are a subset of the original points in the track. This works to
reduce the effect of the position sampling rate on the alignment.
[0083] (ii) Create a b-spline with the remaining points: [0084] A
standard degree 10 b-spline is created using the remaining points as
anchors and a uniform knot vector. [0085] This works to smooth the route
by eliminating any noise that many be present. This is necessary in the
event the tracker had pour accuracy. [0086] (iii) Resample the b-spline
path with respect to arc-length: [0087] B-splines are parametric
functions defined by their degree, knot vector, and anchor points. They
are then sampled used a single parametric variable. Formulas for this
computation are readily available. The curve is sampled at intervals of
0.0005 in the latitude/longitude space. [0088] Steps (i), (ii), and (iii)
are necessary to create a smooth, evenly sampled, representation of the
track. [0089] (iv) Use the Needleman-Wunsch Dynamic Programming
Algorithm to align the resampled b-spline paths: [0090] The
Needleman-Wunsch Algorithm used is similar to the ones used for DNA
sequence alignment. There are several differences: [0091] (a) The
scoring function [0092] (b) The search for optimal sub-alignments is
limited to just the 3 previous resampled b-spline locations of either
track. [0093] (c) A point in track A can be aligned to multiple points in
track B. This is uncommon but accommodates for situations such as a rider
stopping for a moment. [0094] The scoring function used in this
embodiment is as shown:

[0094] Let d=latitude/longitude euclidean distance between the two
points

score=0.0003*0.0003-d*d [0095] A limited search area is used when
computing the optimal score. Only points within 3 resampled b-spline
locations are considered. This eliminates the need for a gap penalty and
improves the run time dramatically. [0096] (v) Traceback the dynamic
programming result: [0097] The dynamic programming algorithm produced
the optimal alignment between points on the resampled b-spline for the a
given scoring function. The dynamic programming algorithm also builds in
continuity and directionality of the points. This means that if A(1)
corresponds to B(1) and A(5) corresponds to B(5) then A(3) can not
correspond to B(7). [0098] (vi) Map back the b-spline points to their
nearest track point: [0099] Each b-spline point, using its parameter
value, can be mapped to one of the anchors. This anchor is a reduced
point. We now do a local search along the track using the anchor point as
the start and search for the closest track point to the original b-spline
point. [0100] (vii) Remove aligned track positions which are further
apart than a specified distance. In this embodiment, 40 meters is used.
This many indicate the input tracks covered different routes or the
tracker had poor accuracy around that location.

[0101] Once this algorithm completes we have an alignment between the two
tracks. This alignment is based on the locations and the scoring function
in step (iv). The end result is a map from one track to the other. Every
A(j) has a corresponding point B(k) if a match exists. The alignment
between A and B is equivalent to the alignment between B and A.

[0102] If A(j) and B(k) correspond they may not represent an exact match
in space. The correspondence represents a best match. The error is
proportional to the distance between the two points. This causes the
error between two points to be independent of the error between any other
set of points. This is one novel aspect of the invention. The error is
not compounded as the track progresses.

[0103] Such a compounding error would be found if one were to align by
distance traveled. Distance traveled can be off by as much as 5 percent
due to the inaccuracies of the receiver or slight differences in the
route. For example, when two riders' trackers say they are 10.0 miles in,
they are most likely not at the same location.

[0104] A computer program implementation of this embodiment of this part
of the invention is provided in the Source Code Listing under the name
"compare.c." [0105] (II) Computing the comparison:

[0106] Again we let A(j) be a point in track A and B(k) be a point in
track B. Part (I) provides an alignment between the two tracks. So for
point A(j) there is a point, B(k), that corresponds, or represents a
similar location along the route.

[0107] In this part we compute a comparison between the two tracks. We
want to see how the rider's performance statistics compared at different
locations along the route.

[0108] The alignment between A and B is the same as the alignment between
B and A. However, the comparison between A and B is not the same as the
comparison between B and A. Let us look at why this is the case.

[0109] Let A(j) and B(k) correspond. The speed at A(j) is 15 mph and the
speed at B(k) is 10 mph. Now let us compare A to B. We say at location
A(j), rider A was traveling 5 mph faster. However, if we compare B to A,
at the location B(k), rider B was traveling 5 mph slower. In each case,
one ride is the reference and the over differs from that reference by a
fixed amount.

[0110] Now for the actual comparison. For every comparison A(j) to B(k) we
let C(j) equal to B(k)-A(j). This subtraction is done for speed, time,
and all other performance statistics. The end results is C, a set of
lists of positive and negative numbers. Each C(j) matches with A(j). At
position A(j) the difference of the speed, time and other performance
statistics are found in C(j).

[0111] Special care must be taken with the time difference or time gap. If
the tracks represent a mass start event, a simple subtraction is
sufficient. If the tracks represent an individual event, an offset needs
to be subtracted from the time to correct for the different start times.
It should be noted that the location based alignment allows this time gap
to be computed. We can use the difference in time at the first point in
the alignment, found in C(1), as the offset.

[0112] The distance difference represents how far ahead or behind rider B
was, at a point, compared to rider A. This is computed using the time gap
information. We compare A to B and get C as described above. Let A(j) and
B(k) correspond and C(j) contain the time gap and other information.

[0113] Using the time gap, G, in C(j), we find a new point B(m) that was
recorded G seconds before B(k). G may be negative. Let us look at an
example, the time gap, G, at C(j) is 5 seconds. This means that at the
location represented by A(j), rider B arrived there 5 seconds after rider
A. The time at B(k) was greater than A(j). Now we look at track B and
find the position that is 5 seconds before B(k) and call it B(m).

[0114] The distance different is the distance traveled at B(m) minus the
distance traveled at B(k). In the situation described above this distance
would be negative because at location A(j) rider B is behind, he arrived
at A(j) 5 seconds after rider A.

[0115] The distance difference information relies on the time gap
information and its accurate computation is unique to this invention. It
depends on the location based alignment of the two tracks. [0116] (III)
Once we have a comparison, the results need to be displayed in a
meaningful, useful way. Such a display can consist of a table, but the
data is better seen on a graph or plot. An embodiment of this portion can
be found in FIG. 1.

[0117] A standard plot (17) has the time gap or distance gap on the
y-axis, plotted with respect to the distance traveled on x-axis. This
allows the user to see how the time gap (19) or distance gap changed as
the route was traversed. This type of result is unique to this invention.

[0118] One can also plot performance statistics along the y-axis. The
values plotted are comparisons so we see how the two riders differed at
points along the route. This is useful because traveling 20 mph may or
may not be significant depending on if the rider is going up or down
hill. Thus, comparing to another rider adds more information about what
happened. This is unique to this invention.

[0119] The plot may also be linked to a map (8) of the track. As the user
selects different points along the x-axis of the graph, the corresponding
locations (12) of the riders are highlighted on the map. This allows the
user to see where things happened. This is unique to this invention.

[0120] This embodiment describes a comparison between two tracks. It many
be useful to view the comparison between rides A and B, and rides A and C
on the same plot. For example, there are many time gap lines (19) on the
plot (17) that correspond to the riders selected (28).

[0121] To conclude, the invention takes two tracks, aligns them, compares
them and displays the result to the user. This comparison provides up to
a second by second comparison of the tracks. Such a detailed analysis is
unique to this invention and is useful in many contexts, including
cycling, running, hiking, and triathlon.

ADVANTAGES

[0122] From the description above, several advantages of one of more
aspects are as follows: [0123] (i) The location based alignment of
tracks eliminates the need for synchronized tracker start. The trackers
can be started at anytime and an alignment can be done later on any
portion of the route. This avoids the need to reset distance traveled or
elapsed time at the start of the section of interest. [0124] (ii)
Performance statistics are compared at all locations along a route. One
can see how the compared performance statistics changed as the route was
traversed. This is more useful than comparing whole route averages.
[0125] (iii) A time gap is computed at every location along the route.
This allows one to determine where a rider gained or lost their advantage
to the other. This is more useful than just comparing elapsed time over
the whole route. [0126] (iv) A distance gap is computed to show how far a
rider was ahead or behind another at each location.

SEQUENCE LISTING

[0127] None.

CONCLUSION

[0128] Accordingly, the reader will see that the comparison of performance
statistics by location has many advantages. By comparing at all locations
on the route, one can visualize on a plot where the compared performance
statistics changed. A location based alignment is necessary to keep the
information in sync. Synchronization of trackers is unnecessary, the
location provides that information.

[0129] Location based comparison is the pure comparison. For example, at
the top of the hill, rider A was traveling 5 mph faster than rider B.
This eliminates differences in terrain and weather and ensures both
riders have covered the same amount of the route up to that point. Just
the riders' abilities are being compared.

[0130] Although the description above contains many specifics, these
should not be construed as limiting the scope of the embodiments but as
merely providing illustrations of some embodiments. For examples, the
tracks can represent any case where one wants to compare performances
over a set route.

[0131] Thus the scope of the embodiments should be determined by the
appended claims and their legal equivalents, rather than by the examples
given.