Monitoring and tracking personal fitness information
First Claim
1. A computer-implemented method for tracking an activity, the method comprising:
- receiving a location update associated with a first user;
performing a test on the location update, the test varying based on a type of the activity;
adding the location update to a queue of location updates in response to the location update passing the test;
determining an event occurring during the activity, the event associated with the location update and a performance of the first user while crossing a location of the location update during a past activity;
providing a feedback to the first user corresponding to the event occurring during the activity;
determining performance information associated with the first user based on the queue of location updates;
computing a size of a bounding box based on a distance between location coordinates in the queue of location updates, the size of the bounding box varying based on the distance between location coordinates;
determining a stop of the activity by comparing the size of the bounding box to a size threshold, the size threshold based on the type of the activity;
determining a transition of the activity from stopped to moving;
determining an accumulated stopped time; and
modifying the performance information associated with the first user by removing the accumulated stopped time from a total time of activity of the first user.
1 Assignment
0 Petitions
Accused Products
Abstract
A method and system for tracking an activity is described. A location tracking engine tracks a user'"'"'s location, determines a direction by identifying a plurality of angles ahead of the current location on the path, and conveys navigation information to the user. A filter module receives a location update from a location tracking engine. The filter module performs at least one test on the location update. The filter module adds the location update to a queue of recently received location updates in response to passing the test. The stop detector module determines that the user is stopped and sets the current status to stopped and sets a time of a stop detection change to the later of the last time that of the stop detection change and a timestamp of the oldest location update in the queue if a previous status is moving.
-
Citations
24 Claims
-
1. A computer-implemented method for tracking an activity, the method comprising:
-
receiving a location update associated with a first user; performing a test on the location update, the test varying based on a type of the activity; adding the location update to a queue of location updates in response to the location update passing the test; determining an event occurring during the activity, the event associated with the location update and a performance of the first user while crossing a location of the location update during a past activity; providing a feedback to the first user corresponding to the event occurring during the activity; determining performance information associated with the first user based on the queue of location updates; computing a size of a bounding box based on a distance between location coordinates in the queue of location updates, the size of the bounding box varying based on the distance between location coordinates; determining a stop of the activity by comparing the size of the bounding box to a size threshold, the size threshold based on the type of the activity; determining a transition of the activity from stopped to moving; determining an accumulated stopped time; and modifying the performance information associated with the first user by removing the accumulated stopped time from a total time of activity of the first user. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A system for tracking an activity comprising:
-
a filter module for receiving a location update associated with a first user, for performing a test on the location update, the test varying based on a type of the activity and for adding the location update to a queue of location updates in response to the location update passing the test, the queue including timestamps for the location updates; a location tracking engine coupled to the filter module, the location tracking engine for determining an event occurring during the activity, the event associated with the location update and a performance of the first user while crossing a location of the location update during a past activity, for providing a feedback to the first user corresponding to the event occurring during the activity and for determining performance information associated with the first user based on the queue of location updates; and a stop detector module coupled to the filter module, the stop detector for computing a size of a bounding box based on a distance between location coordinates in the queue of location updates, the size of the bounding box varying based on the distance between location coordinates, for determining a stop of the activity by comparing the size of the bounding box to a size threshold, the size threshold based on the type of the activity, for determining a transition of the activity from stopped to moving, for determining an accumulated stop time and for modifying the performance information associated with the first user by removing the accumulated stopped time from a total time of activity of the first user. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19)
-
-
20. A computer program product comprising a non-transitory computer useable medium including a computer readable program, wherein the computer readable program when executed on a computer causes the computer to:
-
receive a location update associated with a first user; perform a test on the location update, the test varying based on a type of the activity; add the location update to a queue of location updates in response to passing the test; determine an event occurring during the activity, the event associated with the location update and a performance of the first user while crossing a location of the location update during a past activity; provide a feedback to the first user corresponding to the event occurring during the activity; determine performance information associated with the first user based on the queue of location updates; compute a size of a bounding box based on a distance between location coordinates in the queue of location updates, the size of the bounding box varying based on the distance between location coordinates; determine a stop of the activity by comparing a size of the bounding box to a size threshold, the size threshold based on the type of the activity; determine a transition of the activity; determine an accumulated stopped time; and modify the performance information associated with the first user by removing the accumulated stopped time from a total time of activity of the first user.
-
-
21. A computer-implemented method for tracking an activity, the method comprising:
-
receiving a new location; determining a distance between the new location and a most recently received location; determining whether the distance is greater than a minimum outlier distance threshold based on a type of the activity; responsive to the distance being greater than the minimum outlier distance threshold based on the type of the activity, determining a difference between a timestamp of the new location and a timestamp of the most recently received location; determining an instantaneous speed based on the distance and the difference between the timestamps; receiving a table of valid speed ranges for one or more types of activities performed by users; determining a speed score based on the instantaneous speed and the table of valid speed ranges for one or more types of activities; receiving a table of valid horizontal accuracy ranges for one or more locations; determining a horizontal accuracy score based on an accuracy of reading of the new location and the table of valid horizontal accuracy ranges for one or more locations; determining whether the overall score that is obtained by combining the speed score and the horizontal accuracy score is greater than a resulting score threshold; and responsive to the overall score being greater than the resulting score, filtering out the new location.
-
-
22. A system for tracking an activity comprising:
-
a location tracking engine for receiving a new location; and a filter module coupled to the location tracking engine, the filter module for determining a distance between the new location and a most recently received location, determining whether the distance is greater than a minimum outlier distance threshold based on a type of the activity, responsive to the distance being greater than the minimum outlier distance threshold based on the type of the activity, determining a difference between a timestamp of the new location and a timestamp of the most recently received location, determining an instantaneous speed based on the distance and the difference between the timestamps, receiving a table of valid speed ranges for one or more types of activities performed by users, determining a speed score based on the instantaneous speed and the table of valid speed ranges for one or more types of activities, receiving a table of valid horizontal accuracy ranges for one or more locations, determining a horizontal accuracy score based on an accuracy of reading of the new location and the table of valid horizontal accuracy ranges for one or more locations, determining whether the overall score that is obtained by combining the speed score and the horizontal accuracy score is greater than a resulting score threshold and responsive to the overall score being greater than the resulting score, filtering out the new location.
-
-
23. A computer-implemented method for determining a direction, the method comprising:
-
determining that a current location is near a pre-selected path; identifying a first reference point, a second reference point and a third reference point on the pre-selected path, the second reference point equidistant from the first reference point and the third reference point; moving the first reference point by a first incremental distance from the current location in a direction of travel on the pre-selected path, the second reference point maintaining equidistance from the first reference point and the third reference point and the second reference point and the third reference point moving in the direction of travel on the pre-selected path; identifying a first angle formed by connecting the first reference point to the third reference point through the second reference point, the second reference point being the vertex of the first angle; moving the first reference point by a second incremental distance from the current location in a direction of travel on the pre-selected path, the second reference point maintaining equidistance from the first reference point and the third reference point and the second reference point and the third reference point moving in the direction of travel on the pre-selected path; identifying a second angle formed by connecting the first reference point to the third reference point through the second reference point, the second reference point being the vertex of the second angle; identifying a most acute angle from the first angle and the second angle; and determining a direction based on the most acute angle.
-
-
24. A system for determining a direction comprising:
a location unit for receiving a current location; and a location tracking engine coupled to the location unit, the location tracking engine for receiving the current location from the location unit and determining that the current location is near a pre-selected path, identifying a first reference point, a second reference point and a third reference point on the pre-selected path, the second reference point equidistant from the first reference point and the third reference point, moving the first reference point by a first incremental distance from the current location in a direction of travel on the pre-selected path, the second reference point maintaining equidistance from the first reference point and the third reference point and the second reference point and the third reference point moving in the direction of travel on the pre-selected path, identifying a first angle formed by connecting the first reference point to the third reference point through the second reference point, the second reference point being the vertex of the first angle, moving the first reference point by a second incremental distance from the current location in a direction of travel on the pre-selected path, the second reference point maintaining equidistance from the first reference point and the third reference point and the second reference point and the third reference point moving in the direction of travel on the pre-selected path, identifying a second angle formed by connecting the first reference point to the third reference point through the second reference point, the second reference point being the vertex of the second angle, identifying a most acute angle from the first angle and the second angle and determining a direction based on the most acute angle.
Specification