Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
SYSTEM AND METHOD OF DETERMINING A GEOGRAPHICAL LOCATION OF ONE OR MORE COMPUTING DEVICES
Document Type and Number:
WIPO Patent Application WO/2023/228191
Kind Code:
A1
Abstract:
A system and method for determining a geographical location of one or more computing devices may include coupling a first computing device with one or more second computing devices, obtaining two or more position data elements representing geographical locations of the computing devices, and calculating a refined position data element of the first computing device based on the received position data elements. The system may include a non-transitory memory device, where modules of instruction code are stored, and at least one processor associated with the memory device, configured to execute the modules of instruction code. The method may include associating the at least one processor with a vehicle module of a vehicle and sending the refined position data element to the vehicle module, where the vehicle module may be configured to, for example, control a steering system of the vehicle.

Inventors:
ELBAZ DROR (IL)
LAVI TAL (IL)
Application Number:
PCT/IL2023/050538
Publication Date:
November 30, 2023
Filing Date:
May 24, 2023
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
EYE NET MOBILE LTD (IL)
International Classes:
G01S19/48; G01S5/00; G01S19/51; H04W4/029
Foreign References:
US20090115655A12009-05-07
US20150018019A12015-01-15
JP2020091267A2020-06-11
Attorney, Agent or Firm:
GEYRA, Assaf et al. (IL)
Download PDF:
Claims:
CLAIMS

1. A system for determining a geographical location, the system comprising a server computing device configured to: obtain one or more reference points, each representing a geographical location, and attributed ground-truth longitude and latitude values; receive, from at least one client computing device, at least two position data elements, each comprising measured longitude and latitude values of the client computing device; based on the position data elements, determine a direction of motion of the client computing device; based on the position data elements, calculate a minimal traversal distance between the client computing device and a geographical location of a specific reference point; and based on the minimal traversal distance, produce a reference-specific calibration vector, pertaining to the specific reference point, and representing a required correction of location of the at least one client computing device in a direction substantially perpendicular to the direction of motion.

2. The system of claim 1, wherein the server computing device is further configured to transmit the reference-specific calibration vector to the client computing device, and wherein the at least one client computing device is configured to: receive an instant position data element comprising measured values of longitude and latitude of the client computing device; and apply the reference-specific calibration vector on the instant position data element, to obtain a calibrated position data element, representing a corrected geographical location of the client computing device.

3. The system of claim 1, wherein the server computing device is configured to produce a plurality of reference-specific calibration vectors, each pertaining to a respective, unique reference point, and wherein the at least one client computing device is configured to: calculate an aggregate calibration vector based on the plurality of reference-specific calibration vectors; and apply the aggregate calibration vector on the instant position data element, to obtain the calibrated position data element.

4. The system of claim 3, wherein each reference-specific calibration vectors is attributed a traversal timestamp, representing a time at which the client computing device was at the minimal traversal distance from the geographical location of the respective reference point, and wherein the client computing device is configured to calculate the aggregate calibration vector further based on the traversal timestamps.

5. The system of claim 1, wherein the server computing device is configured to obtain a reference point by: receiving a dataset comprising a plurality of geodata points, each representing a respective geographical location, and comprising ground-truth longitude and latitude values; for one or more geodata points, calculating a direction uniformity value based on the position data elements, wherein the direction uniformity value represents a level of uniformity of direction of motion of client computing devices within a predetermined vicinity of the respective geographical location; and selecting the reference point among the plurality of geodata points, based on the direction uniformity values.

6. The system of claim 5, wherein the server computing device is further configured to: for one or more geodata points, calculating a distance uniformity value based on the position data elements, wherein the distance uniformity value represents a level of uniformity of minimal traversal distances between client computing devices and the geodata point; and selecting the reference point among the plurality of geodata points, further based on the distance uniformity values.

7. The system of claim 2, wherein the at least one client computing device comprises a first client computing device, and one or more second client computing devices, and wherein the first client computing device is configured to: couple with the one or more second client computing devices; obtain a calibrated position data element, representing a corrected geographical location of the first client computing device; receive, from at least one second computing device of the one or more second computing devices a second calibrated position data element, representing a corrected geographical location of the at least one second computing device; and calculate a first refined position data element representing a refined location of the first computing device, based on the first calibrated position data element and the at least one second calibrated position data element.

8. The system of claim 7, wherein the first calibrated position data element comprises a first confidence value, representing a reliability of the corrected geographical location of the first client computing device, and wherein the at least one second calibrated position data element comprises at least one respective second confidence value, representing a reliability of the geographical location of the at least one second computing device, and wherein 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.

9. The system of claim 7, wherein the first calibrated position data element comprises a first timestamp, corresponding to the geographical location of the first computing device, and wherein the at least one second calibrated position data element comprises at least one respective second timestamp, corresponding to the geographical location of the at least one second computing device, and wherein 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.

10. The system of claim 7, wherein the first calibrated position data element is associated with a first minimal traversal distance value, and wherein the at least one second calibrated position data element is associated with at least one respective second minimal traversal distance value, and wherein the first client computing device is configured to calculate the refined position data element further based on the first minimal traversal distance value and the at least one second minimal traversal distance value.

11. The system of claim 7, wherein the first computing device is configured to transmit the refined position data element to at least one controller of a vehicle module of a vehicle, and wherein the vehicle module is configured to utilize the refined position data element to perform at least one of control a steering system of the vehicle; control a braking system of the vehicle; control an accelerator of the vehicle; producing a collision warning on a user interface of the vehicle; and any combination thereof.

12. The system of claim 7, wherein 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 wherein the at least one second computing device is configured to use the refined position data element to represent its geographical location.

13. The system of claim 7, wherein 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 wherein the vehicle module is configured to utilize the refined position data element to perform at least one of control a steering system of the vehicle; control a braking system of the vehicle; control an accelerator of the vehicle; produce a collision warning on a user interface of the vehicle; and any combination thereof.

14. The system of claim 7, wherein the first client computing device is configured to couple with the one or more second client computing devices by: receiving, via a user interface (UI) of the first computing device a coupling request; sending a coupling request message to the second computing device, based on said coupling request; receiving a coupling approval message from the second computing device; and coupling with the second client computing device based on said approval message.

15. The system of claim 7, wherein the first client computing device is configured to couple with the one or more second client computing devices by: using a first short range communication device (SRD) associated with the first computing device to detect at least one second SRD associated with the at least one second computing device; sending a coupling request message via the first SRD to the at least one second SRD; receiving a coupling 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.

16. The system of claim 15, wherein the first SRD is selected from a list consisting of a Wi-Fi device, a Bluetooth device, and a Near Field Communication (NFC) device.

17. The system of claim 8, wherein the first client computing device and the at least one second client computing devices are configured to negotiate a role of a primary client computing device, based on the first confidence value and the at least one second confidence value, and wherein the primary device is configured to provide a majority of computing power to determine the refined geographical locations of the first client computing device and the at least one second client computing device.

18. The system of claim 7, wherein the first client computing device is configured to: repeat calculation of the first refined position data element in a plurality of iterations, to obtain a respective plurality of (i) first refined position data elements, and (ii) corresponding confidence values, representing reliability of the refined geographical location of the first computing device in that iteration; and calculate a summary refined position data element representing a determined location of the first computing device, based on the plurality of first position data elements, and the respective plurality of confidence values.

19. The system of claim 18, wherein the plurality of first refined position data elements comprises a timestamp, corresponding to the geographical location of the first computing device in that iteration, and wherein the first client computing device is configured to calculate the summary refined position data element further based on the plurality of timestamps.

20. A method of determining a geographical location of a client computing device by at least one processor, the method comprising: receiving, from at least one client computing device, at least two position data elements, each comprising measured longitude and latitude values of the client computing device; based on the position data elements, determining a direction of motion of the client computing device; based on the position data elements, calculating a minimal traversal distance between the client computing device and a reference point, wherein the reference point is attributed ground-truth longitude and latitude values; based on the minimal traversal distance, producing a reference-specific calibration vector, pertaining to the reference point, and representing a required correction of location in a direction substantially perpendicular to the direction of motion; and applying the reference-specific calibration vector on an instant position data element, to obtain a calibration position data element, representing corrected geographical location of the client computing device.

21. The method of claim 20, wherein applying the reference-specific calibration vector comprises transmitting a plurality of reference-specific calibration vectors, each pertaining to a unique reference point, to the client computing device, and wherein the client computing device is configured to: calculate an aggregate calibration vector based on the plurality of reference-specific calibration vectors; and apply the aggregate calibration vector on measured values of longitude and latitude of the instant position data element, to obtain a calibrated position data element, comprising corrected values of longitude and latitude.

22. A method of determining, by at least one processor of a server computing device, a geographical location of one or more client computing devices, the method comprising: receiving at least one grouping data element, representing a cluster of one or more client computing devices; obtaining, from at least one client computing device of the one or more client computing devices, at least one respective position data element, representing a geographical location of at least one client computing device; and calculating a refined position data element representing a determined location of the cluster of one or more client computing devices, based on at least one of one or more position data elements, and one or more grouping data elements.

23. The method of claim 22, wherein the at least one processor of the server is configured to send the refined position data element to a vehicle module, associated with a vehicle, and wherein the vehicle module is configured to utilize the refined position 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 producing a collision warning on a user interface of the vehicle.

Description:
SYSTEM AND METHOD OF DETERMINING A GEOGRAPHICAL

