Location determination using GNSS and distance measurements of the device
Patent Information
- Authority / Receiving Office
- DE · DE
- Patent Type
- Patents
- Current Assignee / Owner
- HEWLETT PACKARD ENTERPRISE DEV LP
- Filing Date
- 2022-04-12
- Publication Date
- 2026-07-16
AI Technical Summary
GPS signals are easily disrupted by geological and man-made features, leading to inaccurate geolocation and time information, especially in environments with obstructed line of sight.
Utilizing network device measurements, such as access point (AP) to AP ranging and device-to-device measurements, combined with GPS coordinates, to improve location determination by adjusting reported coordinates and incorporating geographic boundary representations.
Enhances geolocation accuracy by reducing mean error from 20.8 meters to 2.5 meters, even in environments with signal degradation, by iteratively correcting and averaging device locations.
Smart Images

Figure 00000017_0000 
Figure 00000018_0000 
Figure 00000019_0000
Abstract
Description
background
[0001] The Global Positioning System (GPS) is one of the global satellite navigation systems (GNSS) that provides geolocation and time information to a GPS receiver. This geolocation and time information requires an unobstructed line of sight between the GPS receiver and four or more GPS satellites. However, GPS signals are relatively weak and can be easily disrupted by geological features (e.g., mountains) or man-made features (e.g., buildings). List of characters
[0002] The present revelation is described in detail in accordance with one or more different examples, with reference to the following figures. The illustrations are for illustrative purposes only and show only typical examples. Fig. Figure 1 shows a method for determining location according to some application examples. Fig. Figure 2 shows the positions of a variety of devices in conjunction with a structure according to some examples of application. Fig. Figure 3 shows a distance measurement process in accordance with some examples of the application. Fig. Figure 4 shows the actual spatial locations and the incorrect geolocations of network devices on a ground map according to some examples of the application. Fig. Figure 5 shows the true spatial locations, the incorrectly reported geolocations, and the improved calculated locations of network devices plotted on a ground map after step (2), in accordance with some application examples. Fig. Figure 6 shows the difference between the reported locations and the calculated locations of a single network device over a specific period, according to some application examples. Fig. Figure 7 shows the actual spatial locations, the calculated locations after step (4) and the calculated locations of network devices after step (4) and subsequent application of step (1), plotted on a floor map, in accordance with some application examples. Fig. Figure 8 is an example of a computer component that can be used to implement various features of the examples described in the present disclosure. Fig. Figure 9 shows a block diagram of an exemplary computer system in which various examples described here can be implemented.
[0003] The illustrations are not exhaustive and do not limit the present disclosure to the exact form that is disclosed. Detailed description
[0004] Examples of this application include improving geolocation services, such as GPS, using network device measurements. For instance, a number of access points (APs) or other network devices (e.g., with a GPS chip) can be deployed in a network environment. Distance measurements from these network devices can be collected and combined with the coordinates (e.g., determined by GPS) using various methods described herein to improve the overall location of these devices. The distance measurements between the APs or other network devices can help improve the location of these network devices even when the quality of the wireless transmission signals is degraded.
[0005] Fig. Figure 1 shows an illustrative procedure for improving the location determination of network devices in accordance with some use cases. Further illustrative examples of this process are provided throughout the disclosure using a variety of access points (e.g., AP-to-AP range measurements), although any network device with a GPS chip can be implemented using the disclosure presented here.
[0006] (1) and device-to-device measurements at 110, (2) discarding the least accurate (i.e., worst) reported coordinates at 120, (3) updating with improved calculated locations at 130, (4) using GNSS time-history data to improve device location accuracy at 140, and (5) correcting locations based on a geographic boundary representation of the environment surrounding the devices at 150. At each step of the process, the mean error of the calculated locations can be reduced. One or more of these procedures can help improve the location determination of network devices.
[0007] In Block 110, the process can calculate and improve the accuracy of the device position based on the reported coordinates (e.g., using the Earth as a reference frame or selected from a set of latitude, longitude, altitude, Cartesian x, y, or z values, polar coordinates, etc.) and the measurements from device to device. For example, the distances derived from a set of reported coordinates for the devices (x i , y i The coordinates are calculated and adjusted to the distance measurements from device to device. The devices themselves can provide the reported coordinates based on coordinates reported by a GPS chip in each device.
[0008] The device's reported coordinates can be reported over a predefined period (e.g., 24 hours). This can result in a series of nonlinear equations representing Euclidean distances between the fitted coordinates. These nonlinear equations can have unknown values (Δx). i , Δy i ) for each device. The unknown values can represent the adjustment needed to reconcile the distances derived from the reported coordinates with the distances obtained from device-to-device distance measurements. Thus, for a number N of devices, there can be 2*N unknown values (i.e., N*(Δx)). i , Δy i ) pairs). To solve the 2*N unknown values, the process can choose multiple equations to solve the 2*N unknown values, as described in the disclosure.
[0009] In some examples, Block 110 may also involve converting nonlinear equations into linear equations. A Taylor series expansion may be used in the conversion (e.g., an infinite sum of terms expressed as derivatives of the function at a single point). The converted, linear equations can be represented in matrix form to identify the unknown pairs (Δx). i , Δy i ) to solve. Block 110 can be repeated until the values converge (e.g., as an iterative step).
[0010] These methods and values can lead to improved accuracy of the determined locations. For example, the distances obtained from device-to-device distance measurements can determine an approximate distance between two devices, corresponding to a range of possible locations around each device. When the distance measurement information is combined with the reported coordinates, the process can narrow down the possible locations of each device to verify the quality of the coordinates reported by the GNSS.
[0011] In Block 120, the improved calculated locations obtained by running Block 110 can be compared with the set of reported coordinates from each of the network devices. The reported coordinates with the greatest discrepancy between the processed and original coordinates can be discarded (e.g., the least accurate or "worst" GNSS / GPS locations). In some examples, a minimum number of devices may be required to solve the system of equations in Block 110 (e.g., five devices). Block 110 can be repeated for the remaining devices.
[0012] The most inaccurate or "worst" GNSS / GPS positions can be identified by ranking or sorting the device positions. For example, the distance between the location determined in block 110 and the reported location can be compared. In another example, the setting that corresponds to the values (x i , y iThe device with the greatest discrepancy between the reported location and the location determined in block 110 is identified and discarded.
[0013] By discarding outliers (e.g., the largest discrepancy between the improved calculated locations and the reported coordinates), the process can further improve the determined locations of each device from Block 110. For example, the coordinates reported by the GNSS may be highly inaccurate, and any incremental correction of the reported coordinates may only marginally improve the determination of the device's actual location. In this case, the procedure may implement a simpler process for determining the device's location, such as relying solely on device-to-device distance measurements or determining the device's location by other means.
[0014] In Block 130, the process can update the locations with improved locations. For example, the process can generally repeat Block 110, but replace the set of reported coordinates with the improved calculated locations from Block 120. The update process performed in Block 130 can select devices in an order that begins with the largest discrepancy between the set of reported coordinates and the improved calculated locations from Block 120. The next device can be selected in descending order of the size of the discrepancy between the set of reported coordinates and the improved calculated locations.
[0015] In Block 140, the process can replace the device's instantaneously reported coordinates (e.g., the coordinates reported by GNSS) with a time-averaged representation of the device's reported coordinates (e.g., an average over a predetermined period, such as 24 hours). The processing performed in Block 140 can be similar to that in Block 110, except that it uses coordinates averaged over a specific period rather than the instantaneously reported coordinates.
[0016] The device's instantaneous reported coordinates can be based on the predetermined time period (e.g., 30 minutes). In this step, Block 140 can repeat the process of Block 110 one last time, replacing the set of reported coordinates (e.g., the coordinates at a single point in time) with the best averaged value of the device's reported coordinates (i.e., the "best" averaged coordinates can yield the smallest discrepancy between the device's instantaneous reported coordinates and the improved calculated location for the device).
[0017] In some examples, block 140 can be performed for the device with the largest discrepancy between the improved calculated position after blocks 120 or 130 and the set of reported coordinates from block 110. In some examples, block 140 can be skipped for devices where the discrepancy between the improved calculated position after blocks 120 or 130 and the set of reported coordinates from block 110 is less than a threshold (e.g., less than five meters difference). Block 140 can be performed for any other device in descending order of discrepancy.
[0018] In Block 150, the process can correct locations based on boundary information associated with a geographic representation of a structure containing the equipment. For example, if a site plan or other geographic representation of an area or structure where the equipment is located is available, boundary information can be used to further reduce the error between the improved calculated equipment locations and the actual spatial locations of the equipment. For instance, the building boundary can be identified, and any location outside the building boundary on the floor plan can be moved to the nearest location within the building boundary. In other examples, the location can be removed.
[0019] Illustrative examples of blocks 110-150 are provided throughout the disclosure, including in a sample structure with illustrative network devices. The figures also show sample corrections for the error average of all network device locations determined by the process compared to the coordinates reported by the GNSS / GPS.
[0020] Technical improvements are achieved through disclosure. For example, the process can offer multiple methods for improving the determination of the location of various devices in different environments, thereby creating better location accuracy of devices within a structure and improved data across the entire system. This further improves GNSS / GPS overall.
[0021] The in Fig. The process of measuring the range from device to device (e.g., AP to AP or gateway to gateway) shown in Figure 1 can be carried out using the method described in Fig. The structure and devices shown in section 2 will be implemented. Fig. Figure 2 illustrates, for example, the positions of a multitude of devices in conjunction with a structure, in accordance with some application examples. In this figure, the devices can include a multitude of access points 210 (represented as first access point 210A and second access point 210B), the structure 220, the gateway 230, and the GNSS network 240.
[0022] A group of access points (APs) 210 can refer to a network device that allows a wireless device, such as a client device or station (STA), to connect to a wired network. Thus, an AP essentially acts as an extension mechanism from an existing wired network to a multitude of wireless client devices.
[0023] The Access Points (APs) 210 can determine the distance between two devices using various methods (e.g., AP-to-AP range measurement or device-to-device range measurement), including the one described in Fig. 3. The procedure shown. In this example, each AP 210 can have an internal clock that is not synchronized with a central clock, so that a one-sided time measurement cannot be based on differences between timestamps or time shifts.
[0024] The process can begin with the first AP 210A initiating a scan to identify one or more network devices located within structure 220, including the second AP 210B. For example, the first AP 210A can perform a scan and send / transmit one or more test packets to listening devices within structure 220 (e.g., in accordance with IEEE 802.11i or 802.11r protocols). Transmitting the test packets can help determine if another access point, including the second AP 210B, is capable of providing a signal. After the first AP 210A detects the second AP 210B providing the signal, the first AP 210A begins an association process with the second AP 210B, as described in Fig. 3 shown.
[0025] In some examples, the process can initiate the authentication process between two access points (APs) in accordance with IEEE protocols. In addition to this authentication process, the timestamps contained in the probe packets can be reused to determine distance measurements between the devices. For example, the first AP, 210A, can send a probe packet to the second AP, 210B. Besides authenticating the AP on the network, the timestamp at which the probe packet was transmitted can be determined (e.g., from the header information in the probe packet) and used to identify the timestamp at which the probe packet was sent from the first AP, 210A, to the second AP, 210B. Both authentication and timestamping can be used in this process.
[0026] As in Fig. As shown in Figure 3, the process can begin at 310, with the first AP 210A sending a request to the second AP 210B.
[0027] At 320, the second AP 210B sends an acknowledgment (Ack) to the first AP 210A.
[0028] At 330, the second AP 210B transmits a reply to the first AP 210A based on the acknowledgment transmission. The reply may contain a timestamp indicating when the reply command was issued by the second AP 210B.
[0029] At 340, the first AP 210A can analyze the response and identify the timestamp associated with the internal clock of the second AP 210B. The first AP 210A can compare its current time with the timestamp contained in the response. The first AP 210A then responds to the second AP 210B with an acknowledgment.
[0030] At 350, the remaining timestamps (e.g., timestamp T1 and timestamp T4) can be transferred from the second AP 210B to the first AP 210A.
[0031] The four timestamps corresponding to the transmissions and acknowledgments can be recorded and stored on one or both AP 210s to determine the distance measurement between the devices. The four timestamps may include, for example: (1) the transmission of the response from the second AP 210B, which is recorded in Fig. 3 is represented as T1, (2) the reception of the response from the first AP 210A, which is in Fig. 3 is represented as T2, (3) the transmission of the confirmation of the first AP 210A, which is in Fig. 3 is represented as T3, and (4) the receipt of the confirmation from the second AP 210B, which is in Fig. Figure 3 is shown as T4. The first AP 210A can calculate the round-trip time by subtracting the timestamps from the second AP 210B and its own packet round-trip time stamps. The difference between these timestamps yields the packet's round-trip time, which is multiplied by the speed of light to obtain the distance and divided by two to obtain the AP-to-AP range measurement between the first AP 210A and the second AP 210B.
[0032] Back to Fig. 2: Structure 220 may comprise a building with physical barriers or building boundaries that could block or otherwise impede wireless transmissions between network devices located inside Structure 220 and devices located outside Structure 220. In some examples, Structure 220 may reduce the strength of wireless transmissions from the GNSS network 240 to the device, e.g., AP 210. This may result in inaccurate reported coordinates or the spatial arrangement of network devices located inside Structure 220.
[0033] Gateway 230 can provide Dynamic Host Configuration Protocol (DHCP), Network Address Translation (NAT), or routing functions for other network devices that are communicatively connected to Gateway 230 (e.g., authenticated or within a threshold distance). In some examples, Gateway 230 can also host a VPN (Virtual Private Network) client to provide a secure connection to a remote data center or other cloud services (e.g., outside the Gateway 220 structure).
[0034] The GNSS Network 240 can include suitable logic, circuitry, interfaces, and / or code that can provide navigation information to land-based devices via satellite links. In this respect, the GNSS Network 240 can, for example, include a variety of GNSS satellites, each capable of providing satellite transmissions based on a Global Navigation Satellite System (GNSS). Examples of GNSS systems include GPS, GLONASS, Galileo-based satellite systems, BeiDou, and / or compass systems. Accordingly, the GNSS Network 240 can provide position data via downlink satellite links transmitted by one or more of the GNSS satellites, enabling land-based devices, such as APs 210, to determine their location.The multiple GNSS satellites can directly provide position information to a land-based device, or the land-based device can use satellite transmissions from different satellites to determine its location, for example using triangulation methods.
[0035] Using the in Fig. With the structure and devices described in section 2, the system can improve the location determination of network devices, such as the location of each AP 210 in Fig. 2.
[0036] The first step can be taken with the one in block 110 in Fig. The process described in section 1 is consistent with this process, which can calculate and improve the accuracy of device localization from the reported coordinates and the measurements taken between devices. A clear placement of the individual access points 210 within the structure 220 is shown in [reference to relevant section]. Fig. 4 shown.
[0037] Fig. Figure 4 shows the true spatial locations and the inaccurately reported coordinates of network devices plotted on a ground map, according to some application examples. In this figure, the true spatial locations of the APs 210 are compared with the coordinates reported by the GPS chip in each AP 210 over a period of time (e.g., 24-hour range or averaged values). The reported coordinates 410 (represented as first reported coordinate 410A, second reported coordinate 410B, third reported coordinate 410C, fourth reported coordinate 4100, fifth reported coordinate 410E, sixth reported coordinate 410F, and seventh reported coordinate 410G) are provided for each of the APs whose actual locations are designated as APs 210 by Fig. 4 are shown (represented as first AP 210A, second AP 210B, third AP 210C, fourth AP 210D, fifth AP 210E, sixth AP 210F and seventh AP 210G).
[0038] As shown in this example, the distance between the reported coordinates 410 and the actual location of each access point 210 can vary over large or small distances inside or outside structure 220. An example of a large distance between the reported coordinates and the actual locations is the access point at the south end of structure 220, shown as second access point 210B and second reported coordinate 410B. An example of a small distance between the reported coordinates and the actual locations is the access point at the northeast end of structure 220, shown as sixth access point 210F and sixth reported coordinate 410F. In this example, the aggregate calculation comparing the reported coordinates 410 with the actual spatial locations of the access points 210 can correspond to an average GNSS / GPS error of approximately 20.8 meters across all locations.
[0039] Several methods can be used to calculate the differences between the reported coordinates 410 and the actual spatial locations of the APs 210, so that the distances calculated from a set of reported coordinates 410 for the APs 210 are adjusted to match the device-to-device range measurements. This can result in a set of nonlinear equations representing Euclidean distances between the adjusted locations. For example, the reported coordinates can be stored as coordinates on an X and Y axis, including (x) i , y i The nonlinear equations may contain unknown values that compare the reported location with the actual location, or the delta / difference between the two locations (Δx). i , Δy i) for each device. The unknown values can represent the adjustment required to make the distance measurements work from device to device (e.g., using the values in Fig. The goal is to compare the distance measurements from device to device (discussed in the 3) with the distances calculated from the reported coordinates (x, y). Due to GPSS / GPS errors, these values may not be the same.
[0040] In some examples, the process can create one or more formulas to determine the difference between the reported and actual values. For example, with a number N of devices, there might be 2*N unknown values (i.e., N*(Δx)). i , Δy i ) couples). [(x1+Δx1)−(x2+Δx2)]2+[(y1+Δy1)−(y2+Δy2)]2=D122 [(xi+Δxi)−(xj+Δxj)]2+[(yi+Δyi)−(yj+Δyi)]2=Dij2
[0041] To solve for the 2*N unknown values, the data correction process can choose multiple equations. For example, the reported coordinates of the first AP 210A could be (x, y), and the adjusted position of the first AP 210A could be (x + Δx, y + Δy).
[0042] The adjusted location of the first AP 210A can be based on the device-to-device range measurement, including the one in Fig. 2 described procedure. Once the device-to-device distance measurement is determined, the device-to-device distance measurement (D) can be performed. ij ) can be equated with the Euclidean distances calculated between the adjusted locations of two AP 210. The solution for (Δx, Δy) can be used for data correction.
[0043] In some examples, this step may also include converting the nonlinear equations into linear equations. A Taylor series expansion can be used for this conversion. The initial set of equations to be solved for (Δx, Δy) might, for example, include the following: ƒ(xi,xj,yi,yj)={[xi−xj]2+[yi−yj]2}1 / 2
[0044] The transformed Taylor series expansion corresponds to the following equation: ƒ(xi+Δxi,xj+Δxj,yi+Δyi,yj+Δyj)=ƒ(xi,xj,yi,yj)+∂ƒ()∂xiΔxi+∂ƒ()∂xiΔxj+∂ƒ()∂yiΔyi+∂ƒ()∂yjΔyj +higher order terms
[0045] This can be simplified by defining the following equation: rij={[xi−xj]2+[yi−yj]2}1 / 2
[0046] If we set the equation r ij Assuming distance measurements from device to device, the following linear equation results depending on the delta differences (Δ's): Dij+rij+(xi+xjrij)Δxi+(xj−xirij)Δxj+(yi−yjrij)Δyj+(yj−yirij)Δyj (xi−xjrij)Δxi+(xj−xirij)Δxj+(yi+yjrij)Δyi+(yj−yirij)Δyj=Dij−rij
[0047] The transformed linear equations can be represented in matrix form to find the unknown pairs (Δx). i , Δy i to solve (e.g., Δ = A) -1 * b).
[0048] In some examples, the processing step of block 110 (shown in Fig. 4) can be repeated by iteratively performing the data correction process. The delta / difference values between the reported positions and the positions determined from the distance measurements between devices (Δ) can be recalculated until the values converge (e.g., iteration step or delta reaches zero). (xinew=xi+Δxi,xjnew=xj+Δxj,yinew=yi+Δyi,yjnew=yj+Δyj)
[0049] For simplicity, the examples presented here are shown as two-dimensional, as are the subsequent examples discussed here (e.g., x, y). However, each of the processing steps discussed in the disclosure can be modified to include a third dimension (z), as the updated Euclidean distance calculation below demonstrates. [(xi+Δxi)−(xj+Δxj)]2+[(yi+Δyi)−(yj+Δyj)]+[(zi+Δzi)−(zj+Δzj)]2= Dij22
[0050] As a clear example of incorporating a three-dimensional (3D) data correction method, the network device can be mounted on a ceiling inside a building structure. The ceiling height can vary, which changes the z-value of a three-dimensional equation as well as the x- and y-values. Data correction can be used to determine when the latitude and longitude coordinates of the network device also need to be adjusted for the height.
[0051] The result from Block 110 can determine the calculation of the common coordinates and the correction values for each of the devices (e.g., APs 210). In this illustrative example, the corrected geolocations or coordinates of each AP can be adjusted, thereby also adjusting the mean error of the calculated locations. In this example, the mean error of approximately 20.8 meters (GPS error on average across all locations) can be reduced to 9.7 meters.
[0052] In Block 120, the improved calculated locations from Block 110 can be compared with the set of reported coordinates for a set of network devices (e.g., APs). The location pair with the greatest discrepancy (e.g., between the received and calculated coordinates) can then be discarded (e.g., the least accurate or "worst" locations). In some examples, a minimum number of devices may be required to solve the system of equations in Block 110 (e.g., five devices based on 2*N unknown values, leaving four anchor devices).
[0053] A clear example of Block 120 is in Fig. 5 shown. In this example, the “S” network device shown as the second AP 210B and the second reported coordinate 410B (e.g., in the southern part of structure 220 of Fig. 4) The least accurate or “worst” positions between the raw GPS value and the true value. The data correction process can identify the second AP 210B and the second reported coordinate 410B and remove them from further calculations.
[0054] In some examples, more than one AP can be removed. For instance, the data correction process can identify the second AP 210B and the second reported coordinate 410B, as well as the fourth AP 210D and the fourth reported coordinate 4100, and remove both from further calculations.
[0055] Once the second AP 210B and the second reported coordinate 410B are removed (and / or additional APs / reported coordinates), the process can repeat block 110 to calculate and improve the accuracy of the device location based on the reported coordinates and device-to-device measurements. For example, block 110 can be repeated for the remaining devices without the second AP 210B to determine the common location calculation and correction values.
[0056] As in Fig. As shown in Figure 5, the second AP 210B and the second reported coordinate 410B, as well as the fourth AP 210D and the fourth reported coordinate 4100, are removed from the plotted positions. The process repeats block 110 to calculate and improve the accuracy of the device position from the reported coordinates and the device-to-device measurements. The corrected positions 510 (shown as first corrected position 510A, third corrected position 510C, fifth corrected position 510E, sixth corrected position 510F, and seventh corrected position 510G) are identified.
[0057] In block 130, the process can repeat block 110, but replace the set of reported coordinates with the corrected positions. For example, as described here, the corrected positions are adjusted to match the distance measurements from device to device. This can result in a set of nonlinear equations representing Euclidean distances between the corrected positions. The corrected positions can be stored as coordinates on an X and Y axis, including (x i , y i The nonlinear equations may contain unknown values that compare the reported location with the actual location, or the delta / difference between the two locations (Δx). i , Δy i ) for each device. The unknown values can represent the adjustment required to make the distance measurements work from device to device (e.g., using the values in Fig. The distance measurements from device to device (discussed in the 3) and the distances obtained from the corrected locations should be compared. The formulas described in Block 110 can be repeated here.
[0058] The devices can be selected in an order starting with the largest discrepancy between the coordinate set and the corrected location from Block 120. In this example, the largest discrepancy is the network device "NW," corresponding to the fifth AP 210E, the fifth reported coordinate 410E, and the fifth corrected location 510E. The next device is selected in descending order of the magnitude of the discrepancy between the coordinate set and the corrected locations, corresponding to the third AP 210C, the third reported coordinate 410C, and the third corrected location 510C. The corrected geolocations can be reduced from 9.7 m to 4.1 m in this example.
[0059] In some examples, a single point in time is used for the calculation, rather than the average of reported locations over a period. In some examples, the output of blocks 120 or 130 can be for a specific device, rather than a group of devices. In some examples, the reported location of AP 210 is based on a single point in time. This can be repeated for each sample over time. In some examples, a time-averaging window can be used. These reduced processing steps can also decrease the computational effort.
[0060] Instead of a single point in time (e.g., the reported GNSS coordinates of the device), a time-averaging process based on the reported locations can be used to further improve the calculated location of each device, as shown in Block 140. For example, the process in Block 140 can first identify the network device with the largest deviation, which corresponds to the "NW" network device, associated with the fifth AP 210E, the fifth reported coordinate 410E (e.g., the average of a period), and the fifth corrected location 510E, and then perform a time-averaging process. In time averaging, the device's instantaneously reported coordinates can be replaced by reported coordinates over a time frame of the device (e.g., an average over a predetermined period, such as 24 hours).
[0061] Fig. Figure 6 illustrates the use of an average data set (e.g., using 30 minutes of data) and shows the deviation between the output after reapplying the data comparison and correction process from Block 110 for the fifth AP 210E and the reported coordinates for the fifth AP 210E at each time sample. In this example, the position corresponding to the smallest deviation is selected and can replace the reported coordinates (e.g., from GNSS / GPS) in Block 120 or 130. The process can then repeat Block 110 using the new corrected position from a single point in time or a time average.
[0062] In some examples, Block 140 can be performed for the network device with the largest deviation between the corrected location from Block 130 and the original set of reported coordinates before Block 110 is performed. In some examples, Block 140 can be performed for each device in decreasing order of deviation after the first network device. In this example, the mean error corresponding to the corrected geolocations after Block 140 can be reduced from 4.1 meters to 3.1 meters.
[0063] The locations can be further improved by using a geographic representation of the device locations within the vicinity of Structure 220. For example, if building boundaries, a floor plan, or other geographic representation of the device locations in the vicinity are available in Block 150, boundary information from the map can be used to further reduce the error between the improved calculated device locations and the actual spatial locations of the devices. The spatial locations of the network devices can be compared to the known boundaries of a structure (e.g., Structure 220). If a determined location of a particular network device is outside the boundaries of the structure, the determined location can be shifted so that it lies within the boundaries of the structure. This might involve, for example, projecting the corrected location onto the nearest wall of the structure.In this example, the corrected geolocations can be reduced from the original error value of 20.8 meters to 2.5 meters.
[0064] In some examples, the floor map may also include ceiling or floor heights of structure 220. These values can be used to estimate the z-value of network devices in the vicinity. The spatial positions of the network devices can also be compared in block 150 with known floor / ceiling boundaries of structure 220.
[0065] Fig. Figure 7 shows the true spatial locations, the reported locations based on the small time average corresponding to the minimum deviation, as described in Block 140, and the calculated location of network devices according to Block 150, plotted on a geographic boundary representation of the structure, according to some application examples. The comparison of true and calculated locations is shown in... Fig. 7 with the true locations and the reported locations in Fig. As shown in section 4, the procedure offers several methods for improving the location determination of each of the devices depicted in these examples. These methods ensure better location accuracy of the devices within the structure and improve the data used throughout the system.
[0066] It should be noted that the terms "optimize," "optimal," and the like, as used here, can be interpreted as making or achieving performance as effective or perfect as possible. However, as any professional reading this document will recognize, perfection cannot always be achieved. Accordingly, these terms can also mean making or achieving performance as good or effective as possible or practical under the given circumstances, or making or achieving performance better than that which can be achieved with other settings or parameters.
[0067] Fig. Figure 8 shows an example of a computer component that can be used to implement location detection in accordance with various examples. Regarding Fig. In the example implementation of..., the computer component 800 can be, for example, a server computer, a controller, or another similar computer component capable of processing data. Fig. The computer component 800 comprises a hardware processor 802 and a machine-readable storage medium 804.
[0068] The Hardware Processor 802 can be one or more central processing units (CPUs), semiconductor-based microprocessors, and / or other hardware devices capable of retrieving and executing instructions stored in the Machine-Readable Memory Medium 804. The Hardware Processor 802 can retrieve, decode, and execute instructions, such as instructions 806-812, to control processes or location detection operations. Alternatively or in addition to retrieving and executing instructions, the Hardware Processor 802 can include one or more electronic circuits comprising electronic components for performing the functionality of one or more instructions, such as a Field Programmable Gate Array (FPGA), an Application-Specific Integrated Circuit (ASIC), or other electronic circuits.
[0069] A machine-readable storage medium, such as the 804 machine-readable storage medium, can be any electronic, magnetic, optical, or other physical storage device that contains or stores executable instructions. For example, the 804 machine-readable storage medium can be RAM (Random Access Memory), NVRAM (Non-Volatile RAM), EEPROM (Electrically Erasable Programmable Read-Only Memory), a storage device, an optical disk, or the like. In some examples, the 804 machine-readable storage medium can be a non-transitory storage medium, the term "non-transitory" excluding transitive transmission signals. As detailed below, the 804 machine-readable storage medium can be encoded with executable instructions, such as instructions 806 through 812.
[0070] The 802 hardware processor can execute instruction 806 to obtain coordinates for a set of access points or other network devices, and in some examples, it can also calculate a distance between the devices. For example, one or more access points 210 can obtain a set of coordinates from the Global Navigation Satellite System (GNSS) or the Global Positioning System (GPS) and calculate a distance between the network devices, representing a first set of distance measurements calculated for a set of network devices (e.g., APs).
[0071] The 802 hardware processor can execute the 808 instruction to obtain distance measurements for the set of access points. For example, one or more 210 access points can obtain a second set of device-to-device range measurements for the set of network devices.
[0072] In some examples, instructions 806 and 808 can be executed simultaneously or in parallel.
[0073] The 802 hardware processor can execute the 810 instruction to perform a data correction process. For example, one or more access points 210 can perform a data correction process by reconciling the first set of distance measurements with the second set of device-to-device distance measurements or other device distance measurements. In some examples, one or more access points 210 can determine a set of discrepancies between an area calculated from the coordinate set and the second set of area measurements.
[0074] In some examples, the hardware processor can execute 802 instructions that correspond to the one in Fig. This corresponds to the block shown in Figure 1. For example, the 802 hardware processor can execute an instruction to calculate and improve the accuracy of the device location based on the reported coordinates (e.g., using the Earth as a reference frame or selected from a set of latitude, longitude, and altitude, Cartesian x, y, or z values, polar coordinates, etc.) and calculate and improve device-to-device measurements; execute a command to discard the least accurate (i.e., worst) reported coordinates; execute a command to update the locations with improved calculated locations; execute a command to use GNSS / GPS time-history data to improve the accuracy of the device location; and execute a command to correct locations based on a ground map.
[0075] The 802 hardware processor can execute instruction 812 to update the coordinates. For example, one or more access points 210 or other network devices can update the coordinate set by adjusting it based on the set of deviations.
[0076] Fig. Figure 9 shows a block diagram of an example computer system 900, in which various examples described here can be implemented. The computer system 900 comprises a bus 902 or other communication mechanism for transmitting information, and one or more hardware processors 904 connected to the bus 902 for processing information. The hardware processor(s) 904 could, for example, be one or more general-purpose microprocessors.
[0077] The Computer System 900 also includes main memory 906, such as random access memory (RAM), a cache, and / or other dynamic memory devices connected to bus 902 to store information and instructions to be executed by processor 904. Main memory 906 can also be used to store temporary variables or other intermediate information during the execution of instructions to be carried out by processor 904. When such instructions are stored in memory media accessible to processor 904, the Computer System 900 becomes a specialized machine adapted to perform the operations specified in the instructions.
[0078] The Computer System 900 also includes a read-only memory (ROM) 908 or other static storage device connected to bus 902 to store static information and instructions for processor 904. A storage device 910, such as a magnetic disk, optical disk, or USB flash drive, is provided and connected to bus 902 to store information and instructions.
[0079] The Computer System 900 can be connected via the bus 902 to a display 912, such as a liquid crystal display (LCD) (or a touchscreen), to show information to a computer user. An input device 914, including alphanumeric and other keys, is coupled to the bus 902 to transmit information and command selections to the processor 904. Another type of user input device is the cursor control 916, such as a mouse, trackball, or cursor direction keys, for transmitting directional information and command selections to the processor 904 and for controlling cursor movement on the display 912. In some examples, the same directional information and command selections as with cursor control can be implemented by receiving touch inputs on a touchscreen without a cursor.
[0080] The Computer System 900 can include a user interface module for implementing a graphical user interface, which can be stored on a mass storage device as executable software code that is executed by the computer device(s). This and other modules can include components such as software components, object-oriented software components, class components and task components, processes, functions, attributes, procedures, subroutines, segments of program code, drivers, firmware, microcode, circuits, data, databases, data structures, tables, arrays, and variables.
[0081] In general, the words "component," "engine," "system," "database," "data store," and the like, as used here, can refer to logic embodied in hardware or firmware, or to a collection of software instructions that may have entry and exit points and are written in a programming language such as Java, C, or C++. A software component may be compiled and linked into an executable program, installed in a dynamic link library, or written in an interpreted programming language such as BASIC, Perl, or Python. It is understood that software components may be invoked by other components or by themselves, and / or may be invoked in response to detected events or interruptions. Software components configured to run on computer devices may be stored on a computer-readable medium, such as...Software code can be provided on a compact disc, digital video disc, flash drive, magnetic disk, or other tangible medium, or as a digital download (and may initially be stored in a compressed or installable format that requires installation, decompression, or decryption before execution). Such software code may be stored partially or entirely in the memory of the executing computer device for execution by the computer device. Software instructions may be embedded in firmware, such as an EPROM. Furthermore, the hardware components may consist of interconnected logic units such as gates and flip-flops, and / or programmable units such as programmable gate arrays or processors.
[0082] The Computer System 900 can implement the techniques described herein using custom hard-wired logic, one or more ASICs or FPGAs, firmware, and / or program logic which, in combination with the Computer System, makes or programs the Computer System 900 to be a special-purpose machine. By way of example, the techniques described herein are executed by the Computer System 900 in response to the Processor(s) 904 executing one or more sequences of one or more instructions contained in the main memory 906. Such instructions may be read into the main memory 906 from another storage medium, such as the storage device 910. The execution of the instruction sequences contained in the main memory 906 causes the Processor(s) 904 to perform the procedural steps described herein.In alternative examples, hard-wired circuits can be used instead of, or in combination with, software instructions.
[0083] The term "non-volatile media" and similar terms as used herein refer to all media on which data and / or instructions are stored that cause a machine to operate in a particular way. Such non-volatile media may include both non-volatile and volatile media. Non-volatile media include, for example, optical or magnetic disks, such as the Storage Device 910. Volatile media include dynamic storage devices, such as the Main Memory 906. Common forms of non-volatile media include, for example, floppy disks, flexible disks, hard disks, solid-state drives, magnetic tapes or other magnetic data storage media, CD-ROMs, other optical data storage media, physical media with hole patterns, RAM, PROM and EPROM, FLASH-EPROM, NVRAM, other memory chips or cartridges, and their networked versions.
[0084] Non-transitory media differ from transmission media but can be used in conjunction with them. Transmission media are involved in the transfer of information between non-transitory media. Examples of transmission media include coaxial cable, copper and fiber optic cables, including the wires that make up the 902 bus. Transmission media can also take the form of sound or light waves, such as those generated in radio and infrared data communication.
[0085] The Computer System 900 also includes a Communication Interface 918, which is connected to the Bus 902. The Communication Interface 918 provides a bidirectional data communication connection to one or more network connections that are connected to one or more local area networks (LANs). For example, the Communication Interface 918 could be an ISDN (Integrated Services Digital Network) card, a cable modem, a satellite modem, or a modem to establish a data communication connection to a corresponding type of telephone line. Alternatively, the Communication Interface 918 could be a LAN (Local Area Network) card to establish a data communication connection to a compatible LAN (or a WAN component for communication with a WAN). Wireless connections can also be implemented.In each of these implementations, the 918 communication interface sends and receives electrical, electromagnetic, or optical signals that transmit digital data streams representing various types of information.
[0086] A network connection typically enables data communication over one or more networks to other data devices. For example, a network connection can establish a connection over a local network to a host computer or to data devices of an Internet service provider (ISP). The ISP, in turn, offers data communication services over the worldwide packet data communication network, commonly known today as the "Internet." Both the local network and the Internet use electrical, electromagnetic, or optical signals to transmit digital data streams. The signals across the various networks, the signals on the network connection, and the communication interface 918, which transmit digital data to and from the computer system 900, are examples of transmission media.
[0087] The Computer System 900 can send messages and receive data, including program code, via the network(s), network connection, and communication interface 918. In the Internet example, a server could transmit requested code for an application program via the Internet, the ISP, the local network, and communication interface 918.
[0088] The received code can be executed by the processor 904 upon receipt and / or stored in the memory device 910 or other non-volatile memory for later execution.
[0089] Each of the processes, methods, and algorithms described in the preceding sections can be embodied in code components and fully or partially automated by them, which are executed by one or more computer systems or computer processors with computer hardware. The one or more computer systems or computer processors can also be operated in such a way as to support the execution of the corresponding operations in a cloud computing environment or as Software as a Service (SaaS). The processes and algorithms can be partially or fully implemented in application-specific circuits. The various features and procedures described above can be used independently or combined in various ways.Various combinations and subcombinations are said to fall within the scope of this disclosure, and certain procedural or process blocks may be omitted in some implementations. The methods and processes described herein are also not restricted to a particular order, and the associated blocks or states may be executed in other suitable orders, in parallel, or otherwise. Blocks or states may be added to or removed from the disclosed examples. The execution of certain operations or processes may be distributed across computer systems or computer processors, not just within a single machine, but distributed across a number of machines.
[0090] As used herein, a circuit can be implemented in any form of hardware, software, or a combination thereof. For example, one or more processors, controllers, ASICs, PLAs, PALs, CPLDs, FPGAs, logic components, software routines, or other mechanisms can be implemented to form a circuit. In implementation, the various circuits described herein can be implemented as discrete circuits, or the described functions and features can be partially or completely distributed across one or more circuits.Even if various features or functional elements are individually described or claimed as separate circuits, these features and functions may be shared by one or more common circuits, and such a description is not intended to require or imply that separate circuits are necessary to implement these features or functions. If a circuit is implemented wholly or partly in software, such software may be implemented to operate with a computer or processing system capable of performing the functionality described therein, such as the Computer System 900.
[0091] As used herein, the term "or" can be understood in both an inclusive and an exclusive sense. Furthermore, the description of resources, processes, or structures in the singular is not to be understood as excluding the plural. Conditional expressions such as "may," "could," "might," or "can," unless explicitly stated otherwise or understood differently in context, are generally intended to express that certain examples include certain features, elements, and / or steps, while other examples do not.
[0092] Unless explicitly stated otherwise, the terms and expressions used in this document, as well as their variations, are not to be understood as restrictive but rather as open-ended. Adjectives such as "conventional," "traditional," "normal," "standard," "known," and terms of similar meaning are not to be understood as limiting the described subject matter to a specific period or to an item available at a particular time, but should be understood as encompassing conventional, traditional, normal, or standard technologies that may be available or known now or at any time in the future.The presence of expansive words and phrases such as “one or more”, “at least”, “but not limited to” or similar phrases in some cases is not to be understood as meaning that the narrower case is intended or required when such expansive phrases are not present. QUOTES INCLUDED IN THE DESCRIPTION
[0000] This list of documents cited by the applicant was automatically generated and is included solely for the reader's convenience. The list is not part of the German patent or utility model application. The DPMA accepts no liability for any errors or omissions. Cited patent literature
[0000] AP 210 A [0024, 0041, 0042]
Claims
[1] A procedure comprising the following: Determining a set of coordinates, where the set of coordinates is provided using the Earth as a reference frame; Calculation of a distance between APs, representing a first set of distance measurements calculated for a set of access points (APs); Determine a second set of AP-to-AP distance measurements for the set of APs; and Performing a data correction process by matching the first set of distance measurements and the second set of AP-to-AP distance measurements, wherein the data correction process includes: Determining a set of deviations between an area calculated from the set of coordinates and the second set of AP-to-AP area measurements; and Updating the coordinate set by adjusting the coordinate set based on the set of deviations. [2] The method according to claim 1, wherein the quality of the wireless transmissions from a global navigation satellite system (GNSS) to a first AP and a second AP in the group of APs is degraded. [3] The method according to claim 1, further comprising: During the data correction process, the least accurate GPS position is discarded from the coordinate set. [4] The method according to claim 1, further comprising: after performing the data correction process, calculating a set of improved calculated locations from the set of coordinates; and Replacing the set of coordinates with the improved calculated locations. [5] The method according to claim 1, further comprising: Using the history of the Global Navigation Satellite System (GNSS) to generate improved calculated locations from the updated coordinate set. [6] The method according to claim 1 further comprises: Receiving a floor map; and during the data correction process, updating the updated coordinate set using the ground map. [7] A non-transitory, computer-readable storage medium that stores a plurality of instructions that can be executed by one or more processors, wherein the plurality of instructions, when executed by the one or more processors, cause the one or more processors to: to obtain a set of coordinates, where the set of coordinates is provided using the Earth as a reference frame; Calculating a distance between network devices, representing a first set of device-to-device distance measurements calculated for a set of network devices; Obtain a second set of device-to-device distance measurements for the set of network devices; and Performing a data correction process by comparing the first set of device-to-device distance measurements with the second set of device-to-device distance measurements, wherein the data correction process includes: Determining a set of deviations between an area calculated from the set of coordinates and the second set of device-to-device area measurements; and Updating the coordinate set by adjusting the coordinate set based on the set of deviations. [8] The computer-readable storage medium according to claim 7, wherein the set of device-to-device distance measurements corresponds to a first network device and a second network device in the set of network devices. [9] The computer-readable storage medium according to claim 7, wherein the quality of the wireless transmissions from a global navigation satellite system (GNSS) to a first device and a second device in the group of network devices is degraded. [10] The computer-readable storage medium according to claim 7, wherein the one or more processors further perform the function of: During the data correction process, the least accurately reported GNSS (Global Navigation Satellite System) position is discarded from the coordinate set. [11] The computer-readable storage medium according to claim 7, wherein the one or more processors further serve to: During the data correction process, calculate a set of improved calculated locations from the set of coordinates; and replace the set of coordinates with the improved calculated locations. [12] The computer-readable storage medium according to claim 7, wherein the one or more processors further serve to: Using the history of the Global Navigation Satellite System (GNSS) to generate improved calculated locations from the updated set of coordinates. [13] The computer-readable storage medium according to claim 7, wherein the one or more processors further serve to: to receive a floor map; and to update the updated coordinate set using the ground map during the data correction process. [14] A computer system with: a storage facility; and one or more processors configured to execute machine-readable instructions stored in memory to perform the procedure, which includes the following: Procurement of a set of coordinates of network devices, wherein the set of coordinates is provided using the Earth as a reference frame; Calculation of a distance between the network devices, representing a first set of distance measurements; Obtain a second set of distance measurements for the set of network devices; and Performing a data correction process by comparing the first set of distance measurements with the second set of distance measurements, wherein the data correction process includes: Determining a set of deviations between an area calculated from the set of coordinates and the second set of area measurements; and Updating the coordinate set by adjusting the coordinate set based on the set of deviations. [15] The computer system according to claim 14, wherein the set of device-to-device distance measurements corresponds to a first network device and a second network device in the set of network devices. [16] The computer system according to claim 14, wherein the quality of the wireless transmissions from a global navigation satellite system (GNSS) to a first network device and a second network device in the group of network devices is degraded. [17] The computer system according to claim 14, wherein the method further comprises: During the data correction process, the least accurately reported location is discarded from the set of coordinates. [18] The computer system according to claim 17, wherein the method further comprises: after performing the data correction process, calculating a set of improved calculated locations from the set of coordinates; and Replacing the set of coordinates with the improved calculated locations. [19] The computer system according to claim 14, wherein the method further comprises: Using a global navigation satellite system (GNSS) to generate improved calculated locations from the updated set of coordinates. [20] The computer system according to claim 14, wherein the method further comprises: Receiving a floor map; and during the data correction process, updating the updated coordinate set using the ground map.