Various systems are used in applications, such as sports, motor vehicle operation, and the like, to help reduce injuries. For example, football players typically wear a football helmet and shoulder pads to minimize the risk of injury (e.g., due to collisions with other players, the ground, etc.) while playing. Similarly, motor vehicle operators such as motorcyclists often wear helmets to minimize the risk of injury (e.g., due to collisions with other motor vehicles, etc.) while driving.
One embodiment relates to an impact prediction system. The impact prediction system includes a processing circuit configured to receive remote tracking data from a remote tracking system located remote from a plurality of users, receive local tracking data from a plurality of local tracking devices, each local tracking device is worn by a different one of the plurality of users, and predict an impact between two or more of the plurality of users based on the remote tracking data and the local tracking data. The remote tracking data includes data regarding a location of each of the plurality of users. The local tracking data includes data regarding movement of each of the plurality of users.
Another embodiment relates to an impact prediction system. The impact prediction system includes an external sensor located remote from a plurality of users and configured to acquire external sensor data related to movement of the plurality of users, a plurality of user sensors, each user sensor configured to be worn by one of the plurality of users and acquire user data related to movement of the plurality of users, and a processing circuit configured to predict an impact between two or more of the plurality of users based on the external sensor data and the user data.
Another embodiment relates to an impact prediction system. The impact prediction system includes a processing circuit configured to receive location data regarding an initial location and orientation of a user from an external sensor located remote from the user, receive movement data regarding movement of the user relative to the initial location and orientation of the user from a user sensor worn by the user, and predict an impact of the user with an object based on the location data and the movement data.
Another embodiment relates to a method for predicting an impact between two or more users. The method includes receiving remote tracking data from a remote tracking system located remote from a plurality of users with a processing circuit, receiving local tracking data from a plurality of local tracking devices with the processing circuit, and predicting an impact between two or more of the plurality of users based on the remote tracking data and the local tracking data by the processing circuit. The remote tracking data includes data regarding a location of each of the plurality of users. Each local tracking device is worn by a different one of the plurality of users, and the local tracking data includes data regarding movement of each of the plurality of users.
Another embodiment relates to a method of predicting an impact. The method includes acquiring external sensor data related to movement of the plurality of users with an external sensor located remote from a plurality of users, acquiring user data related to movement of the plurality of users with a plurality of user sensors, each user sensor is configured to be worn by one of the plurality of users, and predicting an impact between two or more of the plurality of users based on the external sensor data and the user data with a processing circuit.
Another embodiment relates to a method for predicting an impact between a user and an object. The method including receiving location data regarding an initial location and orientation of the user an external sensor located remote from the user with a processing circuit, receiving movement data regarding movement of the user relative to the initial location and orientation of the user from a user sensor worn by the user with the processing circuit, and predicting an impact of the user with the object based on the location data and the movement data with the processing circuit.
The foregoing summary is illustrative only and is not intended to be in any way limiting. In addition to the illustrative aspects, embodiments, and features described above, further aspects, embodiments, and features will become apparent by reference to the drawings and the following detailed description.
In the following detailed description, reference is made to the accompanying drawings, which form a part thereof. In the drawings, similar symbols typically identify similar components, unless context dictates otherwise. The illustrative embodiments described in the detailed description, drawings, and claims are not meant to be limiting. Other embodiments may be utilized, and other changes may be made, without departing from the spirit or scope of the subject matter presented here.
Referring to the Figures generally, various embodiments disclosed herein relate to an impact prediction system used to predict an impact between two or more users, one or more users and one or more objects (e.g., walls, posts, ground, trees, vehicles, etc.), or other impacts. In other embodiments, the impact prediction system may also be used to recalibrate sensors located on a local tracking device worn by a user to reduce sensor drift (e.g., when sensors provide data offset from a calibrated state, etc.). Upon detection of an impending impact, the impact prediction system may notify the local tracking device, which in turn notifies the user with an alarm (e.g., an audible notification, a visual notification, a tactile notification, etc.) via a notification device, and/or the local tracking device may activate protective equipment (e.g., selectively inflates airbags, etc.). The impact prediction system may also determine the instigator (e.g., person at fault, aggressor, etc.) involved in the impact or collision.
Referring to
In the example embodiment, helmet 12 is a football helmet. In other embodiments, helmet 12 may be any helmet used to protect a user from impacts to the head (e.g., during activities such as motocross, snowboarding, hockey, lacrosse, snowmobiling, etc.). Helmet 12 includes helmet shell 16 and facemask 18. Helmet shell 16 may be structured as any type of helmet shell (e.g., football, baseball, hockey, motocross, etc.) used to protect a user's head. Facemask 18 may be any type of helmet facemask configured to protect the user's face. In some embodiments, facemask 18 includes one or more crossbars, a transparent shield, or other protection devices. In yet further embodiments, facemask 18 is rigidly attached to helmet shell 16, forming a single continuous unitary outer shell (e.g., a motocross helmet, etc.), or removably attached (i.e., detachable) to helmet shell 16 (e.g., a hockey helmet, a football helmet, etc.). In yet further embodiments, facemask 18 is omitted (e.g., a baseball helmet, etc.).
Local sensor array 20 may be or include one or more devices (e.g., sensors, tracking devices, etc.) configured to determine the location of a user (e.g., position and/or orientation of the user and body parts relative to one another, etc.). The devices of local sensor array 20 may be positioned at various locations on the body of the user of local tracking device 10 (e.g., arms, hands, legs, feet, torso, etc.). The devices may also be disposed about helmet 12 and/or torso protection assembly 14.
In one embodiment, local sensor array 20 may determine the position and orientation of various body parts of the user and/or protective equipment (e.g., helmet 12, torso protection assembly 14, etc.). The orientation of the various body parts may include an orientation of a head, a torso, an arm, a leg, and/or any other body part. In one embodiment, one sensor or component of local sensor array 20 may act as a master device (e.g., reference location, etc.) and the sensors or components may provide their position and/or orientation relative to the master device. In other embodiments, each sensor or component may determine the position and orientation of its respective body part independent of the other sensors or components of local sensor array 20. A human body model may be used to predict the location of other body parts (e.g., body parts without a tracking device, etc.) based on the measurements (e.g., position, orientation, etc.) at each of the one or more devices of local sensor array 20.
In another embodiment, local tracking device 10 may include a beacon, shown as beacon 22. Beacon 22 may utilize radio frequency (RF), optical (e.g., infrared light (IR), etc.), and/or ultrasonic emission technologies. Beacon 22 is configured to emit signals (e.g., RF, IR, ultrasonic, etc.) that are received by external receivers/sensors (e.g., a camera device, a radar device, a lidar device, an RF receiver, etc.) to determine the position and/or orientation of the user of local tracking device 10. Beacon 22 may emit signals continuously or intermittently (e.g., based on a schedule, etc.). In some embodiments, signals from beacon 22 may include data from local tracking device 10, or local sensor array 20. In some embodiments, signals from beacon 22 may encode an identification (e.g., via frequency or pulse format of the signal, via data included in the signal, etc.) of local tracking device 10 and/or its user.
One or more devices of local sensor array 20 may include inertial navigation devices (e.g., such as an inertial navigation system (INS) including accelerometers and/or gyroscopes, etc.), cameras, sonar, and/or radar. An inertial navigation system is a navigation aid that uses a processor/computer, motion sensors (e.g., accelerometers, etc.), and rotation sensors (e.g., gyroscopes, multi-axis accelerometer arrays, etc.) to continuously or periodically calculate the position, orientation, velocity, and/or acceleration of an object, such as the user of local tracking device 10, without the need for external references. Herein, data regarding the calculated position, orientation, velocity, and/or acceleration may be referred to as local tracking data or user data.
As shown in
Referring still to
As shown in
In one embodiment, transceiver 40 includes a global positioning system (GPS) receiver configured to receive absolute location data (e.g., absolute position measurements, etc.). The absolute location data may be used to reorient (e.g., recalibrate, zero out, etc.) one or more devices of local tracking device 10 (e.g., sensors, tracking devices, accelerometers, etc.) to reduce the effects of sensor drift (e.g., accelerometer drift, etc.). For example, through use of an accelerometer, the measurements may gradually begin to drift (e.g., the sensor no longer acquires accurate and precise data, etc.). Using a GPS receiver (e.g., GPS, differential GPS, augmented GPS, a GPS analog using local reference points and transmitters, etc.), local tracking device 10 may receive absolute location data to negate the effects of drift and recalibrate the device (e.g., accelerometer, etc.).
In another embodiment, the local tracking device 10 may include inclinometers and/or magnetometers configured to provide absolute location data (e.g., absolute orientation measurements, etc.) to zero out the effects of sensor drift (e.g., gyro drift of a gyroscope, etc.). The local tracking device 10 may receive the absolute tracking data (e.g., absolute orientation measurements, absolute position measurements, etc.) periodically, based on a schedule, or continuously. For example, the absolute tracking data may be received on a fixed schedule (e.g., time-based, play-based, at the start of each play in football, etc.), when the user enters area of play (e.g., field, court, track, rink, etc.), once the error covariance has degraded sufficiently (e.g., sensor drift, etc.), during a period of inactivity (e.g., during a stop in play, during a timeout, etc.) or any other appropriate time.
Referring now to
Remote processing circuit 130 includes remote processor 136 and remote memory 138. Remote processor 136 may be implemented as a general-purpose processor, an application specific integrated circuit (ASIC), one or more field programmable gate arrays (FPGAs), a digital-signal-processor (DSP), a group of processing components, or other suitable electronic processing components. Remote memory 138 is one or more devices (e.g., RAM, ROM, Flash Memory, hard disk storage, etc.) for storing data and/or computer code for facilitating the various processes described herein. Remote memory 138 may be or include non-transient volatile memory or non-volatile memory. Remote memory 138 may include database components, object code components, script components, or any other type of information structure for supporting the various activities and information structures described herein. Remote memory 138 may be communicably connected to remote processor 136 and provide computer code or instructions to remote processor 136 for executing the processes described herein.
As shown in
In one embodiment, remote processor 136 accesses remote memory 138 to compare the local tracking data and the remote tracking data. By comparing the local tracking data and the remote tracking data, remote processing circuit 130 may determine an amount of drift for each of the plurality of local tracking devices 10. Thereby, remote tracking system 110 may reduce drift associated with the local tracking data by providing absolute location data to each local tracking device 10 to recalibrate (i.e., zero out, etc.) the one or more sensors (e.g., accelerometers, gyroscopes, etc.) of each local tracking device 10. In one embodiment, remote tracking system 110 determines the absolute location data via a camera device, a radar device, and/or a lidar device. In another embodiment, remote tracking system 110 determines the absolute location data from receiving signals from user-mounted beacons (e.g., beacons 22, etc.). In one embodiment, remote tracking system 110 includes multiple signal receivers located at different sites, which may respectively receive signals from beacons 22 and determine the absolute tracking information via triangulation. In another embodiment, remote tracking system 110 includes multiple signal receivers located at different sites, which may respectively receive signals from beacons 22 and determine the absolute tracking information via comparing range information (e.g., determined from signal transit times, from signal intensities, etc.). In other embodiments, remote tracking system 110 includes at least one ranging and imaging signal receiver, which may receive signals from beacons 22 and determine the absolute tracking information based on direction and range. Beacons 22 may transmit signals on an intermittent or continuous basis. An intermittent beacon may be activated based on a schedule (e.g., one player at a time, etc.) and/or based on a query by remote tracking system 110 (e.g., remote tracking system 110 asks about an individual local tracking device 10 when information is needed on the individual local tracking device 10, etc.).
Remote tracking system 110 may determine the absolute tracking data periodically, based on a schedule, or continuously. In one embodiment, local tracking devices 10 receive the absolute tracking data quasi-synchronously (i.e., all at the same time, simultaneously, etc.). For example, in football, each local tracking device 10 receives the absolute tracking data at the start of each play, during a time-out, or other breaks in play where the users of local tracking devices 10 are substantially inactive (e.g., standing still, etc.). However, the absolute tracking data may be determined during a period of activity (e.g., while a user is moving, etc.). In another embodiment, local tracking devices 10 receive the absolute tracking data asynchronously. For example, individual local tracking devices 10 receive the absolute tracking data on a fixed schedule (e.g., when the user enters the area of play, once the error covariance degrades sufficiently, based on a length of time in play, etc.) independent of when other local tracking devices 10 receive the absolute tracking data.
Referring to
Using the compared local tracking data, local tracking devices 10 via local processing circuits 30 may predict whether two or more users, a user and an object, or one or more users and one or more objects are likely to collide. The collision predictions may include predictions of closing velocity (e.g., the relative velocity of the impacting bodies at the time of collision, etc.), impact locations (e.g., a user's head, torso, leg, etc.), directions of each impacting user relative to each other or to their head direction, impact time, impact severity (e.g., based on closing speed and impact location), and/or any other pertinent collision characteristics (e.g., impact parameters, etc.).
In another embodiment, both local tracking devices 10 and remote tracking system 110 may independently predict an impact between two or more users (or objects). As shown in
In another embodiment, the impact prediction system 10 may use the location and/or movement of one or more moving objects to predict how and where a player (or players) may move (e.g., in response to a ball or puck being put into play and in relation to the player(s), etc.) to predict collisions. For example, in a football game, the movement and/or final location of a wide receiver and a defensive back may be predicted by tracking the trajectory of a football (e.g., during a pass play, etc.). Additionally or alternatively, the impact prediction system 10 may use the location and/or movement of stationary or semi-stationary objects, such as a net (e.g., a hockey net, etc.), to predict how a player (or players) may move (e.g., to avoid the object, etc.) or alter their movement/trajectory as they come into contact with the object. For example, in a hockey game, a player on an offensive attack may approach the net at an angle and speed that requires them to cut quickly around the front or back of the net to avoid a collision with the goalie. Therefore, the impact prediction system 10 may interpret this to predict a potential collision between the offensive player and a defensive player around the net.
According to the example embodiment shown in
In an alternative embodiment, remote tracking system 110 receives location data regarding an initial location and orientation of a user and/or an object from at least one of remote sensor array 120 and local sensor array 20. Remote tracking system 110 also receives movement data regarding movement of the user and/or object relative to the initial location and orientation of the user and/or object from at least one of remote sensor array 120 and local sensor array 20. Remote processing circuit 130 then predicts an impact of the user with the object (e.g., wall, ground, post, ball, stick, etc.) based on the location data and the movement data.
In another embodiment, remote tracking system 110 may compare remote tracking data for each of the plurality of users (e.g., P1, P2, P3, etc.) to determine at least one of current separations, relative velocities, and relative accelerations between two or more users and/or objects (e.g., without receiving local tracking data, etc.). Using the remote tracking data for each of the plurality of users, remote tracking system 110 may predict whether one or more users and/or objects are likely to collide. The collision predictions may include predictions of closing velocity, impact locations, directions of each impacting user relative to each other or to their head direction, impact time, impact severity, and/or any other pertinent collision characteristics.
The various embodiments of predicting an impact described above may be used to notify one or more users involved in the potential collision. In one embodiment, the collision prediction is used to issue an alarm. For example, a notification device, shown as notification device 24, of local tracking device 10 may be configured to convey the alarm (e.g., audible indicator, vibratory tactile feedback, visual indicator, etc.) to a user to notify the user of the impending impact. By notifying the user, the user may be able to avoid the collision or brace themselves for the impending impact. The alarms may be conditional based on the predicted severity or magnitude of the impact. For example, sub-threshold impacts (e.g., small impacts, non-severe impacts, etc.) may not set of an alarm or may trigger a different type of alarm than an impact exceeding an impact threshold (e.g., a target force, a target velocity, etc.). The alarms may include details about the collision (e.g., different types of alarms convey different impact parameters, etc.). For example, the alarms may convey details about a potential collision such as an expected severity (e.g., closing speed, impulse, etc.), an impact location (e.g., head, torso, legs, etc.), the relative direction (e.g., lateral, longitudinal, front, rear, side, etc.), the nature of the impacting object (e.g., a helmet, a knee, an arm, a wall, a post, a ball, a stick, etc.), time until impact, and/or other impact parameters. Alarm thresholds may be customized on an individual basis such that alarms may be selectively provided on a relatively more or less conservative basis.
In another embodiment, the impact prediction is used to activate protective equipment in order to negate or substantially reduce the magnitude of the impact in order to, among other things, minimize accelerations experienced by the head and neck portions or other areas of the user and reduce the risk of the user experiencing a concussion or other undesirable injuries. For example, upon detection of an impending impact, local tracking device 10 may intelligently (e.g., selectively, etc.) inflate various airbags from helmet 12 or other locations on or within local tracking device 10 to minimize forces and torques on its wearer. In some embodiments, local tracking device 10 may actively inflate or deflate one or more airbags before and/or during a collision. In other embodiments, local tracking device 10 may communicate with one or more other local tracking devices 10 to determine a course of action regarding inflation of airbags of each local tracking device 10 in an impending impact. In further embodiments, local tracking device 10 may inflate an airbag to resist relative movement between helmet 12 and torso protection assembly 14 to reduce risk of injury to the user. For example, the airbag may couple helmet 12 and torso protection assembly 14 to prevent or resist relative movement between the two.
According to an example embodiment, remote tracking system 110 and each of the plurality of local tracking devices 10 may work individually or in unison to identify the users involved in the collision. In one embodiment, identifying the users in the collision may help support staff (e.g., trainers, doctors, coaches, etc.) maintain appropriate medical attention with users who may have been involved in a substantial impact, potentially leading to an injury (e.g., concussion, etc.). In other embodiments, the impact prediction system 100 may predict or determine who the instigator (e.g., person at fault, aggressor, etc.) is in the collision. Determining the instigator in the collision may be based on the location of the impact on each player, the velocity of each player, the acceleration of each player, and/or still other characteristics. For example, if a collision between two players results in an impact to the side or back of a first player's head, the second player is most likely the instigator. Identifying the instigator in the collision may help officials (e.g., referees, umpires, sirs, league administration, etc.) take appropriate action such as fining, suspending, penalizing, and/or taking other appropriate action against the instigator.
Referring now to
At 202, local tracking data is determined using a local tracking device. For example, local tracking device 10 may use local senor array 20 to continuously or periodically determine the position, orientation, velocity, and/or acceleration of an object, such as the user of local tracking device 10. At 204, the local tracking data for a plurality of local tracking devices is compared. For example, via transceivers 40, local tracking devices 10 may compare the local tracking data with each of the other local tracking devices 10 in the system (e.g., on the field, in play, etc.). The compared local tracking data may allow the local tracking devices 10 to determine current separations, relative velocities, and relative accelerations between two or more users (e.g., via local processing circuits 30, etc.). At 206, an impact between two or more users is predicted based on the compared local tracking data. For example, a first local tracking device 10 (e.g., P1, etc.) may predict that it is about to be involved in a collision between one or more other local tracking devices 10 (e.g., P2, P3, etc.).
At 208, alarms are issued to notify the users and/or the users protective equipment is activated. For example, in one embodiment, the individual local tracking devices 10 may notify its user of the impending impact via an alarm (e.g., such as an audible indicator, vibratory tactile feedback, a visual indicator, etc.) conveyed by the notification device 24. In another embodiment, local tracking devices 10 may inflate various airbags and/or activate other protection equipment to reduce the magnitude of the impact on the user. In some embodiments, the local tracking devices 10 may both issue an alarm and activate protective equipment.
Method 200 is shown to only encompass users of local tracking devices 10. In one embodiment, method 200 may involve a local tracking device 10 and potential/actual impacts with the ground or other object (e.g., a wall, a post, a tree, a vehicle, a ball, a stick, etc.). In other embodiments, method 200 may involve any plurality of user of local tracking devices 10 and any plurality of objects.
Referring now to
At 302, remote tracking data is determined for each of a plurality of users of local tracking devices. For example, remote tracking system 110 may use remote senor array 120 to continuously or periodically determine the position, orientation, velocity, and/or acceleration of a plurality of objects, such as the users of local tracking devices 10 (e.g., P1, P2, P3, etc.). At 304, the remote tracking data for each of the plurality of users of local tracking devices is compared. For example, remote processing circuit 130 may compare the remote tracking data for each local tracking device 10 in the system (e.g., on the field, in play, etc.). The compared remote tracking data may allow the remote processing circuit 130 to determine current separations, relative velocities, and relative accelerations between two or more users of the local tracking devices 10. At 206, an impact between two or more users is predicted based on the compared remote tracking data. For example, remote tracking system 110 may predict that a first user of a local tracking device 10 (e.g., P1, etc.) is about to be involved in a collision between one or more other users of local tracking devices 10 (e.g., P2, P3, etc.).
At 308, alarms are issued to notify the users and/or the users protective equipment is activated. For example, in one embodiment, remote tracking system 110 may communicate with individual local tracking devices 10 to notify its user of the impending impact via an alarm (e.g., such as an audible indicator, vibratory tactile feedback, a visual indicator, etc.) conveyed by the notification device 24. In another embodiment, remote tracking system 110 may communicate with individual local tracking devices 10 to inflate various airbags and/or activate other protection equipment to reduce the magnitude of the impact on the user. In some embodiments, remote tracking system 110 may communicate with individual local tracking devices 10 to both issue an alarm and activate protective equipment.
Method 300 is shown to encompass only users of local tracking devices 10 being monitored by remote tracking system 110. In one embodiment, method 300 may involve a local tracking device 10 and potential/actual impacts with the ground or other object (e.g., a wall, a post, a tree, a vehicle, a ball, a stick, etc.). In other embodiments, method 300 may involve any plurality of user of local tracking devices 10 and any plurality of objects.
Referring now to
At 402, remote tracking data is received by impact prediction system 100 for each of a plurality of users of local tracking devices 10. For example, remote tracking system 110 may use remote senor array 120 to continuously or periodically determine the position, orientation, velocity, and/or acceleration of a plurality of objects, such as the users of local tracking devices 10 (e.g., P1, P2, P3, etc.). At 404, local tracking data is received by impact prediction system 100 for each of the plurality of users of local tracking devices 10. For example, local tracking devices 10 may use local senor arrays 20 to continuously or periodically determine the position, orientation, velocity, and/or acceleration of the users of local tracking devices 10. The local tracking data may be sent to impact prediction system 100 from transceivers 40 of local tracking devices 10 to remote processing circuit 130. At 406, an impact between two or more users is predicted based on the remote tracking data and the local tracking data. For example, impact prediction system 100 may compare the remote tracking data and the local tracking data. Based on the compared remote tracking data and local tracking data, remote processing circuit 130 may predict an impact (e.g., closing velocity, impact locations, directions of each impacting user relative to each other or to their head direction, etc.) between two or more of the plurality of users (e.g., P1, P2, P3, etc.).
At 408, alarms are issued to notify the users and/or the users protective equipment is activated. For example, in one embodiment, remote tracking system 110 may communicate with individual local tracking devices 10 to notify its user of the impending impact via an alarm (e.g., such as an audible indicator, vibratory tactile feedback, a visual indicator, etc.) conveyed by the notification device 24. In another embodiment, remote tracking system 110 may communicate with individual local tracking devices 10 to inflate various airbags and/or activate other protection equipment to reduce the magnitude of the impact on the user. In some embodiments, remote tracking system 110 may communicate with individual local tracking devices 10 to both issue an alarm and activate protective equipment.
Method 400 is shown to only encompass users of local tracking devices 10. In one embodiment, method 400 may involve a local tracking device 10 and potential/actual impacts with the ground or other object (e.g., a wall, a post, a tree, a vehicle, a ball, a stick, etc.). In other embodiments, method 400 may involve any plurality of user of local tracking devices 10 and any plurality of objects.
Referring now to
At 502, local tracking data is received by remote tracking device 110. For example, at the start of a play, local tracking device 10 may determine position, orientation, velocity, and/or acceleration regarding a user via local sensor array 20. At 504, remote tracking data is received by remote tracking device 110 by remote sensor array 120. In one embodiment, the remote tracking data is determined at the exact same or substantially the same place and time as the local tracking data.
At 506, one or more sensors of local tracking device 10 are recalibrated based on the local and remote tracking data. For example, by comparing the local tracking data and the remote tracking data, remote processing circuit 130 may determine an amount of drift for local tracking device 10. Thereby, remote tracking system 110 may reduce drift associated with the local tracking data by providing absolute location data to each local tracking device 10 to recalibrate the sensors. In an alternative embodiment of method 500, local tracking device 10 may include a GPS receiver configured to receive absolute location data. The absolute location data may be used to recalibrate one or more devices of local tracking device 10 to reduce the effects of sensor drift. Method 500 is shown to include a single user of local tracking device 10. In one embodiment, method 500 may involve a plurality of user of local tracking devices 10.
The present disclosure contemplates methods, systems, and program products on any machine-readable media for accomplishing various operations. The embodiments of the present disclosure may be implemented using existing computer processors, or by a special purpose computer processor for an appropriate system, incorporated for this or another purpose, or by a hardwired system. Embodiments within the scope of the present disclosure include program products comprising machine-readable media for carrying or having machine-executable instructions or data structures stored thereon. Such machine-readable media can be any available media that can be accessed by a general purpose or special purpose computer or other machine with a processor. By way of example, such machine-readable media can comprise RAM, ROM, EPROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to carry or store desired program code in the form of machine-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer or other machine with a processor. When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or a combination of hardwired or wireless) to a machine, the machine properly views the connection as a machine-readable medium. Thus, any such connection is properly termed a machine-readable medium. Combinations of the above are also included within the scope of machine-readable media. Machine-executable instructions include, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing machines to perform a certain function or group of functions.
Although the figures may show a specific order of method steps, the order of the steps may differ from what is depicted. Also two or more steps may be performed concurrently or with partial concurrence. Such variation will depend on the software and hardware systems chosen and on designer choice. All such variations are within the scope of the disclosure. Likewise, software implementations could be accomplished with standard programming techniques with rule based logic and other logic to accomplish the various connection steps, processing steps, comparison steps and decision steps.
While various aspects and embodiments have been disclosed herein, other aspects and embodiments will be apparent to those skilled in the art. The various aspects and embodiments disclosed herein are for purposes of illustration and are not intended to be limiting, with the true scope and spirit being indicated by the following claims.