LOCATION OF ONE OR MORE COMPUTING DEVICES

CROSS REFERENCE TO RELATED APPLICATIONS

[001] This application claims the benefit of priority of US Provisional Patent Application No. 63/345,964, filed 26 May 2022, which is hereby incorporated by reference in its entirety.

FIELD OF THE INVENTION

[002] The present invention relates generally to geographical location technology. More specifically, the present invention relates to methods of determining a geographical location of a computing device.

BACKGROUND OF THE INVENTION

[003] Determining geographical location is commonly performed by computing devices based on Global Positioning System (GPS) technology. Such determined geographical location may be used for various purposes, such as in portable navigation devices, in planning convenient routes for private or public transportation, for various industrial uses such as architecture and construction design, for military uses, for navigation uses, and unmanned aerial vehicles (UAV) flight control.

[004] Additional means by which geographical location can be calculated include utilization of cellular communication to calculate geographical location of a cellular device.

[005] The accuracy of the calculated geographical location is of great importance in many applications, especially in systems where safety is at stake. However, different devices, different calculation methods, or even different components on the same device, may obtain different levels of accuracy of location calculation. For example, two cellular phones that are located near each other may calculate different geographical locations.

[006] In cases where a device has a number of different means for calculating its geographical location (e.g., GPS, triangulation tower triangulation, and the like), the device’s geolocation will be determined according to the most accurate means available. However, it may not always be possible to obtain a sufficiently accurate measurement of the device’s geolocation. This limitation may hinder the functionality of systems that depend on calculation of precise location fortheir operations, and in some cases, may even stop systems from operating altogether. Therefore, there is a need for a method of revising or refining geographical location calculation results.

SUMMARY OF THE INVENTION

[007] Embodiments of the invention may provide a big data, software based approach of real time calibration, and/or error detection and correction of location measurements in mobile computing devices such as mobile phones.

[008] Currently available high-end, hardware-based systems may provide accurate location measurements. Such measurements are typically not available for commonly used mobile or cellular devices. For example, differential GPS (DGPS) devices may employ Radio Frequency (RF) technology and base stations, in addition to signals received from satellites, to produce exceptional location accuracy, in the scale of approximately 2cm.

[009] Causes for GPS errors may be roughly categorized into two categories.

[0010] The first category may be referred to as global errors, which are not specific to a specific device and may uniformly affect many devices at once. Most notably in this category are (a) slight errors in the satellite’s location (e.g., a satellite may “think” it’s in a set location, but the actual location may be different) and (b) disturbances in the ionosphere which may cause the RF signal to break/delay slightly. A second category of errors may be referred to as localized errors, which may be caused by not having a direct path to the satellite (e.g., due to unclear sky or reflection from obstacles).

[0011] Experimental results have shown that all GPS devices may be prone to localized errors in some degree, but the global errors may affect different devices differently, probably due to different generation of GPS chips, or by having different chips attuned to different satellite constellations.

[0012] Embodiments of the invention may target the global errors, to improve calibration of location measurements for mobile computing devices.

[0013] Embodiments of the invention may accumulate location measurements (e.g., GPS based location measurements) from a plurality of users in a database, and find candidate locations suitable to be used as calibration points or reference points, as elaborated herein. This may include searching the database for locations where the bearing of users passing through a point is relatively uniform, and the sideways offset of positions around the point may also be relatively uniform. Embodiments of the invention may obtain ground truth measurements of the calibration points, e.g., by using ultra-accurate DGPS to measure the actual coordinates of the reference points and construct a database consisting of these calibration points.

[0014] When a device of interest passes through (e.g., within a predefined vicinity of) a calibration point, embodiments of the invention may measure a minimal distance offset of that computing device, in relation to that calibration (reference) point, at that time. Embodiments of the invention may then use this information to fix raw, location (e.g., GPS) measurement data, to provide a calibrated location measurement, as elaborated herein.

[0015] Embodiments of the invention may employ combinations of calibration vectors, from a respective plurality of reference points to produce a complete, dynamic (e.g., updated over time) calibration profile for one or more (e.g., each) served client computing device. For example, Embodiments of the invention may utilize a calibration point where the user is heading north to fix an east-west offset, and utilize another reference point where the user is heading east, to fix a north-south offset.

[0016] Embodiments of the invention may utilize this calibration for a plurality of location measurements, pertaining to a cluster comprising a respective plurality of client devices. Embodiments may thus determine which measurements within the cluster should be attributed a maximal weight, to determine a location of the member computing devices.

[0017] Embodiments of the invention may identify additional calibration (reference) points without requiring ground truth location measurements (e.g., via DGPS) for these points. For example, embodiments of the invention may: (i) locate the most accurate devices which best matches the ground truth, (ii) Find additional candidate points, having uniform bearing and offset values and (iii) use the data from the most accurate devices as the ground truth, and fix the rest of the devices according to them.

[0018] Embodiments of the invention may provide the calibration of location measurement for client computing devices as a service to third-party companies interested in improving their location (e.g., GPS) accuracy. In such embodiments, a calibration service may be proposed where a client device sends a stream of GPS points, and the service continuously responds with a stream of calibration vectors for correcting offset of the client computing device in relation to reference points. Such a service may present an improvement over currently-available calibration services, which (a) require raw GNSS GPS message information, that may not be available on all mobile devices (e.g. iOS devices), and (b) may require raw data received from each satellite, and (c) requires costly installations of base stations.

[0019] Embodiments of the invention may receive a plurality of location data elements, representing geographical locations of a respective plurality of devices that are located near each other (e.g., located in a same vehicle), and obtain a refined version of the location data elements, representing a refined geographical location of the plurality of devices.

[0020] Some embodiments of the present invention are directed to a method of determining a geographical location of a first computing device by at least one processor. Embodiments of the method may include: coupling the first computing device with one or more second computing devices; obtaining at least one first position data element, representing a geographical location of the first computing device; receiving, from at least one second computing device of the one or more second computing devices a second position data element, representing a geographical location of the at least one second computing device; and calculating a first refined position data element representing a determined location of the first computing device, based on the first position data element and the at least one second position data element.

[0021] In some embodiments, the first position data element may include a first confidence value, representing a reliability of the geographical location of the first computing device. In some embodiments, the at least one second position data element may include at least one respective second confidence value, representing a reliability of the geographical location of the at least one second computing device. In some embodiments, calculating the refined position data element may be further based on the first confidence value and the at least one second confidence value.

[0022] In some embodiments, the first position data element may include a first timestamp, corresponding to the geographical location of the first computing device, where the at least one second position data element may include at least one respective second timestamp, corresponding to the geographical location of the at least one second computing device. In some embodiments, calculating the refined position data element may be based on the first timestamp and the at least one second timestamp. For example, a calculation of the refined position data element may include computing a weighted average of the first position data element and the at least one second position 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 may be associated with, or communicatively connected to a controller of a vehicle module that is included in a vehicle. The first computing device may transmit the refined position data element to the vehicle module.

[0024] The vehicle module may utilize the refined position data element to perform, for example: controlling a steering system of the vehicle, controlling a braking system of the vehicle, controlling an accelerator of the vehicle, and producing a collision warning on a user interface of the vehicle.

[0025] In some embodiments, the method of determining a geographical location of a first computing device may include: sending the refined position data element to at least one second computing device of the one or more second computing devices; and using the refined position data element as representing the geographical location of the at least one second computing device.

[0026] In some embodiments, the at least one second computing device of the 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 utilize the refined position 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; producing a collision warning on a user interface of the vehicle; and any combination thereof.

[0027] In some embodiments, coupling the first computing device with a second computing device may include: receiving, via a first user interface (UI) of the first computing device a coupling request; sending 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 the 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 the at least one second computing device; sending a coupling request message via the first SRD to the at least one second SRD; receiving a coupling 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 WiFi device, a Bluetooth device, and a Near Field Communication (NFC) device.

[0030] In some embodiments, the first computing device may be chosen as a primary device, where the primary device provides a majority of computing power to determine the geographical location of the first computing device.

[0031] In some embodiments, the at least one processor may pertain to a server computing device, where the first computing device and the 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, by at least one processor of a server computing device, a geographical location of one or more client computing devices. In some embodiments, the method may include: receiving at least one grouping data element, representing a cluster of one or more client computing devices; obtaining, from at least one client computing device of the one or more client computing devices, at least one respective position data element, representing a geographical location of at least one client computing device; and calculating a refined position data element representing a determined location of the cluster of one or more client computing devices, based on at least one of one or more position data elements, and one or more grouping data elements.

[0033] In some embodiments, the at least one processor of the server may be configured to send the refined position data element to a vehicle module, associated with a vehicle, where the vehicle module is configured to utilize the refined position 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 producing a collision warning on a user interface of the vehicle.

[0034] Some embodiments of the present invention are directed to a system for determining a geographical location of one or more client computing devices. In some embodiments, the system may include: a non-transitory memory device, where modules of instruction code are stored, and at least one processor associated with the memory device, and configured to execute the modules of instruction code, whereupon execution of the modules of instruction code, 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 client computing device of the one or more client computing devices, at least one respective position data element, representing a geographical location of at least one client computing device; and calculate a refined position data element representing a determined location of the cluster of one or more client computing devices, based on at least one of the one or more position data elements and the one or more grouping data elements.

