GPS (Global Positioning System) technology has found widespread use in a variety of applications. Chief among these have been mapping applications for vehicles. One particular application of GPS technology is tracking the locations of golf carts. Such tracking can provide many benefits both to operators of golf courses and to players. For example, precisely determining the location of a golf cart enables a software program to compare that location with those of golf greens and other areas not to be entered by golf carts and to alert players that they should back up or choose different routes. Also, knowing the precise location of a golf cart permits the software program to compute the distance to a golf pin, thereby helping players to select proper clubs and to judge how hard they should hit the ball.
Standard GPS has an accuracy of approximately 15 meters, and various solutions are available to improve this accuracy. For example, differential GPS (DGPS) uses arrays of fixed-position, ground-based stations, which provide reference signals that can be used by local GPS receivers to improve their native accuracy. Also, RTK (Real-Time Kinematic) positioning uses phase of a GPS signal's carrier wave and relies on a reference station or virtual station to provide real-time corrections. In addition, a software solution called “snap-to-road” works by aligning a GPS point to a nearest point on a road network.
The accuracy of standard GPS is often insufficient for golfing applications. For example, a 15-meter error in calculating distance to a pin can cause a golfer to select the wrong club. It can also represent a golf cart as being on a green (typically a violation of course rules) whereas the golf cart may be parked well off the green.
Unfortunately, existing solutions for improving GPS accuracy are often expensive or impractical. Differential GPS and RTK positioning normally require expensive hardware and may not be compatible with existing GPS infrastructures. Although snap-to-road is not expensive, it is generally too constraining for golf courses, where golf carts are normally allowed to drive on the grass or in other off-path locations. What is needed, therefore, is an inexpensive way of correcting GPS errors that is compatible with standard GPS technology and is effective regardless of whether drivers stay on designated roads or paths.
The above need is addressed at least in part by an improved technique that corrects errors in locations of a vehicle in response to current locations falling within one or more geofences that define regions where the vehicle is unlikely to be traveling. In response to a current location of the vehicle falling within the bounds of such a geofence, the technique adjusts the current location by a defined offset. The offset has the effect of modifying the current location toward a more likely, actual location of the vehicle. In some examples, the vehicle may encounter multiple such geofences, with each geofence contributing a correction offset in a respective direction and by a respective amount, enabling location measurements to be corrected in all relevant coordinate dimensions.
Certain embodiments are directed to a method of correcting location measurements. The method includes generating a current location of a vehicle based at least in part on GPS (Global Positioning System) signals received by a GPS receiver of the vehicle, identifying the current location on a virtual map, and adjusting the current location of the vehicle in response to detecting that the current location falls within a defined geofence on the map, said adjusting including applying a spatial offset to the current location.
In some examples, the spatial offset has a direction toward a vehicle path identified on the map.
In some examples, the spatial offset is defined by a set of parameters associated with the geofence, and adjusting the current location of the vehicle includes accessing the spatial offset from the set of parameters.
In some examples, the spatial offset has at least two orthogonal components that form a correction vector having a magnitude and a direction.
In some examples, the current location is one of multiple current locations generated based at least in part on GPS signals received by the vehicle over time, and the method further includes applying corrections repeatedly and cumulatively in response to current locations of the vehicle repeatedly falling within the geofence.
In some examples, the set of parameters that define the geofence further define a maximum cumulative correction that can be applied in response to current locations of the vehicle repeatedly falling within the geofence.
In some examples, the set of parameters associated with the geofence further defines a decay parameter, wherein the method further includes reducing a cumulative correction based on the decay parameter in response to current locations of the vehicle falling outside of the geofence.
In some examples, the geofence is a first geofence and the method further includes, in response to detecting that a second current location of the vehicle falls outside the first geofence and within a second geofence defined on the map, adjusting the second current location of the vehicle at least in part by applying a second spatial offset to the second current location, the second spatial offset being defined by a second set of parameters associated with the second geofence.
In some examples, the correction vector is a first correction vector, a second correction vector is formed by the second spatial offset, the second correction vector has a direction that differs from the direction of the first correction vector, and adjusting the second current location is based on both the first correction vector and the second correction vector.
In some examples, the first geofence encompasses an undrivable region that is impassible by the vehicle, and the second geofence encompasses a drivable region that is passable by the vehicle but does not include a defined path for the vehicle.
In some examples, a magnitude of the second offset is less than half the magnitude of the offset associated with the first geofence.
In some examples, the first geofence has a first offset-decay rate, the second geofence has a second offset-decay rate, and the first offset-decay rate is less than half the second offset-decay rate.
Other embodiments are directed to a method of correcting location measurements, which includes receiving, via a user interface, a definition of a geofence and storing a representation of the geofence at least in part using a set of parameters provided in one or more data structures. The set of parameters identifies a region to which the geofence is assigned on a virtual map and a spatial offset to be applied to location measurements falling within the geofence. The method further includes providing the set of parameters to a vehicle to enable the vehicle to correct its own measurements of location using the spatial offset.
In some examples, storing the representation of the geofence using the set of parameters further includes storing a maximum cumulative correction that can be applied to location measurements that repeatedly fall within the geofence.
In some examples, storing the representation of the geofence using the set of parameters further includes storing a decay parameter to be applied to cumulative corrections responsive to location measurements falling outside the geofence after having fallen within the geofence.
Still other embodiments are directed to a vehicle that includes a body, a computing device, and a GPS (Global Positioning System) receiver operatively coupled to the computing device. The computing device includes control circuitry constructed and arranged to generate a current location of the vehicle based at least in part on GPS signals received by the GPS receiver, identify the current location on a virtual map, and adjust the current location of the vehicle in response to detecting that the current location falls within a defined geofence on the map, the adjustment including applying a spatial offset to the current location.
In some examples, the spatial offset has a direction toward a vehicle path identified on the map.
In some examples, the current location is one of multiple current locations generated based at least in part on GPS signals received by the vehicle over time, and the control circuitry is further constructed and arranged to apply corrections repeatedly and cumulatively in response to current locations of the vehicle repeatedly falling within the geofence.
In some examples, the spatial offset is defined by a set of parameters associated with the geofence and the set of parameters further define a maximum cumulative correction that can be applied in response to current locations of the vehicle repeatedly falling within the geofence.
In some examples, the set of parameters associated with the geofence further define a decay parameter, and the control circuitry is further constructed and arranged to reduce a cumulative correction based on the decay parameter in response to current locations of the vehicle falling outside of the geofence after having fallen within the geofence.
Other embodiments are directed to a computerized apparatus constructed and arranged to perform any of the methods described above. Still other embodiments are directed to computer program products. Such computer program products store instructions which, when executed on control circuitry of a computerized apparatus, cause the computerized apparatus to perform any of the methods described above.
The foregoing summary is presented for illustrative purposes to assist the reader in readily grasping example features presented herein; however, this summary is not intended to set forth required elements or to limit embodiments hereof in any way. One should appreciate that the above-described features can be combined in any manner that makes technological sense, and that all such combinations are intended to be disclosed herein, regardless of whether such combinations are identified explicitly or not.
The foregoing and other features and advantages will be apparent from the following description of particular embodiments, as illustrated in the accompanying drawings, in which like reference characters refer to the same or similar parts throughout the different views. The drawings are not necessarily to scale, emphasis instead being placed upon illustrating the principles of various embodiments.
Embodiments of the improved technique will now be described. One should appreciate that such embodiments are provided by way of example to illustrate certain features and principles but are not intended to be limiting.
An improved technique corrects errors in locations of a vehicle in response to current locations falling within one or more geofences that define regions where the vehicle is unlikely to be traveling. In response to a current location of the vehicle falling within the bounds of such a geofence, the technique adjusts the current location by a defined offset. The offset has the effect of modifying the current location toward a more likely, actual location of the vehicle.
Although it may not always be possible to know precisely where a vehicle is, we have recognized that it is often possible to know where a vehicle is not. A new type of geofence may be provided for this purpose, i.e., by defining a region where it is impossible or unlikely for a vehicle to be found, e.g., because the terrain is rocky, steep, densely vegetated, or has some other feature that makes it impassible or unlikely to be passed by the vehicle under normal circumstances. Upon detecting that the GPS location of a vehicle falls within such a geofence while still being within the error range of conventional GPS, it can be assumed with reasonable certainty that the location reading is erroneous. In many cases, the direction of the error can be inferred from the surrounding terrain. For example, if a path on a golf course passes between two steep, rocky cliffs and a GPS reading places a golf cart on top of one of the cliffs but still within the standard GPS error range, it can be inferred that the golf cart is actually on the path. An offset can then be applied to the GPS reading to move a representation of the golf cart in the direction of the path. As another example, the path may be nowhere nearby, but a GPS reading places the cart 10 meters into a body of water. As the GPS reading more likely reflects a location error than that the vehicle has driven into the water, an offset can be applied that adjusts the GPS reading toward the shore.
GPS errors tend to be stable over several minutes or even hours. Thus, an offset correction applied upon encountering a geofence may be sustained after the encounter and applied to subsequent GPS-determined locations. Also, encounters with multiple geofences may result in multiple offsets being asserted to adjust the vehicle's location, e.g., in different directions and by different amounts. In such cases, an overall correction may be calculated based on the individual offsets contributed by the respective geofences.
The server 110 further includes one or more processors 114 and memory 120, which may include both volatile memory and non-volatile memory, such as one or more disk drives, solid state drives, and/or the like. The processor(s) 114 and the memory 120 together form control circuitry, which is constructed and arranged to carry out various methods and functions as described herein. Also, the memory 120 includes a variety of software constructs realized in the form of executable instructions. When the executable instructions are run by the processor(s) 114, the processor(s) 114 carry out the operations of the software constructs. Although certain software constructs are specifically shown and described, it is understood that the memory 120 typically includes many other software components, which are not shown, such as an operating system, various applications, processes, and daemons.
As further shown in
The golf carts 150 of
As shown in the expanded view at the bottom of
The console 156 further includes one or more processors 170 and memory 180, which together form control circuitry constructed and arranged to carry out various functions to be performed by the console. The memory 180 may include a cart manager 190, i.e., a software program for assisting with cart functions. The cart manager 190 itself may include or have access to a mapping module 192 and a user interface 194. The mapping module 190 is configured to receive current locations of the golf cart from the GPS receiver 160 and to apply corrections to the current locations based on offsets defined by encountered geofences (impractical zones). The user interface 194 provides graphical output to the display 164 and may receive input from an associated touchscreen.
In example operation, a user of the server 110 defines one or more impractical zones on a virtual map of the golf course. The server 110 stores definitions of the impractical zones in associated data structures. In some examples, the impractical zones may previously have been defined on the server 110, or they may have been transferred to the server from some other computer. The server 110 may send the data structures to one or more golf carts 150, which receive the data structures and apply them locally to their own virtual maps. Alternatively, the server 110 may send the complete virtual map to the golf carts, including the defined data structures for impractical zones and any other geofences. Each golf cart 150 receives the data structures (or complete map information) via the wireless interface 162 and stores the data structures in memory 180. The golf carts 150 may then operate mostly on their own, with occasional communication with the server 110.
As a golf cart 150 travels around the golf course, the GPS receiver 160 receives GPS signals and outputs the current location. The mapping module 192 receives the current location and places it on a local version of the virtual map. If the current location falls within an impractical zone defined on the map, the mapping module 162 may adjust the current location by applying a spatial offset, which may be defined by the impractical zone itself, e.g., as a parameter stored in the data structure provided for that impractical zone. The spatial offset may have both a direction and a magnitude, which may be tailored to the particular impractical zone. As the golf cart continues driving, it may encounter additional impractical zones, meaning that the current, corrected location of the cart falls within those impractical zones. For each current location falling within an impractical zone, the mapping module 192 may apply a respective spatial offset, which may be summed with the previous offsets, to produce an overall correction.
As GPS errors tend to be consistent in the short term, offsets applied upon encounters with impractical zones may be persisted for a period of time. Preferably, such offsets are configured to decay back to zero over a determined interval, which may be defined as a parameter in the data structure for each impractical zone. Also, each impractical zone may define a maximum cumulative offset correction that may be applied as a result of an encounter with that impractical zone. In some examples, a standard decay rate and/or maximum cumulative offset may be established as a common setting for all impractical zones (although at the loss of some capability).
One should appreciate that the particular functions ascribed above to the server 110 and the golf carts 150 are merely examples and are not intended to be limiting. For example, golf carts may operate entirely independently of any server, having received map information online or via software media (thumb drive, disk drive, etc.). As another example, golf carts may operate in closer communication with the server 110 than described above, such as by sending their current GPS readings back to the server, where they may be corrected by the server rather than by the cart. Many arrangements are contemplated.
In an example, the depicted impractical zones 220 are defined by a user of the server 110 operating the user interface 134. Each impractical zone 220 has a particular shape (e.g., a polygon), which may be defined by a set of vertices, with each vertex specified by a respective pair of coordinates (e.g., latitude and longitude). Each impractical zone 220 may also define a respective spatial offset, shown pictorially by arrows 230a, 230b, 230c, 230d, 230a, 230e, and 230f. Each spatial offset 230 may have a magnitude, as indicated by the length of the line, and a direction, as indicated by the arrow. In an example, each spatial offset 230 has two orthogonal components, such as latitude and longitude (although other components for other coordinate systems may be used).
As the golf cart 150 is driven along the golf path 210, the current location (determined at least in part based on GPS reading) may place the golf cart in any of the depicted impractical zones 220. Each time this occurs, an adjustment is made to the current location based on the spatial offset specified for the respective impractical zone. Different impractical zones 220 may adjust the current location in different directions, which may be orthogonal or have orthogonal components, thus tending to correct the GPS position of the cart in both latitude and longitude.
One should appreciate that the above-described parameters may be expressed in a variety of mathematically equivalent ways. For example, the offset 320 may be expressed as an independent pair of components, or it may be expressed as a fraction, decimal, or percentage of the maximum cumulative offset 330. If the latter arrangement is used, a setting of 0.05 would mean that 20 encounters would be needed before the maximum cumulative offset 330 would be attained, whereas a setting of 0.2 would mean that only 5 encounters would be needed.
In some examples, the decay parameter is expressed as a fraction, decimal, or percentage. A value of 0.001 would mean that the cumulative offset for the impractical zone is reduced by 0.1% of its initial value upon each subsequent GPS location measurement (location measurements may be made at regular intervals, such as once per second). After 1000 consecutive location measurements that fall outside the impractical zone, the effect of the cumulative offset for the impractical zone reaches zero. A decay parameter of 0.05 means that the correction falls to zero after 20 measurements.
Referring back to
Proceeding to the left, a next GPS measurement 420b has already been corrected once by the offset 420 and is thus closer to the true location of the cart. Yet location 410b is still inside the impractical zone 220. Thus, the offset 420 is applied again. The offset 420 is further applied for location measurements 410c and 410d, which brings the corrected location very close to the boundary of the impractical zone 220. The next measurement 410d falls outside the impractical zone 220 and thus receives no further correction. Rather, a cumulative correction 430 (shown to the right) begins to decay in accordance with the decay parameter 340, causing corrected measurements 410e, 410f, and 410g to sag slightly back. The cart 150 then carries the cumulative correction 430 forward as it proceeds along the path 210 or even if it diverts from the path, until the cumulative correction decays to zero.
At 610, a current location of a vehicle 150, such as location 410a (
At 620, the current location of the vehicle is identified on a virtual map. For example, location 410a (
At 630, the current location (e.g., 410a) of the vehicle 150 is adjusted in response to detecting that the current location falls within a defined geofence, such as an impractical zone 220, on the map 200. The adjustment includes applying a spatial offset to the current location, such as offset 420 in
At 710, a definition of a geofence may be received via a user interface. For example, a user of server 110 may operate the user interface 134 of the course manager 120 to define an impractical zone 220 on a virtual map 200 of the golf course. Alternatively, a definition of the impractical zone 220 may be received in a data transfer from another computer, which may include downloading the definition over the Internet.
At 720, a representation of the geofence (impractical zone 220) is stored at least in part using a set of parameters (e.g., parameters 310, 320, 330, and 340) provided in one or more data structures 300. The set of parameters identifies a region to which the geofence is assigned on a virtual map 200 and a spatial offset 320 to be applied to GPS-based location measurements.
At 730, the set of parameters (e.g., 310, 320, 330, and 340) is provided to a vehicle 150 to enable the vehicle to correct its own measurements of location using the spatial offset 320.
An improved technique has been described that corrects errors in locations of a vehicle 150 in response to current locations falling within one or more geofences 220 that define regions where the vehicle is unlikely to be traveling. In response to a current location (e.g., 420a) of the vehicle falling within the bounds of such a geofence 220, the technique adjusts the current location by a defined offset 320. The offset 320 has the effect of modifying the current location toward a more likely, actual location of the vehicle.
Having described certain embodiments, numerous alternative embodiments or variations can be made. For example, although embodiments have been described in connection with golf carts, this is merely an example. Alternatively, embodiments may be constructed using other types of GPS-enabled vehicles, such as automobiles, trucks, snow mobiles, or the like.
Also, impractical zones 220 have been shown and described as having only a single spatial offset. This too is merely an example. Alternatively, an impractical zone may have multiple offsets in respective portions of the impractical zone. As another example, the spatial offset of an impractical zone may be defined algorithmically, such as by specifying a gradient of offset values that vary over the area of the impractical zone in a determined manner.
Also, impractical zones 220 have been described as user-generated objects. This is also merely an example. For instance, impractical zones may be created algorithmically, such as by analyzing geographical features of a golf course and creating impractical zones in areas that the features indicate would be difficult or impossible to drive on with golf carts. In some examples, parameters of impractical zones may be tuned automatically, such as by applying machine learning techniques that optimize for accurate GPS readings.
Although impractical zones have been described as areas where golf carts are unable or unlikely to pass, impractical zones may also include areas where golf carts historically do not pass. For example, by monitoring cart locations over time and under various conditions, it may be determined empirically that there are certain areas where golf carts do not pass. Such areas may be good candidates for impractical zones.
Further, although embodiments have been presented in connection with GPS-determined locations, embodiments are not limited to GPS but rather may include alternative location-determining technologies, such as Bluetooth beacons, Wi-Fi localization, camera-based localization, and so forth. In some embodiments, GPS is one of multiple factors used in determining locations. Any such location-determining technologies may be improved upon using the geofence-based techniques presented herein.
Further, although features have been shown and described with reference to particular embodiments hereof, such features may be included and hereby are included in any of the disclosed embodiments and their variants. Thus, it is understood that features disclosed in connection with any embodiment are included in any other embodiment.
Further still, the improvement or portions thereof may be embodied as a computer program product including one or more non-transient, computer-readable storage media, such as a magnetic disk, magnetic tape, compact disk, DVD, optical disk, flash drive, solid state drive, SD (Secure Digital) chip or device, Application Specific Integrated Circuit (ASIC), Field Programmable Gate Array (FPGA), and/or the like (shown by way of example as media 650 and 750 in
As used throughout this document, the words “comprising,” “including,” “containing,” and “having” are intended to set forth certain items, steps, elements, or aspects of something in an open-ended fashion. Also, as used herein and unless a specific statement is made to the contrary, the word “set” means one or more of something. This is the case regardless of whether the phrase “set of” is followed by a singular or plural object and regardless of whether it is conjugated with a singular or plural verb. Also, a “set of” elements can describe fewer than all elements present. Thus, there may be additional elements of the same kind that are not part of the set. Further, ordinal expressions, such as “first,” “second,” “third,” and so on, may be used as adjectives herein for identification purposes. Unless specifically indicated, these ordinal expressions are not intended to imply any ordering or sequence. Thus, for example, a “second” event may take place before or after a “first event,” or even if no first event ever occurs. In addition, an identification herein of a particular element, feature, or act as being a “first” such element, feature, or act should not be construed as requiring that there must also be a “second” or other such element, feature or act. Rather, the “first” item may be the only one. Also, and unless specifically stated to the contrary, “based on” is intended to be nonexclusive. Thus, “based on” should be interpreted as meaning “based at least in part on” unless specifically indicated otherwise. Although certain embodiments are disclosed herein, it is understood that these are provided by way of example only and should not be construed as limiting.
Those skilled in the art will therefore understand that various changes in form and detail may be made to the embodiments disclosed herein without departing from the scope of the following claims.