Limitations of Barometric Sensor Calibration by Sporadic Data Collection
The server-based method addresses the calibration challenges of consumer-grade barometric sensors by determining and updating calibration results, ensuring accurate and reliable altitude determination in mobile devices.
Patent Information
- Application Number
- JP2021096894
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-06-04
- Filing Date
- 2021-06-09
- Publication Date
- 2025-06-17
- Estimated Expiration
- 2041-06-09
AI Technical Summary
Consumer-grade barometric sensors in mobile devices are often not properly calibrated, and existing calibration methods may be unreliable due to user intervention issues and calibration drift over time.
A method executed by a server that involves receiving data packets from mobile devices, determining multiple calibration results, updating a historical calibration table based on satisfying rules, adjusting previous calibration results with weighting values, and selecting a combined calibration result to transmit back to the device for sensor calibration.
The method provides a reliable and accurate calibration of barometric pressure sensors in mobile devices, minimizing user intervention and addressing calibration drift, thereby improving altitude determination accuracy.
Smart Images

Figure 0007693404000003 
Figure 0007693404000004 
Figure 0007693404000005
Abstract
Description
Technical Field
[0001] (Related Application) This application claims priority to U.S. Provisional Patent Application No. 63 / 037,899, titled "Limitations on Barometric Calibration by Sporadic Data Collection," filed on June 11, 2020, and claims priority to U.S. Provisional Patent Application No. 17 / 303,691, titled "Limitations on Barometric Sensor Calibration by Sporadic Data Collection," filed on June 4, 2021, the entire contents and all purposes of which are incorporated herein by reference.
Background Art
[0002] Some mobile devices are part of a system that determines the altitude of the mobile device based on barometric pressure. Such systems necessarily rely on a properly calibrated barometric sensor within the mobile device.
[0003] Under ideal conditions, the barometric sensor is already properly adjusted when the mobile device is shipped from the factory. Alternatively, the user of the mobile device follows instructions regarding how to calibrate the barometric sensor of the mobile device.
[0004] However, most consumer-grade barometric sensors are not properly adjusted, and the willingness or ability of most users to adjust the barometric sensor of their mobile devices is unknown or unreliable. Further, even if the barometric sensor is accurately calibrated at some point, the calibration can drift over time, thereby rendering the calibration insufficient and the mobile device's altitude determination ability inaccurate, unreliable, or useless.
[0005] Therefore, the mobile device needs to communicate with a system that calibrates the barometric pressure sensor. This calibration is usually done automatically, i.e., without user intervention or knowledge. However, the calibration accuracy by such a calibration system may be suspect if the calibration technique used thereby is not well-suited to the types of situations that the user and the mobile device may encounter. Summary of the Invention Means for Solving the Problems
[0006] In some embodiments, the method executed by the server includes the following.
[0007] Receiving data packets from the device
[0008] Determining a plurality of calibration results based on the data in the data packet, each of the plurality of calibration results being for calibrating the barometric pressure sensor of the device, and the device currently uses the current calibration value for calibrating the barometric pressure sensor.
[0009] For each calibration result of the plurality of calibration results, when the server determines that the comparison between the calibration result and the current calibration value indicates that the calibration result satisfies the rule regarding the relationship between the calibration result and the current calibration value, updating the historical calibration table with the calibration result, the historical calibration table includes a plurality of previously determined calibration results for the barometric pressure sensor, and the plurality of previously determined calibration results include the calibration result after updating the historical calibration table.
[0010] For each calibration result of the plurality of calibration results, when the comparison between the calibration result and the current calibration value indicates that the calibration result does not satisfy the rule, not updating the historical calibration table with the calibration result.
[0011] Determining, by the server, a plurality of weighting values corresponding to the plurality of previously determined calibration results in the historical calibration table.
[0012] The server adjusts each of a plurality of previously determined calibration results with a corresponding weighting value of a plurality of weighting values to obtain a plurality of weighted calibration results, and determines a combined calibration result by combining the plurality of weighted calibration results.
[0013] The server selects, based on a selection criterion, a calibration value selected from the combined calibration result and the current calibration value, and
[0014] The server transmits to the device the calibration value selected for use by the device when calibrating the barometric pressure sensor.
[0015] In some embodiments, each calibration result and each calibration value include a calibration offset and a confidence interval (providing a possible error range), and the above rules are based on the relationship between the calibration offset, the confidence interval, or the possible error range of the calibration result and the current calibration value.
[0016] In some embodiments, the server adjusts a plurality of previously determined calibration results based on respective elapsed times to obtain a plurality of adjusted previously determined calibration results. The server determines a combined calibration value using the results of the plurality of adjusted previously determined calibration values.
[0017] In some embodiments, the selection criterion is based on 1) the minimum uncertainty of the combined calibration result and the current calibration value, 2) the minimum uncertainty less than the uncertainty threshold of the combined calibration result and the current calibration value, 3) the highest priority calibration technique among the plurality of calibration techniques used to determine the combined calibration result and the current calibration value, or 4) the central calibration value of the combined calibration result and the current calibration value.
[0018] In some embodiments, the data in a data packet includes a plurality of data items. The plurality of data items are used in a plurality of calibration techniques to determine a plurality of calibration results. Each calibration result of the plurality of calibration results is determined by one of the calibration techniques. The plurality of data items includes 1) sensor characteristic data related to an air pressure sensor and 2) current state data related to the state of the device at the time the data packet was created by the device. The sensor characteristic data includes 1) device identification data that uniquely identifies the device and can identify the model type of the air pressure sensor, 2) sensor type data that identifies the model type of the air pressure sensor, and 3) device type data that identifies the model type of the device. The current state data includes 1) pressure data indicating an air pressure measurement performed by the air pressure sensor, 2) time data indicating the time at which the air pressure sensor performed the air pressure measurement, 3) position data indicating the region where the device was located when the air pressure sensor performed the air pressure measurement, and 4) application data indicating the application that was operating on the device when the air pressure sensor performed the air pressure measurement. The method further includes determining a calibration result based on any suitable or useful combination of the data items and other suitable data.
[0019] In some embodiments, the method is performed using one or more data packets.
[0020] In some embodiments, a system performs the method or a non-transitory machine-readable medium implements program instructions to perform the method.
Brief Description of the Drawings
[0021]
Figure 1
[0022]
Figure 2
[0023]
Figure 3
[0024]
Figure 4
[0025]
Figure 5
[0026]
Figure 6
[0027]
Figure 7
[0028]
Figure 8
[0029]
Figure 9
[0030]
Figure 10
[0031]
Figure 11
[0032]
Figure 12
[0033]
Figure 13
[0034]
Figure 14
[0035]
Figure 15
[0036]
Figures 16 - 19
[0037]
Figure 20
[0038]
Figure 21
DETAILED DESCRIPTION OF THE INVENTION
[0039] The calibration system or calibration method described herein enables calibration of the barometric pressure sensor of a mobile or user device using several calibration techniques that take into account the user device and various situations that the user may encounter. The combination of calibration techniques and the analysis of their results provides a relatively accurate calibration of the barometric pressure sensor, thereby resulting in a relatively accurate and reliable altitude determination by the user device.
[0040] In some embodiments, the calibration system calibrates the barometric pressure sensor at sporadic times under non-ideal conditions. When calibration data is available, the calibration system examines and processes the available calibration data, executes any calibration techniques enabled by the calibration data, combines the results of the calibration techniques to obtain a new calibration value, determines the quality or reliability of the new calibration value, determines whether to adopt or reject the new calibration value, and determines whether to update the user device with the new calibration value.
[0041] The advantages of the present invention include enabling calibration of a barometric pressure sensor with minimal data across various environments. Further, the calibration system and method require little or no user intervention if the resulting calibration values are associated with good confidence. Further, if user intervention is requested or required, the calibration system allows the user to freely select a location and can process indoor locations on upper floors of a building. Further, the present invention minimizes any disruption to the user and provides a seamless and automated method for calibrating a barometric pressure sensor. Further, the minimal data used for calibration helps reduce power consumption by the user device or can alleviate privacy concerns.
[0042] FIG. 1 is a simplified schematic diagram of an exemplary calibration system 100 for calibrating a barometric pressure sensor in a user's device, according to some embodiments. In some embodiments, calibration system 100 generally includes a server 102 and a number of mobile or user devices 104. Server 102 generally communicates with user devices 104 via network 106. Server 102 generally represents one or more computer devices, particularly cloud computing systems, server farms, sets of computers, desktop computers, notebook computers, etc. Each of user devices 104 generally represents a smartphone, mobile phone, personal computer, etc. Network 106 generally represents any suitable combination of the Internet, mobile phone communication systems, broadband cellular networks, wide area networks (WANs), local area networks (LANs), wireless networks, networks based on the IEEE 802.11 standard family (Wi-Fi networks), and other data communication networks.
[0043] In some embodiments, each user device 104 generally includes, among other hardware, software, and data, an air pressure sensor 108, a current calibration value 110, and a data packet 112. The air pressure sensor 108 generates a pressure measurement value for the user device 104 to determine its altitude. The current calibration value 110 is used by the user device 104 or the air pressure sensor 108 to calibrate the air pressure sensor 108, i.e., to adjust the original pressure measurement value to obtain a more accurate adjusted pressure measurement value for determining altitude. The data packet 112 includes calibration data collected by the user device 104 for the server 102 to send to the server 102 so that the server 102 determines and returns the current calibration value 110, as described below.
[0044] In some embodiments, server 102 generally includes, among other hardware, software, and data, data packets 114 (corresponding to data packets 112) received from each user device 104, a historical calibration table 116 for each user device 104, and a current calibration table 118 for each user device 104. For each user device 104, server 102 maintains one or more data packets 114 that include calibration data that is not past its latest expiration date. Server 102 can delete data packets that include calibration data that is considered too old and thus expired and not reliable. Using the calibration data in one or more data packets 114 from one of the user devices 104, server 102 performs one or more of various calibration techniques for determining a calibration value for that user device 104 as described below. Server 102 stores the calibration value in the historical calibration table 116. The historical calibration table 116 includes previously determined calibration results 120 that are not past their expiration date, i.e., are considered still usable, for the corresponding user device 104. As described below, server 102 selects a calibration value from among the previously determined calibration results 120 or generates a calibration value based on the previously determined calibration results 120 and stores the selected or generated calibration value in the current calibration table 118. Thus, the current calibration table 118 includes the selected or generated calibration value as the current calibration value 122, which is generally considered the best available current calibration value. Server 102 transmits the current calibration value 122 (i.e., the selected or generated calibration value) to the user device 104 for use as the current calibration value 110 for calibrating the barometric pressure sensor 108. In other embodiments, variations of the above-described functionality are described below.
[0045] Figure 2 shows a simplified flowchart of an exemplary process 200 by calibration system 100 for implementing a calibration technique and processing its results according to some embodiments. The specific steps, combinations of steps, and order of steps for this process (and other processes disclosed herein) are provided for illustrative purposes only. Other processes with different steps, combinations of steps, or order of steps may be used to achieve the same or similar results. Features or functions described for one of the steps performed by a component may, in some embodiments, be enabled by a different step or component. Further, some steps may be performed before, after, or overlapping other steps, regardless of the order of the steps shown.
[0046] At 202, server 102 receives and stores one or more data packets 114 (one or more times) from user device 104. (Receipt of any data packet 114 generally causes exemplary process 200 to be implemented.) In some embodiments, the calibration techniques described herein can be used with calibration data from just one data packet 114 received from user device 104 or with calibration data from multiple data packets 114 received at different times. Further, server 102 can receive new data packets 114 from user device 104 not only at regular intervals but also at any non-regular, sporadic times. User device 104 typically transmits data packet 112 to server 102 whenever new data becomes available or whenever user device 104 determines that its location is within a threshold distance of a point, object, or device having a known accurate altitude or pressure measurement that can be used in calibration as described below.
[0047] An example set of calibration data for data packet 114 includes a plurality of data items such as the following. 1) Manufacturer and model information of the sensor of the barometric pressure sensor 108 in user device 104 2) Unique device identifier (ID) of the user device 104 3) Manufacturer and model information of the user device 104 4) Timestamp (time data) for pressure measurements performed by the barometric pressure sensor 108 5) Location of the user device 104 at the time when the pressure measurement was taken (location data) 6) Pressure value for pressure measurement (pressure data) 7) List of apps operating on the user device 104 (app data), and 8) Wireless data from wireless devices (e.g., Wi-Fi devices that transmit Z positions, Bluetooth® beacons, etc.) within the range of the user device 104.
[0048] Data items 1 to 3 are used to determine the basic characteristics of the sensor that do not usually change, and are thus called "sensor characteristic data". For example, the designer, manufacturer, or seller of a given barometric pressure sensor's make and model can publish empirically determined calibration values applicable to all barometric pressure sensors of the same model (e.g., in a product data sheet). Further, the make and model of the barometric pressure sensor within the user device 104 can potentially be determined based on the unique device ID or make / model of the user device 104. Similarly, the calibration values applied to the barometric pressure sensor 108 in all user devices 104 of the same make / model can be empirically determined by measuring the accuracy of pressure measurements of many user devices 104 of the same make / model and calculating the distribution of the accuracy of that barometric pressure sensor. Therefore, using any of data items 1 to 3, an empirically determined calibration value for the barometric pressure sensor 108 or the user device 104 (and implicitly for the barometric pressure sensor 108 therein) can be determined. Since the calibration value obtained in this way is generally determined empirically only once, this calibration value can be considered a static or unchanging characteristic of the barometric pressure sensor 108 or the user device 104.
[0049] On the one hand, data items 4 - 8 are referred to as "current state data" because they are related to the specific current state that can change in user device 104 or barometric pressure sensor 108. For example, when a user moves with user device 104 on any given day, time, location, pressure measurement, running apps, and nearby Wi-Fi devices are constantly changing. Thus, the calibration values obtained from any of these data items will depend on the current state of user device 104 and barometric pressure sensor 108 at the time and location when each data item of the calibration data is obtained.
[0050] Each calibration technique described herein uses only a subset of the data items in one or more data packets 114. Further, some of the data packets 114 do not necessarily contain all types of data items. (Missing data items may be indicated by NULL or dummy values.) Thus, after the server 102 reads the data items from one or more data packets 114 (at 204), the server 102 determines (at 206) whether any type of calibration technique can be executed with the available data items. Calibration techniques generally include "barometric pressure sensor make and model" calibration technique 208, "device ID" calibration technique 210, "device make and model" calibration technique 212, "building and terrain" calibration technique 214, "nearby accurate sensor" calibration technique 216, "nearby known geographic point" calibration technique 218, "app context" calibration technique 220, "machine learning model" calibration technique 222, and "user intervention required" calibration technique 224. (Each calibration technique will be described in more detail below.) Thus, at 206, the server 102 selects one or more of these calibration techniques to execute based on the available data items in one or more data packets 114.
[0051] The present disclosure generally describes auto-calibration techniques, so the user-intervention required calibration technique 224 is a special case that can be executed, for example, when other available calibration techniques produce calibration values with undesired (i.e., not sufficiently accurate) reliability, or are not available quickly enough (i.e., immediately required by the user). In such situations, the server 102 sends a request to the user device 104 for the user to manually enter a calibration value into the user device 104, which is then used for altitude determination based on air pressure. Further, if all of the existing calibration confidence intervals (described below) are set by the server 102 or exceed a predetermined threshold N that is user-configurable and thus the quality of the existing calibration is low, or if there are no available calibration values due to insufficient calibration data, or if previous calibration values are inaccurate due to sensor drift over a sufficient period of time, the user may be requested to manually calibrate the user device 104.
[0052] In some embodiments of the user intervention required calibration technique 224, the user is required to enter a location (and the user device 104 receives and transmits it to the server 102) by entering, for example, latitude and longitude, an address (which can be reverse geocoded to determine latitude and longitude), or a pin drop on the displayed map (which can be mapped to latitude and longitude). In some embodiments, the altitude of the manually entered user location is determined using one or more other calibration techniques that use location data having a very accurate location provided by the user rather than a potentially inaccurate location provided by the user device 104. Thus, the user intervention required calibration technique 224 can be executed in cooperation with some of the other calibration techniques to manually determine some of the calibration data. However, if the server 102 determines that manually entered calibration data, such as location data, is not suitable for calibration (for example, if the pin drop is on water, if the pin drop is on a very steep hill, if the pin drop is in a building of unknown floor number or building height), the resulting altitude may not be reliable, so the user intervention required calibration technique may be aborted or rejected.
[0053] As an example, when it is determined that the manually entered location is inside a building (for example, based on being within the building polygon, being near the building, and being determined to be inside based on GNSS signal strength or other I / O methods, etc.), the server 102 can prompt the user device 104 to request the user to enter a floor number / display. When the server 102 receives the floor number, it can map the floor number to an absolute altitude using a building database that includes the height of each floor, a building database that has the height of the building (i.e., the height of the roof) and the estimated floor number, a building database that has the estimated floor number and an assumption of the floor interval, or a building database that has the height of the building and an assumption of the floor interval. The server 102 can perform a conversion between the floor number and the floor display as needed (for example, a place where the ground floor and the first floor are synonymous compared to a place where the first floor is one floor above the ground, a place where the display of the 13th floor is intentionally skipped, a place where the display of the floors including the 4th floor is intentionally skipped, etc.).
[0054] The confidence interval for the user intervention request calibration technique 224 depends on one or more of various considerations such as 1) the accuracy of a reference network of known accurate sensors, 2) the distance to the network reference node, 3) the accuracy of the manually entered 2D position, 4) the accuracy of the terrain / (specific location) / building database, 5) the diversity of the terrain within the confidence circle of the user position, and 6) the accuracy of the floor determination, depending on how the user input is used.
[0055] At 226, the server 102 executes the selected calibration techniques 208-224, which are described in more detail below with respect to FIGS. 4-13. Each calibration technique 208-224 generates a new "calibration result". At 228, the server 102 optionally filters the new calibration result by determining whether the new calibration result is admissible with respect to the current calibration value 122, as described in more detail below with respect to FIG. 15. If the new calibration result is admissible at 228, the server 102 stores (at 230 or at 1512 below) the new calibration result in the history calibration table 116 as part of the previously determined calibration result 120. Alternatively, the server 102 simply stores (at 228) all calibration results in the history calibration table 116 without filtering at 228. (Each calibration result and calibration value has the form A+ / -B, where A is the "calibration offset" and B is the "confidence interval" or "calibration confidence", as described below. Further, the calibration offset can have a positive or negative value, which, according to the + / - sign convention, can be added to or subtracted from the "measured pressure value" generated by the barometric pressure sensor 108 to generate a "calibrated pressure value".) Each previously determined calibration result 120 is stored in the history calibration table 116 with information about 1) a timestamp (e.g., the time when measurements were taken or data were collected for the calibration data used to generate the calibration result), 2) the calibration offset, 3) the confidence interval, 4) the calibration technique used to generate the calibration result, and 5) whether the calibration result is a combined calibration result (described below). If an individual calibration result in the history calibration table 116 becomes too old, e.g., expires after a predetermined time (e.g., one month), the calibration result can be deleted from the history calibration table 116.
[0056] The calibration offset is the amount by which the measured pressure value generated by the barometric pressure sensor 108 is changed, i.e., offset, in order to generate a calibrated pressure value that is expected to be substantially close to the "actual barometric pressure" in the barometric pressure sensor 108. When a confidence interval is applied to the calibration offset, the confidence interval provides a "possible error range" (e.g., error bars) above and below the calibration offset of the calibration result or calibration value. When a confidence interval is applied to the calibrated pressure value, the confidence interval is a range larger and smaller than the calibrated pressure value within which the actual barometric pressure is expected to be. Thus, the term "confidence interval" generally means a range of values for which it is relatively certain that the calibration is actually within the range of a given percentage confidence level. For example, the smaller the range of values, the higher the "confidence level" in the calibration. For example, for a calibration result or calibration value of 100+ / 50 Pa, if the confidence level is measured at 1 sigma standard deviation (68%), this means that there is a 68% confidence level that the calibration falls within the range between 50 and 150 Pa. (Other percentage confidence levels may alternatively be used.) In a figure with error bars, since the confidence interval is half the length of the entire error bar, in this example the length of the error bar is 150 - 50 = 100 Pa. Further, the terms "confidence interval", "confidence level of calibration", "uncertainty of calibration", and "confidence value" may be used interchangeably herein or in the industry. However, a high "confidence level" in a calibration result or calibration value generally corresponds to a small "confidence interval", and a low "confidence level" in a calibration result or calibration value generally corresponds to a large "confidence interval". Further, "confidence level" is a general term used herein and refers to the overall confidence level in a calibration result or calibration value based on an understanding of the confidence interval, percentage confidence level, and relative likelihood that one calibration technique may be better than another.
[0057] The calibrated pressure value is typically used to determine the calibrated altitude of the user device 104. The confidence interval is used to determine a range below and above the calibrated altitude within which the actual altitude is expected to be within the range of the percentage confidence level.
[0058] Figure 3 shows a simplified flowchart of an exemplary process 300 by calibration system 100 for updating the calibration of the barometric pressure sensor 108 in user device 104, according to some embodiments. At 302, server 102 determines the timing at which to calibrate the barometric pressure sensor 108 of user device 104. This determination can be made after a predetermined time has elapsed since the last time the barometric pressure sensor 108 was calibrated or updated (e.g., 1, 2 days or several hours, i.e., a time sufficient for the current calibration value to become unreliable). Alternatively, the determination at 302 may be made when a new calibration result is added to the historical calibration table 116, thereby ensuring that the best of the previously determined calibration results 120 (including the new calibration result and the current calibration value among any available or non-expired other calibration results) is used as the current calibration value, which is desirable.
[0059] Accordingly, at 304, server 102 reads the previously determined calibration results 120 from the historical calibration table 116. If there is only one previously determined calibration result 120, process 300 can branch from this point to 312.
[0060] At 306, the server 102 updates the confidence intervals of the previously determined calibration results 120 in the history calibration table 116. In some embodiments, the server adjusts the previously determined calibration results 120 based on their respective elapsed times to obtain "adjusted previously determined calibration results". This update generally increases the values of each confidence interval to generate an "adjusted confidence interval" based on the time difference between the current time (i.e., when process 300 or step 306 is being executed) and the time indicated by the timestamps in the history calibration table 116 for the previously determined calibration results 120. In some embodiments, the update at 306 is performed only for the previously determined calibration results 120 obtained from calibration techniques 214 - 224 that used any of the current state data, and not for the previously determined calibration results 120 obtained from calibration techniques 208 - 212 that used only sensor characteristic data. This is because calibration techniques 214 - 224 (which rely on measured calibration data from the barometric pressure sensor 108) tend to cause sensor drift, and thus calibration techniques 214 - 224 may become less accurate as time increases. Such "aging" increases the uncertainty of the calibration results resulting from calibration techniques 214 - 224, and accordingly the confidence intervals increase. In other embodiments, the update at 306 is performed for all of the previously determined calibration results 120 regardless of the calibration techniques used to generate them, in situations where the barometric pressure sensor 108 exhibits linear or non-oscillatory drift. The aging factor can be linear (e.g., a predetermined constant for each day of elapsed time, e.g., 10 Pa / day), decaying exponential (e.g., the first day is the first predetermined number, the second day is a second smaller predetermined number, the third day is a third even smaller predetermined number, etc., e.g., 10 Pa on the first day, 8 Pa on the second day, etc.), or asymptotic (e.g., 10 Pa on the first day, an additional 5 Pa on the second day, with a maximum value of 30 Pa in total) among other aging techniques.Further, the server 102 may (at 306) delete calibration results from the history calibration table 116 if the adjusted confidence interval has become too large or too old, for example, expired after a predetermined period (e.g., one month).
[0061] In some embodiments, at 308, the server 102 combines (or selects from among) each of the previously determined calibration results 120 of the calibration results, or each of the calibrated previously determined calibration results, to obtain a "combined calibration result" (as described in more detail below with respect to FIG. 14), which can be used instead of or as well as the previously determined calibration results 120 or the calibrated previously determined calibration results. At 310, the server 102 selects the best calibration result (aka, the selected calibration result) from the previously determined calibration results (adjusted, combined, or updated as described above) based on selection criteria. (In some embodiments, the selection is made between the combined calibration result and the current calibration value. In some embodiments, the selection is made among all of the previously determined calibration results 120 within the historical calibration table 116, which further includes the current calibration value and optionally the combined calibration result.) The selection criteria may be based on any suitable criteria deemed relevant, such as 1) the minimum uncertainty (confidence interval) in the (adjusted) previously determined calibration result, 2) the minimum uncertainty (confidence interval) in the (adjusted) previously determined calibration result that is less than the maximum uncertainty threshold (e.g., only calibration results with a confidence interval <= 50 Pa), 3) the most prioritized calibration technique among the calibration techniques 208-224 used to determine the (adjusted) previously determined calibration result, or 4) the central calibration value of the (adjusted) previously determined calibration result. In an example of the priority of techniques, there are previously determined calibration results 120 obtained from the user intervention required calibration technique 224, the device manufacturer and model calibration technique 212, and the app context calibration technique 220, and if the user intervention required calibration technique 224 is prioritized over the others, the server 102 selects the previously determined calibration result 120 obtained from the user intervention required calibration technique 224.Further, in addition to executing the filtering process 1500 at 228, or if the server 102 does not filter the new calibration result at 228 before storing it in the history calibration table at 230 or 1512, the filtering process 1500 can be used for the selected calibration result following the selection of the best calibration result at 310. In this case, it is determined whether to update the current calibration table 118 instead of the history calibration table 116 at 1508 - 1512 or 312.
[0062] If there is a calibration result selected based on the above criteria, the server 102 stores the selected calibration result (at 312) in the current calibration table 118 corresponding to the user device 104 as the current calibration value to indicate that this value is the current calibration value 122 of the user device 104. (If the selected calibration result is not generated at 310, the current calibration table 118 is not updated.) Further, the server 102 transmits the selected or current calibration value 122 (at 314) to the user device 104. The user device 104 receives the current calibration value 122 and stores it as the current calibration value 110 for use in calibrating the barometric pressure sensor 108.
[0063] In some alternative embodiments, the server 102 does not use the history calibration table 116 and simply maintains the current calibration value 122 for the user device 104. In this case, the server 102 determines whether to update the current calibration value 122 with the new calibration value using the selection at 228 (as described in more detail with respect to FIG. 15) and transmits the new calibration value to the user device 104.
[0064] The disclosure herein provides the advantage that calibration results from multiple calibration techniques can be integrated to generate a reliable calibration value for calibrating the barometric pressure sensor 108. The disclosure herein also provides the advantage of maintaining multiple previously determined calibration values to select the best calibration value.
[0065] The above and following descriptions generally assume that server 102 executes the functions as described above. However, in some alternative embodiments, user device 104 can execute some of these functions. In this case, user device 104 holds the latest data packet 112 and maintains a history calibration table and a current calibration table. Server 102 transmits additional description data to user device 104. Next, user device 104 determines when any of calibration techniques 208-224 should be executed, executes calibration techniques 208-224, combines the results to obtain a new calibration value, stores the new calibration value in its history calibration table, determines when its barometric pressure sensor 108 should be calibrated, selects the best previously determined calibration value from the history calibration table, stores the selected calibration value in its current calibration table as the current calibration value, and calibrates its barometric pressure sensor 108 using the current calibration value. Alternatively, user device 104 executes an appropriate subset of these functions and server 102 executes the remainder.
[0066] Figure 4 shows a simplified flowchart of an exemplary process 400 by calibration system 100 for implementing the manufacturer and model calibration technique 208 of the barometric pressure sensor selected at 206 and executed at 226 in the exemplary process 200 of FIG. 2 according to some embodiments. At 402, server 102 reads the manufacturer and model data of the barometric pressure sensor from data packet 114. The manufacturer and model of the barometric pressure sensor are typically used to compare with the expected accuracy specifications. Thus, using the manufacturer and model, server 102 searches (at 404) for the accuracy (i.e., a predetermined calibration) of barometric pressure sensor 108 in a search table based on, for example, a product data sheet issued by the designer, manufacturer or seller of a given manufacturer and model of barometric pressure sensor 108. Thus, server 102 searches for a confidence interval in a calibration offset and sensor manufacturer / model search table. Using this information, server 102 determines (at 406) a calibration result for the manufacturer and model calibration technique 208 of the barometric pressure sensor. For example, if an accuracy of + / -100 Pa is specified in the product data sheet, the calibration can be defined as 0 Pa with a confidence level of 100 Pa. Alternatively, many barometric pressure sensors of the same sensor manufacturer / model can be independently tested for the accuracy of their pressure measurements, and a predetermined calibration can be calculated therefrom to provide the accuracy of this manufacturer / model of barometric pressure sensor. For example, if the distribution of the measured accuracy for a group of barometric pressure sensors is -10 + / -50 Pa, the predetermined calibration in the data sheet of the barometric pressure sensor having that particular sensor manufacturer / model can be provided as -10 Pa with a confidence level of 50 Pa. Server 102 returns (at 408) the calibration result to the exemplary process 200 for further processing after 226.
[0067] FIG. 5 shows a simplified flowchart of an exemplary process 500 by calibration system 100 for executing device ID calibration technique 210 when the device ID calibration technique is selected at 206 and executed at 226 in the exemplary process 200 of FIG. 2 according to some embodiments. At step 502, server 102 reads in data packet 114 the unique device ID of user device 104 (e.g., International Mobile Equipment Identity (IMEI) number, telephone number, Mobile Advertising ID (AD-ID), or other unique identifier). Server 102 uses the device ID to search (at 504) a lookup table for the manufacturer and model of the barometric pressure sensor (or the unique ID of barometric pressure sensor 108). (From this point forward, process 500 proceeds in the same manner as process 400.) Using the manufacturer and model of the barometric pressure sensor, server 102 searches (at 506) the lookup table for the accuracy (i.e., a predetermined calibration) of barometric pressure sensor 108 based on, for example, a product data sheet issued by the designer, manufacturer, or seller of the barometric pressure sensor 108 of a given manufacturer and model. Thus, server 102 searches for the calibration offset and confidence interval in the sensor manufacturer / model lookup table. Using this information, server 102 determines (at 508) the calibration result of device ID calibration technique 210. Server 102 returns (at 510) the calibration result to the exemplary process 200 for further processing after 226.
[0068] Figure 6 shows a simplified flowchart of an exemplary process 600 by calibration system 100 for executing the device make and model calibration technique 212 when, in accordance with some embodiments, the device make and model calibration technique is selected at 206 and executed at 226 in the exemplary process 200 of FIG. 2 above. At 602, server 102 reads the device make and model information of user device 104 in data packet 114. Different user devices 104 have different commercially available accuracies of their barometric pressure sensors 108, and the sensors of one user device may be more accurate than those of other user devices due to quality such as structure, assembly, position within the device, etc. Thus, many user devices 104 of the same make / model can be independently tested for the accuracy of the pressure measurements of their barometric pressure sensors 108, and a given calibration can be calculated therefrom to provide the accuracy of the barometric pressure sensors 108 of the user devices of this make / model. For example, if the measured accuracy distribution is -10 + / - 50 Pa, the calibration of user device 104 of that particular make / model can be defined as -10 Pa with a confidence of 50 Pa. Thus, using the device make and model, server 102 searches (at 604) for the accuracy (i.e., a given calibration or standard calibration) of barometric pressure sensor 108 for user device 104 in the lookup table, for example, based on independent test results. Thereby, server 102 searches for the calibration offset and confidence interval in the make / model lookup table. Using this information, server 102 determines (at 606) the calibration result of the device make and model calibration technique 212. Server 102 returns the calibration result to the exemplary process 200 (at 608) for further processing after 226.
[0069] In some embodiments, since the calibration results of calibration techniques 208-212 are generally considered to be static, i.e., unchanging, these calibration techniques need to be performed only once. Accordingly, the calibration values based on these calibration results can be maintained indefinitely within the history calibration table 116. Further, the sensor manufacturer and model information of the pressure sensor 108, the unique device ID of the user device 104, and the device manufacturer and model information of the user device 104 do not need to be included in all of the data packets 112 or 114 unless necessary to identify the user device 104 to the server 102.
[0070] The building and terrain calibration technique 214 will be described with reference to FIGS. 7-9. FIG. 7 shows a simplified diagram of an exemplary terrain having a building 700 for use in this calibration technique shown in FIG. 8 according to some embodiments. In this example, the terrain 702 is unevenly displayed with different altitudes and gradients therebetween, and the buildings 704 and 706 have different heights, different numbers of floors, and different floor division values. Further, the location data provided by the user device 104 may indicate a 2D location area 708 (user device footprint) where the user device 104 may be present. Further, the 2D location area 708 includes areas outside and inside the buildings 704 and 706, as shown by the shaded, partially overlapping areas 710 and 712. The shaded overlapping areas 710 and 712 are applicable to each floor of the buildings 704 and 706, respectively. Thus, the user and the user device 104 can be outside the buildings 704 and 706 (e.g., at 714), inside the first building 704 (e.g., at 716), on any of its floors, or inside the second building 706 (e.g., at 718), on any of its floors.
[0071] When the user device 104 collects and transmits data packets 112 when its altitude is clear (e.g., outside flat terrain without overlapping position areas with buildings), it is possible to calibrate the barometric sensor 108 against a reference network of known pressure sensors. When the altitude cannot be clearly determined (e.g., when there is a possibility of being on any floor in a building), the possible altitude of the user device 104 can be restricted and calibrated against the possible altitudes of the floors. For example, if the user device 104 is determined to be completely inside a three-story building, the possible altitude is one of the three floors, and the calibration can be performed against the average or median value of the three floors (e.g., the second floor in the US floor marking convention), and the confidence interval is + / - 1 floor.
[0072] The possible altitude of the user device 104 can be determined as follows. For a given 2D confidence level (i.e., 2D position area 708) centered on the most likely 2D position of the user device 104, the possible 3D positions of the user device are defined as above the terrain outside buildings 704 and 706 (plus some additional heights held above the ground), and anywhere above any floor within buildings 704 or 706 within the shadowed overlap areas 710 and 712, respectively (plus some additional heights held above the ground). If known in advance, the height of each individual floor can be used, or estimated from the building height, number of floors, assumptions about floor division, or any combination of these.
[0073] If it is assumed that the user device 104 has an equal probability of being equally located within the 2D position area 708 including the shadowed overlap areas 710 and 712 for each floor of each building 704 and 706, the probability distribution of the altitude of the user device 104 can be determined including the assumed heights above the ground or above the floor level. In a simple example, the altitude of the terrain is 0m, the height of the device above the floor is 1m, and the area of the confidence circle of the 2D position area is 200m 2, there is only one duplicate building, and there are only two above-ground floors of the duplicate building. The area of the upper floor is 100 m 2 , the upper floors are 3 m apart. The probability that the user device 104 is located at 1 m is 200 / (200 + 100 + 100) = 0.5. The probability that the user device 104 is located at 4 m is 100 / (200 + 100 + 100) = 0.25. The probability that the user device 104 is located at 7 m is 100 / (200 + 100 + 100) = 0.25. Therefore, the range of 90% of the possible altitudes is from 1 m to 7 m, and the median of the distribution is 2.5 m. So, the possible altitude is 2.5, and the asymmetric altitude confidence interval is +4.5 to -1.5 m. Or, it is also possible to report the altitude considered to be the middle of the confidence interval range and report 4 + / - 3 m. When the measured altitude due to the measured pressure of the barometric pressure sensor 108 is 20 m, the calibrated value is 20 - (4 + / - 3), that is, 16 + / - 3 m (or (4 + / - 3) - 20 = -16 + / - 3 (depending on the positive / negative sign convention of the calibration definition)). Converting to pressure, the calibrated value of the barometric pressure sensor 108 is approximately 192 + / - 36 Pa (assuming 1 m to 12 Pa as the general relationship between altitude difference and pressure difference) (or -192 + / - 36 Pa (depending on the positive / negative sign convention of the calibration definition)). The + / - error does not have to be symmetric because the building footprint may be much smaller than the outdoor terrain footprint or there may be multiple other buildings within the range of the confidence of users with various heights and footprints. Also, the building footprint does not have to be completely within the footprint of the user device, and the footprint of the user device does not have to be completely within the building footprint. This is because the overlapping area (including partial or complete ranges of either footprint) between the two footprints is important. Also, the first floor of building 704 or 706 does not have to be at the same height as the surrounding terrain and can be above or below. Also, if it is known that some parts or ranges of a floor are inaccessible (for example, server floors, mechanical floors, floors closed for renovation, rooftops, etc.), these areas can be excluded from the possible altitude distribution of the user device.
[0074] When the height of the duplicate building 704 or 706 is unknown, it is possible or adoptable to assume the separation of the height and the height of each floor based on the form. For example, when the building in question is located in the suburbs and is a general one- or two-story house or small business office, the height can be assumed to be one or two floors. In another example, when the building in question is within the industrial area of a town with large warehouses, the height can be assumed to be one floor. Such heights may lack accuracy, but still the errors are limited.
[0075] In accordance with the above considerations, FIG. 8 shows a simplified flowchart of an exemplary process 800 by a calibration system 100 for implementing a building and terrain calibration technique 214, according to some embodiments. At 802, the server 102 reads pressure data and position data from the data packet 114. At 804, the server 102 searches for building and terrain data of the 2D position area 708 indicated by the position data (e.g., in a mapping database). At 806, the server 102 determines whether the 2D position area 708 overlaps with any building, and if so, calculates the overlap (e.g., the shaded overlap areas 710 and 712) between the 2D position area 708 of the user device and the building footprint area of each building (using the 2D position area 708 and the building and terrain data).
[0076] In some embodiments, the server 102 determines the number of floors of the building (e.g., 704 or 706) at (808). For example, the number of floors can be determined by any suitable or available technique such as 1) searching for the number of floors in a database of known buildings, 2) estimating the number of floors and a reasonable floor separation value (e.g., for a building with a height of 12m and a floor interval of 3m: 12 / 3 = 4 floors) from the height of the building (from the building database), 3) assuming the number of floors based on the form (e.g., suburban areas generally have only one or two floors), etc. In some embodiments, determining the number of floors of the building at (808) is not necessary if the height of each floor is already known (see 810 below).
[0077] In some embodiments, server 102 estimates or calculates the altitude of each floor (at 810). For example, the altitude of each floor can be determined by any suitable or available technique such as 1) searching for the altitude in a building database, 2) examining the surface height from a terrain database and adding (floor separation value) * (number of floors - 1) (assuming the floor separation value is reasonable and the floors start counting from 1). In this step, optionally, specific floor numbers that are known to be inaccessible can also be excluded. Further, since the altitude of user device 104 is an issue, an offset can optionally be added to the altitude of the floor (e.g., 1 m) to indicate how much higher the user device 104 is than the floor.
[0078] In some embodiments, server 102 estimates or calculates the overlapping area between each floor and the 2D position area 708 of the user device (at 812). This overlapping area will typically be the same as the overlap calculated at 806 for each building, unless there are different areas for different floors.
[0079] Process 800 repeats 808 - 812 for each building that overlaps with the 2D position area 708 of the user device.
[0080] In some embodiments, server 102 determines (at 814) the non - overlapping area (e.g., the area not shaded by the 2D position area 708) and the altitude distribution of the non - overlapping area (based on terrain changes or terrain in the 2D position area 708 as indicated by the terrain database). Since the altitude of user device 104 is an issue, a device offset can optionally be added to the altitude distribution (e.g., 1 m) to indicate how much higher the device is than the ground.
[0081] In some embodiments, server 102 combines the external altitude (outside the building) weighted by the area at each altitude (at 816) with the altitude distribution of all internal altitudes (each floor inside the building) to obtain a combined altitude distribution that establishes the possible altitudes of user device 104. FIG. 9 shows a simplified graph 900 of an example of the likely altitudes and cumulative probabilities obtained for the combined altitude distribution at this point in process 800. In graph 900, a simple horizontal flat terrain, a three-story building with partial overlap, a 1 m device offset altitude, and a 3 m floor interval are assumed. Thus, an altitude of 1 m adds the largest part of the cumulative probability, and altitudes of 4 m and 7 m add the same-sized smaller parts of the cumulative probability.
[0082] From the combined altitude distribution (as shown by graph 900), server 102 determines or calculates, at 818, the median altitude and standard deviation (or other percent confidence level of interest) of the distribution by any suitable means. At 820, server 102 determines the calibration results of building and terrain calibration technique 214, where the median altitude is used to calculate a calibration offset and the standard deviation is used, along with the typical relationship between altitude difference and pressure difference, to calculate a confidence interval. At 830, server 102 returns the calibration results to exemplary process 200 for further processing later at 226.
[0083] Figure 10 shows a simplified flowchart of an exemplary process 1000 by calibration system 100 for executing a nearby accurate sensor calibration technique 216 when, in the exemplary process 200 of FIG. 2 above, a nearby accurate sensor calibration technique is selected at 206 and executed at 226. At 1002, server 102 reads pressure data, position data, and time data from data packet 114. Using the position data, server 102 determines (at 1004) that user device 104 (and barometric pressure sensor 108) is within a threshold distance of a known accurate reference pressure sensor. The known accurate reference pressure sensor may be a reference pressure sensor maintained with high accuracy, or a static pressure sensor within a network of mobile pressure sensors of another user device 104 that has been calibrated with a recently high level of reliability. Thus, the proximity of user device 104 to a known accurate reference pressure sensor can be determined, for example, from a map or database providing the location of the network of reference pressure sensors or the location of other user devices 104. In another example, proximity to another user device 104 can be determined by measuring the strength of the Bluetooth® signal (if available) of the other user device, and if the signal strength exceeds a predetermined threshold, the two user devices 104 can be considered to be in close enough proximity to execute this calibration technique. At 1006, server 102 requests and receives known accurate pressure data from the known accurate reference pressure sensor. The known accurate pressure data is time-correlated with the pressure data within data packet 114 using the time data. At 1008, server 102 searches for terrain data of the location area indicated by the position data of user device 104 and the position of the known accurate reference pressure sensor. (If the position data indicates that user device 104 is in close enough proximity to the position of the known accurate reference pressure sensor and any altitude differences are not significant, terrain data may not be required.) At 1010, server 102 determines the calibration result of this calibration technique based on the pressure data, terrain data (optional), and known accurate pressure data.The pressure difference between the pressure data in the data packet 114 and the known accurate pressure data provides a calibration offset for the calibration result. Further, the terrain data in the area between or around the user device 104 and the known accurate reference pressure sensor provides a potential variation in altitude between the user device 104 and the known accurate reference pressure sensor. The altitude difference (i.e., flatness) is used to calculate a confidence interval based on the general relationship between altitude difference and air pressure difference. For example, if the user device 104 is determined to be within 10 m of a properly calibrated reference pressure sensor, perhaps enclosed by a fence, within an urban park, and the terrain flatness metric within the 2D position area of the user device 104 is about + / - 1 m 95% of the time (about + / - 12 Pa in terms of pressure difference), and the pressure data indicates a pressure value about 50 Pa away from the known accurate pressure data from the reference pressure sensor, the calibration result can be defined as 50 Pa + / - 12 Pa. At 1012, the server 102 returns the calibration result to the exemplary process 200 for further processing after 226.
[0084] In an alternative calibration calculation for the nearby accurate sensor calibration technique 216, the altitude based on the air pressure of the air pressure sensor 108 (or the user device 104) is H baro = + / - ((R * T reference ) / (gM)) * ln(P reference / P user ) is calculated, where g corresponds to the acceleration due to gravity (e.g., -9.8 m / s 2 ), R is the gas constant, and M is the molar mass of air (e.g., dry air or others), T reference is the reference temperature in Kelvin units at the reference pressure sensor, P reference is the reference pressure in Pa units from the known accurate pressure data at the reference altitude (typically 0 m HAE or some other altitude), and P user is the pressure at the air pressure sensor 108 from the pressure data in the data packet 114. The "+ / -" is the sign convention depending on whether g is defined as 9.8 or -9.8. The confidence level of the altitude of the air pressure sensor 108 (dH baro) is determined as described in U.S. Patent No. 10,655,961 by the same applicant. The true altitude (or the estimated true altitude) of the barometric pressure sensor 108 is determined by any suitable method such as the position shown in the position data in relation to a known accurate altitude obtained from a map, a database, a nearby POI (a specific point with a known altitude), etc. The true altitude reliability (dH true ) is determined based on the accuracy underlying the method for determining the true altitude, as well as the accuracy of the 2D position area of the user device 104 and the terrain change. Then, the server 102 adjusts the user device pressure P user with the pressure difference value dP in the above formula so that the altitude based on the barometric pressure is equal to the true altitude. The pressure difference value dP is the calibration offset of the calibration result. The confidence interval is calculated as the square root of the sum of dH baro 2 + dH true 2 .
[0085] Figure 11 shows a simplified flowchart of an exemplary process 1100 by calibration system 100 for performing a nearby known geographic point calibration technique 218 when, in the exemplary process 200 of FIG. 2 above, a nearby known geographic point calibration technique is selected at 206 and executed at 226. At 1102, server 102 reads pressure data and location data from data packet 114. At 1104, server 102 determines that user device 104 (and barometric pressure sensor 108) is within a threshold distance of a known geographic point. The known geographic point may be a well - surveyed POI or a Z - anchor point (a location where altitude Z is known). Alternatively, the known geographic point may be a wireless device such as a Wi - Fi access point or a Bluetooth® beacon that transmits a Z - location (altitude), in which case server 102 also reads wireless data from the data packet. Thus, the proximity of user device 104 to a known geographic point can be determined, for example, from a map or database that provides the location of such geographic points. At 1106, server 102 searches for known accurate altitude data regarding the geographic point, for example, within a map or database. At 1108, server 102 searches for terrain data of the location area indicated by the location data of user device 104 and the location of the known geographic point. At 1110, server 102 determines the calibration result of this calibration technique based on the pressure data, terrain data, and known accurate altitude data. In some embodiments, server 102 calculates the altitude based on the barometric pressure of user device 104 based on the typical relationship between pressure data and the difference in altitude and pressure difference. Next, server 102 calculates the difference between the altitude based on barometric pressure and the known accurate altitude of the geographic point. Thus, the altitude difference provides a calibration offset for the calibration result based on the typical relationship between altitude difference and pressure difference. In some embodiments, server 102 converts the known accurate altitude data to a calculated pressure value based on the typical relationship between altitude difference and pressure difference. Next, the pressure difference between the calculated pressure value and the pressure data provides the calibration offset.Furthermore, the terrain data in the area between or around the user device 104 and a known geographical point provides a possible variation in altitude between the user device 104 and the known geographical point. The change in altitude is used to calculate a confidence interval based on the typical relationship between altitude difference and pressure difference. For example, if the user device 104 is determined to be within 10 m of a monument (known altitude) in an urban park, the terrain flatness metric around the user's 2D position area is 1 m 95% of the time (~12 Pa pressure change), and the altitude of the monument is known to be 10 m at a height above the ellipsoid (HAE), and the altitude based on pressure is determined to be 15 m HAE, the calibration offset is 60 Pa ((15 m - 10 m) × 12 Pa / m), or -60 Pa, depending on the sign convention of the calibration offset, and the confidence interval is + / -12 Pa.
[0086] FIG. 12 shows a simplified flowchart of an exemplary process 1200 by calibration system 100 for executing app context calibration technique 220 when, in accordance with some embodiments, the app context calibration technique is selected at 206 and executed at 226 in the exemplary process 200 of FIG. 2 above. At 1202, server 102 reads pressure data, location data, and app data from data packet 114. The app data indicates which apps were being executed by user device 104 at the time of data collection. Some of these apps can indicate location-specific apps that can potentially indicate the basic activities the user is performing, i.e., the location of the user and thus the location of user device 104. For example, if user device 104 is running an app related to a given company, the company has offices or stores at a given location, and the location data indicates that user device 104 is near any of these given locations, it is reasonable to assume that the user is engaged with the company at the given location and the altitude of user device 104 is the same as the altitude of the given location. Thus, if there is known accurate altitude data for a given location, the barometric pressure sensor 108 can potentially be calibrated when user device 104 is running an app for the company near the given location. Thus, at 1204, server 102 analyzes the app data and determines that the running app is related to a given location of a company where the altitude is known. At 1206, server 102 determines that user device 104 is within a threshold distance of a given location. At 1208, server 102 searches the database for known accurate altitude data for the given location. At 1210, server 102 determines the calibration result of this calibration technique in a manner similar to the building and terrain calibration technique 214 described above, based on the pressure data, building and terrain data, and known accurate altitude data, because the app context calibration technique 220 can assume that user device 104 is on the same floor as the given location and the floor is flat.(Alternatively, if an enterprise occupies one or more floors at a predetermined location, the app context calibration technique 220 takes this into account and determines the calibration offset and confidence interval in the same way as the building and terrain calibration technique 214 described above.) In 1212, the server 102 returns the calibration result to the exemplary process 200 for further processing after 226. As an example of this calibration technique, if the user device 104 is running an app for a retail chain and the location data indicates that the 2D position area of the user device 104 overlaps with one of the chain's retail stores, and it is known that the retail store is on the second floor of a shopping mall, the server 102 determines that the user device 104 is also on the second floor of the shopping mall based on this information. On the other hand, if the user device 104 is running a driving instruction app, the user device 104 is likely to be moving inside a vehicle rather than inside a building, and the server 102 uses this information to limit the location of the user device 104.)
[0087] FIG. 13 shows a simplified flowchart of an exemplary process 1300 by calibration system 100 for executing a machine learning model calibration technique 222 when, in the exemplary process 200 of FIG. 2 above, the machine learning model calibration technique is selected at 206 and executed at 226. When sufficient data is collected and processed using any or all of the above-described calibration techniques 208-220 for calibration data that yields a highly reliable calibration result, a supervised machine learning model can be trained to predict the calibration result of the calibration data of received data packet 114. The supervised machine learning model uses input parameters for data items for measurements such as position data and pressure data. The additional data for the input parameters includes derived quantities such as the overlapping area of the building with the 2D position area and the flatness of the terrain quantified by the change of the terrain within the 2D position area. Using these input parameters and the corresponding calibration results or calibration values for user device 104, the deep learning neural network is trained with very high accuracy using all available data to generate a supervised machine learning model. The training phase generates a supervised machine learning model that is used to predict the calibration result when input parameters from future data packets 114 are provided. The training and prediction steps of deep learning are supported by several available frameworks such as Tensorflow, Keras, Pytorch, Caffe2 and Theano. Thus, at 1302, server 102 reads out data items for the input parameters from data packet 114. At 1304, server 102 searches for or derives additional data for the input parameters. At 1306, server 102 inputs the data items and additional data into the supervised machine learning model. At 1308, server 102 receives the calibration result output from the supervised machine learning model. At 1310, server 102 returns the calibration result to the exemplary process 200 for further processing after 226.
[0088] FIG. 14 is a simplified flowchart of an exemplary process 1400 by calibration system 100 for determining a combined calibration result at 308 of FIG. 3 by combining some or all of previously determined calibration results 120, according to some embodiments. The barometric pressure sensor 108 can be calibrated using any of the calibration techniques described herein. Thus, if only one calibration technique 208-224 has been executed at this point and there is only one calibration result in the history calibration table 116, this calibration result is simply adopted as the new calibration value in the process 300 described above. However, the quality of one calibration result may vary depending on the situation and environment. For example, a user device 104 located in the center of a high-rise building may have a very poor calibration when the calibration result based on the building and terrain calibration technique 214 is applied, but the user device 104 can have a very good calibration result if the barometric pressure sensor 108 therein has excellent accuracy under the manufacturer and model calibration technique 208 of the barometric pressure sensor. Different algorithms for combining multiple calibration results, and their advantages, are disclosed herein. Further, different calibration results can be determined at different locations (e.g., one calibration at home, one calibration at work, etc.), at different times, or using different calibration techniques (e.g., calibrating with a nearby sensor, calibrating inside a building) using the same data packet 114.
[0089] Thus, if the server 102 determines (at 1402) that there are multiple calibration results in the history calibration table 116, the server 102 determines (at 1404) a weighting value corresponding to each calibration result such that the multiple calibration results can be weighted and combined. At 1406, the server 102 adjusts each calibration result or multiplies it by its corresponding weighting value to generate a weighted calibration result. At 1408, the server 102 combines the weighted calibration results to obtain a combined calibration result.
[0090] For example, multiple calibration results can be equally weighted and then combined to form a combined calibration result. If the calibration offset of one calibration result is A0 and the calibration offset of another calibration result is A1, the equally weighted combined calibration result is (A0 + A1) / 2. If the corresponding confidence interval for A0 is B0 and the corresponding confidence interval for A1 is B1, the confidence interval can be combined by quadrature as the square root of ((B0 2 + B1 2 ) / 2). In another example, multiple calibration results with different weighting values can be combined: if one calibration offset is A0 with weight w0 and the other calibration offset is A1 with weight w1, the weighted calibration offset is (A0 * w0 + A1 * w1) / (w0 + w1). If the corresponding confidence interval for A0 is B0 and the corresponding confidence interval for A1 is B1, the weighted confidence interval can be obtained by quadrature as the square root of ((w0 2 * B0 2 + w1 2 * B1 2 ) / (w0 + w1)). The combined calibration offset can be extended to (A0 * w0 +... + AN * wN) / (w0 +... + wN) for N calibration results, and the combined confidence interval can be similarly extended to the square root of ((w0 2 * B0 2 +... + wN 2 * BN 2 ) / (w0 +... + wN)) for N calibration results.
[0091] The weighting value w i in this context i can be based on the corresponding confidence interval c i . In one example, a calibration result with the smallest confidence interval (non - negative value) has w i = 1 / c i or 1 / (1 + c i) can be weighted most heavily. In this context, the confidence level is defined as the range of calibration values that may cover a given number of cases (e.g., 68% of all cases, 95% of all cases, etc.). Using these weighted values in the function form, the weighting of calibration results with low confidence levels can be reduced (i.e., their weighted values are decreased). Other weighting functions can also be considered. In another example, the weighted value may be binary, the weighted value of the calibration result with the minimum confidence interval is 1, and all other weighted values are 0. In this case, the exemplary process 1400 simply selects the best calibration result instead of combining them. In another example, the weighted value may be independent of the confidence interval and may be weighted based on the type of calibration technique (e.g., reducing the weighted value for the nearby known geographic point calibration technique 218 or app context calibration technique 220, or the calibration technique 208 for the manufacturer and model of the barometric pressure sensor or the calibration technique 212 for the manufacturer and model of the device). The priority of one calibration technique over others is generally determined empirically by comparing a relatively large number of calibration results from each of the calibration techniques 208 - 224 and determining which of the calibration techniques 208 - 224 functions well on average. Depending on the different types or models of the user device 104 or the barometric pressure sensor 108, or the type of method by which the calibration techniques 208 - 224 are executed, the priorities of the calibration techniques 208 - 224 may result in different outcomes. Also, in an ongoing data collection process, the priorities may change over time. However, the exemplary priorities are in the order shown below from highest priority to lowest priority. · User intervention required · Building and terrain · Manufacturer and model of barometric pressure sensor · Manufacturer and model of device · Nearby precision sensor · Device ID · Nearby known geographic point · App context · Machine learning model
[0092] Alternatively, the combined calibration values can be determined based on the overlap of the calibration result ranges. For example, if the calibration results are such that A0 + / - B0 is 60 Pa + / - 12 Pa and A1 + / - B1 is 50 Pa + / - 10 Pa, the overlapping calibration values are the overlap between 48 - 72 Pa and 40 - 60 Pa, i.e., 48 - 60 Pa, or 54 Pa + / - 6 Pa.
[0093] At 1410, the server 102 returns the combined calibration result to the exemplary process 300 for further processing after 308. For example, the combined calibration value can be included as one of the previously determined calibration results 120, or can be used in subsequent processing in place of one, some, or all of the previously determined calibration results 120.
[0094] FIG. 15 shows a simplified flowchart of an exemplary process 1500 by the calibration system 100 for filtering (according to 228 in FIG. 2) a new calibration result for storage in the history calibration table 116 and, if adopted, updating the history calibration table 116 with the new calibration value, according to some embodiments. (In some embodiments, process 1500 can also be used as part of the decision to update the current calibration table 118 between 310 and 312 as described above.) Generally, the server 102 selects whether the new calibration value is adoptable compared to the current calibration value 122 and, if adoptable, stores the new calibration value in the history calibration table 116 as one of the previously determined calibration results 120. When a new calibration result is available, it must be determined whether to update the history calibration table 116 with the new calibration result or not to update the history calibration table 116. Depending on the current calibration offset A0, the current confidence interval B0, the new calibration offset A1, and the new confidence interval B1, the server 102 adopts or rejects the new calibration result for storage in the history calibration table 116.
[0095] Accordingly, at 1502, the server 102 determines that a new calibration result is available, i.e., that one or more calibration techniques 208-224 have been executed and a result has been generated. At 1504, the server 102 searches for the current calibration value 122 in the current calibration table 118. In some embodiments, at 1506, the server 102 compares the new calibration result with the current calibration value 122 and uses an appropriate rule to determine whether to adopt or reject the new calibration result. In other embodiments, at 1506, the server 102 compares the new calibration result with the best of the previously determined calibration results 120 within the historical calibration table 116 of the same calibration technique as the new calibration result (instead of the current calibration value 122) and uses an appropriate rule to determine whether to adopt or reject the new calibration result. For example, in this situation, the "best" of the previously determined calibration results 120 could be the one with the smallest confidence interval, or the one with the average of the previously determined calibration results 120.
[0096] As shown by the calibration value versus time graphs 1602-1608 of FIG. 16, according to a possible first rule, a new calibration result (A1 + / - B1) is adopted when its calibration offset A1 is within the range of the current calibration value A0 + / - B0. As shown by graphs 1602 and 1604, the new calibration offset A1 (indicated by the central dot in graph 1604) is within the range of the current calibration value A0 + / - B0 (indicated by the dashed line intersecting the error bars in graph 1602). Thus, for the examples of graphs 1602 and 1604, the first rule will cause the server 102 to adopt the new calibration result for storage in the historical calibration table 116. On the other hand, as shown by graphs 1606 and 1608, the new calibration offset A1 (indicated by the central dot in graph 1608) is outside the range of the current calibration value A0 + / - B0 (indicated by the dashed line outside the error bars in graph 1606). Thus, for the examples of graphs 1606 and 1608, the first rule will cause the server 102 to reject the new calibration result for storage in the historical calibration table 116. The first rule desirably does not adopt dramatic changes in the calibration value, and thus the new calibration result is useful in situations where it is not very different from the current calibration value. This is desirable when it is known that the calibration drift of the barometric pressure sensor 108 is typically slow over a characteristic time that is shorter than the time between subsequent measurements performing calibration techniques 208-224.
[0097] In contrast, as shown by the calibration value versus time graphs 1702 to 1708 in FIG. 17, according to a possible second rule, a new calibration result (A1 + / - B1) is adopted when its calibration offset A1 is outside the range of the current calibration value A0 + / - B0. As shown by graphs 1702 and 1704, the new calibration offset A1 (indicated by the central dot in graph 1704) is outside the range of the current calibration value A0 + / - B0 (indicated by the dashed line outside the error bars in graph 1702). Thus, for the examples of graphs 1702 and 1704, the second rule would cause the server 102 to adopt the new calibration result for storage in the historical calibration table 116. On the other hand, as shown by graphs 1706 and 1708, the new calibration offset A1 (indicated by the central dot in graph 1708) is within the range of the current calibration value A0 + / - B0 (indicated by the dashed line intersecting the error bars in graph 1706). Thus, for the examples of graphs 1706 and 1708, the second rule would cause the server 102 to reject the new calibration result for storage in the historical calibration table 116. The second rule desirably allows for significant changes to the current calibration value, and thus the new calibration result is beneficial in situations where it is significantly different from the current calibration value. The second rule is preferably applied when the new confidence interval B1 is larger than the current confidence interval B0, when the time between t1 (when the new calibration result was determined) and t0 (when the current calibration value was determined) exceeds the expected drift characteristics, or when the new calibration result (A1 + / - B1) was calculated using a method with an unreliable 2D position region, etc., i.e., when the new calibration result has changed significantly from the current calibration value and it is desirable to change to the new calibration result.
[0098] As shown by the graphs 1802 to 1808 of calibration values versus time in FIG. 18, according to a possible third rule, if the ratio of the overlap between the current calibration value (A0 + / - B0) and the new calibration result (A1 + / - B1) to the length of the new confidence interval is equal to or greater than an overlap threshold (e.g., 0.8), the new calibration result (A1 + / - B1) is adopted. As shown by graphs 1802 and 1804, the ratio of the overlap (shown by the hatched area between graphs 1802 and 1804) to the length of the new confidence interval (shown by the range of the error bars for A1 + / - B1) is relatively large, e.g., greater than 0.8. Thus, in the case of the examples of graphs 1802 and 1804, the third rule would cause server 102 to adopt the new calibration result for storage in the historical calibration table 116. On the other hand, as shown by graphs 1806 and 1808, the ratio of the overlap (shown by the hatched area between graphs 1806 and 1808) to the length of the new confidence interval (shown by the range of the error bars for A1 + / - B1) is relatively small, e.g., less than 0.8. Thus, in the case of the examples of graphs 1806 and 1808, the third rule would cause server 102 to reject the new calibration result for storage in the historical calibration table 116. The third rule is beneficial in situations where it is preferable to change the current calibration value if the confidence interval of the new calibration result is small compared to the overlap of the confidence intervals of the two calibration values (i.e., indicating a high confidence level of the new calibration result).
[0099] As shown by the graphs 1902 to 1908 of calibration values versus time in FIG. 19, according to a possible fourth rule, when the value obtained by dividing the difference between the new calibration offset A1 (indicated by the central dot in graph 1904) and the current calibration offset A0 (indicated by the central dot in graph 1902) by the new confidence interval B1 is less than or equal to a threshold value (e.g., 2), the new calibration result (A1 + / - B1) is adopted. As shown by graphs 1902 and 1904, the difference (A1 - A0) divided by B1 is less than 2. Therefore, in the case of the examples of graphs 1902 and 1904, the fourth rule will cause the server 102 to adopt the new calibration result for storage in the history calibration table 116. On the other hand, as shown by graphs 1906 and 1908, the difference (A1 - A0) divided by B1 is greater than 2. Therefore, in the case of the examples of graphs 1906 and 1908, the fourth rule will cause the server 102 to reject the new calibration result for storage in the history calibration table 116. The fourth rule is useful in situations where the change in the current calibration value is adopted when the new calibration result drifts beyond the current confidence interval without excessive drift.
[0100] According to a possible fifth rule, a new calibration result is adopted or rejected based on a comparison between the calibration technique used to generate the new calibration result and the current calibration value. Thus, the fifth rule is not based on a comparison or calculation that includes a calibration offset or confidence interval of two calibration values. Instead, certain types of calibration techniques 208 - 224 may be prioritized over other types because one calibration technique may be more reliable than others. The reliability or prioritization of calibration techniques 208 - 224 can be determined empirically by comparing a number of calibration results to high - confidence results to determine which calibration techniques typically function better than others. The fifth rule is beneficial because it enables the selection of a more reliable or a calibration value considered to have a higher confidence. For example, if the current calibration value (A0 + / - B0) is determined using the app context calibration technique 220 and a new calibration result (A1 + / - B1) is determined using a well - surveyed POI with the nearby known geographical point calibration technique 218 and the technique using the well - surveyed POI is prioritized over the app context calibration technique 220, the server 102 adopts the new calibration result (A1 + / - B1) for storage in the history calibration table 116. In another example, if the current calibration value (A0 + / - B0) is measured using the building and terrain calibration technique 214 and a new calibration result (A1 + / - B1) is measured using the user intervention request calibration technique 224 and the user intervention request calibration technique 224 is prioritized over the building and terrain calibration technique 214, the server 102 adopts the new calibration result (A1 + / - B1) for storage in the history calibration table 116.
[0101] If the comparison and determination result at 1506, as determined at 1508, rejects or does not adopt the new calibration result, the server 102 does not update the historical calibration table with the new calibration result (at 1510). On the other hand, if the comparison and determination result at 1506, as determined at 1508, adopts the new calibration result, the server 102 updates the historical calibration table 116 with the new calibration result (at 1512) by storing the new calibration result as one of the previously determined calibration results 120. Next, process 1500 returns to process 200.
[0102] Many of the calibration techniques described herein assume that the 2D position of the user device 104 and its reliability provided in the position data (e.g., as indicated by the 2D position area 708) are accurate. However, if the 2D position is determined to be unreliable, any calibration results determined using the 2D position may be weighted less when considering all possible combined calibration results. The basic accuracy of the 2D position is questioned based on several factors as follows. 1) The form of the position, e.g., it is known a priori that 2D positions are difficult to determine in high-density urban and city environments. 2) Different 2D position sources, e.g., some user devices 104 use a combination of sources such as the Global Navigation Satellite System (GNSS), Wi-Fi transmitters, etc. to determine their position, so the accuracy of the position data can be determined by measuring the positions of each source and determining how correlated or clustered they are. 3) The stability of subsequent measurements, e.g., if subsequent 2D positions are quite different but the user device 104 can be determined to remain stationary, the 2D position may be unreliable. 4) Regarding the application context calibration technology 220, when the user device 104 is performing a task using a location-specific application, such as payment in a retail store app, and the nearest relevant retail store is far from the user device 104 and outside the 2D location area, the 2D location may not be reliable. 5) If non-physical results were obtained for the building envelope in a previous calibration (e.g., outside the possible floor range, far above the roof, or far below ground), the reliability of the 2D location used in the previous calibration may have been low, or the reliability of the current 2D location may be low. 6) In case of a contradiction in the comparison by different calibration techniques, for example, when the calibration result determined without using the 2D location contradicts the calibration result using the 2D location, the user device 104 may be an outlier or the 2D location may not be reliable.
[0103] Any method, technique, process, approach, or calculation described by or made possible by the disclosure of this specification can be implemented by hardware components (such as machines), software modules (such as those stored on a machine-readable medium), or combinations thereof. In particular, any method or technique described by or made possible by the disclosure of this specification can be implemented by any specific and tangible system described herein. By way of example, a machine can include one or more computing devices, processors, controllers, integrated circuits, chips, system-on-chips, servers, programmable logic devices, field-programmable gate arrays, electronic devices, application-specific circuits, and / or other suitable devices described herein or known in the art. One or more non-transitory machine-readable media embodying program instructions to cause one or more machines, when executed by the one or more machines, to perform or cause to be performed an operation including any step of the methods described herein are contemplated herein. As used herein, machine-readable media includes, but is not limited to, any form of machine-readable media including one or more non-volatile or volatile memory media, removable or non-removable media, integrated circuit media, magnetic storage media, optical storage media, or other storage media including RAM, ROM, and EEPROM, which can obtain a patent based on the laws of the jurisdiction where this application is filed, but does not include machine-readable media (such as a transient propagation signal) that cannot obtain a patent based on the laws of the jurisdiction where this application is filed. The methods disclosed herein provide a set of rules to be implemented. Systems including one or more machines and one or more non-transitory machine-readable media for implementing any method described herein are also contemplated herein. One or more machines configured to perform, execute, or cause to be performed an operation including any step of the methods described herein are also contemplated herein. Each method described herein that is not prior art represents a specific set of rules in a process flow that provides important advantages in the fields of calibration and positioning.The method steps described herein are not dependent on order and, where possible, can be performed in parallel with or in a different order than those described. The different method steps described herein can be combined in any number of ways to form any number of methods, as will be understood by those skilled in the art. Any method step or feature disclosed herein can be omitted from the claims for any reason. To avoid obscuring the concepts of the present disclosure, certain well-known structures and devices are not shown in the figures. When two things are "coupled" to each other, those two things can be directly connected or separated by one or more intervening elements. In the absence of a line or intervening element connecting two particular things, the coupling of those things is contemplated in at least one embodiment, unless otherwise stated. When the output of one thing is coupled to the input of another thing, the information transmitted from the output is received at the input in its output format or a modified version thereof, even if the information passes through one or more intermediate things. Unless otherwise stated, any known communication path and protocol can be used to transmit the information disclosed herein (e.g., data, commands, signals, bits, symbols, chips, etc.). Words such as "comprise", "comprising", "include", "including", etc. should be construed in an inclusive sense (i.e., not limited to) rather than an exclusive sense (i.e., consisting only of). Words using the singular or plural number include the plural or singular, respectively, unless otherwise stated. The words "or" and "and" used in the "Detailed Description" include any and all items in the list, unless otherwise stated. The words "some", "any", and "at least one" refer to one or more.The terms "may" or "can" are used in this specification for illustrative purposes rather than requirements. For example, an operation may be performed, or can be performed, or a characteristic may be had, or can be had, and it is not necessary to perform that operation or have that characteristic in each embodiment, but in at least one embodiment, the operation is performed or the characteristic is had. Unless another approach is described, access to data from a data source can be achieved using known techniques (e.g., the requesting component requests data from the source via a query or other known approach, the source searches for and finds the data, the source collects the data and transmits it to the requesting component, or other known techniques).
[0104] The environment in which the processes described herein can operate can include a network of terrestrial transmitters, at least one mobile device (e.g., a user device), and a server. Each of the transmitters and mobile devices can be located at various altitudes or depths, either inside or outside various natural or man-made structures (e.g., buildings). Location or positioning signals can be transmitted from the transmitters and satellites respectively, and then received by the mobile device using known transmission techniques. For example, a transmitter can transmit signals using one or more common multiplexing parameters that utilize time slots, pseudo-random sequences, frequency offsets, or other approaches, which are known in the art or as disclosed herein. The mobile device can take various forms including a cellular phone or other wireless communication device, a portable computer, a navigation device, a tracking device, a receiver, or other suitable device capable of receiving signals. Each transmitter and mobile device can include an atmospheric sensor (e.g., a pressure and temperature sensor) that generates measurements of atmospheric conditions (e.g., pressure and temperature) used to estimate the unknown altitude of the mobile device. As an example, the pressure sensor of the mobile device can also be calibrated as appropriate.
[0105] As an example, the transmitter discussed herein can include a mobile device interface (e.g., an antenna and RF front-end components known in the art or disclosed herein) for exchanging information with a mobile device, one or more processors, a memory / data source for storing and retrieving information and / or program instructions, an atmospheric sensor for measuring environmental conditions (e.g., pressure, temperature, humidity, etc.) at and near the transmitter, a server interface (e.g., an antenna, network interface, or the like) for exchanging information with a server, and other components known to those skilled in the art. The memory / data source may include a memory that stores software modules having executable instructions, and the processor may perform different operations including, by executing instructions from the modules: (i) performing some or all of the methods described herein as being executable by the transmitter or understood by those skilled in the art, (ii) generating a ranging signal for transmission using a selected time, frequency, code, and / or phase, (iii) processing signals received from a mobile device or other source, or (iv) other processing required by the operations described in this disclosure. The signals generated and transmitted by the transmitter can convey different information that can identify the transmitter, the location of the transmitter, the environmental conditions at and near the transmitter, and / or other known information once determined by a mobile device or server. The atmospheric sensor may be integral with the transmitter, or separate from the transmitter, and may be located at the same location as the transmitter or near the transmitter (e.g., within a distance threshold).
[0106] Referring to FIG. 20 as an example, the user device 104 includes a network interface 2001 for exchanging information with the server 102 via a network 106 (e.g., a wired and / or wireless interface port, antenna, and RF front-end components known in the art or disclosed herein), one or more processors 2002, a memory / data source 2003 for providing storage and retrieval of information and / or program instructions, an atmosphere sensor 2004 (including a barometric pressure sensor 108) for measuring environmental conditions (e.g., pressure, temperature, etc.) at the user device 104, other sensors 2005 for measuring other conditions (e.g., a compass and inertial sensors for measuring motion and direction), a user interface 2006 (display, keyboard, microphone, speaker, etc.) that enables a user of the user device 104 to provide inputs and receive outputs, and other components known to those skilled in the art. A GNSS interface and processing unit (not shown) is contemplated, and they can be integrated with other components or a stand-alone antenna, RF front-end, and a processor dedicated to receiving and processing GNSS signals. The memory / data source 2003 may include a memory storing data and software modules having executable instructions, including a signal processing module, a signal-based position estimation module, a pressure-based altitude module, a motion determination module, current calibration values, data packets, a calibration module, and other modules.Processor 2002 may perform different operations, including the following, by executing instructions from the module: (i) performing some or all of the methods, processes, and techniques described herein or otherwise understood by one of ordinary skill in the art as being executable on user device 104; (ii) estimating the altitude of user device 104 (based on pressure measurements from user device 104 and the transmitter, temperature measurements from the transmitter or another source, and other information necessary for the calculation); (iii) processing received signals to determine position information or location data (e.g., time of arrival or time of flight of the signal, pseudo - distance between the mobile device and the transmitter, atmospheric conditions of the transmitter, transmitter and / or location, or other transmitter information); (iv) using the position information to calculate the estimated position of user device 104; (v) determining motion based on measurements from the inertial sensors of user device 104; (vi) GNSS signal processing; (vii) collecting and transmitting data packets 112; (viii) storing the current calibration values 110 and data packets 112; (ix) calibrating the barometric pressure sensor 108; and / or (x) other processing required by the operations described in this disclosure.
[0107] Referring to FIG. 21 as an example, server 102 can include a network interface 2101 for exchanging information with user device 102 and other data sources via network 106 (e.g., wired and / or wireless interface ports, antennas, or others), one or more processors 2102, a memory / data source 2103 for providing storage and retrieval of information and / or program instructions, and other components known to those skilled in the art. Memory / data source 2103 can include, for example, a memory storing software modules having executable instructions such as a manufacturer and model calibration module for barometric pressure sensors, a device ID calibration module, a manufacturer and model calibration module for devices, a building and terrain calibration module, a nearby accurate sensor calibration module, a nearby known geographic point calibration module, an app context calibration module, a machine learning model calibration module, and a user intervention request calibration module, as well as other modules for each of the methods and processes described above. Processor 2102 can perform different operations by executing instructions from the modules, including: (i) performing some or all of the methods, processes, and techniques described herein or otherwise understood by those skilled in the art as being executable on server 102, (ii) making a high-level estimate of user device 104, (iii) calculating the estimated location of user device 104, (iv) performing calibration techniques, (v) calibrating user device 104, or (vi) performing other processing required by the operations or processes described in this disclosure. The steps executed by the server as described herein may be executed on other machines remote from user device 104, including a corporate computer or any other suitable machine.
[0108] Certain aspects disclosed herein relate to estimating the position or location of a user device, where, for example, the position is represented by latitude, longitude, and / or altitude coordinates, x, y, z coordinates, angular coordinates, or other representations. A variety of techniques can be used to estimate the position of a user device, such techniques including trilateration, which is a process that uses geometry to estimate the position of a user device using the distances traveled based on different "positioning" (or "ranging") signals received by the user device from different beacons (e.g., terrestrial transmitters and / or satellites). When position information such as the transmission time and reception time of a positioning signal from a beacon is known, multiplying the time difference by the speed of light yields an estimate of the distance traveled by the positioning signal from the beacon to the user device. Different estimated distances corresponding to different positioning signals from different beacons can be used, along with position information such as the positions of these beacons, to estimate the position of the user device. Positioning systems and methods for estimating the position of a user device (with respect to latitude, longitude, and / or altitude) based on positioning signals from beacons (e.g., transmitters and / or satellites) and / or atmospheric measurements are described in U.S. Patent No. 8,130,141, issued March 6, 2012, and U.S. Patent No. 9,057,606, issued June 16, 2015, both to the same applicant. Note that the term "positioning system" can refer to satellite systems (e.g., global navigation satellite systems (GNSS) such as GPS, GLONASS, Galileo, Compass / Beidou), terrestrial transmitter systems, and hybrid satellite / terrestrial systems.
[0109] In a certain environment, it can be very difficult to determine the exact location (including altitude) of a user device, especially when the user device is in an urban environment or inside a building. For example, inaccurate altitude estimation can delay the response time of emergency personnel when searching for a user on multiple floors of a building. Therefore, inaccurate altitude estimation of the user device can have life-or-death consequences for the user of the user device. In less critical situations, inaccurate altitude estimation can lead the user to the wrong location within the environment. There are various approaches to estimating the altitude of a user device. In a barometric positioning system, the altitude can be calculated using the measured pressure from the calibrated pressure sensor of the user device, along with the measured ambient pressure from a network of calibrated reference pressure sensors and the measured ambient temperature from the network or other sources. The estimated altitude (h user ) of the user device can be calculated as follows by the user device, server, or other device that receives the necessary information. JPEG0007693404000001.jpg20146 (Equation 1)
[0110] Here, P user is the estimated pressure by the pressure sensor of the user device at the location of the user device, P sensor is the estimated pressure at the location of the reference pressure sensor that is accurate within an acceptable range of pressure (e.g., less than 5 Pa) from the true pressure, T remote is the estimated temperature (e.g., in Kelvin) at the location of the reference pressure sensor or a different location of a remote temperature sensor, h sensor is the estimated altitude of the reference pressure sensor that is estimated to be within the desired altitude error (e.g., less than 1.0 m), g is the acceleration due to gravity (e.g., -9.8 m / s 2 ), R is the gas constant, and M is the molar mass of air (e.g., dry air or others). As will be understood by those skilled in the art, in another embodiment of Equation 1, the minus sign (-) may be replaced by a plus sign (+) (e.g., g = 9.8 m / s 2 ).
[0111] The estimated pressure at the location of the reference pressure sensor identifies the estimated pressure at the latitude and longitude of the reference pressure sensor, but converts to the estimated reference surface pressure corresponding to the reference pressure sensor in that it identifies the estimated pressure at a reference surface altitude that may be different from the altitude of the reference pressure sensor. The pressure of the reference surface can be determined as follows. JPEG0007693404000002.jpg20137 (Equation 2)
[0112] Here, P sensor is the estimated pressure at the location of the reference pressure sensor, P ref is the estimated pressure of the reference surface, T remote is the reference ambient temperature, h ref is the altitude of the reference surface. The altitude h user of the user device can be calculated using Equation 1, where in Equation 1, h sensor is h ref replaced by, and P sensor is P ref replaced by. The altitude h ref of the reference surface can be any altitude and is often set to mean sea level (MSL). If two or more reference surface pressure estimates are available, the reference surface pressure estimates are combined into a single reference surface pressure estimate (e.g., using the average value, weighted average value, or other appropriate combination of the reference pressures), and the single reference surface pressure estimate is used for the reference surface pressure estimate P ref .
[0113] Embodiments of the disclosed invention are described in detail, and one or more examples thereof are shown in the accompanying drawings. Each example is provided as an illustration of the technology of the present invention, not as a limitation thereof. Indeed, although the present specification has been described in detail with respect to particular embodiments of the present invention, it will be understood by those skilled in the art that, having understood the foregoing, they can readily conceive of variations, modifications, and equivalents of these embodiments. For example, features illustrated or described as part of one embodiment can be used with another embodiment to obtain yet another embodiment. Accordingly, the subject matter is intended to cover all such variations and modifications within the scope of the appended claims and their equivalents. These and other changes and modifications to the present invention can be made by those skilled in the art without departing from the scope of the present invention as more particularly set forth in the appended claims. Further, those skilled in the art will understand that the foregoing description is merely exemplary and not intended to limit the present invention.
Claims
1. Receiving data packets from a device by a server; Determining, by the server, a plurality of calibration results based on data in the data packet, each of the plurality of calibration results being for calibration of a barometric pressure sensor of the device, the device currently using a current calibration value for calibration of the barometric pressure sensor; For each calibration result of the plurality of calibration results, when the comparison between the calibration result and the current calibration value by the server indicates that the calibration result satisfies a rule regarding the relationship between the calibration result and the current calibration value, updating a historical calibration table with the calibration result, the historical calibration table including a plurality of previously determined calibration results for the barometric pressure sensor, the plurality of previously determined calibration results including the calibration result after updating the historical calibration table; For each calibration result of the plurality of calibration results, when the comparison between the calibration result and the current calibration value by the server indicates that the calibration result does not satisfy the rule, not updating the historical calibration table with the calibration result; Determining, by the server, a plurality of weighting values corresponding to the plurality of previously determined calibration results in the historical calibration table; Adjusting, by the server, each calibration result of the plurality of previously determined calibration results with a corresponding weighting value of the plurality of weighting values to obtain a plurality of weighted calibration results, and determining a combined calibration result by combining the plurality of weighted calibration results; Selecting, by the server, a selected calibration value from the combined calibration result and the current calibration value based on a selection criterion; Transmitting, by the server, the selected calibration value to the device and calibrating the barometric pressure sensor using the selected calibration value. A method comprising.
2. Each calibration result includes a calibration offset and a confidence interval. The calibration offset is the amount by which the measured pressure value generated by the pressure sensor is changed to generate a calibration pressure value that is expected to be substantially close to the actual atmospheric pressure in the pressure sensor. When applied to the calibration offset, the confidence interval gives the possible error range of the calibration result. When applied to the calibration pressure value, the confidence interval is a range greater than and less than the calibration pressure value within which the actual atmospheric pressure is expected to be, according to the method of claim 1.
3. The rule regarding the relationship between the calibration result and the current calibration value is based on the fact that the possible error range of the calibration result completely overlaps with the previous possible error range of the current calibration value, according to the method of claim 2.
4. The rule regarding the relationship between the calibration result and the current calibration value is based on the fact that the calibration offset of the calibration result is not within the previous possible error range of the current calibration value, according to the method of claim 2.
5. Further, the server determines that the possible error range of the calibration result overlaps with the previous possible error range of the current calibration value by an overlapping amount, The rule regarding the relationship between the calibration result and the current calibration value is based on the fact that the ratio of the overlapping amount to the possible error range of the calibration result is equal to or greater than a threshold amount, according to the method of claim 2.
6. The rule regarding the relationship between the calibration result and the current calibration value is based on the fact that the value obtained by dividing the difference between the calibration offset of the calibration result and the calibration offset of the current calibration value by the confidence interval of the calibration result is equal to or less than a threshold amount, according to the method of claim 2.
7. The method according to claim 2, wherein the rule regarding the relationship between the calibration result and the current calibration value is based on the fact that a first calibration technique used to determine the calibration result has priority over a second calibration technique used to determine the current calibration value.
8. Before determining the combined calibration result, the server adjusts the plurality of previously determined calibration results based on their respective elapsed times to obtain a plurality of adjusted previously determined calibration results; The method according to claim 1, further comprising determining the combined calibration result using the plurality of adjusted previously determined calibration results.
9. The selection criterion is based on: 1) the minimum uncertainty of the combined calibration result and the current calibration value; 2) the minimum uncertainty less than the uncertainty threshold of the combined calibration result and the current calibration value; 3) the highest-priority calibration technique among the plurality of calibration techniques used to determine the combined calibration result and the current calibration value; or 4) the median calibration value of the combined calibration result and the current calibration value. The method according to claim 1.
10. The data in the data packet includes a plurality of data items. The plurality of data items are used by a plurality of calibration techniques to determine the plurality of calibration results. For each calibration result of the plurality of calibration results, the calibration result is determined by a different calibration technique of the plurality of calibration techniques. The method according to claim 1.
11. Each calibration technique of the plurality of calibration techniques is associated with a corresponding confidence level of the calibration result generated thereby. For each weighting value of the plurality of weighting values, the weighting value is based on the confidence level of the corresponding calibration result of the plurality of calibration results. The method according to claim 10.
12. The method according to claim 10, wherein the plurality of data items include: 1) sensor characteristic data regarding the barometric pressure sensor; and 2) current state data regarding the state of the device at the time when the data packet was created by the device.
13. The sensor characteristic data includes: 1) device identification data that uniquely identifies the device and can identify the model type of the barometric pressure sensor; 2) sensor type data that identifies the model type of the barometric pressure sensor; and 3) device type data that identifies the model type of the device. The current state data includes: 1) pressure data indicating the barometric pressure measurement performed by the barometric pressure sensor; 2) time data indicating the time when the barometric pressure sensor performed the barometric pressure measurement; 3) position data indicating the area where the device was located when the barometric pressure sensor performed the barometric pressure measurement; and 4) application data indicating the application that was operating on the device when the barometric pressure sensor performed the barometric pressure measurement. Furthermore, determining, by the server, a first calibration result among the plurality of calibration results based on a first predetermined calibration for the model type of the barometric pressure sensor; determining, by the server, a second calibration result among the plurality of calibration results based on a second predetermined calibration for the model type of the device; determining, by the server, a third calibration result among the plurality of calibration results based on the pressure data, the position data, building, and terrain data; determining, by the server, a fourth calibration result among the plurality of calibration results based on the pressure data, the position data, the time data, and known accurate pressure data, wherein the known accurate pressure data is from a known accurate barometric pressure sensor within a first threshold distance of the area where the device was located. The server determines a fifth calibration result among the plurality of calibration results based on the pressure data, the position data, and known accurate altitude data, wherein the known accurate altitude data is based on a geographical point whose altitude is known and is within a second threshold distance of the area where the device was located; The server determines a sixth calibration result among the plurality of calibration results based on the pressure data, the position data, and the application data, wherein the application data indicates that the application operating on the device is related to a predetermined location whose altitude is known and is within a third threshold distance of the area where the device was located; The method according to claim 12, further comprising: the server determines the new calibration value of the barometric pressure sensor based on two or more of the first calibration result, the second calibration result, the third calibration result, the fourth calibration result, the fifth calibration result, and the sixth calibration result.
14. The data packet is a first data packet, and the data in the data packet is first data. Furthermore, The server receives a second data packet from the device; The method according to claim 1, further comprising: the server determines the plurality of calibration results based on the first data of the first data packet and the second data of the second data packet.
15. The server determines a first calibration result among the plurality of calibration results by using the first data of the first data packet and a first calibration technique; The method according to claim 14, further comprising: the server determines a second calibration result among the plurality of calibration results by using the second data of the second data packet and a second calibration technique, wherein the second calibration technique is different from the first calibration technique.
Citation Information
Patent Citations
Systems and methods for determining an altitude error value associated with an estimated altitude of a mobile device
US20170276483A1
Systems and methods for determining when to calibrate a pressure sensor of a mobile device
US20190360886A1