[0035] Embodiments of the 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 attributed ground-truth longitude and latitude values. The server computing device may receive, from at least one client computing device, at least two position data elements, each including measured longitude and latitude values of the client computing device. Based on the position data elements, the server computing device may determine a direction of motion of the client computing device, and calculate a minimal traversal distance between the client computing device and a geographical location of a specific reference point. Based on the minimal traversal distance, the server computing device may produce a reference-specific calibration vector, pertaining to the specific reference point. The reference-specific calibration vector may represent a required correction of location of the at least one client computing device in a direction substantially perpendicular to the direction of motion.

[0036] According to some embodiments, the server computing device may transmit the reference-specific calibration vector to the client computing device. The at least one client computing device may be configured to receive an instant position data element that may include measured values of longitude and latitude of the client computing device. The at least one client computing device may subsequently apply the reference-specific calibration vector on the instant position data element, to obtain a calibrated position data element, representing a corrected geographical location of the client computing device.

[0037] Additionally, or alternatively, the server computing device may be configured to produce a plurality of reference-specific calibration vectors, each pertaining to a respective, unique reference point. The at least one client computing device may be configured to calculate an aggregate calibration vector based on the plurality of reference-specific calibration vectors; and apply the aggregate calibration vector on the instant position data element, to obtain the calibrated position data element. [0038] According to some embodiments, one or more (e.g., each) reference-specific calibration vectors may be attributed a traversal timestamp, representing a time at which the client computing device was at the minimal traversal distance from the geographical location of the respective reference point. In such embodiments, the client computing device may be configured to calculate the aggregate calibration vector further based on the traversal timestamps, as elaborated herein.

[0039] According to some embodiments the server computing device may obtain a reference point by selecting reference points from a plurality of geodata points. For example, the server computing device may receive a dataset that may include a plurality of geodata points, each representing a respective geographical location, and representing ground-truth longitude and latitude values. For one or more (e.g., all) geodata points. The server computing device may, calculate a direction uniformity value based on the position data elements, which represents a level of uniformity of direction of motion of client computing devices within a predetermined vicinity of the respective geographical location. The server computing device may then select the reference points among the plurality of geodata points, based on the direction uniformity values (e.g., select reference points having maximal direction uniformity values).

[0040] Additionally, or alternatively, the server computing device may: for one or more geodata points, calculate a distance uniformity value based on the position data elements, wherein the distance uniformity value represents a level of uniformity of minimal traversal distances between client computing devices and the geodata point; and select the reference point among the plurality of geodata points, further based on the distance uniformity values (e.g., select reference points having maximal distance uniformity values), and/or any combination thereof.

[0041] According to some embodiments, the 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 position data element, representing a corrected geographical location of the first client computing device; and receive, from at least one second computing device of the one or more second computing devices a second calibrated position data element, representing a corrected geographical location of the at least one second computing device. The first client computing device may subsequently calculate a first refined position data element representing a refined location of the first computing device, based on the first calibrated position data element and the at least one second calibrated position data element.

[0042] According to some embodiments, the first calibrated position data element may include a first confidence value, representing a reliability of the corrected geographical location of the first client computing device, and wherein the at least one second calibrated position data element may include at least one respective second confidence value, representing a reliability of the geographical location of the at least one second computing device. The first client computing device may be configured to calculate the first refined position data element further based on the first confidence value and the at least one second confidence value, as elaborated herein.

[0043] Additionally, or alternatively, the first calibrated position data element may include, or be associated with a first timestamp, corresponding to the geographical location of the first computing device. The at least one second calibrated position data element may include, or be associated with at least one respective second timestamp, corresponding to the geographical location of the at least one second computing device. The first client computing device may be configured to calculate the refined position data element further based on the first timestamp and the at least one second timestamp, as elaborated herein.

[0044] Additionally, or alternatively, the first calibrated position data element may be associated with a first minimal traversal distance value, and the at least one second calibrated position data element may be associated with at least one respective second minimal traversal distance value. The first client computing device may calculate the refined position data element further based on the first minimal traversal distance value and the at least one second minimal traversal distance value, as elaborated herein.

[0045] According to some embodiments, the first computing device may be configured to transmit the refined position data element to at least one controller of a vehicle module of a vehicle. The vehicle module may be configured to utilize the refined position data element to perform at least one action selected from: controlling a steering system of the vehicle; controlling a braking system of the vehicle; controlling an accelerator of the vehicle; producing a collision warning on a user interface of the vehicle; and any combination thereof. [0046] According to some embodiments, the first computing device may transmit the refined position data element to at least one second computing device of the one or more second computing devices. The at least one second computing device may subsequently use the refined position data element to represent its geographical location.

[0047] Additionally, or alternatively, the at least one second computing device of the one or more second computing devices may be associated with a vehicle module of a vehicle. The vehicle module may be configured to utilize the refined position data element to perform at least one action of: controlling a steering system of the vehicle; controlling a braking system of the vehicle; controlling an accelerator of the vehicle; producing a collision warning on a user interface of the vehicle; and any combination thereof.

[0048] According to some embodiments, the first client computing device may be configured to couple with the one or more second client computing devices by: receiving, via a user interface (UI) of the first computing device a coupling request; sending a coupling request message to the second computing device, based on said coupling request; receiving a coupling approval message from the second computing device; and coupling with the second client computing device based on said approval message.

[0049] Additionally, or alternatively, the first client computing device may be configured to couple with the one or more second client computing devices by: using a first short range communication device (SRD) associated with the first computing device to detect at least one second SRD associated with the at least one second computing device.

[0050] the first SRD device and/or second SRD device may, for example be a Wi-Fi device, a Bluetooth device, a Near Field Communication (NFC) device, and the like. The first client computing device may send a coupling request message via the first SRD to the at least one second SRD, and receive a coupling approval message from the at least one second computing device via the first SRD. The first client computing device may subsequently couple with the at least one second computing device via the first SRD.

[0051] According to some embodiments, the first client computing device and the at least one second client computing devices may be configured to negotiate a role of a primary client computing device, based on the first confidence value and the at least one second confidence value. The primary device may be configured, for example, to provide a majority of computing power to determine the refined geographical locations of the first client computing device and the at least one second client computing device. [0052] According to some embodiments, the first client computing device may repeat calculation of the first refined position data element in a plurality of iterations, to obtain a respective plurality of (i) first refined position data elements, and (ii) corresponding confidence values, representing reliability of the refined geographical location of the first computing device in that iteration. The first client computing device may subsequently calculate a summary refined position data element representing a determined location of the first computing device, based on the plurality of first position data elements, and the respective plurality of confidence 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 elaborated herein.

[0054] Embodiments of the invention may include a method of determining a 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 position data elements, each may include measured longitude and latitude values of the client computing device; based on the position data elements, determining a direction of motion of the client computing device; based on the position data elements, calculating a minimal traversal distance between the client computing device and a reference point, wherein the reference point may be attributed ground-truth longitude and latitude values; based on the minimal traversal distance, producing a reference-specific calibration vector, pertaining to the reference point, and representing a required correction of location in a direction substantially perpendicular to the direction of motion; and applying the reference-specific calibration vector on an instant position data element, to obtain a calibration position data element, representing corrected geographical location of the client computing device.

[0055] According to some embodiments, the at least one processor may apply the referencespecific calibration vector by transmitting a plurality of reference-specific calibration vectors, each pertaining to a unique reference point, to the client computing device. The client computing device may be configured to: calculate an aggregate calibration vector based on the plurality of reference-specific calibration vectors; and apply the aggregate calibration vector on measured values of longitude and latitude of the instant position data element, to obtain a calibrated position data element, that may include, or represent corrected values of longitude and latitude.

[0056] Embodiments of the invention may include a method of determining, by at least one processor of a server computing device, a geographical location of one or more client computing devices. Embodiments of the method may include: receiving at least one grouping data element, representing a cluster of one or more client computing devices; obtaining, from at least one client computing device of the one or more client computing devices, at least one respective position data element, representing a geographical location of at least one client computing device; and calculating a refined position data element representing a determined location of the cluster of one or more client computing devices, based on at least one of one or more position data elements, and one or more grouping data elements.

[0057] Additionally, or alternatively, the at least one processor of the server may be configured to send the refined position data element to a vehicle module, associated with a vehicle. The vehicle module may be configured to utilize the refined position 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 producing 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. The invention, however, both as to organization and method of operation, together with objects, features, and advantages thereof, may best be understood by reference to the following detailed description when read with the accompanying drawings in which:

[0059] Fig. 1 is a block diagram, depicting a computing device which may be included in a system for determining a geographical location of one or more computing devices, according to some embodiments;

[0060] Figs. 2A and 2B are block diagrams, depicting a system for determining a geographical location of one or more computing devices, according to some embodiments; [0061] Fig. 3 is a block diagram, depicting a system for determining a geographical location of one or more computing devices, according to some embodiments; [0062] Fig. 4 is a block diagram, depicting modules of a system for determining a geographical location of one or more computing devices according to some embodiments;

[0063] Fig. 5 is a block diagram, depicting a server system for determining a geographical location of one or more computing devices according to some embodiments;

[0064] Fig. 6 is a flow diagram of a method of determining a geographical location of one or more computing devices according to some embodiments of the invention;

[0065] Fig. 7 is a block diagram depicting modules of a system for determining a geographical location of one or more computing devices, according to some embodiments of the invention;

