System and method for determining the geographical location of one or more computing devices
A software-based method using a database of calibration points corrects GPS errors in geographic location determination, enhancing accuracy and reliability for critical applications.
Patent Information
- Application Number
- JP2024569606
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-05-26
- Filing Date
- 2023-05-24
- Publication Date
- 2025-06-24
AI Technical Summary
Existing methods for determining geographic location, such as GPS and cellular communication, often suffer from inaccuracies due to global and localized errors, which can hinder system functionality and safety in critical applications.
A software-based approach for real-time calibration and error detection using a database of calibration points, where location measurements from multiple users are accumulated to refine GPS data through ground truth measurements and calibration vectors, improving accuracy by identifying uniform azimuths and lateral offsets.
Enhances location measurement accuracy by correcting GPS errors, ensuring reliable geographical positioning for improved safety and functionality in systems like autonomous vehicles and navigation applications.
Smart Images

Figure 2025519148000001_ABST
Abstract
Description
Technical Field
[0001] (Cross - Reference to Related Applications) This application claims the benefit of priority of U.S. Provisional Patent Application No. 63 / 345,964, filed on May 26, 2022, which is hereby incorporated by reference in its entirety.
[0002] The present invention generally relates to geographic location technology. More specifically, the present invention relates to a method for determining the geographic location of a computing device.
Background Art
[0003] Determination of geographic location is generally performed by a computing device based on Global Positioning System (GPS) technology. Such determined geographic locations are used for various purposes, such as planning convenient routes for civilian or public transportation in a portable navigation device, for various industrial applications such as architecture and construction design, for military purposes, for navigation purposes, and in unmanned aerial vehicle (UAV) flight control.
[0004] Additional means by which a geographic location can be calculated include the use of cellular communication to calculate the geographic location of a cellular device.
[0005] The accuracy of the calculated geographic location is very important in many applications, especially in systems where safety is critical. However, the level of accuracy of location calculation can vary, even if the devices are different, the calculation methods are different, or the components on the same device are different. For example, two cellular phones in close proximity to each other can have different geographic locations calculated.
[0006] If a device has several different means (e.g., GPS, triangulation towers, triangulation, etc.) for calculating its geographical location, the geographical location of the device is determined according to the most accurate means available. However, it may not always be possible to obtain a sufficiently accurate measurement of the geographical location of the device. This limitation may prevent the functionality of a system that operates depending on the calculation of an accurate location, and in some cases, may even completely stop the operation of the system. Therefore, a method for correcting or refining the geographical location calculation result is needed.
Summary of the Invention
Problems to be Solved by the Invention
[0007] Embodiments of the present invention may provide big data, a software-based approach for real-time calibration, and / or error detection and correction of location measurements in a mobile computing device such as a mobile phone.
[0008] Currently available high-end hardware-based systems can provide accurate location measurements. Such measurements are generally not available for commonly used mobile or cellular devices. For example, a differential GPS (DGPS) device can achieve exceptional location accuracy on the order of about 2 cm using radio frequency (RF) technology and base stations in addition to signals received from satellites.
[0009] The causes of GPS errors can be roughly classified into two categories.
[0010] The first category is sometimes referred to as global errors, which are not specific to a particular device and can equally affect many devices simultaneously. The most prominent ones in this category are (a) slight errors in the location of satellites (for example, a satellite may "think" it is at a set location, but the actual location may be different) and (b) disturbances in the ionosphere that can slightly interrupt / delay RF signals. The second category of errors is sometimes referred to as localized errors, which can occur due to not having a direct path to a satellite (for example, due to cloudy skies or reflections from obstacles).
[0011] Experimental results have shown that while some degree of localized error can occur in all GPS devices, global errors may affect different devices differently, perhaps due to different generations of GPS chips or having different chips synchronized to different satellite constellations.
Means for Solving the Problem
[0012] Embodiments of the present invention can improve the calibration of location measurements of mobile computing devices by targeting global errors.
[0013] Embodiments of the present invention can accumulate location measurements (e.g., GPS-based location measurements) from multiple users in a database and find candidate locations suitable for use as calibration points or reference points, as detailed herein. This may include searching the database for locations where the azimuths of users passing through the point are relatively uniform and the lateral offsets of the positions around that point are also relatively uniform. Embodiments of the present invention can construct a database consisting of these calibration points by obtaining ground truth measurements of the calibration points, for example, by using ultra-high-precision DGPS to measure the actual coordinates of the reference points.
[0014] When an interested device passes through a calibration point (e.g., within a predetermined vicinity of the calibration point), embodiments of the present invention may measure the minimum distance offset of the computing device with respect to that calibration (reference) point at that time. The embodiments of the present invention may then use this information to fix the unprocessed location (e.g., GPS) measurement data and provide a calibrated location measurement as detailed herein.
[0015] Embodiments of the present invention can use combinations of calibration vectors from each of a plurality of reference points to generate a complete dynamic (e.g., updated over time) calibration profile for one or more (e.g., each) served client computing devices. For example, embodiments of the present invention can use a calibration point where the user is facing north to fix the east-west offset and another reference point where the user is facing east to fix the north-south offset.
[0016] Embodiments of the present invention may utilize this calibration for a plurality of location measurements regarding a cluster including each of a plurality of client devices. Thus, embodiments may determine which measurements within the cluster should be given the maximum weight to determine the location of the member computing device.
[0017] Embodiments of the present invention can identify additional calibration (reference) points without requiring ground truth location measurements (e.g., by DGPS) of these points. For example, embodiments of the present invention can (i) find the most accurate device that best matches the ground truth, (ii) find additional candidate points with uniform azimuth and offset values, and (iii) use the data from the most accurate device as the ground truth and fix the remaining devices accordingly.
[0018] Embodiments of the present invention may be provided as a service to third - party enterprises interested in improving the location (e.g., GPS) accuracy of client computing devices by calibrating location measurements of the client computing devices. In such embodiments, in the calibration service, it may be proposed that the client device transmits a stream of GPS points and the service continuously responds with a stream of calibration vectors for correcting the offset of the client computing device relative to a reference point. Such a service can present improvements over currently available calibration services that (a) require raw GNSS GPS message information that may not be available on all mobile devices (e.g., iOS devices), (b) may require raw data received from each satellite, and (c) require costly installation of base stations.
[0019] Embodiments of the present invention may receive a plurality of location data elements representing the geographical locations of respective ones of a plurality of devices located close to each other (e.g., located within the same vehicle) and obtain a refined version of the location data elements representing the refined geographical locations of the plurality of devices.
[0020] Some embodiments of the present invention are directed to a method of determining the geographical location of a first computing device by at least one processor. Embodiments of the method may include coupling the first computing device to one or more second computing devices, obtaining at least one first location data element representing the geographical location of the first computing device, receiving from at least one of the one or more second computing devices a second location data element representing the geographical location of the at least one second computing device, and calculating a first refined location data element representing the determined location of the first computing device based on the first location data element and the at least one second location data element.
[0021] In some embodiments, the first location data element may include a first confidence value representing the reliability of the geographical location of the first computing device. In some embodiments, at least one second location data element may include at least one respective second confidence value representing the reliability of the geographical location of at least one second computing device. In some embodiments, calculating the refined location data element may be further based on the first confidence value and at least one second confidence value.
[0022] In some embodiments, the first location data element may include a first timestamp corresponding to the geographical location of the first computing device, and at least one second location data element may include at least one respective second timestamp corresponding to the geographical location of at least one second computing device. In some embodiments, calculating the refined location data element may be based on the first timestamp and at least one second timestamp. For example, calculating the refined location data element may include calculating a weighted average of the first location data element and at least one second location data element, which may include a weighted representation of the corresponding timestamps.
[0023] In some embodiments, the first computing device may include at least one processor that can be associated with or communicatively connected to a controller of a vehicle module included in a vehicle. The first computing device may transmit the refined location data element to the vehicle module.
[0024] The vehicle module may utilize the refined location data element to perform, for example, controlling the steering system of the vehicle, controlling the braking system of the vehicle, controlling the accelerator of the vehicle, and generating a collision warning on the user interface of the vehicle.
[0025] In some embodiments, a method for determining the geographical location of a first computing device may include transmitting a refined location data element to at least one second computing device among one or more second computing devices, and using the refined location data element as representative of the geographical location of the at least one second computing device.
[0026] In some embodiments, at least one second computing device among one or more second computing devices may be associated with a vehicle module of a vehicle. In such embodiments, the vehicle module may be configured to perform at least one of controlling the steering system of the vehicle, controlling the braking system of the vehicle, controlling the accelerator of the vehicle, generating a collision warning on the user interface of the vehicle, and any combination thereof, using the refined location data element.
[0027] In some embodiments, the step of coupling a first computing device with a second computing device may include receiving a coupling request via a first user interface (UI) of the first computing device, transmitting a coupling request message to the second computing device based on the request, receiving a coupling approval message from the second computing device, and coupling the first client computing device with the second client computing device based on the approval message.
[0028] In some embodiments, coupling a first computing device with at least one second computing device may include using a first short-range communication device (SRD) associated with the first computing device to detect at least one second SRD associated with at least one second computing device, sending a connection request message to the at least one second SRD via the first SRD, receiving a connection approval message from the at least one second computing device via the first SRD, and coupling the first computing device with the at least one second computing device via the first SRD.
[0029] In some embodiments, the first SRD may be selected from a list consisting of a Wi-Fi device, a Bluetooth® device, and a near field communication (NFC) device.
[0030] In some embodiments, the first computing device may be selected as a primary device, and the primary device provides most of the computing capabilities to determine the geographical location of the first computing device.
[0031] In some embodiments, at least one processor may be associated with a server computing device, and the first computing device and one or more second computing devices may be client computing devices communicatively connected to the server computing device.
[0032] Some embodiments of the present invention are directed to a method of determining the geographical location of one or more client computing devices by at least one processor of a server computing device. In some embodiments, the method includes receiving at least one grouping data element representing a cluster of one or more client computing devices, obtaining from at least one of the one or more client computing devices at least one respective location data element representing the geographical location of the at least one client computing device, and calculating a refined location data element representing the determined location of the cluster of the one or more client computing devices based on at least one of the one or more location data elements and at least one of the one or more grouping data elements.
[0033] In some embodiments, at least one processor of the server may be configured to transmit the refined location data element to a vehicle module associated with a vehicle, and the vehicle module may be configured to use the refined location data element to control at least one of controlling a steering system of the vehicle, controlling a braking system of the vehicle, controlling an accelerator of the vehicle, and generating a collision warning on a user interface of the vehicle.
[0034] Some embodiments of the present invention are directed to a system for determining the geographical location of one or more client computing devices. In some embodiments, the system may include a non-transitory memory device storing modules of instruction code, and at least one processor associated with the memory device and configured to execute the modules of instruction code, wherein when the modules of instruction code are executed, the at least one processor is configured to receive a grouping data element representing a cluster of one or more client computing devices, obtain from at least one of the one or more client computing devices at least one respective location data element representing the geographical location of the at least one client computing device, and calculate a refined location data element representing the determined location of the cluster of one or more client computing devices based on at least one of the one or more location data elements and at least one of the one or more grouping data elements.
[0035] Embodiments of the present invention may include a system for determining a geographical location. Embodiments of the system may include a server computing device configured to obtain one or more reference points, each representing a geographical location and having ground truth longitude and latitude values. The server computing device may receive at least two location data elements, each including a measured longitude value and a measured latitude value of the client computing device, from at least one client computing device. Based on the location data elements, the server computing device may determine the direction of movement of the client computing device and calculate the minimum crossing distance between the client computing device and the geographical location of the unique reference point. Based on the minimum crossing distance, the server computing device may generate a reference eigen - calibration vector related to the unique reference point. The reference eigen - calibration vector may represent the required correction of the location of at least one client computing device in a direction substantially perpendicular to the direction of movement.
[0036] According to some embodiments, the server computing device may transmit the reference eigen - calibration vector to the client computing device. At least one client computing device may be configured to receive an instantaneous location data element that may include measured longitude and latitude values of the client computing device. The at least one client computing device may then apply the reference eigen - calibration vector to the instantaneous location data element to obtain a calibrated location data element representing the corrected geographical location of the client computing device.
[0037] Additionally or alternatively, a server computing device may be configured to generate a plurality of reference-specific calibration vectors for respective fiducial points. At least one client computing device may be configured to calculate an aggregated calibration vector based on the plurality of reference-specific calibration vectors and apply the aggregated calibration vector to the instantaneous position data element to obtain a calibrated position data element.
[0038] According to some embodiments, one or more (e.g., each) reference-specific calibration vectors may be given a crossing timestamp representing the time when the client computing device was at a minimum traversal distance from the geographical location of the respective fiducial point. In such embodiments, the client computing device may be further configured to calculate the aggregated calibration vector based on the crossing timestamp, as detailed herein.
[0039] According to some embodiments, a server computing device may obtain a fiducial point by selecting the fiducial point from a plurality of geodata points. For example, the server computing device may receive a data set that may include a plurality of geodata points, each representing a respective geographical location and representing the longitude and latitude values of the ground truth. For one or more (e.g., all) geodata points, the server computing device may calculate a direction uniformity value representing the level of uniformity of the direction of movement of client computing devices within a predetermined vicinity of the respective geographical location based on the position data element. The server computing device may then select a fiducial point from among the plurality of geodata points based on the direction uniformity value (e.g., select the fiducial point having the maximum direction uniformity value).
[0040] Additionally or alternatively, the server computing device may calculate, for one or more geo-data points, a distance uniformity value representing a level of uniformity of the minimum traversal distance between the client computing device and the geo-data points based on the location data elements, and select a reference point from among the plurality of geo-data points further based on the distance uniformity value (e.g., selecting a reference point having the maximum distance uniformity value) and / or any combination thereof.
[0041] According to some embodiments, at least one client computing device may include a first client computing device and one or more second client computing devices. The first client computing device may be configured to couple with the one or more second client computing devices, obtain a calibrated location data element representing a calibrated geographical location of the first client computing device, and receive, from at least one of the one or more second computing devices, a second calibrated location data element representing a calibrated geographical location of the at least one second computing device. The first client computing device may then be configured to calculate a first refined location data element representing a refined location of the first computing device based on the first calibrated location data element and the at least one second calibrated location data element.
[0042] According to some embodiments, the first calibration location data element may include a first confidence value representing the reliability of the corrected geographical location of the first client computing device, and at least one second calibration location data element may include at least one respective second confidence value representing the reliability of the geographical location of at least one second computing device. The first client computing device may be configured to calculate a first refined location data element further based on the first confidence value and at least one second confidence value, as detailed herein.
[0043] Additionally or alternatively, the first calibration location data element may include or be associated with a first timestamp corresponding to the geographical location of the first computing device. At least one second calibration location data element may include or be associated with at least one respective second timestamp corresponding to the geographical location of at least one second computing device. The first client computing device may be configured to calculate a refined location data element further based on the first timestamp and at least one second timestamp, as detailed herein.
[0044] Additionally or alternatively, the first calibration location data element may be associated with a first minimum traversal distance value, and at least one second calibration location data element may be associated with at least one respective second minimum traversal distance value. The first client computing device may calculate a refined location data element further based on the first minimum traversal distance value and at least one second minimum traversal distance value, as detailed herein.
[0045] According to some embodiments, the first computing device may be configured to send the refined location data element to at least one controller of a vehicle module of the vehicle. The vehicle module may be configured to utilize the refined location data element to control the steering system of the vehicle, control the braking system of the vehicle, control the accelerator of the vehicle, generate a collision warning on the user interface of the vehicle, and perform at least one action selected from any combination thereof.
[0046] According to some embodiments, the first computing device may send the refined location data element to at least one of one or more second computing devices. The at least one second computing device may then use the refined location data element to represent its geographical location.
[0047] Additionally or alternatively, at least one of one or more second computing devices may be associated with a vehicle module of the vehicle. The vehicle module may be configured to utilize the refined location data element to control the steering system of the vehicle, control the braking system of the vehicle, control the accelerator of the vehicle, generate a collision warning on the user interface of the vehicle, and perform at least one action selected from any combination thereof.
[0048] According to some embodiments, a first client computing device may be configured to couple with one or more second client computing devices by receiving a coupling request via a user interface (UI) of the first computing device, sending a coupling request message to a second computing device based on the coupling request, receiving a coupling approval message from the second computing device, and coupling with the second client computing device based on the approval message.
[0049] Additionally or alternatively, the first client computing device may be configured to couple with one or more second client computing devices by detecting at least one second short-range communication device (SRD) associated with at least one second computing device using a first SRD associated with the first computing device.
[0050] The first SRD device and / or the second SRD device may be, for example, a Wi-Fi device, a Bluetooth® device, a near field communication (NFC) device, etc. The first client computing device may send a coupling request message to at least one second SRD via the first SRD and receive a coupling approval message from at least one second computing device via the first SRD. The first client computing device may then couple with at least one second computing device via the first SRD.
[0051] According to some embodiments, the first client computing device and at least one second client computing device may be configured to negotiate the role of the primary client computing device based on a first trust value and at least one second trust value. The primary device may be configured to provide most of the computing power, for example, to determine the refined geographical location of the first client computing device and at least one second client computing device.
[0052] According to some embodiments, the first client computing device may repeatedly calculate the first refined position data element in a plurality of iterations to obtain a plurality of (i) first refined position data elements and (ii) corresponding trust values representing the reliability of the refined geographical location of the first computing device in that iteration. The first client computing device may then calculate a summary refined position data element representing the determined position of the first computing device based on the plurality of first position data elements and their respective plurality of trust values.
[0053] According to some embodiments, the plurality of first refined position data elements may include a timestamp corresponding to the geographical location of the first computing device in that iteration. The first client computing device may be configured to calculate the summary refined position data element further based on the plurality of timestamps, as detailed herein.
[0054] Embodiments of the present invention may include a method for determining the geographical location of a client computing device by at least one processor. Embodiments of the method may include, for example, receiving from at least one client computing device at least two location data elements each of which may include measured longitude and latitude values of the client computing device; determining a direction of movement of the client computing device based on the location data elements; calculating a minimum crossing distance between the client computing device and a reference point based on the location data elements, the reference point being one to which ground truth longitude and latitude values may be assigned; generating a reference eigen calibration vector with respect to the reference point based on the minimum crossing distance, the reference eigen calibration vector representing a required correction of a location in a direction substantially perpendicular to the direction of movement; and applying the reference eigen calibration vector to an instantaneous location data element to obtain a calibrated location data element representing the calibrated geographical location of the client computing device.
[0055] According to some embodiments, the at least one processor may apply the reference eigen calibration vector by transmitting to the client computing device a plurality of reference eigen calibration vectors each of which relates to a respective reference point. The client computing device may be configured to calculate an aggregated calibration vector based on the plurality of reference eigen calibration vectors and apply the aggregated calibration vector to measured longitude and latitude values of an instantaneous location data element to obtain a calibrated location data element that may include or represent calibrated longitude and latitude values.
[0056] Embodiments of the present invention may include a method for determining the geographical location of one or more client computing devices by at least one processor of a server computing device. Embodiments of the method may include receiving at least one grouped data element representing a cluster of one or more client computing devices, obtaining from at least one of the one or more client computing devices at least one respective location data element representing the geographical location of the at least one client computing device, and calculating a refined location data element representing the determined location of the cluster of one or more client computing devices based on at least one of the one or more location data elements and at least one of the one or more grouped data elements.
[0057] Additionally or alternatively, at least one processor of the server may be configured to transmit the refined location data element to a vehicle module associated with a vehicle. The vehicle module may be configured to utilize the refined location data element to perform at least one of controlling a steering system of the vehicle, controlling a braking system of the vehicle, controlling an accelerator of the vehicle, and generating a collision warning on a user interface of the vehicle.
Brief Description of the Drawings
[0058] The subject matter regarded as the invention is particularly pointed out and distinctly claimed in the concluding portion of the specification. However, the invention, together with its objects, features, and advantages, may be best understood by reference to the following detailed description when read in conjunction with the accompanying drawings, both as to its construction and its method of operation.
[0059]
Figure 1
Figure 2A
Figure 2B
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7
Figure 8A1
Figure 8A2
Figure 8B1
Figure 8B2
Figure 8C1
Figure 8C2
Figure 8C3
Figure 9
Figure 10
[0060] It should be understood that, for the sake of brevity and clarity of the description, the elements shown in the figures are not necessarily drawn to scale. For example, the dimensions of some of the elements may be exaggerated relative to other elements for clarity. Further, when considered appropriate, reference numerals may be repeated among the figures to indicate corresponding or similar elements.
Mode for Carrying Out the Invention
[0061] Those skilled in the art will understand that the present invention can be embodied in other specific forms without departing from its spirit or essential characteristics. Therefore, the foregoing embodiments should be considered illustrative rather than limiting the invention described herein in any way. Accordingly, the scope of the present invention is indicated by the appended claims rather than by the foregoing description, and all changes that come within the meaning and range of equivalents of the claims are intended to be included therein.
[0062] In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, those skilled in the art will understand that the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, and components have not been described in detail so as not to obscure the present invention. Some features or elements described with respect to one embodiment may be combined with those described with respect to other embodiments. For clarity, the discussion of the same or similar features or elements may not be repeated.
[0063] Embodiments of the present invention, but not limited thereto, for example, discussions using terms such as "processing," "calculating," "computing," "determining," "establishing," "analyzing," "checking," etc., may refer to the operation and / or process of a computer, computing platform, computing system, or other electronic computing device that operates on and / or transforms data represented as a physical (e.g., electronic) quantity in a computer's register and / or memory into other data represented as a similar physical quantity in the computer's register and / or memory or in another non-transitory storage medium capable of storing instructions for performing the operation and / or process.
[0064] Embodiments of the present invention are not limited in this regard, but as used herein, the term "plurality" (including "plurality" and "a plurality") may include, for example, "multiple" or "two or more." The term "plurality" (including "plurality" or "a plurality") may be used throughout this specification to describe two or more components, devices, elements, units, parameters, and the like. As used herein, the term "set" may include one or more items.
[0065] Unless explicitly stated otherwise, embodiments of the methods described herein are not limited to a particular order or sequence. Further, some of the described method embodiments or elements thereof may occur or be performed simultaneously, at the same point in time, or together.
[0066] The following Table 1 may be used as a reference for terms used herein for the convenience of the reader.
Table 1(1)
Table 1(2)
[0067] Embodiments of the present invention may include methods and systems for determining the geographical location of a computing device. In some embodiments, determining the location of the computing device may be achieved by comparing the location of the computing device with the location of at least one additional computing device. Additionally or alternatively, determining the location of the computing device may be performed by a server associated with the computing device. Additionally or alternatively, determining the location of the computing device may be performed by at least one processor associated with the computing device.
[0068] Referring now to FIG. 1, this figure is a block diagram showing a computing device, which may be included within an embodiment of a system for determining the geographical location of one or more computing devices, according to some embodiments of the present invention.
[0069] The computing device 1 may be, for example, a central processing unit (CPU) processor, a chip, or a processor or controller 2 that can be any suitable computing or calculating device, an operating system 3, a memory 4, executable code 5, a storage system 6, an input device 7, and an output device 8. The processor 2 (or, in some cases, one or more controllers or processors over multiple units or devices) may be configured to execute the methods described herein and / or to execute or function as various modules, units, etc. A plurality of computing devices 1 may be included in a system according to embodiments of the present invention, and one or more computing devices 1 may function as components of that system.
[0070] The operating system 3 may be any code segment (e.g., similar to the executable code 5 described herein) designed and / or configured to perform tasks involving the coordination, scheduling, mediation, supervision, control, or other management of the operation of the computing device 1, such as tasks of scheduling the execution of software programs or tasks, or tasks enabling the communication of software programs or other modules or units. The operating system 3 may be a commercial operating system. The operating system 3 may be an optional component, and it should be noted that, for example, in some embodiments, the system may include computing devices that do not require or include the operating system 3.
[0071] The memory 4 may be, for example, a random access memory (RAM), a read-only memory (ROM), a dynamic RAM (DRAM), a synchronous DRAM (SD-RAM), a double data rate (DDR) memory chip, a flash memory, a volatile memory, a non-volatile memory, a cache memory, a buffer, a short-term memory unit, a long-term memory unit, or other suitable memory unit or storage unit, or may include them. The memory 4 may be, in a plurality of cases, different memory units or may include them. The memory 4 may be a non-transitory readable medium of a computer or a processor, or a non-transitory storage medium of a computer, such as a RAM. In one embodiment, a non-transitory storage medium such as the memory 4, a hard disk drive, or another storage device may store instructions or code that, when executed by the processor, can cause the processor to execute the methods described herein.
[0072] The executable code 5 may be any executable code, such as an application, a program, a process, a task, or a script. The executable code 5 may be executed by the processor or the controller 2, optionally under the control of the operating system 3. For example, the executable code 5 may be an application that may include instructions for determining the geographical location of one or more computing devices, as further described herein. For clarity, although a single item of executable code 5 is shown in FIG. 1, systems according to some embodiments of the present invention may include a plurality of executable code segments similar to the executable code 5 that are loaded into the memory 4 and can cause the processor 2 to execute the methods described herein.
[0073] The memory system 6 may be, for example, a flash memory known in the art, a memory inside or incorporated into a microcontroller or chip known in the art, a hard disk drive, a CD recordable (CD-R) drive, a Blu-ray disk (BD), a Universal Serial Bus (USB) device, or other suitable removable and / or fixed storage units, or may include them. As further described herein, data that may include position data elements, confidence values, or timestamps may be stored within the memory system 6, loaded from the memory system 6 into the memory 4, where it may be processed by the processor or controller 2. In some embodiments, some of the components shown in FIG. 1 may be omitted. For example, the memory 4 may be a non-volatile memory having the storage capacity of the memory system 6. Thus, although the memory system 6 is shown as a separate component, it may be embedded in or included in the memory 4.
[0074] The input device 7 may be any suitable input device, component, or system, such as a removable keyboard or keypad, a mouse, etc., or may include them. The output device 8 may include one or more (optionally removable) displays or monitors, speakers, and / or any other suitable output device. As indicated by blocks 7 and 8, any applicable input / output (I / O) device may be connected to the computing device 1. For example, a wired or wireless network interface card (NIC), a Universal Serial Bus (USB) device, or an external hard drive may be included in the input device 7 and / or the output device 8. It should be appreciated that any suitable number of input devices 7 and output devices 8 may be operably connected to the computing device 1 as indicated by blocks 7 and 8.
[0075] Systems according to some embodiments of the present invention may include components such as a plurality of central processing units (CPUs) or any other suitable general-purpose or specific processors or controllers (e.g., similar to element 2), a plurality of input units, a plurality of output units, a plurality of memory units, and a plurality of storage units, but are not limited thereto.
[0076] Referring now to FIGS. 2A and 2B, these figures illustrate an example of the configuration of a system for determining the geographical location of one or more computing devices in accordance with some embodiments of the present invention.
[0077] In one example, as shown in FIG. 2A, system 1000 may include a primary computing device, also referred to herein as primary client 100C1, and at least one secondary computing device, also referred to herein as secondary client 100C2. According to some embodiments, client 100C1 and / or 100C2 may be or include a computing device such as computing device 1 of FIG. 1. In some embodiments, client 100C1 and / or 100C2 may be or include a mobile computing device such as a mobile phone or smartphone, and the mobile computing device may include or be associated with a global positioning device, as detailed herein.
[0078] Primary client 100C1 and at least one secondary client 100C2 may be communicatively connected via a communication network 170 such as, for example, Bluetooth®, Near Field Communication (NFC), Internet Protocol, and / or a cellular data network. According to some embodiments, primary client 100C1 and at least one secondary client 100C2 may be adapted to communicate location-related information via communication network 170.
[0079] The primary client 100C1 may then determine a geographic location data element representing the geographic location of the primary client 100C1 based on location-related information received from one or more secondary clients 100C2, as detailed herein.
[0080] The terms "primary" and "secondary" may be used herein to indicate a relationship between a first computing device 100 and a second device 100. For example, the primary computing device 100C1 or the primary client 100C1 may be a primary source of location data to be used, for example, to improve or enhance the location accuracy of all devices (including, for example, the secondary computing device 100C2). Additionally or alternatively, the primary computing device 100C1 or the primary client 100C1 may be referred to as "primary" in the sense that it may perform the required geographic location calculations to conserve computing resources (such as power, computing cycles, memory, etc.) for all computing devices (including, for example, the secondary computing device 100C2).
[0081] In some embodiments, a client computing device 100 (e.g., 100C1, 100C2) is selected as the "primary device" 100C1 (also referred to herein as the "primary client" 100C1), and this can occur at any phase or step in the method of determining the geographic location of one or more client computing devices 100.
[0082] For example, the primary device 100C1 may provide most of the computing capabilities from the primary device 100C1 to execute instructions for determining a geographical location, as described herein. In other words, the primary device 100C1 may calculate a geographical location data element (also referred to herein as the "refined location data element 110RL") representing the geographical location of the primary client 100C1 based on location-related information received from a plurality of clients 100C1 and 100C2, as detailed herein.
[0083] Additionally or alternatively, the primary device 100C1 may provide most of the network bandwidth from the primary device 100C1 to calculate the refined location data element 110RL and execute instructions for determining the geographical locations of clients 100C1 and 100C2, as described herein.
[0084] In some embodiments, the primary device 100C1 may be selected from one or more client computing devices 100 based on the unique attributes of the client computing device 100. In some embodiments, non-limiting examples of the unique attributes of the client computing device 100 include available computing resources, GPS location trust values related to the Global Positioning System (GPS) of the computing device, and operating system versions.
[0085] Additionally or alternatively, an additional primary device 100C1 may be selected from one or more client computing devices 100. In such embodiments, two or more primary client devices 100C1 may cooperate to determine their respective geographical locations, as described herein.
[0086] In another example, as shown in FIG. 2B, the system 1000 may be a server-client system that includes at least one server 100S adapted to communicate location-related information with a plurality of clients 100C1 and 100C2. In such an embodiment, the server 100S may calculate the refined location data element 110RL based on location-related information received from the plurality of clients 100C1 and 100C2, as detailed herein.
[0087] Referring now to FIG. 3, this figure shows the modules of the system 1000 for determining the geographical location of one or more computing devices, according to some embodiments of the present invention. The system 1000 of FIG. 3 may be the same as the system 1000 of FIGS. 2A and / or 2B.
[0088] As shown in FIG. 3, the arrows may represent the flow of one or more data elements to, from, and / or between the modules or elements of the system 1000, according to some aspects of the present invention discussed herein. Some of the arrows are omitted in FIG. 3 for clarity.
[0089] As shown in the example of FIG. 3, one or more computing devices 100 (e.g., the primary client 100C1) may be associated with or communicatively coupled to respective geographical location modules (e.g., the geographical location module 10). Additionally or alternatively, one or more computing devices (e.g., the secondary client 100C2) may have or include respective geographical location modules (e.g., the geographical location module 10B).
[0090] According to some embodiments, the geographic location module 10 (e.g., 10A, 10B) may be configured to provide location data elements 10P (e.g., the primary location data element 10P-A or the secondary location data element 10P-B, also referred to herein) to one or more respective computing devices 100 (e.g., 100C1, 100C2). The location data element 10P may include, for example, longitude coordinates and latitude coordinates representing the geographic location of each client (e.g., 100C1, 100C2).
[0091] For example, the geographic location module 10 (e.g., 10A, 10B) may be, or include, a global positioning system (GPS) receiver configured to calculate the location data element 10P based on a GPS system, as is known in the art. In another example, the geographic location module 10 may be, or include, a mobile device configured to determine the location data element 10P based on triangulation information from a base station of the carrier network of the mobile device.
[0092] The location data element 10P (e.g., 10P-A, 10P-B) may include at least one attribute. Non-limiting examples of attributes of the location data element 10P include a confidence value 10CV (e.g., 10CV-A, 10CV-B) and a timestamp 10TS value (e.g., 10TS-A, 10TS-B).
[0093] The confidence value 10CV (e.g., 10CV-A, 10CV-B) may indicate the accuracy or reliability of the location data element as representing the real-world geographic location of each client 100 (e.g., 100C1, 100C2).
[0094] For example, the geographical location module 10 (e.g., 10A, 10B) may receive GPS positioning data 10P, for example, together with a trust value 10CV. In such an embodiment, the trust value 10CV may represent accuracy (e.g., measured in meters), or may represent the distance (e.g., measured in meters) from the ground truth geographical location at a given probability (e.g., 67%).
[0095] The timestamp 10TS (e.g., 10TS-A, 10TS-B) may represent the time at which the measurement of the geographical location, e.g., the position data element 10P (e.g., 10P-A, 10P-B), was acquired or performed. For example, the timestamp 10TS may include an indication of seconds, minutes, hours, etc., and a time zone (e.g., UTC-7:00) for the geographical location with respect to Coordinated Universal Time (UTC). A non-limiting example of the timestamp 10TS may be 01 / 01 / 2022 17:45:31 UTC+3:00.
[0096] In some embodiments, the geographical location module 10 may send each position data element 10P to a processor associated with each client 100.
[0097] According to some embodiments, the primary client 100C1 and one or more secondary clients 100C2 may be coupled via the communication module 120 of the system 1000, and the communication module 120 may be, for example, a long-distance communication module including a cellular communication module or a modem. Additionally or alternatively, the primary client 100C1 and the secondary client 100C2 may be coupled via a short-distance communication module 150 as illustrated and described in connection with FIG. 4. Non-limiting examples of the short-distance communication device 150 may include a Wi-Fi device, a Bluetooth® device, and a Near Field Communication (NFC) device.
[0098] As shown in FIG. 3, the primary client 100C1 may include an analysis module 110. The analysis module 110 may be configured to receive, via the communication module 120, (a) a primary location data element 10P-A from the geographical location module 10A and (b) a secondary location data element 10P-B from the geographical location module 10B. The analysis module 110 may determine a refined location data element 110RL (e.g., 110RL-A, 110RL-B) representing the geographical location of the client 100 (e.g., 100C1, 100C2). The analysis module 110 may then calculate the refined location data element 110RL based on the received location data elements (e.g., 10P-A, 10P-B), as detailed herein.
[0099] The term "refined" may be used in this context of the refined location data element 110RL to indicate an improvement (e.g., an improvement in accuracy) regarding representing a geographical location. The refined location data element 110RL may be an improvement over currently available systems (e.g., clients 100C1 and 100C2) that only rely on receiving the location data element 10P (e.g., from respective geographical location modules 10).
[0100] Additionally or alternatively, the analysis module 110 may be configured to calculate a refined location data element 110RL-A representing the geographical location of the primary client 100C1 based on at least one attribute of the confidence value 10CV-A and the timestamp 10TS-A.
[0101] For example, the analysis module 110 may calculate a weighted average of the location data elements 10P (e.g., 10P-A, 10P-B) based on the attribute. When the confidence value 10CV-A is greater than the confidence value 10CV-B, the primary location data element 10P-A may have a greater weight 110W than the secondary location data element 10P-B for calculating the refined location data element 110RL. The following exemplary equation 1 shows a weighted average calculation that may be used to calculate the refined location data element 110RL:
Number
[0102] In Equation 1(a), W is the weight value 110W calculated as a function of a reliability value (CV) such as 10CV.
[0103] In Equation 1(b), W1 and W2 are instances of the weight value 110W calculated separately according to Equation 1(a) for each of two clients (e.g., 100C1, 100C2). Y1 and Y2 represent the position data elements 10P-A and 10P-B, respectively. In other words, each position data element Y may have its own reliability value W (10CV, e.g., 10CV-A, 10CV-B). X represents the refined position data element 110RL as a weighted average of the position data elements (e.g., 10P-A and 10P-B).
[0104] Additionally or alternatively, exemplary Equation 2 below shows another weighted average calculation that can be used to calculate the refined position data element 110RL:
Number
[0105] In Equation 2(a), W represents the weight value 110W calculated as a function f() of attributes such as the reliability value 10CV and the timestamp 10TS, as detailed herein.
[0106] In Equation 2(b), X represents the refined position data element 110RL, and the weight values 110W W1 and W2 may be calculated as functions of the reliability value 10CV and the timestamp 10TS as in Equation 2(a).
[0107] Assign a first numerical weight value 110W, W1 to a first client 10 (e.g., 10A) having a first confidence value 10CV and / or a time stamp 10TS, and assign a second numerical weight value 110W, W2 to a second client 10 (e.g., 10B) having a second confidence value 10CV and / or a time stamp 10TS. The function f() may be configured such that when the first confidence value 10CV is higher than the second confidence value 10CV, the weight 110W W1 can be greater than the weight 110W W2. In another example, the function f() may be configured such that when the first time stamp 10TS is later (e.g., more recent) than the second time stamp 10TS, the weight 110W W1 can be greater than W2.
[0108] X may be calculated as a weighted average of position data elements Y1 and Y2 (10P, e.g., 10P-A and 10P-B), each associated with its respective attribute (e.g., W1 and W2). The weight values 110W W1 and W2 may be used, for example, to weight a corresponding position data element 10P (e.g., 10TS-A corresponding to 10P-A) with respect to another position data element 10P.
[0109] The analysis module 110 may be configured to send the refined position data element 110RL to a secondary client 100C2 as a refined position data element 110RL-B. Thus, the refined position data element 110RL-B may represent the geographical location of the secondary client 100C2.
[0110] In some embodiments, a client 100 (e.g., 100C1, 100C2) may send a refined position data element 110RL (e.g., 110RL-A, 110RL-B) to a vehicle module 130 (e.g., 130A, 130B). The vehicle module 130 may be or include software and / or hardware elements that can be associated with a vehicle, and may utilize the refined position data element 110RL according to a specific configuration.
[0111] For example, the vehicle module 130 may be associated with a controller of an autonomous vehicle, and the controller may be configured to control the steering system of the vehicle, control the braking system of the vehicle, and control the accelerator of the vehicle, etc., based on the refined position data element 110RL.
[0112] In another example, the vehicle module 130 may be associated with a processor of an advanced driver assistance system (ADAS) of the vehicle, and the processor may be configured to generate a collision warning, for example, on a user interface associated with the vehicle.
[0113] In another example, the vehicle module 130 may be, or may include, an ADAS system of the vehicle, an autonomous vehicle controller, an adaptive driving control system of the vehicle, a pedestrian warning system mounted on the vehicle, and a parking assistance system of the vehicle.
[0114] Referring now to FIG. 4, this figure shows a system 1000 for coupling devices according to some embodiments of the present invention. The system 1000 of FIG. 4 may be the same as the system 1000 of FIGS. 2A and / or 2B and / or 3.
[0115] According to some embodiments of the present invention, a user may input a coupling request 120CR to a primary client 100C1 using a user interface (UI) 160. The primary client 100C1 may receive the coupling request 120CR and, based on the input coupling request 120CR, send or transmit a coupling request 120CR message to a second computing device 100C2, for example, directly via a communication module 120 or via a server 100S. The primary client 100C1 may then receive a coupling approval message 120CA from the second computing device 100C2 and couple the clients 100C1 and 100C2 based on the receipt of the coupling approval message 120CA.
[0116] The primary client 100C1 may then send a signal to the user interface 160 to display confirmation of the coupled device based on receiving a coupling approval 120CA message from the communication module 120.
[0117] Additionally or alternatively, the primary client 100C1 may send a coupling request 150CR to the secondary SRD device 150B of the secondary client computing device 100C2 via, for example, a primary short-range communication device (SRD) 150A associated with the primary client 100C1. The client 100C1 may then receive a coupling approval 150CA message from the secondary client computing device 100C2 and couple the clients 100C1 and 100C2 based on the received approval 150CA message.
[0118] Next, the primary client 100C1 may send a signal to the user interface 160 to display confirmation of the coupled device based on receiving a coupling approval 150CA from the primary SRD 150. The primary SRD 150A may be configured to detect at least one secondary SRD 150B associated with at least one secondary client 100C2 to couple the clients 100C1 and 100C2. Non-limiting examples of the short-range communication devices 150A or 150B may include Wi-Fi devices, Bluetooth® devices, and NFC devices.
[0119] Referring now to FIG. 5, this figure shows a system for determining a geographical location according to some embodiments of the present invention. The system 1000 of FIG. 5 may be the same as the system 1000 of FIGS. 2A, 2B, 3, and / or 4.
[0120] Server 100S may be an embodiment of computing device 1 illustrated and described herein with reference to FIG. 1. Server 100S may be communicatively connected to primary client 100C1 and / or secondary client 100C2 via communication network 170.
[0121] Server 100S may receive at least one grouped data element 170GE representing a cluster of one or more client computing devices 100 (e.g., 100C1, 100C2). The grouped data element 170GE may be transmitted to server 100S, for example, via communication network 170. The grouped data element 170GE may be determined by a geographic location module (e.g., geographic location module 10) associated with one or more client computing devices 100 (e.g., 100C1, 100C2). The geographic location module 10 or each client associated with the geographic location module 10 may be configured to provide the grouped data element 170GE to server 100S. In some embodiments, the grouped data element 170GE may be received by server 100S via an input device associated therewith (e.g., input device 7 of FIG. 1). Optionally, the grouped data element 170GE may include a confidence value 170CV and a timestamp 170TS.
[0122] Server 100S may determine a refined location data element 180RL representing the geographic location of a cluster of one or more client computing devices. Server 100S may determine the refined location data element 180RL based on at least one grouped data element 170GE. Additionally or alternatively, server 100S may determine the refined location data element 180RL based on the confidence value 170CV and / or the timestamp 170TS.
[0123] For example, server 100S may determine refined location data element 180RL based on the weighted average calculation of one or more grouped data elements 170GE. The weighted average calculation may be, or may include, the elements or functions discussed herein with respect to the weighted average calculation performed by analysis module 110 of system 100 discussed herein with respect to FIG. 3.
[0124] Referring now to FIG. 6, this figure shows a flowchart of a method for determining the geographic location of a computing device by at least one processor, in accordance with some embodiments of the present invention. Steps S1010 - S1040 may be performed by system 1000 to determine one or more refined location data elements 110RL (e.g., 110RL - A, 110RL - B) representative of the geographic location of computing device 100 (e.g., 100C1, 100C2). Steps S1010 - S1040 may be used to determine one or more refined location data elements 110RL via communication network 170 communicatively coupled to one or more computing devices 100 (e.g., 100C1, 100C2). Additionally or alternatively, steps S1010 - S1040 may be performed by server 100S to determine one or more refined location data elements 180RL representative of the geographic location of a cluster of computing devices 100 (e.g., 100C1, 100C2).
[0125] In step S1010, a first computing device (e.g., 100C1) may couple with one or more second computing devices (e.g., 100C2). First computing device 100C1 may be coupled to one or more second computing devices 100C2 in accordance with instructions described herein via, for example, communication module 120 or short - range communication device 150 (e.g., 150A, 150B).
[0126] For example, the first computing device 100C1 may be coupled to one or more computing devices 100C2 via a short-range communication device 150, such as a Bluetooth (registered trademark) connection.
[0127] In step S1020, at least one first position data element 10P (e.g., 10P-A) may be obtained, and the first position data element 10P-A represents the geographical location of the first computing device 100C1. In some embodiments, the first position data element 10P-A may include one or more attributes (e.g., a confidence value 10CV-A, a timestamp 10TS-A).
[0128] For example, the first position data element 10P-A may be obtained via a geographical location module 10 associated with the first computing device 100C1.
[0129] In step S1030, a second position data element 10P (e.g., 10P-B) may be received from at least one of the one or more second computing devices 100C2, and the second position data element 10P-B represents the geographical location of the at least one second computing device 100C2. In some embodiments, the second position data element 10P-B may include one or more attributes (e.g., a confidence value 10CV-B, a timestamp 10TS-B).
[0130] For example, the second position data element 10P-B may be obtained via a geographical location module 10 associated with the second computing device 100C2.
[0131] In step S1040, the refined position data element 110RL may be calculated based on the first position data element 10P and at least one second position data element 10P (e.g., 10P-A, 10P-B), and the refined position data element 110RL represents the determined geographical location of the first computing device 100C1. The refined position data element 110RL may be transmitted to at least one second computing device 100C2 to represent the geographical location of the at least one second computing device 100C2.
[0132] For example, the refined position data element 110RL may be calculated based on elements or functions discussed herein with respect to the weighted average calculation performed by the analysis module 110 of the system 100 discussed herein with respect to FIG. 3. Thus, step 1040 may include calculating the refined position data element 110RL based on the first position data element 10P-A and at least one second position data element 10P-B by performing the weighted average calculation with respect to the received position data elements 10P (e.g., 10P-A, 10P-B).
[0133] According to some embodiments of the present invention, the method steps S1010 - S1040 discussed herein may be repeated, for example, in an iterative loop to recalculate a location data element representing the geographical location of the primary client 100C1. In some embodiments, in each iteration, one or more clients 100 (e.g., 100C2) may be coupled to the primary client 100C1. The client 100C2 may transmit to the primary client 100C1 at least one location data element 10P - B representing the geographical location of at least one coupled client 100C2. The refined location data element 110RL may be based on one or more location data elements 10P - B. The refined location data element 110RL may be based on a confidence value 10CV - B associated with one or more location data elements 10P - B. Additionally or alternatively, the refined location data element 110RL may be based on a timestamp 10TS - B associated with one or more location data elements 10P - B. In some embodiments, the iterative loop may be repeated, for example, until a certain threshold of the refined location data element 110RL is reached (i.e., until convergence of the iteration).
[0134] Referring now to FIG. 7, this figure shows the modules of a system 1000 for determining the geographical location of one or more computing devices, according to some embodiments of the present invention. The system 1000 of FIG. 7 may be the same as the system 1000 of FIGS. 2A, 2B, and / or 3. Some arrows are omitted in FIG. 6 for clarity.
[0135] As shown in FIG. 7, the server 100S of the system 1000 may include a geodata database 30 or be communicatively coupled thereto (e.g., via network 170). The database 30 may include a plurality of geodata points 30P, each geodata point representing a geographical location and being assigned ground truth longitude and latitude values.
[0136] As detailed herein, the server 100S may include a motion calculation module 210 (or, simply "motion module 210") configured to select one or more geodata points 30P according to a predetermined criterion and obtain one or more reference points 220REF therefrom. Each reference point 220REF represents a geographical location and may be given ground truth longitude and latitude values.
[0137] As detailed herein, the client 100C may receive one or more position data elements 10P (e.g., repeatedly, over time) for the associated geographical location unit 10. Each position data element 10P may include the measured longitude and latitude values of the client computing device 100C. The server 100S may be communicatively connected to the client 100C and may receive at least two such position data elements 10P from at least one client computing device 100C.
[0138] Based on at least two position data elements, the motion module 210 may determine the direction of motion 210DIR of the client computing device 100C. For example, the direction of motion 210DIR may be calculated as a vector connecting the geographical locations represented by two or more position data elements 10P.
[0139] Additionally or alternatively, based on at least the position data element 10P, the motion module 210 may calculate the minimum crossing distance 210DIS between the client computing device and the geographical location of the specific reference point 220REF. For example, the minimum crossing distance 210DIS may be perpendicular to the vector of the direction of motion 210DIR and may be calculated as a vector that intersects the specific reference point 220REF.
[0140] As shown in FIG. 7, server 100S may include a calibration vector calculation module 230 (or simply referred to as "calibration module 230"). The calibration module 230 may be configured to generate a reference eigen-calibration vector 230CALV for client 100C based on the minimum crossing distance vector 210DIS.
[0141] The calibration vector 230CALV may represent the required correction of the location of at least one client computing device 110C in a direction substantially perpendicular to the direction of motion 210DIR.
[0142] In a simple example, the calibration vector 230CALV may be related to the eigen-reference point 220REF and may be opposite to each minimum crossing distance 210DIS vector (e.g., perpendicular to the direction of motion 210DIR). For example, a vehicle moving on an east-west axis may cross the eigen-reference point 220REF. At the point closest to the reference point 220REF, the minimum distance vector 210DIS of the client 100C may represent an offset distance (e.g., several meters) from the reference point 220REF in the north direction. The calibration vector 230CALV may include an indication of the required correction in the opposite direction to the minimum distance vector 210DIS, e.g., south by the same offset distance.
[0143] In another example, as will be described in more detail herein, the calibration vector 230CALV may represent the required correction of the location for the client device 100C based on a temporal aggregation of the reference point 220REF. In such an embodiment, the calibration vector 230CALV may not necessarily represent the required correction of a location that is substantially perpendicular to the direction of motion 210DIR. Such a calculation of the aggregated calibration vector may be performed similarly by the server 100S (shown as 230ACV) for one or more clients 100C and / or by one or more (e.g., each) client computing devices 100C (shown as 110ACV) for their respective locations.
[0144] For example, the calibration module 230 may generate a plurality of reference-specific calibration vectors 230CALV associated with a particular client device 100C. Each calibration vector 230CALV may be associated with a respective specific reference point 220REF and may be obtained when the client device 100C traverses the reference point 220REF over time.
[0145] The server 100C may calculate an aggregated calibration vector 230ACV for each client device 100C based on the plurality of reference-specific calibration vectors 230CALV. Additionally or alternatively, the server 100C may communicate the reference-specific calibration vectors 230CALV to each client 100C, and each client 100C may use the analysis module 110 to calculate an aggregated calibration vector 110ACV based on the plurality of reference-specific calibration vectors 230CALV.
[0146] In one example, the aggregated calibration vector 110ACV / 230ACV may be calculated as the average vector of all reference-specific calibration vectors 230CALV for a particular client device 100C.
[0147] In another example, the aggregated calibration vector 110ACV / 230ACV may be calculated as the average vector of all reference-specific calibration vectors 230CALV for one or more (e.g., all) client devices 100C.
[0148] In another example, each reference-specific calibration vector may be assigned a transit timestamp representing the time when each client computing device 100C was at the minimum transit distance from the geographical location of each reference point 220REF. In such an embodiment, the calibration module 230 and / or the analysis module 110 of each client computing device 100C may calculate an aggregated calibration vector 110ACV / 230ACV based further on the transit timestamp. For example, client 100C may calculate the aggregated calibration vector 110ACV as a weighted average vector of all reference-specific calibration vectors 230CALV by using the timestamp as a decreasing weight, and may give a small weight to older measurements in the calculation.
[0149] According to some embodiments, client 100C may receive (e.g., from the geographical location module 10) an instantaneous position data element 10P that may include current measurements of the longitude and latitude of client computing device 100C. Client 100C may apply the aggregated calibration vector 110ACV / 230ACV to the instantaneous position data element 10P to obtain a calibrated position data element 110CB. The calibrated position data element 110CB may represent the corrected geographical location of client computing device 100C.
[0150] The term "apply" may be used herein to indicate the correction of the latitude and longitude values of the instantaneous position data element 10P as indicated by the aggregated calibration vector 110ACV / 230ACV. For example, an aggregated calibration vector 110ACV / 230ACV representing X meters in the east direction and Y meters in the north direction may be applied to the instantaneous position data element 10P by adding X and Y to the latitude and longitude values of the data element 10P, respectively.
[0151] Additionally or alternatively, the aggregated calibration vector 110ACV / 230ACV may represent the intrinsic reference point 220REF and thus may be self-evident in the sense that it may be equivalent to the reference intrinsic calibration vector 230CALV. In such an embodiment, the analysis module 110 may apply the reference intrinsic calibration vector 230CALV to the instantaneous position data element 10P to obtain the calibrated position data element 110CB.
[0152] Referring now to FIGS. 8A1, 8A2, 8B1, 8B2, 8C1, 8C2, and 8C3, these figures are schematic graphs showing the criteria for selecting geodata points 30P according to a predetermined criterion and obtaining one or more reference points 220REF therefrom, in accordance with some embodiments of the present invention.
[0153] As shown in FIG. 8A1, the geodata point 30P may represent a geographical location (e.g., latitude and longitude) at the center of an intersection. In such a situation, the orientation or direction 210DIR of the vehicle carrying the client device 100C may be schematically represented as in FIG. 8A2. As shown in this figure, the direction 210DIR may not be uniform in the sense that it may be distributed in four different bands (e.g., approximately 0, 180, 270, and 360 azimuth degrees). Thus, the geodata point 30P in FIG. 8A1 may not be selected as the reference point 220REF.
[0154] As shown in FIG. 8B1, the geodata point 30P may represent a geographical location (e.g., latitude and longitude) at the center of a multi-lane (e.g., three-lane) road, with each lane having a width of 4 meters. In such a situation, the offset of the minimum crossing distance vector 210DIS of the vehicle carrying the client device 100C may be schematically represented as in FIG. 8B2. As shown in this figure, the distance 210DIS may not be uniform in the sense that it may be distributed in three different bands (e.g., approximately -4, 0, and 4 meters) along an axis perpendicular to the direction of motion 210DIR. Thus, the geodata point 30P in FIG. 8B1 may not be selected as the reference point 220REF.
[0155] As shown in FIG. 8C1, the geo - data point 30P may represent a geographical location (e.g., latitude and longitude) at the center of a one - lane road. In such a state, the orientation or direction 210DIR of the vehicle carrying the client device 100C near the point 30P may be schematically represented as shown in FIG. 8C2, and the offset of the minimum crossing - distance vector 210DIS of the vehicle carrying the client device 100C may be schematically represented as shown in FIG. 8C3. As shown in FIGS. 8C2 and 8C3, the direction 210DIR and the distance 210DIS may be uniform in the sense that they can be defined respectively around narrow bands of the orientation (210DIR) and the distance (210DIS). Therefore, the geo - data point 30P in FIG. 8C1 may be appropriately selected as the reference point 220REF.
[0156] According to some embodiments, the motion module 210 may select a geo - data point of the dataset 30 as the reference point 220REF according to the description given herein in connection with, for example, FIGS. 8A1, 8A2, 8B1, 8B2, 8C1, 8C2, and 8C3.
[0157] In other words, the motion module 210 may receive a dataset 30 of geo - data points 30P, each representing a respective geographical location, which may include ground - truth longitude and latitude values. For one or more geo - data points 30P, the motion module 210 may calculate a direction - uniformity value 210DIRU based on the position - data element 10P. The direction - uniformity value 210DIRU may represent the level of uniformity of the direction 210DIR of the movement of client computing devices within a predetermined vicinity of each geographical location 30P. The motion module 210 may then select the reference point 220REF from among the plurality of geo - data points 30P based on the direction - uniformity value 210DIRU, for example, when 210DIRU exceeds a predetermined threshold.
[0158] Additionally or alternatively, the motion module 210 may calculate a distance uniformity value 210DISU based on the position data element 10P for one or more geodata points 30P. The distance uniformity value 210DISU may represent a level of uniformity of the minimum crossing distance 210DIS between the client computing device 100C and the geodata point 30P. The motion module 210 may then further select a reference point 220REF from among the plurality of geodata points 30P based on the distance uniformity value 210DISU, for example, when 210DISU exceeds a predetermined threshold value.
[0159] (For example, with respect to FIGS. 2A, 2B, and 3-6) As detailed herein, one or more client devices 100C of the system 1000 may use the position data element 10P (e.g., geoinformation measured by the geographic location module 10) to calculate a refined position data element 110RL. According to some embodiments, one or more client devices 100C may replace the measured position data element 10P with its respective calibrated position data element 110CB to calculate the refined position data element 110RL.
[0160] For example, a first client computing device 100C (e.g., 100C1) may obtain a calibrated position data element 110CB representing the calibrated geographic location of the first client computing device as detailed herein. The first client computing device 100C1 may couple with one or more second client computing devices 100C (e.g., 100C2) and receive from at least one second client computing device 100C2 a second calibrated position data element 110CB representing the calibrated geographic location of the at least one second computing device 100C2.
[0161] The first client computing device 100C1 may then calculate a first refined position data element 110RL representing the refined location of the first computing device 100C1 based on (e.g., as a weighted average of) the first calibration position data element 110CB and at least one second calibration position data element 110CB.
[0162] According to some embodiments, the calibration position data elements 110CB derived from the position data elements 10P may include or be assigned a position confidence value 110CB' representing the reliability of the calibrated geographical location of the respective client computing device 100C. The confidence value 110CB' may be, for example, a function of the confidence value 10CV of the original position data element 10P. For example, in this case, if the confidence value 10CV is high, the confidence value 110CB' may be high.
[0163] Additionally or alternatively, the confidence value 110CB' may be a function of the minimum traversal distance 210DIS. For example, in this case, if the correction distance is large, the confidence value 110CB' may be low.
[0164] In other words, the first calibration position data element 110CB may be associated with a first minimum traversal distance value 210DIS, and at least one second calibration position data element 110CB may be associated with at least one respective second minimum traversal distance value 210DIS. The client computing device 100C (e.g., 100C1) may further calculate a refined position data element 1110RL based on the first minimum traversal distance 210DIS value and at least one second minimum traversal distance value 210DIS.
[0165] According to some embodiments, the first calibration position data element 110CB may include a first confidence value 110CB', and at least one second calibration position data element 110CB may include at least one respective second confidence value 110CB'. In such embodiments, the client computing device 100C (e.g., 100C1) may calculate a refined position data element 110RL further based on the first confidence value 110CB' and at least one second confidence value 110CB'. For example, the client computing device 100C may use the confidence value 110CB' as a weight and calculate the refined position data element 110RL as a weighted average of the first calibration position data element 110CB and at least one second calibration position data element 110CB.
[0166] Additionally or alternatively, the first calibration position data element 110CB may include or be associated with a first timestamp corresponding to the geographical location of the first computing device 100C1, and at least one second calibration position data element may include or be associated with at least one respective second timestamp corresponding to the geographical location of at least one second computing device 100C2. The first client computing device may calculate the refined position data element 110RL further based on the first timestamp 110CBT and at least one second timestamp 110CBT.
[0167] For example, the client computing device 100C1 may calculate the refined position data element 110RL as a weighted average of the calibration position data elements 110CB, where, for example, a newer calibration position data element 110CB may be given a greater weight than an older calibration position data element 110CB, and the timestamp 110CBT may be used as a weight for this calculation.
[0168] Additionally or alternatively, the client computing device 100C1 may predict the future locations of the computing device 100C1 and the computing device 100C2 based on (i) the calibrated position data element 110CB, (ii) the respective direction vectors 210DIR, and (iii) the timestamps 110CBT. The client computing device 100C1 may calculate the refined position data element 110RL as a weighted average and calculate the refined position data element 110RL as a weighted average of the future locations.
[0169] As shown in FIG. 7, the client computing device 100C may include at least one processor (e.g., the processor 2 of FIG. 1) that can be associated with or communicatively connected to the controller 130C of the vehicle module 130 (e.g., the processor 2 of FIG. 1) included in each vehicle. The vehicle module 130 of FIG. 7 may be the same as the vehicle module 130 of FIG. 3.
[0170] The client computing device 100C may send or transmit the refined position data element 110RL to the controller 130C of the vehicle module 130. The controller 2 of the vehicle module 130 may then utilize the refined position data element 110RL to perform one or more actions associated with the respective vehicle. For example, the vehicle module 130 may include an electric motor or a damper 130A controlled by the controller 130C. Accordingly, the damper 130A may control the steering system of the vehicle, control the vehicle braking system, control the vehicle accelerator, etc.
[0171] Additionally or alternatively, the controller 130C of the first client device 100C (e.g., 100C1) may be included in the ADAS system of each vehicle. The controller 130C may receive one or more refined position data elements 110RL regarding other client devices 100C (e.g., 100C2) (e.g., via the server 100S). Accordingly, the controller 130C may evaluate that the client module 100C1 is in proximity to other client devices 100C2 (e.g., other vehicles) and / or generate a collision warning on the user interface of each vehicle.
[0172] Additionally or alternatively, the controller 130C of the first client device 100C (e.g., 100C1) may transmit refined position data elements 110RL to at least one second client device 100C (e.g., 100C2) that may be coupled to the first client device 100C1, as detailed herein. In such an embodiment, the at least one second client device 100C2 may use the refined position data elements 110RL of the first client device 100C1 to represent (e.g., as representing) its own geographical location, for example, on the UI of the client device 100C2.
[0173] Additionally or alternatively, the second computing device 100C2 may be associated with, for example, a second vehicle module 130' of a second vehicle. In such an embodiment, the second vehicle module 130' may utilize the refined position data elements 110RL (e.g., of the first client device 100C1) to control the steering system of the second vehicle, control the braking system of the second vehicle, control the accelerator of the second vehicle, generate a collision warning on the user interface of the second vehicle, and / or be configured to perform at least one of any combination thereof.
[0174] According to some embodiments, the first client computing device 100C (e.g., 100C1) and at least one second client computing device 100C (e.g., 100C2) may negotiate the role of the primary client computing device based on the first trust value of the client computing device 100C1 (e.g., 170CV in FIG. 3) and at least one second trust value 170CV of at least one second client computing device 100C2.
[0175] For example, the role of the primary client computing device may be assigned to a specific client computing device 100C having the maximum trust value 170CV. Additionally or alternatively, the role of the primary client computing device may be assigned to a client computing device 100C having excellent computing (e.g., processing, memory, and / or communication) resources. In yet another example, the role of the primary client computing device may be assigned to a client computing device 100C that is communicating with a number of other client computing devices 100C.
[0176] The primary client computing device may be configured to provide most of the computing capabilities to determine the refined location data element 110RL (e.g., refined geographical location) of that client computing device 100C and / or at least one other client computing device 100C.
[0177] According to some embodiments, the calculation of the refined location data element 110RL may be performed iteratively (e.g., repeatedly, over a plurality of iterations). In each iteration, the client computing device 100C1 may calculate a first refined location data element 110RL and a corresponding confidence value representing the confidence of the refined geographical location 110RL of the first computing device 100C1 in that iteration.
[0178] The client computing device 100C1 may then calculate a summary refined location data element representing the determined location of the first computing device based on a plurality of first location data elements (e.g., from a plurality of iterations) and their respective plurality of confidence values.
[0179] For example, one or more (e.g., each) of the plurality of first refined location data elements 110RL may include or be associated with a timestamp corresponding to the geographical location of the first computing device 100C1 in that iteration. The client computing device 100C1 may calculate the summary refined location data element 110RL based on the first refined location data elements 110RL (e.g., as a weighted sum of the first refined location data elements 110RL), and use the plurality of timestamps to calculate decreasing weight values (e.g., over time, assign decreasing values to the location data elements 110RL).
[0180] Referring now to FIG. 9, this figure shows a flowchart of a method for determining the geographical location of a client computing device by at least one processor (e.g., processor 2 of FIG. 1) in accordance with some embodiments of the present invention.
[0181] As shown in step S2010, at least one processor 2 may be a processor of a server device (e.g., server 100S in FIG. 7). The processor 2 may receive, for example, at least two position data elements 10P from at least one client computing device (e.g., client 100C in FIG. 7). Each position data element 10P may include the measured longitude 10MLON value and latitude 10MLAT value of the client computing device 100C.
[0182] As shown in step S2020, based on the position data elements 10P (e.g., based on the 10MLON and 10MLAT values), the processor 2 of the server 100S may determine the direction of movement of the client computing device as, for example, a vector 210DIR connecting the 10MLON and 10MLAT geographical locations of two or more position data elements 10P.
[0183] Additionally or alternatively, as shown in step S2030, based on the position data elements 10P, the processor 2 of the server 100S may calculate a minimum crossing distance 210DIS between the client computing device and a reference point 220REF, as detailed herein. The reference point 220REF may represent or be assigned the longitude and latitude values of the ground truth of a specific geographical location.
[0184] As shown in step S2040, based on the minimum crossing distance 220DIS, the processor 2 of the server 100S may generate a reference-specific calibration vector 230CALV with respect to the reference point 220REF. The reference-specific calibration vector 230CALV may represent the required correction of the location in a direction substantially perpendicular to the direction of movement 210DIR.
[0185] As shown in step S2050, the server 100S and / or the client 100C may apply the reference eigen calibration vector 230CALV to the instantaneous position data element 10P to obtain a calibrated position data element 110CB representing the calibrated geographical location of the client computing device 100C.
[0186] Referring now to FIG. 10, this figure shows a flowchart of a method for determining the geographical location of one or more client computing devices by at least one processor of a server computing device, according to some embodiments.
[0187] As shown in step S3010, at least one processor (e.g., processor 2 of FIG. 1) may receive at least one grouping data element (e.g., grouping data element 170GE of FIG. 5) representing a cluster of one or more client computing devices 100C.
[0188] As shown in step S3020, at least one processor 2 may obtain at least one respective position data element 10P representing the geographical location of at least one client computing device 100C (e.g., the computing device 100C related to the cluster) from at least one client computing device 100C among one or more client computing devices 100C.
[0189] As shown in step S3030, at least one processor 2 may calculate a refined position data element 110RL representing the determined location of a cluster of one or more client computing devices 100C (e.g., represented by the grouping data element 170GE) based on at least one of (i) one or more position data elements 10P and (ii) one or more grouping data elements 170GE.
[0190] (Improvement of the technology) Embodiments of the present invention can provide practical uses for calibrating geographical location measurements generated by a geographical location module (e.g., element 10 of FIG. 3), such as a GPS receiver, as detailed herein.
[0191] Embodiments of the present invention can also provide practical uses for calculating the representation of the geographical location of a computing device. For example, embodiments of the present invention can be used to refine the location of a computing device so as to be relayed to an end user (i.e., a navigation application on a smartphone).
[0192] Embodiments of the present invention can improve the representation of the geographical location of a computing device over currently available solutions, for example, by combining a computing device with another computing device to determine the geographical location and transferring location data. In one example, an ADAS module 130 associated with a vehicle may detect a proximity-coupled computing device of an approaching pedestrian and may control the vehicle to avoid an accident.
[0193] In another example, a first smartphone with low reliability of geographical location (i.e., a low confidence value as discussed herein) may refine its location by combining with a second smartphone with high reliability of geographical location. By taking a weighted average of two location data elements, the first smartphone may obtain a refined location data element with increased reliability of geographical location.
[0194] In another example, a first ADAS module 130 associated with a first vehicle may combine with a second ADAS module 130 associated with an approaching second vehicle. By transferring location data corresponding to each vehicle, each ADAS module 130 may improve the response time to its collision warning system, as opposed to conventional methods that use a distance sensor (e.g., a camera attached to the vehicle).
[0195] Unless explicitly stated otherwise, embodiments of the methods described herein are not limited to a particular order or sequence. Further, all equations described herein are intended as merely examples, and other or different equations may be used. Additionally, some of the described method embodiments or elements thereof may occur or be performed simultaneously.
[0196] Although some features of the present invention have been illustrated and described herein, those skilled in the art will be able to conceive of many modifications, substitutions, changes, and equivalents. Accordingly, it is to be understood that the appended claims are intended to cover all such modifications and changes that fall within the true spirit of the present invention.
[0197] Various embodiments have been presented. Each of these embodiments may, of course, include features from other presented embodiments, and embodiments not specifically described may also include various features described herein.
Claims
**Claim 1** A system for determining a geographical location, the system comprising a server computing device, the server computing device being configured to obtain one or more reference points, each representing a geographical location and having a ground truth longitude value and latitude value; receive from at least one client computing device at least two position data elements, each including a measured longitude value and latitude value of the client computing device; determine a direction of movement of the client computing device based on the position data elements; calculate a minimum traversal distance between the client computing device and the geographical location of the unique reference point based on the position data elements; generate a reference unique calibration vector representing a required correction of the location of the at least one client computing device in a direction substantially perpendicular to the direction of movement with respect to the unique reference point based on the minimum traversal distance; A system configured to perform the above. **Claim 2** The server computing device is further configured to transmit the reference unique calibration vector to the client computing device, and the at least one client computing device is configured to receive an instantaneous position data element including measured longitude and latitude values of the client computing device; apply the reference unique calibration vector to the instantaneous position data element to obtain a calibrated position data element representing the corrected geographical location of the client computing device; The system according to claim 1, configured to perform the above. **Claim 3** The server computing device is configured to generate a plurality of reference unique calibration vectors, each related to a respective specific reference point, and the at least one client computing device is configured to calculate an aggregated calibration vector based on the plurality of reference unique calibration vectors; apply the aggregated calibration vector to the instantaneous position data element to obtain the calibrated position data element; The system according to claim 1, configured to perform the above. **Claim 4** Each reference intrinsic calibration vector is assigned a crossing timestamp representing the time when the client computing device was at the minimum crossing distance from the geographical location of each respective reference point, and the client computing device is configured to calculate the aggregated calibration vector further based on the crossing timestamp. The system according to claim 3.
5. The server computing device is to receive a dataset including a plurality of geodata points, each geodata point representing a respective geographical location and including ground truth longitude and latitude values, calculate, for one or more of the geodata points, a direction uniformity value based on the position data element, the direction uniformity value representing the level of uniformity of the direction of movement of client computing devices within a predetermined vicinity of each respective geographical location, select the reference point from among the plurality of geodata points based on the direction uniformity value, The system according to claim 1, configured to obtain by
6. The server computing device is calculate, for one or more of the geodata points, a distance uniformity value based on the position data element, the distance uniformity value representing the level of uniformity of the minimum crossing distance between the client computing device and the geodata point, select the reference point from among the plurality of geodata points further based on the distance uniformity value, The system according to claim 5, further configured to perform
7. The at least one client computing device includes a first client computing device and one or more second client computing devices, and the first client computing device is couple with the one or more second client computing devices, obtain a calibrated position data element representing the calibrated geographical location of the first client computing device, Receiving, from at least one of the one or more second computing devices, a second calibrated position data element representing a calibrated geographical location of the at least one second computing device; Calculating, based on the first calibrated position data element and the at least one second calibrated position data element, a first refined position data element representing a refined location of the first computing device; The system according to claim 2, configured to perform the above.
8. The first calibrated position data element includes a first confidence value representing the reliability of the calibrated geographical location of the first client computing device, and the at least one second calibrated position data element includes at least one respective second confidence value representing the reliability of the geographical location of the at least one second computing device. The first client computing device is configured to calculate the first refined position data element further based on the first confidence value and the at least one second confidence value. The system according to claim 7.
9. The first calibrated position data element includes a first timestamp corresponding to the geographical location of the first computing device, and the at least one second calibrated position data element includes at least one respective second timestamp corresponding to the geographical location of the at least one second computing device. The first client computing device is configured to calculate the refined position data element further based on the first timestamp and the at least one second timestamp. The system according to claim 7.
10. The first calibrated position data element is associated with a first minimum traversal distance value, and the at least one second calibrated position data element is associated with at least one respective second minimum traversal distance value. The first client computing device is configured to calculate the refined position data element further based on the first minimum traversal distance value and the at least one second minimum traversal distance value. The system according to claim 7.
11. The first computing device is configured to transmit the refined position data element to at least one controller of a vehicle module of the vehicle, and the vehicle module is configured to use the refined position data element to control the steering system of the vehicle, control the braking system of the vehicle, control the accelerator of the vehicle, generate a collision warning on a user interface of the vehicle, and execute at least one of any combination thereof. The system according to claim 7.
12. The first computing device is configured to transmit the refined position data element to at least one second computing device of the one or more second computing devices, and the at least one second computing device is configured to represent its geographical location using the refined position data element. The system according to claim 7.
13. The at least one second computing device of the one or more second computing devices is associated with a vehicle module of a vehicle, and the vehicle module is configured to use the refined position data element to control the steering system of the vehicle, control the braking system of the vehicle, control the accelerator of the vehicle, generate a collision warning on a user interface of the vehicle, and execute at least one of any combination thereof. The system according to claim 7.
14. The first client computing device receives a connection request via a user interface (UI) of the first computing device transmits a connection request message to the second computing device based on the connection request receives a connection approval message from the second computing device connects to the second client computing device based on the approval message and is configured to connect to the one or more second client computing devices. The system according to claim 7.
15. The first client computing device Detecting at least one second SRD associated with the at least one second computing device using a first short-range communication device (SRD) associated with the first computing device; Sending a connection request message to the at least one second SRD via the first SRD; Receiving a connection approval message from the at least one second computing device via the first SRD; Connecting the first computing device to the at least one second computing device via the first SRD The system according to claim 7, configured to connect to the one or more second client computing devices. **Claim 16** The system according to claim 15, wherein the first SRD is selected from a list consisting of a Wi-Fi device, a Bluetooth (registered trademark) device, and a Near Field Communication (NFC) device. **Claim 17** The first client computing device and the at least one second client computing device are configured to negotiate the role of the primary client computing device based on the first trust value and the at least one second trust value, and the primary device is configured to provide most of the computing power to determine the refined geographical locations of the first client computing device and the at least one second client computing device. The system according to claim 8. **Claim 18** The first client computing device Repeating the calculation of the first refined position data element in a plurality of iterations, and obtaining a plurality of (i) first refined position data elements and (ii) corresponding trust values representing the reliability of the refined geographical location of the first computing device in each iteration; Calculating a summary refined position data element representing the determined location of the first computing device based on the plurality of first position data elements and the respective plurality of trust values; The system according to claim 7, configured to perform. **Claim 19** The plurality of first refinement location data elements includes a timestamp corresponding to the geographical location of the first computing device in that iteration, and the first client computing device is configured to calculate the summary refinement location data element further based on the plurality of timestamps. The system according to claim 18.
20. A method for determining the geographical location of a client computing device by at least one processor, comprising: Receiving, from at least one client computing device, at least two location data elements each including a measured longitude value and a measured latitude value of the client computing device; Determining a direction of movement of the client computing device based on the location data elements; Calculating a minimum cross-sectional distance between the client computing device and a reference point assigned longitude and latitude values of ground truth based on the location data elements; Generating a reference-specific calibration vector representing a required correction of a location in a direction substantially perpendicular to the direction of movement with respect to the reference point based on the minimum cross-sectional distance; Applying the reference-specific calibration vector to an instantaneous location data element to obtain a calibrated location data element representing the calibrated geographical location of the client computing device; A method comprising.
21. Applying the reference-specific calibration vector includes transmitting to the client computing device a plurality of reference-specific calibration vectors each related to a specific reference point, and the client computing device Calculating an aggregated calibration vector based on the plurality of reference-specific calibration vectors; Applying the aggregated calibration vector to the longitude and latitude measurement values of the instantaneous location data element to obtain a calibrated location data element including calibrated longitude and latitude values; Configured to perform. The method according to claim 20.
22. A method for determining the geographical location of one or more client computing devices by at least one processor of a server computing device, comprising: Receiving at least one grouping data element representing a cluster of one or more client computing devices Obtaining, from at least one of the one or more client computing devices, at least one respective location data element representing the geographical location of the at least one client computing device Calculating a refined location data element representing the determined location of the cluster of the one or more client computing devices based on at least one of the one or more location data elements and at least one of the one or more grouping data elements A method comprising the above steps Claim 23 The method according to claim 22, wherein the at least one processor of the server is configured to transmit the refined location data element to a vehicle module associated with a vehicle, and the vehicle module is configured to use the refined location data element to control at least one of controlling a steering system of the vehicle, controlling a braking system of the vehicle, controlling an accelerator of the vehicle, and generating a collision warning on a user interface of the vehicle