[0066] Figs. 8 Al, 8A2, 8B1, 8B2, 8C1, 8C2 and 8C3 are schematic graphs, illustrating criteria for selection of geodata points according to predefined criteria, to obtain therefrom one or more reference points, according to some embodiments of the invention;

[0067] Fig. 9 is a flowchart of a method of determining a geographical location of a client computing device, by at least one processor, according to some embodiments of the invention; and

[0068] Fig. 10 is a flowchart of a method of determining, by at least one processor of a server computing device, a geographical location of one or more client computing devices, according to some embodiments.

[0069] It will be appreciated that for simplicity and clarity of illustration, elements shown in the figures have not necessarily been drawn to scale. For example, the dimensions of some of the elements may be exaggerated relative to other elements for clarity. Further, where considered appropriate, reference numerals may be repeated among the figures to indicate corresponding or analogous elements.

DETAILED DESCRIPTION OF THE PRESENT INVENTION

[0070] One skilled in the art will realize the invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. The foregoing embodiments are therefore to be considered in all respects illustrative rather than limiting of the invention described herein. Scope of the invention is thus indicated by the appended claims, rather than by the foregoing description, and all changes that come within the meaning and range of equivalency of the claims are therefore intended to be embraced therein. [0071] In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the invention. However, it will be understood by those skilled in the art 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 features or elements described with respect to other embodiments. For the sake of clarity, discussion of same or similar features or elements may not be repeated.

[0072] Although embodiments of the invention are not limited in this regard, discussions utilizing terms such as, for example, “processing,” “computing,” “calculating,” “determining,” “establishing”, “analyzing”, “checking”, or the like, may refer to operation(s) and/or process(es) of a computer, a computing platform, a computing system, or other electronic computing device, that manipulates and/or transforms data represented as physical (e.g., electronic) quantities within the computer’s registers and/or memories into other data similarly represented as physical quantities within the computer’s registers and/or memories or other information non-transitory storage medium that may store instructions to perform operations and/or processes.

[0073] Although embodiments of the invention are not limited in this regard, the terms “plurality” and “a plurality” as used herein may include, for example, “multiple” or “two or more”. The terms “plurality” or “a plurality” may be used throughout the specification to describe two or more components, devices, elements, units, parameters, or the like. The term “set” when used herein may include one or more items.

[0074] Unless explicitly stated, the method embodiments described herein are not constrained to a particular order or sequence. Additionally, some of the described method embodiments or elements thereof can occur or be performed simultaneously, at the same point in time, or concurrently.

[0075] The following Table 1 may be used as a reference to terminology used herein, for the reader’s convenience.

Table 1

[0076] Embodiments of the present invention may include a method and a system for determining a geographical location of a computing device. In some embodiments, a determination of a computing device’s location may be achieved by comparing said computing device’s location to at least one additional computing device’s location. Additionally, or alternatively, a determination of a computing device’s location may be performed by a server associated with the computing device. Additionally, or alternatively, a determination of a computing device’ s location may be performed by at least one processor associated with the computing device.

[0077] Reference is now made to Fig. 1, which is a block diagram depicting a computing device, which may be included within an embodiment of a system for determining a geographical location of one or more computing devices, according to some embodiments of the invention.

[0078] Computing device 1 may include a processor or controller 2 that may be, for example, a central processing unit (CPU) processor, a chip or any suitable computing or computational device, an operating system 3, a memory 4, executable code 5, a storage system 6, input devices 7 and output devices 8. Processor 2 (or one or more controllers or processors, possibly across multiple units or devices) may be configured to carry out methods described herein, and/or to execute or act as the various modules, units, etc. More than one computing device 1 may be included in, and one or more computing devices 1 may act as the components of, a system according to embodiments of the invention.

[0079] Operating system 3 may be or may include any code segment (e.g., one similar to executable code 5 described herein) designed and/or configured to perform tasks involving coordination, scheduling, arbitration, supervising, controlling or otherwise managing operation of computing device 1, for example, scheduling execution of software programs or tasks or enabling software programs or other modules or units to communicate. Operating system 3 may be a commercial operating system. It will be noted that an operating system 3 may be an optional component, e.g., in some embodiments, a system may include a computing device that does not require or include an operating system 3.

[0080] Memory 4 may be or may include, for example, a Random-Access Memory (RAM), a read only memory (ROM), a Dynamic RAM (DRAM), a Synchronous DRAM (SDRAM), a double data rate (DDR) memory chip, a Flash memory, a volatile memory, a nonvolatile memory, a cache memory, a buffer, a short term memory unit, a long term memory unit, or other suitable memory units or storage units. Memory 4 may be or may include a plurality of possibly different memory units. Memory 4 may be a computer or processor non-transitory readable medium, or a computer non-transitory storage medium, e.g., a RAM. In one embodiment, a non-transitory storage medium such as memory 4, a hard disk drive, another storage device, etc. may store instructions or code which when executed by a processor may cause the processor to carry out methods as described herein.

[0081] Executable code 5 may be any executable code, e.g., an application, a program, a process, task, or script. Executable code 5 may be executed by processor or controller 2 possibly under control of operating system 3. For example, executable code 5 may be an application that may include instructions for determining a geographical location of one or more computing devices, as further described herein. Although, for the sake of clarity, a single item of executable code 5 is shown in Fig. 1, a system according to some embodiments of the invention may include a plurality of executable code segments similar to executable code 5 that may be loaded into memory 4 and cause processor 2 to carry out methods described herein.

[0082] Storage system 6 may be or may include, for example, a flash memory as known in the art, a memory that is internal to, or embedded in, a micro controller or chip as 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 unit. Data, which may include position data elements, confidence values, or timestamps as further described herein, may be stored in storage system 6 and may be loaded from storage system 6 into memory 4 where it may be processed by processor or controller 2. In some embodiments, some of the components shown in Fig. 1 may be omitted. For example, memory 4 may be a non-volatile memory having the storage capacity of storage system 6. Accordingly, although shown as a separate component, storage system 6 may be embedded or included in memory 4.

[0083] Input devices 7 may be or may include any suitable input devices, components, or systems, e.g., a detachable keyboard or keypad, a mouse and the like. Output devices 8 may include one or more (possibly detachable) displays or monitors, speakers and/or any other suitable output devices. Any applicable input/output (VO) devices may be connected to Computing device 1 as shown by blocks 7 and 8. For example, a wired or wireless network interface card (NIC), a universal serial bus (USB) device or external hard drive may be included in input devices 7 and/or output devices 8. It will be recognized that any suitable number of input devices 7 and output device 8 may be operatively connected to Computing device 1 as shown by blocks 7 and 8.

[0084] A system according to some embodiments of the invention may include components such as, but not limited to, a plurality of central processing units (CPU) or any other suitable multi-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. [0085] Reference is now made to Figs. 2A and 2B, which depict examples for configurations of a system for determining a geographical location of one or more computing devices, according to some embodiments of the invention.

[0086] In one example, as illustrated in Fig. 2 A, system 1000 may include a primary computing device, also referred to herein as a primary client 100C1, and at least one secondary computing device, also referred to herein as a secondary client 100C2. According to some embodiments, clients 100C1 and/or 100C2 may be, or may include a computing device such as computing device 1 of Fig. 1. In some embodiments, clients 100C1 and/or 100C2 may be, or may include a mobile computing device such as a mobile phone, or a smartphone, which may include, or may be associated with a global positioning device, as elaborated herein.

[0087] Primary client 100C1 and the and the at least one secondary client 100C2 may be communicatively connected, e.g., via a communication network 170 such as Bluetooth, Near Field Communication (NFC), Internet Protocol, and/or a cellular data network. According to some embodiments, primary client 100C1 and the at least one secondary client 100C2 may be adapted to communicate location-related information, via communication network 170.

[0088] Primary client 100C1 may subsequently determine a geographic location data element, representing a geographic location of primary client 100C1, based on location- related information received from the one or more secondary clients 100C2, as elaborated herein.

[0089] The terms “primary” and “secondary” may be used herein to indicate a relation between a first computing device 100 and a second device 100. For example, a primary computing device 100C1, or primary client 100C1 may be a primary source of location data to be used, e.g., to improve or enhance location accuracy for all devices (e.g., including secondary computing devices 100C2). Additionally, or alternatively, a primary computing device 100C1, or primary client 100C1 may be a referred to as “primary” in a sense that it may perform the required geo-location calculations, so as to conserve computing resources (e.g., power, computation cycles, memory, etc.) for all computing devices (e.g., including secondary computing devices 100C2).

[0090] In some embodiments, a client computing device 100 (e.g., 100C1, 100C2) is chosen as a “primary device” 100C1 (also referred to herein as “primary client” 100C1) which may occur at any phase or step of the method of determining a geographical location of one or more client computing devices 100.

[0091] For example, primary device 100C1 may provide a majority of computing power, from said primary device 100C1, to execute instructions of determining a geographical location as described herein. In other words, primary device 100C1 may calculate a geographic location data element (also referred to herein as “refined position data element 110RL”), representing a geographic location of primary client 100C1, based on location- related information received from the plurality of clients 100C1 and 100C2, as elaborated herein.

[0092] Additionally, or alternatively, primary device 100C1 may provide a majority of network bandwidth, from said primary device 100C1, to execute instructions for calculating refined position data element 110RL, and determining the geographical location of clients 100C1 and 100C2, as described herein.

[0093] In some embodiments, primary device 100C1 may be selected from the one or more client computing devices 100 based on inherent attributes of client computing devices 100. In some embodiments, non-limiting examples of inherent attributes of client computing devices 100 include: available computing resources, a global positioning system (GPS) location confidence value pertaining to said computing device’s GPS, and an operating system version.

[0094] Additionally, or alternatively, additional primary device 100C1 may be selected from the one or more client computing devices 100. In such embodiments, the two or more primary client devices 100C1 may collaborate to determine their respective geographical locations, as described herein.

[0095] In another example, as illustrated in Fig. 2B, system 1000 may be a server-client system that includes at least one server 100S, adapted to communicate location-related information to and/or from a plurality of clients 100C1 and 100C2. In such embodiments, server 100S may calculate refined position data element 110RL, based on location-related information received from the plurality of clients 100C1 and 100C2, as elaborated herein.

[0096] Reference is now made to Fig. 3, which depicts modules of a system 1000 for determining a geographical location of one or more computing devices, according to some embodiments of the invention. System 1000 of Fig. 3 may be the same as system 1000 of Fig. 2A and/or Fig. 2B. [0097] As shown in Fig. 3, arrows may represent flow of one or more data elements to and/or from system 1000 and/or among modules or elements of system 1000, according to some aspects of the invention discussed herein. Some arrows have been omitted in Fig. 3 for the purpose of clarity.

[0098] As depicted in the example of Fig. 3, one or more computing devices 100 (e.g., primary client 100C1), may be associated with, or communicatively connected to a respective geographic location module (e.g., geographic location module 10). Additionally, or alternatively, one or more computing devices (e.g., secondary clients 100C2) may have, or may include a respective geographic location module (e.g., geographic location module 10B).

[0099] According to some embodiments, geographic location module 10 (e.g., 10A, 10B) may be configured to provide, to the one or more respective computing devices 100 (e.g., 100C1, 100C2) a position data element 10P (e.g., a primary position data element 10P-A or secondary position data element 10P-B, as also referred to herein). Position data element 10P may, for example, include longitude and latitude coordinates, representing a geographic location of the respective client (e.g., 100C1, 100C2).

[00100] For example, geographic location module 10 (e.g., 10A, 10B) may be, or may include a Global Positioning System (GPS) receiver configured to calculate a position data element 10P based on a GPS system, as known in the art. In another example, geographic location module 10 may be, or may include a mobile device configured to determine position data element 10P based on triangulation information from base stations of the mobile device’s carrier network.

[00101] Position data element 10P (e.g., 10P-A, 10P-B) may include at least one attribute. Non-limiting examples of attributes of the position 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). [00102] Confidence value 10CV (e.g., 10CV-A, 10CV-B) may indicate accuracy or reliability of position data elements as representing a real-world geographical location of a respective client 100 (e.g., 100C1, 100C2).

[00103] For example, geographical location module 10 (e.g., 10A, 10B) may receive (e.g., GPS positioning data 10P alongside confidence value 10CV. In such embodiments, confidence value 10CV may represent accuracy (e.g., measured in meters) and may represent a distance (e.g., measured in meters) from ground-truth geolocation in a predefined probability (e.g., 67%).

[00104] Timestamp 10TS (e.g., 10TS-A, 10TS-B) may represent a point in time in which the measurement of geographical location, e.g., position data element 10P (e.g., 10P-A, 10P- B), was obtained or performed. For example, timestamp 10TS may include indication of a second, a minute, an hour, etc., and a time zone pertaining to the geographical location with respect to Coordinated Universal Time (UTC), e.g., UTC -7:00. A non-limiting example of a timestamp 10TS may be 01/01/2022 17:45:31 UTC +3:00.

[00105] In some embodiments, geographic location module 10 may send respective position data elements 10P, to processors associated with respective clients 100.

[00106] According to some embodiments, primary client 100C1 and one or more secondary clients 100C2 may be coupled via communication module 120 of system 1000, which may a long-range communication module, including for example a cellular communication module or modem. Additionally, or alternatively, primary client 100C1 and secondary client 100C2 may be coupled via a short-range communication module 150, as illustrated, and discussed herein in relation to Fig. 4. Non-limiting examples of short-range communication device 150 may include: a Wi-Fi device, a Bluetooth device, and a Near Field Communication (NFC) device.

[00107] As shown in Fig. 3, primary client 100C1 may include an analysis module 110. Analysis module 110 may be configured to receive (a) a primary position data element 10P- A from geographical location module 10A, and (b) a secondary position data element 10P- B from geographic location module 10B, via communication module 120. Analysis module 110 may determine a refined position data element 110RL (e.g., 110RL-A, 110RL-B), representing a geographic location of client 100 (e.g., 100C1, 100C2). Analysis module 110 may subsequently calculate refined position data element 110RL based on the received position data elements (e.g., 10P-A, 10P-B), as elaborated herein.

[00108] The term “refined” may be used in this context of refined position data element 110RL to indicate an improvement (e.g., an improvement of accuracy) with respect to a representation of geographic location. Refined position data element 110RL may be an improvement over currently available systems (e.g., clients 100C1 and 100C2) that only rely on receiving position data elements 10P (e.g., from a respective geographic location module 10). [00109] Additionally, or alternatively, analysis module 110 may be configured to calculate a refined position data element 110RL-A representing a geographic location of primary client 100C1 based on at least one attribute of: confidence values 10CV-A, and timestamps 10TS-A.

[00110] For example, analysis module 110 may calculate a weighted average of position data elements 10P (e.g., 10P-A, 10P-B), based on said attributes. When confidence value 10CV-A is greater than confidence value 10CV-B, primary position data element 10P-A may have a greater weight 110W over secondary position data element 10P-B for calculating refined position data element 110RL. The example equation Eq. 1 below depicts a weighted average calculation, which may be used to calculate refined position data element 110RL:

Eq. 1

(a) W = f CV

[00111] In equation Eq. 1(a), W is a weight value HOW, computed as a function of confidence value (CV) such as 10CV.

[00112] In equation Eq. 1(b), Wi and W2 are instantiations of weight values HOW, computed separately, according to Eq. 1(a), for each of two clients (e.g., 100C1, 100C2) respectively. Yi and Y2 represent position data elements 10P-A and 10P-B, respectively. In other words, each position data element Y may have a respective confidence value W (1 OCV e.g., 10CV-A, 10CV-B). X represents a refined position data element 110RL, as a weighted average of position data elements (e.g., 10P-A and 10P-B).

[00113] Additionally, or alternatively, the example equation Eq. 2 below depicts another weighted average calculation, which may be used to calculate refined position data element

110RL:

Eq. 2

(a) W = f(CV,ATS)

[00114] In equation Eq. 2(a), W represents a weight value HOW, calculated as a function f() of attributes such as confidence value 10CV and timestamp 10TS, as elaborated herein. [00115] In equation Eq. 2(b), X represents a refined position data element 110RL, and weight values HOW Wi and W2 may be calculated as functions of confidence value 10CV and timestamp 10TS, as in Eq. 2(a).

[00116] For example, function f() may assign a first numerical weight value 110W, Wi, to a first client 10 (e.g., 10A) having a second confidence value 10CV and/or timestamp 10TS, and assign a second numerical weight value HOW, W2, to a second client 10 (e.g., 10B) having a second confidence value 10CV and/or timestamp 10TS. Function f() may be configured such that weight 110W Wi may be larger than weight HOW W2 if the first confidence value 10CV is higher than the second confidence value 10CV. In another example, function f() may be configured such that weight 110W Wi may be larger than W2 if the first timestamp 10TS is later (e.g., more up-to-date) than the second timestamp 10TS. [00117] X may be calculated as a weighted average of position data elements Yi and Y2 (10P, e.g., 10P-A and 10P-B), each associated with a respective attribute (e.g., Wi and W2), respectively. Weight values 110W Wi and W2 may be used, for example, in order to weigh a corresponding position data element 10P (e.g., 10TS-A corresponding to 10P-A) over another position data element 10P.

[00118] Analysis module 110 may be configured to send refined position data element 110RL to secondary client 100C2 as refined position data element 110RL-B. As such, refined position data element 110RL-B may represent a geographical location of secondary client 100C2.

[00119] In some embodiments, client 100 (e.g., 100C1, 100C2) may send refined position data element 110RL (e.g., 110RL-A, 110RL-B) to a vehicle module 130 (e.g., 130A, 130B). Vehicle module 130 may be, or may include a software and/or hardware element, that may be associated with a vehicle, and may utilize refined position data element 110RL according to a specific configuration.

[00120] For example, vehicle module 130 may be associated with a controller of an autonomous vehicle, configured to control a steering system of said vehicle, control a braking system of said vehicle, control an accelerator of said vehicle, and the like, based on refined position data element 110RL.

[00121] In another example, vehicle module 130 may be associated with a processor of an advanced driver-assistance system (ADAS) of a vehicle, configured to produce, for example, a collision warning on a user interface associated with said vehicle. [00122] In another example, vehicle module 130 may be, or may include: an ADAS system of a vehicle, an autonomous vehicle controller, an adaptive cruise control system of a vehicle, a pedestrian warning system installed on a vehicle, and a parking assist system of a vehicle.

[00123] Reference is now made to Fig. 4, which depicts a system 1000 for coupling of devices according to some embodiments of the invention. System 1000 of Fig. 4 may be the same as system 1000 of Fig. 2A and/or Fig. 2B and/or Fig. 3.

[00124] According to some embodiments of the invention, a user may use a user interface (UI) 160 to input a coupling request 120CR to primary client 100C1. Primary client 100C1 may receive coupling request 120CR, and may send or transmit a coupling request 120CR message, e.g., via communication module 120, either directly or via server 100S to a second computing device 100C2, based on the input coupling request 120CR. Primary client 100C1 may subsequently receive a coupling approval message 120CA from second computing device 100C2 and couple clients 100C1 and 100C2 based on the reception of coupling approval message 120CA.

[00125] Primary client 100C1 may subsequently send a signal to user interface 160 displaying a confirmation of coupling devices based on receiving coupling approval 120CA message from communication module 120.

[00126] Additionally, or alternatively primary client 100C1 may send a coupling request 150CR, e.g., via a primary short-range communication device (SRD) 150A associated with primary client 100C1, to a secondary SRD device 150B of a secondary client computing device 100C2. Client 100C1 may subsequently receive a coupling approval 150CA message from secondary client computing device 100C2, and couple clients 100C1 and 100C2 based on the received approval 150CA message.

[00127] Primary client 100C1 may then send a signal to user interface 160 displaying a confirmation of coupling devices based on receiving a coupling approval 150CA from primary SRD 150. Said primary SRD 150A may be configured to detect at least one secondary SRD 150B associated with at least one secondary client 100C2, in order to couple clients 100C1 and 100C2. Non-limiting examples of a short-range communication device 150A or 150B may include: a Wi-Fi device, a Bluetooth device, and an NFC device. [00128] Reference is now made to Fig. 5, which depicts a system for determining a geographical location according to some embodiments of the invention. System 1000 of Fig. 5 may be the same as system 1000 of Fig. 2A, Fig. 2B, Fig. 3, and/or Fig. 4.

[00129] Server 100S may be an embodiment of computing device 1 illustrated and discussed herein with respect to Fig. 1. Server 100S may be communicatively connected to primary clients 100C1 and/or secondary clients 100C2 via a communication network 170.

[00130] Server 100S may receive at least one grouping data element 170GE representing a cluster of one or more client computing devices 100 (e.g., 100C1, 100C2). Grouping data element 170GE may be sent to server 100S, for example, via communication network 170. Grouping 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). Geographic location module 10, or a respective client associated with geographic location module 10 may be configured to provide a grouping data element 170GE to server 100S. In some embodiments, grouping data element 170GE may be received by server 100S via an input device associated thereof (e.g., input device 7 of Fig. 1). Optionally, grouping data element 170GE may include a confidence value 170CV and a timestamp 170TS.

[00131] Server 100S may determine a refined position data element 180RL, representing a geographical location of the cluster of one or more client computing devices. Server 100S may determine refined position data element 180RL based on the at least one grouping data element 170GE. Additionally, or alternatively, server 100S may determine refined position data element 180RL based on the confidence value 170CV and/or the timestamp 170TS.

[00132] For example, server 100S may determine refined position data element 180RL based on a weighted average calculation of the one or more grouping data elements 170GE. Said weighted average calculation may be, or may include elements or functions discussed herein with respect to a weighted average calculation performed by analysis module 110 of system 100, discussed herein with respect to Fig. 3.

[00133] Reference is now made to Fig. 6, which depicts a flowchart of a method of determining a geographical location of a computing device, by at least one processor, according to some embodiments of the invention. Steps S 1010 to SI 040 may be performed by system 1000, to determine one or more refined position data elements 110RL (e.g., 110RL-A, 110RL-B) representing geographical locations of computing devices 100 (e.g., 100C1, 100C2). Steps S1O1O to SI 040 may be used to determine one or more refined position data elements 110RL, for example, via a communication network 170 communicatively connected to one or more computing devise 100 (e.g., 100C1, 100C2). Additionally, or alternatively, steps S 1010 to SI 040 may be performed by server 100S, to determine one or more refined position data elements 180RL representing a geographical location of a cluster of computing devices 100 (e.g., 100C1, 100C2).

[00134] In step S1010, a first computing device (e.g., 100C1) may be coupled with one or more second computing devices (e.g., 100C2). First computing device 100C1 may be coupled with one or more second computing devices 100C2 according to instructions discussed herein, for example, via a communication module 120 or a short-range communication device 150 (e.g., 150A, 150B).

[00135] For example, a first computing device 100C1 may be coupled with one or more computing devices 100C2 via a short-range communication device 150, e.g., a Bluetooth connection.

[00136] In step S1020, at least one first position data element 10P (e.g., 10P-A) may be obtained, wherein said first position data element 10P-A represents a 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., confidence value 10CV-A, timestamp 10TS-A).

[00137] 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.

[00138] In step S1030, a second position data element 10P (e.g., 10P-B) may be received from at least one second computing device 100C2 of the one or more second computing devices 100C2, wherein the second position data element 10P-B represents a 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., confidence value 10CV-B, timestamp 10TS-B).

[00139] 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.

[00140] In step S 1040, a refined position data element 110RL may be calculated based on said first and at least one second position data element 10P (e.g., 10P-A, 10P-B), wherein the refined position data element 110RL represents a determined geographical location of the first computing device 100C1. Refined position data element 110RL may be sent to the at least one second computing device 100C2, in order to represent a geographical location of the at least one second computing device 100C2.

[00141] For example, refined position data element 110RL may be calculated based on elements or functions discussed herein with respect to a weighted average calculation performed by analysis module 110 of system 100, discussed herein with respect to Fig. 3. As such, step 1040 may include calculating refined position data element 110RL based on first and at least one second position data element 10P-A and 10P-B, by performing said weighted average calculation with respect to received position data elements 10P (e.g., 10P- A, 10P-B).

[00142] According to some embodiments of the invention, method steps SI 010 to SI 040 discussed herein may be repeated, for example, in order to recalculate a position data element representing a geographical location of primary client 100C1, i.e., an iterative loop. In some embodiments, in each iteration, one or more clients 100 (e.g., 100C2) may be coupled to primary client 100C1. Said clients 100C2 may send primary client 100C1 at least one position data element 10P-B, representing a geographical location of the at least one coupled client 100C2. Refined position data element 110RL may be based on the one or more position data elements 10P-B. Refined position data element 110RL may be based on confidence values 10CV-B associated with the one or more position data elements 10P-B. Additionally, or alternatively, refined position data element 110RL may be based on timestamps 10TS-B associated with the one or more position data elements 10P-B. In some embodiments, said iterative loop may repeat, for example, until a certain threshold of refined position data element 110RL is achieved (i.e., a convergence of iteration).

[00143] Reference is now made to Fig. 7, which depicts modules of a system 1000 for determining a geographical location of one or more computing devices, according to some embodiments of the invention. System 1000 of Fig. 7 may be the same as system 1000 of Fig. 2A, Fig. 2B and/or Fig. 3. Some arrows have been omitted in Fig. 6 for the purpose of clarity.

[00144] As shown in Fig. 7, server 100S of system 1000 may include, or may be communicatively connected (e.g., via network 170) to a geodata database 30. Database 30 may include a plurality of geodata points 30P, each representing a geographical location, and attributed ground-truth longitude and latitude values. [00145] As elaborated herein, server 100S may include a motion calculation module 210 (or “motion module 210” for short) configured to select one or more geodata points 3 OP according to predefined criteria, to obtain therefrom one or more reference points 220REF. Each reference point 220REF may represent a geographical location, and may be attributed ground-truth longitude and latitude values.

[00146] As elaborated herein, clients 100C may receive, for associated geographic location units 10, one or more position data elements 10P (e.g., repeatedly, overtime). Each position data element 10P may include measured longitude and latitude values of that client computing device 100C. Server 100S may be communicatively connected to clients 100C, and may receive from at least one client computing device 100C, at least two such position data elements 10P.

[00147] Based on the at least two position data elements, motion module 210 may determine a direction of motion 210DIR of client computing device 100C. For example, direction of motion 210DIR may be calculated as a vector that connects between the geographical locations represented by two or more position data elements 10P.

[00148] Additionally, or alternatively, based on the at least to position data elements 10P, motion module 210 may calculate a minimal traversal distance 210DIS between the client computing device and a geographical location of a specific reference point 220REF. For example, minimal traversal distance 210DIS may be calculated as a vector that is perpendicular to the vector of direction of motion 210DIR, and intersects the specific reference point 220REF.

[00149] As shown in Fig. 7, server 100S may include a calibration vector calculation module 230 (or “calibration module 230” for short). Calibration module 230 may be configured to produce a reference-specific calibration vector 230CALV, for client 100C, based on the minimal traversal distance vector 210DIS.

[00150] Calibration vector 230CALV may represent a required correction of location of the at least one client computing device HOC in a direction substantially perpendicular to the direction of motion 210DIR.

[00151] In a trivial example, calibration vector 230CALV may pertain to the specific reference point 220REF, and may be opposite to the respective minimal traversal distance 210DIS vector (e.g., perpendicular to direction of motion 210DIR). For example, a vehicle which is conducted on an east-west axis, may traverse a specific reference point 220REF. At the closest point from reference point 220REF, minimal distance vector 210DIS of client 100C may represent an offset distance (e.g., by a few meters) from reference point 220REF, in a northern direction. Calibration vector 230CALV may include an indication of required correction, in an opposite direction to minimal distance vector 210DIS, e.g., southwards, by the same offset distance.

[00152] In another example, and as elaborated further herein, calibration vector 230C AL V may represent a required correction of location for a client device 100C, based on a timewise aggregation of reference points 220REF. In such embodiments, calibration vector 230CALV may not necessarily represent a required correction of location that is substantially perpendicular to direction of motion 210DIR. Such calculation of an aggregated calibration vector may be similarly performed by server 100S (denoted 230ACV) for one or more clients 100C, and/or by one or more (e.g., each) client computing devices 100C (denoted 110ACV) for their respective locations.

[00153] For example, calibration module 230 may produce a plurality of referencespecific calibration vectors 230CALV associated with a specific client device 100C. Each calibration vector 230CALV may pertain to a respective, unique reference point 220REF, and may be obtained as client device 100C traverses reference points 220REF over time.

[00154] Server 100C may calculate an aggregate calibration vector 230ACV for the respective client device 100C, based on the plurality of reference-specific calibration vectors 230CALV. Additionally, or alternatively, server 100C may communicate reference-specific calibration vectors 230CALV to the respective client 100C, which may employ analysis module 110 to calculate aggregate calibration vector 110ACV based on the plurality of reference-specific calibration vectors 230CALV.

[00155] In one example, aggregate calibration vectors 110ACV/230ACV may be calculated as an average vector of all reference-specific calibration vectors 230CALV pertaining to a specific client device 100C.

[00156] In another example, aggregate calibration vectors 110ACV/230ACV may be calculated as an average vector of all reference-specific calibration vectors 230CALV pertaining to one or more (e.g., all) client devices 100C.

[00157] In another example, each reference-specific calibration vectors may be attributed a traversal timestamp, representing a time at which the respective client computing device 100C was at the minimal traversal distance from the geographical location of the respective reference point 220REF. In such embodiments, calibration module 230 and/or analysis module 110 of the respective client computing device 100C may calculate the aggregate calibration vector 110ACV/230ACV further based on the traversal timestamps. For example, client 100C may calculate aggregate calibration vector 110ACV as a weighted average vector of all reference-specific calibration vectors 230CALV, by using the timestamps as diminishing weights, to give old measurements a lesser weight in the calculation.

[00158] According to some embodiments, client 100C may receive (e.g., from geolocation module 10) an instant position data element 10P that may include current measured values of longitude and latitude of the client computing device 100C. Client 100C may apply aggregate calibration vector 110ACV/230ACV on the instant position data element 10P, to obtain a calibrated position data element 110CB. Calibrated position data element 110CB may represent a corrected geographical location of the client computing device 100C.

[00159] The term “apply” may be used herein to indicate correction of the latitude and longitude values of instant position data element 10P as indicated by aggregate calibration vector 110ACV/230ACV. For example, an aggregate calibration vector 110 AC V/230 AC V that represents X meters in an easterly direction and Y meters in a northemly direction may be applied to instant position data element 10P by adding X and Y to the latitude and longitude values of data element 10P respectively.

[00160] Additionally, or alternatively, aggregate calibration vector 110ACV/230ACV may be trivial, in a sense that it may represent a specific reference point 220REF, and thus be equivalent to reference-specific calibration vector 230CALV. In such embodiments, analysis module 110 may apply the reference-specific calibration vector 230CALV on the instant position data element 10P to obtain calibrated position data element 110CB.

[00161] Reference is now made to Figs. 8 Al, 8A2, 8B1, 8B2, 8C1, 8C2 and 8C3 which are schematic graphs, illustrating criteria for selection of geodata points 30P according to predefined criteria, to obtain therefrom one or more reference points 220REF, according to some embodiments of the invention.

[00162] As shown in Fig. 8 Al , a geodata point 3 OP may represent a geographical location (e.g., latitude and longitude) of a middle of a crossroad. In such a condition, the bearing or direction 210DIR of vehicles carrying client devices 100C may be schematically represented as in Fig. 8A2. As shown in that figure, direction 210DIR may not be uniform, in a sense that it may be distributed about four different bands (e.g., around 0, 180, 270 and 360 bearing degrees). Therefore, geodata point 30P of Fig. 8A1 may not be selected as a reference point 220REF.

[00163] As shown in Fig. 8B 1 , a geodata point 3 OP may represent a geographical location (e.g., latitude and longitude) of a middle of a multiple (e.g., three) lane road, where the width of each lane is 4 meters. In such a condition, offset of a minimal traversal distance vector 210DIS of vehicles carrying client devices 100C may be schematically represented as in Fig. 8B2. As shown in that figure, distance 210DIS may not be uniform, in a sense that it may be distributed about three different bands (e.g., around -4, 0, and 4 meters) in an axis that is perpendicular to direction of motion 210DIR. Therefore, geodata point 3 OP of Fig. 8B1 may not be selected as a reference point 220REF.

[00164] As shown in Fig. 8C 1 , a geodata point 3 OP may represent a geographical location (e.g., latitude and longitude) of a middle of a single lane road. In such a condition, the bearing or direction 210DIR of vehicles carrying client devices 100C near point 30P may be schematically represented as in Fig. 8C2, and offset of a minimal traversal distance vector 210DIS of vehicles carrying client devices 100C may be schematically represented as in Fig. 8C3. As shown in Figs. 8C2 and 8C3, direction 210DIR and distance 210DIS may be uniform, in a sense that they may be defined around narrow bands of bearing (210DIR) and distance (210DIS) respectively. Therefore, geodata point 30P of Fig. 8C1 may be appropriately selected as a reference point 220REF.

[00165] According to some embodiments, motion module 210 may select geodata points of dataset 30 as reference points 220REF, in line with the explanations brought herein, e.g., in relation to Figs. 8A1, 8A2, 8B1, 8B2, 8C1, 8C2 and 8C3.

[00166] In other words, motion module 210 may receive a dataset 30 of geodata points 3 OP, each representing a respective geographical location, and may include ground-truth longitude and latitude value. For one or more geodata points 30P, motion module 210 may calculate a direction uniformity value 210DIRU based on the position data elements 10P. Direction uniformity value 210DIRU may represent a level of uniformity of direction of motion 210DIR of client computing devices within a predetermined vicinity of the respective geographical location 30P. Motion module 210 may subsequently select the reference point 220REF among the plurality of geodata points 30P based on the direction uniformity values 210DIRU, e.g., when 210DIRU surpasses a predefined threshold.

[00167] Additionally, or alternatively, motion module 210 may calculate, for one or more geodata points 3 OP a distance uniformity value 21 ODISU based on the position data elements 10P. The distance uniformity value 21 ODISU may represent a level of uniformity of minimal traversal distances 210DIS between client computing devices 100C and the geodata point 30P. Motion module 210 may subsequently select the reference point 220REF among the plurality of geodata points 3 OP further based on the distance uniformity values 21 ODISU, e.g., when 210DISU surpasses a predefined threshold.

[00168] As elaborated herein, (e.g., in relation to Figs. 2A, 2B and 3-6) one or more client devices 100C of system 1000 may use position data elements 10P (e.g., geoinformation measured by geolocation modules 10) to calculate a refined position data element 110RL. According to some embodiments, one or more client devices 100C may replace measured position data elements 10P with respective calibrated position data elements 110CB, for calculating refined position data element 110RL.

[00169] For example, a first client computing device 100C (e.g., 100C1) may obtain a calibrated position data element 110CB, representing a corrected geographical location of the first client computing device as elaborated 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 a corrected geographical location of the at least one second computing device 100C2.

[00170] The first client computing device 100C1 may subsequently calculate a first refined position data element 110RL representing a refined location of the first computing device 100C1, based on (e.g., as a weighted average of) the first calibrated position data element 110CB and the at least one second calibrated position data element 110CB.

[00171] According to some embodiments, calibrated position data element 110CB, originating from position data element 10P may include, or may be attributed a position confidence value 110CB’, representing a reliability of the corrected geographical location of the respective client computing device 100C. Confidence value 110CB’ may, for example be a function of confidence value 10CV of the original position data element 10P, e.g., where a high confidence value confidence value 10CV may result in a high confidence value 110CB’.

[00172] Additionally, or alternatively, Confidence value 110CB’ may be a function of minimal traversal distance 21 ODIS, e.g., where a large correction of distance results in a low confidence value 110CB’.

[00173] In other words, a first calibrated position data element 110CB may be associated with a first minimal traversal distance value 21 ODIS, and at least one second calibrated position data element 110CB may be associated with at least one respective second minimal traversal distance value 210DIS. Client computing device 100C (e.g., 100C1) may calculate the refined position data element 1110RL further based on the first minimal traversal distance 21 ODIS value and the at least one second minimal traversal distance value 21 ODIS. [00174] According to some embodiments, a first calibrated position data element 110CB may include a first confidence value 110CB’ and at least one second calibrated position data element 110CB may include at least one respective second confidence value 110CB’. In such embodiments, Client computing device 100C (e.g., 100C1) may calculate refined position data element 110RL further based on the first confidence value 110CB’ and the at least one second confidence value 110CB’. For example, client computing device 100C may calculate refined position data element 110RL as a weighted average of the first calibrated position data element 110CB and the at least one second calibrated position data element 110CB, using the confidence values 110CB’ as weights.

[00175] Additionally, or alternatively, the first calibrated position data element 110CB may include, or may be associated with a first timestamp, corresponding to the geographical location of the first computing device 100C1, and the at least one second calibrated position data element may include, or may be associated with at least one respective second timestamp, corresponding to the geographical location of the at least one second computing device 100C2. The first client computing device may calculate refined position data element 110RL further based on the first timestamp 110CBT and the at least one second timestamp 110CBT.

[00176] For example, client computing device 100C1 may calculate refined position data element 110RL as a weighted average of calibrated position data element 110CB, while using timestamps 110CBT as weights for this calculation, e.g., giving newer calibrated position data elements 110CB bigger weight in relation to older calibrated position data elements 110CB.

[00177] Additionally, or alternatively, client computing device 100C1 may project a future location of computing device 100C1 and computing device 100C2 based on (i) calibrated position data elements 110CB, (ii) the respective direction vectors 210DIR, and (iii) timestamps 110CBT. Client computing device 100C1 may calculate refined position data element 110RL as a weighted average of , and calculate refined position data element 110RL as a weighted average of the future locations.

[00178] As shown in Fig. 7, client computing device 100C may include at least one processor (e.g., processor 2 of Fig. 1) that may be associated with, or communicatively connected to a controller 130C (e.g., processor 2 of Fig. 1) of a vehicle module 130 that is included in a respective vehicle. Vehicle module 130 of Fig. 7 may be the same as vehicle module 130 of Fig. 3.

[00179] Client computing device 100C may send, or transmit refined position data element 110RL to controller 130C of vehicle module 130. Controller 2 of vehicle module 130 may, in turn, utilize refined position data element 110RL to perform one or more actions related to the respective vehicle. For example, vehicle module 130 may include an electric motor or attenuator 130A, controlled by controller 130C. Attenuator 130A may thus control a steering system of the vehicle, control a braking system of the vehicle, controlling an accelerator of the vehicle, and the like.

[00180] Additionally, or alternatively, controller 130C of a first client device 100C (e.g., 100C1) may be included in an ADAS system of the respective vehicle. Controller 130C may receive (e.g., via sever 100S) one or more refined position data elements 110RL pertaining to other client devices 100C (e.g., 100C2). Controller 130C may thus assess vicinity of client module 100C1 to the other client devices 100C2 (e.g., other vehicles), and/or produce a collision warning on a user interface of the respective vehicle.

[00181] Additionally, or alternatively, controller 130C of a 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 elaborated herein. In such embodiments, the at least one second client device 100C2 may use the refined position data element 110RL of first client device 100C1 to represent (e.g., as representing) its own geographical location, e.g., on a UI of client device 100C2. [00182] Additionally, or alternatively, the second computing device 100C2 may be associated with a second vehicle module 130’, e.g., of a second vehicle. In such embodiments, second vehicle module 130’ may be configured to utilize the refined position data element 110RL (e.g., of first client device 100C1) to perform at least one of: control a steering system of the second vehicle, control a braking system of the second vehicle, control an accelerator of the second vehicle, produce a collision warning on a user interface of the second vehicle, and any combination thereof.

[00183] According to some embodiments, first client computing device 100C (e.g., 100C1) and the at least one second client computing device(s) 100C (e.g., 100C2) may negotiate a role of a primary client computing device, based on the first confidence value (e.g., 170CV of Fig. 3) of client computing device 100C1 and the at least one second confidence value 170CV of the at least one second client computing device 100C2.

[00184] For example, a role of a primary client computing device may be assigned to a specific client computing device 100C which has a maximal confidence value 170CV. Additionally, or alternatively, a role of a primary client computing device may be assigned to a client computing device 100C which has superior computing (e.g., processing, memory and/or communication) resources. In yet another example, a role of a primary client computing device may be assigned to a client computing device 100C which is in communication to a superior number of other client computing devices 100C.

[00185] The primary client computing device may be configured to provide a majority of computing power to determine refined position data elements 110RL (e.g., the refined geographical locations) of that client computing device 100C and/or at least one other client computing devices 100C.

[00186] According to some embodiments, the calculation of refined position data element 110RL may be done iteratively (e.g., repeatedly, over plurality of iterations). In each iteration client computing device 100C1 may calculate a first refined position data elements 110RL and a corresponding confidence value, representing reliability of the refined geographical location 110RL of the first computing 100C1 device in that iteration.

[00187] Client computing device 100C1 may subsequently calculate a summary refined position data element representing a determined location of the first computing device, based on the plurality of first position data elements (e.g., from a plurality of iterations), and the respective plurality of confidence values. [00188] For example, one or more (e.g., each) of the plurality of first refined position data elements 110RL may include, or may be associated with a timestamp, corresponding to the geographical location of the first computing device 100C1 in that iteration. Client computing device 100C1 may calculate the summary refined position data element 110RL based (e.g., as a weighted sum of) first refined position data elements 110RL, where the plurality of timestamps may be used to calculate diminishing weight values (e.g., assigning diminishing value to position data elements 110RL as time passes).

[00189] Reference is now made to Fig. 9, which depicts a flowchart of a method of determining a geographical location of a client computing device, by at least one processor (e.g., processor 2 or Fig. 1), according to some embodiments of the invention.

[00190] As shown in step S2010, the at least one processor 2 may be a processor of a server device (e.g., server 100S of Fig. 7). Processor 2 may receive, e.g., from at least one client computing device (e.g., client 100C of Fig. 7), at least two position data elements 10P. Each position data elements 10P may include measured longitude 10MLON and latitude 10MLAT values of the client computing device 100C.

[00191] As shown in step S2020, based on the position data elements 10P (e.g., on 10MLON and 10MLAT values), processor 2 of server 100S may determine a direction of motion of the client computing device, e.g., as a vector 210DIR that connects the geographical locations of 10MLON and 10MLAT of the two or more position data elements 10P.

[00192] Additionally, or alternatively, and as shown in step S2030, based on the position data elements 10P, processor 2 of server 100S may calculate a minimal traversal distance 210DIS between the client computing device and a reference point 220REF, as elaborated herein. Reference point 220REF may represent, or may be attributed ground-truth longitude and latitude values of a specific geographical location.

[00193] As shown in step S2040, based on the minimal traversal distance 220DIS, processor 2 of server 100S may produce a reference-specific calibration vector 230CALV, pertaining to the reference point 220REF. Reference-specific calibration vector 230CALV may represent a required correction of location in a direction substantially perpendicular to the direction of motion 210DIR.

[00194] As shown in step S2050, server 100S and/or client 100C may apply the referencespecific calibration vector 230CALV on an instant position data element 10P, to obtain a calibration position data element 110CB, representing corrected geographical location of the client computing device 100C.

[00195] Reference is now made to Fig. 10, which depicts a flowchart of a method of determining, by at least one processor of a server computing device, a geographical location of one or more client computing devices, according to some embodiments.

[00196] As shown in step S3010, the at least one processor (e.g., processor 2 or 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.

[00197] As shown in step S3020, the at least one processor 2 may obtain, from at least one client computing device 100C of the one or more client computing devices 100C, at least one respective position data element 10P, representing a geographical location of at least one client computing device 100C (e.g., a computing device 100C pertaining to the cluster). [00198] As shown in step S3030, the at least one processor 2 may calculate a refined position data element 110RL representing a determined location of the cluster of one or more client computing devices 100C (e.g., as represented by grouping data element 170GE), based on at least one of: (i) the one or more position data elements 10P, and (ii) the one or more grouping data elements 170GE.

Improvement of technology

[00199] Embodiments of the invention may provide a practical application for calibrating geographical location measurement, e.g., produced by a geographic location module (e.g., element 10 of Fig.3) such as a GPS receiver, as elaborated herein.

[00200] Embodiments of the invention may also provide a practical application for calculating a representation of a geographical location of a computing device. For example, embodiments of the invention may be used to refine the location of a computing device, as relayed to the end user (i.e., a navigational application of a smartphone).

[00201] Embodiments of the invention may improve a computing device’ s representation of its geographical location over currently available solutions for determining geographical locations, for example, by coupling the computing device with other computing devices and transferring position data. In one example, an ADAS module 130 associated with a vehicle may detect a proximate coupled computing device of an oncoming pedestrian, and may control the vehicle to avoid an accident. [00202] In another example, a first smartphone with a low reliability (i.e., a low confidence value, as discussed herein) of its geographical location may refine its location by coupling with a second smartphone with a high reliability of its geographical location. By taking a weighted average of the two position data elements, the first smartphone may obtain a refined position data element containing an increased reliability of its geographical location.

[00203] In another example, a first ADAS module 130 associated with a first vehicle may couple with a second ADAS 130 module associated with an oncoming second vehicle. By transferring position data corresponding to each vehicle, each ADAS module 130 may improve a response time on its collision warning system, as opposed to conventional methods of using distance sensors (e.g., cameras mounted to the vehicle).

[00204] Unless explicitly stated, the method embodiments described herein are not constrained to a particular order or sequence. Furthermore, all formulas described herein are intended as examples only and other or different formulas may be used. Additionally, some of the described method embodiments or elements thereof may occur or be performed at the same point in time.

[00205] While certain features of the invention have been illustrated and described herein, many modifications, substitutions, changes, and equivalents may occur to those skilled in the art. It is, therefore, to be understood that the appended claims are intended to cover all such modifications and changes as fall within the true spirit of the invention.

[00206] Various embodiments have been presented. Each of these embodiments may of course include features from other embodiments presented, and embodiments not specifically described may include various features described herein.