Constraining barometric pressure sensor calibration with sporadic data collection
A server-based calibration system for mobile devices combines various techniques to ensure accurate barometric pressure sensor calibration, addressing the issue of unreliable consumer-grade sensors and sporadic data collection, enhancing altitude determination accuracy.
Patent Information
- Application Number
- JP2025093879
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2021-06-04
- Filing Date
- 2025-06-05
- Publication Date
- 2025-09-25
AI Technical Summary
Consumer-grade barometric pressure sensors in mobile devices are often not properly calibrated, and existing calibration methods are unreliable due to sporadic data collection and user inaccuracy, leading to inaccurate altitude determinations.
A server-based calibration system that combines multiple calibration techniques using sensor characteristics and current state data to determine and update calibration values, minimizing user intervention and ensuring accurate calibration under various conditions.
Provides reliable and accurate calibration of barometric pressure sensors with minimal data, reducing power consumption and privacy concerns while maintaining seamless operation.
Smart Images

Figure 2025138665000001_ABST
Abstract
Description
[Technical Field]
[0001] (Related Applications) This application claims priority to U.S. Provisional Patent Application No. 17 / 303,691, entitled "Limitations on Barometric Pressure Sensor Calibration Due to Sporadic Data Collection," filed June 4, 2021, which claims priority to U.S. Provisional Patent Application No. 63 / 037,899, entitled "Limitations on Barometric Pressure Calibration Due to Sporadic Data Collection," filed June 11, 2020, and which is hereby incorporated by reference in its entirety and for all purposes. [Background technology]
[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 pressure sensor within the mobile device.
[0003] Under ideal conditions, the barometric pressure sensor is already properly calibrated when the mobile device leaves the factory, or the mobile device user follows instructions on how to calibrate the barometric pressure sensor on the mobile device.
[0004] However, most consumer-grade barometric pressure sensors are not properly calibrated, and the willingness or ability of most users to calibrate the barometric pressure sensor on their mobile devices is unknown or unreliable. Furthermore, even if the barometric pressure sensor is accurately calibrated at one time, the calibration can drift over time, thereby resulting in poor calibration and making the mobile device's altitude determination capabilities inaccurate, unreliable, or useless.
[0005] Therefore, the mobile device must communicate with a system that calibrates the barometric pressure sensor. This calibration is typically performed automatically, i.e., without user intervention or knowledge. However, the accuracy of such calibration by the calibration system can be questionable if the calibration techniques used by it are not adequately suited to the types of situations that the user and mobile device may encounter. Summary of the Invention [Means for solving the problem]
[0006] In some embodiments, the method performed by the server includes:
[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 a barometric pressure sensor of the device, the device currently using a current calibration value for calibrating the barometric pressure sensor;
[0009] for each calibration result of the plurality of calibration results, if a comparison by the server between the calibration result and a current calibration value 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, wherein 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 results after updating the historical calibration table;
[0010] For each calibration result of multiple calibration results, if a comparison of the calibration result with the current calibration value indicates that the calibration result does not satisfy the rules, do not update the historical calibration table with the calibration result.
[0011] determining, by the server, a plurality of weighting values corresponding to a plurality of previously determined calibration results in the historical calibration table;
[0012] determining, by the server, a combined calibration result by adjusting 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 combining the plurality of weighted calibration results;
[0013] selecting, by the server, a selected calibration value from the combined calibration results and the current calibration value based on a selection criterion; and
[0014] Sending, by the server, to the device, selected calibration values for use by the device in calibrating the barometric pressure sensor.
[0015] In some embodiments, each calibration result and each calibration value includes 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, confidence interval, or possible error range of the calibration result and the current calibration value.
[0016] In some embodiments, 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, and 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 criteria are based on 1) the smallest uncertainty and current calibration value of the combined calibration result, 2) the smallest uncertainty and current calibration value of the combined calibration result that is less than an uncertainty threshold, 3) the highest priority calibration technique and current calibration value of multiple calibration techniques used to determine the combined calibration result, or 4) the median calibration value and current calibration value of the combined calibration result.
[0018] In some embodiments, the data in the data packet includes multiple data items. The multiple data items are used by multiple calibration techniques to determine multiple calibration results. Each calibration result of the multiple calibration results is determined by one of the calibration techniques. The multiple data items include 1) sensor characteristic data for the barometric pressure sensor and 2) current state data for 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 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 indicative of a barometric pressure measurement performed by the barometric pressure sensor, 2) time data indicative of the time the barometric pressure sensor performed the barometric pressure measurement, 3) location data indicative of the region in which the device was located when the barometric pressure sensor performed the barometric pressure measurement, and 4) application data indicative of an application running on the device when the barometric pressure sensor performed the barometric pressure measurement. The method further includes determining the 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 embodies program instructions for performing the method. [Brief explanation of the drawings]
[0021] [Figure 1] FIG. 1 is a simplified schematic diagram of an exemplary calibration system for calibrating a barometric pressure sensor in a user's device, according to some embodiments.
[0022] [Figure 2]FIG. 2 is a simplified flowchart of an exemplary process by the calibration system shown in FIG. 1 for performing a calibration technique and processing the results, according to some embodiments.
[0023] [Figure 3] FIG. 3 is a simplified flowchart of an exemplary process by the calibration system shown in FIG. 1 for updating the calibration of a barometric pressure sensor in a user's device, according to some embodiments.
[0024] [Figure 4] FIG. 4 is a simplified flowchart of an exemplary process by the calibration system shown in FIG. 1 for performing a calibration technique, according to some embodiments.
[0025] [Figure 5] FIG. 5 is a simplified flowchart of an exemplary process by the calibration system shown in FIG. 1 to perform another calibration technique, according to some embodiments.
[0026] [Figure 6] FIG. 6 is a simplified flowchart of an exemplary process by the calibration system shown in FIG. 1 to perform another calibration technique, according to some embodiments.
[0027] [Figure 7] FIG. 7 is a simplified diagram of an exemplary terrain with buildings for use in the calibration technique shown in FIG. 8, according to some embodiments.
[0028] [Figure 8] FIG. 8 is a simplified flowchart of an exemplary process by the calibration system shown in FIG. 1 to perform another calibration technique, according to some embodiments.
[0029] [Figure 9]FIG. 9 is a simplified graph of exemplary altitude and cumulative probability for use in the calibration technique shown in FIG. 8, according to some embodiments.
[0030] [Figure 10] FIG. 10 is a simplified flowchart of an exemplary process by the calibration system shown in FIG. 1 to perform another calibration technique, according to some embodiments.
[0031] [Figure 11] FIG. 11 is a simplified flowchart of an exemplary process by the calibration system shown in FIG. 1 to perform another calibration technique, according to some embodiments.
[0032] [Figure 12] FIG. 12 is a simplified flowchart of an exemplary process by the calibration system shown in FIG. 1 to perform another calibration technique, according to some embodiments.
[0033] [Figure 13] FIG. 13 is a simplified flowchart of an exemplary process by the calibration system shown in FIG. 1 to perform another calibration technique, according to some embodiments.
[0034] [Figure 14] FIG. 14 is a simplified flowchart of an exemplary process by the calibration system shown in FIG. 1 for combining the results of multiple calibration techniques, according to some embodiments.
[0035] [Figure 15] FIG. 15 is a simplified flowchart of an exemplary process by the calibration system shown in FIG. 1 for updating a historical calibration table with new calibration results, according to some embodiments.
[0036] [Figure 16-19]16-19 are additional simplified graphs for use in the process shown in FIG. 15 for comparing new calibration values to current calibration values, according to some embodiments.
[0037] [Figure 20] FIG. 20 is a simplified schematic diagram of a mobile or user device for use in the calibration system shown in FIG. 1, according to some embodiments.
[0038] [Figure 21] FIG. 21 is a simplified schematic diagram of a server for use in the calibration system shown in FIG. 1, according to some embodiments. DETAILED DESCRIPTION OF THE INVENTION
[0039] The calibration system or method described herein enables calibration of a barometric pressure sensor of a mobile or user device using several calibration techniques that take into account various conditions that the user device and its user may encounter. The combination of the calibration techniques and analysis of the results provides a relatively accurate calibration of the barometric pressure sensor, thereby resulting in relatively accurate and reliable altitude determinations by the user device.
[0040] In some embodiments, the calibration system calibrates the barometric pressure sensor at sporadic times under non-ideal conditions. If calibration data is available, the calibration system examines and processes the available calibration data, performs any calibration techniques enabled by the calibration data, combines the results of the calibration techniques to obtain new calibration values, determines the quality or reliability of the new calibration values, decides whether to accept or reject the new calibration values, and decides whether to update the user device with the new calibration values.
[0041] Advantages of the present invention include enabling barometric pressure sensors to be calibrated with minimal data across a variety of environments. Furthermore, the calibration system and method require little or no user intervention, provided the resulting calibration values are associated with a good degree of confidence. Furthermore, if user intervention is requested or required, the calibration system allows the user to freely select a location and can handle indoor locations on the upper floors of a building. Furthermore, the present invention minimizes any interruptions to the user and provides a seamless, automated method for calibrating barometric pressure sensors. Furthermore, the minimal data used for calibration can help reduce power consumption by user devices or alleviate privacy concerns.
[0042] 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, the calibration system 100 generally includes a server 102 and several mobile or user devices 104. The server 102 generally communicates with the user devices 104 via a network 106. The server 102 generally represents one or more computing devices, such as a cloud computing system, a server farm, a set of computers, a desktop computer, a notebook computer, among others. Each of the user devices 104 generally represents a smartphone, a mobile phone, a personal computer, or the like. The network 106 generally represents any suitable combination of the Internet, a mobile phone communication system, a broadband cellular network, a wide area network (WANs), a local area network (LANs), a wireless network, a network based on the IEEE 802.11 family of standards (Wi-Fi network), and other data communication networks.
[0043] In some embodiments, each user device 104 typically includes, among other hardware, software, and data, a barometric pressure sensor 108, a current calibration value 110, and a data packet 112. The barometric pressure sensor 108 generates pressure measurements that the user device 104 uses to determine its altitude. The current calibration value 110 is used by the user device 104 or the barometric pressure sensor 108 to calibrate the barometric pressure sensor 108, i.e., to adjust the original pressure measurements to obtain more accurate adjusted pressure measurements for determining altitude. The data packet 112 includes the calibration data that the user device 104 has collected to send to the server 102 so that the server 102 can determine and return the current calibration value 110, as described below.
[0044] In some embodiments, the server 102 generally includes, among other hardware, software, and data, data packets 114 received from each user device 104 (corresponding to data packet 112), 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, the server 102 maintains one or more data packets 114 containing the most recent, unexpired calibration data. The server 102 may delete data packets containing calibration data that are deemed too old to be reliable and therefore have expired. Using the calibration data in one or more data packets 114 from one of the user devices 104, the server 102 performs one or more of a variety of calibration techniques to determine a calibration value for that user device 104, as described below. The server 102 stores the calibration values in the historical calibration table 116. The historical calibration table 116 includes previously determined calibration results 120 for the corresponding user device 104 that are unexpired, i.e., are deemed still usable. As described below, the server 102 selects a calibration value from among previously determined calibration results 120 or generates a calibration value based on previously determined calibration results 120 and stores the selected or generated calibration value in a current calibration table 118. The current calibration table 118 therefore includes the selected or generated calibration value as a current calibration value 122, which is generally considered to be the best currently available calibration value. The 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 to calibrate the barometric pressure sensor 108. In other embodiments, variations on the above functionality are described below.
[0045] 2 shows a simplified flowchart of an exemplary process 200 by calibration system 100 for performing a calibration technique and processing the 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 having different steps, combinations of steps, or order of steps may be used to achieve the same or similar results. Features or functionality described with respect to one of the steps performed by one of the components may, in some embodiments, be enabled by a different step or component. Furthermore, some steps may be performed before, after, or overlap with other steps, regardless of the illustrated order of steps.
[0046] At 202, the server 102 receives and stores one or more data packets 114 (one or more times) from the user device 104. (Receipt of any data packet 114 generally performs the exemplary process 200.) In some embodiments, the calibration techniques described herein can be used with calibration data from a single data packet 114 received from the user device 104, or with calibration data from multiple data packets 114 received at different times. Furthermore, the server 102 can receive new data packets 114 from the user device 104 at regular intervals as well as any non-regular, sporadic times. The user device 104 typically transmits a data packet 112 to the server 102 whenever new data becomes available or whenever the user device 104 determines that its location is within a threshold distance of a point, object, or device with known, accurate altitude or pressure measurements that can be used in calibration, as described below.
[0047] An example set of calibration data in data packet 114 includes multiple data items such as: 1) Sensor manufacturer and model information of the barometric pressure sensor 108 in the user device 104 2) The unique device identification (ID) of the user device 104 3) User device 104 manufacturer and model information 4) A timestamp (time data) for the pressure measurement taken by the barometric pressure sensor 108 5) The location of the user device 104 at the time the pressure measurement was taken (location data) 6) Pressure value (pressure data) for pressure measurement 7) a list of apps running on the user device 104 (app data); and 8) Wireless data from wireless devices within range of the user device 104 (e.g., Wi-Fi devices, Bluetooth beacons transmitting Z position, etc.).
[0048] Data items 1-3 are referred to as "sensor characteristic data" because they are used to determine basic characteristics of the sensor that do not typically change. For example, the designer, manufacturer, or seller of a given make and model of barometric pressure sensor may publish (e.g., in a product data sheet) empirically determined calibration values applicable to all barometric pressure sensors of the same model. Furthermore, the make and model of the barometric pressure sensor in a user device 104 can potentially be determined based on the user device's 104 unique device ID or make / model. Similarly, the calibration values applied to barometric pressure sensors 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 accuracy for the barometric pressure sensors. Thus, any of data items 1-3 can be used to determine an empirically determined calibration value for a barometric pressure sensor 108 or user device 104 (and, implicitly, for the barometric pressure sensors 108 therein). Because the calibration value obtained in this manner is generally determined empirically only once, the calibration value can be thought of as a static or unchanging characteristic of the barometric pressure sensor 108 or user device 104.
[0049] Data items 4-8, on the other hand, are referred to as "current state data" because they relate to specific, current conditions of the user device 104 or barometric pressure sensor 108, which may change. For example, as a user moves around with the user device 104 on any given day, the time, location, pressure measurements, running apps, and nearby Wi-Fi devices are constantly changing. Therefore, the calibration value obtained for any of these data items will depend on the current state of the user device 104 and barometric pressure sensor 108 at the time and location at which each data item of 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. Furthermore, some of the data packets 114 may not include all types of data items. (Missing data items may be indicated by null or dummy values.) Thus, after the server 102 reads (at 204) the data items from one or more data packets 114, the server 102 determines (at 206) whether any type of calibration technique can be performed with the available data items. The calibration techniques generally include a “Barometric Pressure Sensor Make and Model” calibration technique 208, a “Device ID” calibration technique 210, a “Device Make and Model” calibration technique 212, a “Building and Terrain” calibration technique 214, a “Nearby Accurate Sensor” calibration technique 216, a “Nearby Known Geographical Point” calibration technique 218, an “App Context” calibration technique 220, a “Machine Learning Model” calibration technique 222, and a “User Intervention Request” calibration technique 224. (Each calibration technique is described in more detail below.) Thus, at 206, the server 102 selects one or more of these calibration techniques to perform based on available data items in one or more data packets 114.
[0051] Because this disclosure generally describes automatic calibration techniques, the user-intervention-requested calibration technique 224 is a special case that may be implemented, 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., needed immediately by the user). In such situations, the server 102 sends a request to the user device 104 for the user to manually enter calibration values into the user device 104, which are then used in barometric altitude determination. Additionally, the user may be requested to manually calibrate the user device 104 if the quality of the existing calibrations is poor because all of the existing calibration confidence intervals (described below) exceed a predetermined threshold N, which is set by the server 102 or is user-configurable; if no calibration values are available due to a lack of available calibration data; or if the previous calibration values are inaccurate due to sensor drift over sufficient time.
[0052] In some embodiments of the user intervention required calibration technique 224, the user is requested to input (and the user device 104 receives and transmits to the server 102) a location by entering a latitude and longitude, an address (which can be reverse geocoded to determine the latitude and longitude), or a pin drop on a displayed map (which can be mapped to the latitude and longitude), etc. In some embodiments, the altitude of a manually entered user location can be determined using one or more other calibration techniques, such as those described below, that use location data provided by the user with highly accurate location rather than the potentially inaccurate location provided by the user device 104. Thus, the user intervention required calibration technique 224 can be performed in conjunction with some of the other calibration techniques to manually determine some of the calibration data. However, if the server 102 determines that the manually entered calibration data, such as location data, is not suitable for calibration (e.g., if the pin drop is over water, if the pin drop is on a very steep hill, or if the pin drop is in a building with an unknown number of floors or building height), the resulting altitude may be unreliable and the user intervention required calibration technique may be aborted or denied.
[0053] As an example, if a manually entered location is determined to be within a building (e.g., determined to be near a building based on being within a building polygon, 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 / designation. Upon receiving the floor number, the server 102 can map the floor number to an absolute elevation using a building database including floor heights, a building database having building heights (i.e., roof heights) and estimated floor numbers, a building database having estimated floor numbers and floor spacing assumptions, or a building database having building heights and floor spacing assumptions. The server 102 converts between floor numbers and floor designations as needed (e.g., where ground level and first floor are synonymous compared to where first floor is one floor above ground level, where floor 13 is intentionally skipped, where floor designations including the number four are intentionally skipped, etc.).
[0054] Depending on how the user input is used, the confidence interval for the user intervention required calibration technique 224 depends on one or more of a variety of considerations, including: 1) the accuracy of the reference network of known accurate sensors; 2) the distance to the network reference node; 3) the accuracy of the manually entered 2D location; 4) the accuracy of the terrain / (specific point) / building database; 5) the variety of terrain within the user location confidence circle; and 6) the accuracy of the floor level determination.
[0055] At 226, the server 102 performs the selected calibration technique 208-224, which are described in more detail below with respect to Figures 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 acceptable for the current calibration values 122, as described in more detail below with respect to Figure 15. If the new calibration result is acceptable at 228, the server 102 stores (at 230 or 1512 below) the new calibration result in the historical calibration table 116 as part of the previously determined calibration result 120. Alternatively, the server 102 (at 228) simply stores all calibration results in the historical calibration table 116 without filtering at 228. (Each calibration result and value has the format A+ / -B, where A is the "calibration offset" and B is the "confidence interval" or "calibration confidence," as described below. Furthermore, the calibration offset can have a positive or negative value, which, depending on the + / - sign convention, can be added or subtracted from the "measured pressure value" generated by the barometric pressure sensor 108 to generate the "calibrated pressure value.") Each previously determined calibration result 120 is stored in the historical calibration table 116 along with information such as: 1) a timestamp (e.g., the time the measurement was taken or 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 historical calibration table 116 becomes too old, for example, if it expires after a predetermined time (e.g., one month), the calibration result can be deleted from the historical calibration table 116.
[0056] The calibration offset is the amount by which the measured pressure value generated by the barometric pressure sensor 108 is altered, or offset, to produce a calibrated pressure value that is expected to be substantially closer to the "actual barometric pressure" at the barometric pressure sensor 108. When a confidence interval is applied to a calibration offset, the confidence interval provides a "range of possible error" (e.g., error bars) above and below the calibration offset for a calibration result or value. When a confidence interval is applied to a calibrated pressure value, the confidence interval is the range above and below the calibrated pressure value within which the actual barometric pressure is expected to fall. Thus, the term "confidence interval" generally refers to a range of values within which it is relatively certain that the calibration actually falls within a given percentage confidence level. For example, a smaller range of values indicates a greater degree of "confidence" in the calibration. For example, for a calibration result or value of 100 + / - 50 Pa, if the confidence is measured at 1 sigma standard deviation (68%), this means that there is a 68% confidence level that the calibration will fall within a range between 50 and 150 Pa. (Other percent confidence levels may alternatively be used.) In figures with error bars, the confidence interval is half the length of the entire error bar, so in this example the error bar length is 150-50=100 Pa. Furthermore, the terms "confidence interval," "calibration confidence," "calibration uncertainty," and "confidence value" may be used interchangeably herein or in the industry. However, a high "confidence" in a calibration result or value generally corresponds to a small "confidence interval," and a low "confidence" in a calibration result or value generally corresponds to a large "confidence interval." Furthermore, "confidence" is a general term used herein to refer to the overall confidence in a calibration result or value based on an understanding of the confidence interval, the percent confidence level, and the relative likelihood that one calibration technique may be superior to others.
[0057] The calibrated pressure value is typically used to determine a calibrated altitude for the user device 104. A confidence interval is used to determine the range below and above the calibrated altitude within which the actual altitude is expected to be within a percent confidence level.
[0058] 3 shows a simplified flowchart of an exemplary process 300 by the calibration system 100 for updating the calibration of the barometric pressure sensor 108 in the user device 104, according to some embodiments. At 302, the server 102 determines that it is time to calibrate the barometric pressure sensor 108 of the user device 104. This determination may be made after a predetermined amount of time has passed since the last time the barometric pressure sensor 108 was calibrated or updated (e.g., one, two days, or several hours, i.e., enough time that the current calibration value becomes unreliable). Alternatively, the determination at 302 may be made when a new calibration result is added to the historical calibration table 116, thereby desirably ensuring that the best of the previously determined calibration results 120 (including the new calibration result and the current calibration value, among any other available or unexpired calibration results) is used as the current calibration value.
[0059] Thus, at 304, the server 102 retrieves the previously determined calibration result 120 from the historical calibration table 116. If there is only one previously determined calibration result 120, the process 300 can branch to 312 from this point.
[0060] At 306, the server 102 updates the confidence intervals of the previously determined calibration results 120 in the historical 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 value 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 performed) and the time indicated by the timestamp in the historical calibration table 116 for the previously determined calibration result 120. In some embodiments, the update at 306 is performed only for previously determined calibration results 120 obtained from calibration techniques 214-224 that used any of the current state data, and not for previously determined calibration results 120 obtained from calibration techniques 208-212 that used only sensor characteristic data. This is because the calibration techniques 214-224 (which rely on measured calibration data from the barometric pressure sensor 108) are prone to sensor drift, which can cause the calibration techniques 214-224 to become less accurate over time. Such "aging" increases the uncertainty of the calibration results resulting from the calibration techniques 214-224, and therefore the confidence intervals increase accordingly. In other embodiments, the update at 306 is performed on all previously determined calibration results 120, regardless of the calibration technique 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., a first predetermined number on day 1, a second smaller predetermined number on day 2, a third smaller predetermined number on day 3, etc., e.g., 10 Pa on day 1, 8 Pa on day 2, etc.), or asymptotic (e.g., 10 Pa on day 1, another 5 Pa on day 2, topping out at a total of 30 Pa), among other aging techniques.The server 102 may also (at 306) delete calibration results from the historical calibration table 116 whose adjusted confidence intervals have become too large or have become too old, e.g., expired after a predetermined period of time (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 or each of the adjusted 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 the previously determined calibration results 120 or the adjusted previously determined calibration results. At 310, the server 102 selects the best calibration result (a.k.a., the selected calibration result) from the previously determined calibration results (as adjusted, combined, or updated 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 between all of the previously determined calibration results 120 in 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 appropriate criteria deemed relevant, such as: 1) the smallest uncertainty (confidence interval) in the (adjusted) previously determined calibration result; 2) the smallest uncertainty (confidence interval) in the (adjusted) previously determined calibration result that is less than a maximum uncertainty threshold (e.g., only calibration results with confidence intervals <= 50 Pa); 3) the highest priority calibration technique of the calibration techniques 208-224 used to determine the (adjusted) previously determined calibration result; or 4) the median calibration value of the (adjusted) previously determined calibration results. In an example of technique priority, if there are previously determined calibration results 120 obtained from a user intervention required calibration technique 224, a device make and model calibration technique 212, and an app context calibration technique 220, and the user intervention required calibration technique 224 has priority over the others, the server 102 selects the previously determined calibration results 120 obtained from the user intervention required calibration technique 224.Furthermore, in addition to performing the filtering process 1500 at 228 above, or if the server 102 did not filter the new calibration results at 228 before storing them in the historical calibration table at 230 or 1512, the filtering process 1500 may be used on the selected calibration results following the selection of the best calibration results at 310. In this case, a decision is made whether to update the current calibration table 118, rather than the historical calibration table 116, at 1508-1512 or 312.
[0062] If a calibration result is selected based on the above criteria, the server 102 stores (at 312) the selected calibration result as the current calibration value in the current calibration table 118 corresponding to the user device 104 to indicate that this value is the current calibration value 122 of the user device 104. (If a selected calibration result is not generated at 310, the current calibration table 118 is not updated.) The server 102 then transmits (at 314) the selected or current calibration value 122 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 historical calibration table 116, but simply maintains the current calibration value 122 for the user device 104. In this case, the server 102 uses the selection at 228 (as described in more detail with respect to FIG. 15 ) to determine whether to update the current calibration value 122 with the new calibration value and transmits the new calibration value to the user device 104.
[0064] The disclosure herein provides the advantage of being able to combine calibration results from multiple calibration techniques 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 discussion generally assumes that the server 102 performs the functions described above. However, in some alternative embodiments, the user device 104 may perform some of these functions. In this case, the user device 104 retains the most recent data packets 112 and maintains a historical calibration table and a current calibration table. The server 102 transmits additional descriptive data to the user device 104. The user device 104 then determines when any of the calibration techniques 208-224 should be performed, performs the calibration techniques 208-224, combines the results to obtain new calibration values, stores the new calibration values in its historical calibration table, determines when to calibrate its barometric pressure sensor 108, selects the best previously determined calibration value from the historical calibration table, stores the selected calibration value as the current calibration value in its current calibration table, and calibrates its barometric pressure sensor 108 using the current calibration value. Alternatively, the user device 104 performs a suitable subset of these functions, with the server 102 performing the rest.
[0066] FIG. 4 shows a simplified flowchart of an exemplary process 400 by calibration system 100 for implementing the barometric pressure sensor make and model calibration technique 208 selected at 206 and executed at 226 in the exemplary process 200 of FIG. 2 above, according to some embodiments. At 402, server 102 reads barometric pressure sensor make and model data from data packet 114. The barometric pressure sensor make and model are typically used for comparison to expected accuracy specifications. Thus, using the make and model, server 102 looks up (at 404) the accuracy (i.e., a given calibration) of barometric pressure sensor 108 in a lookup table, for example, based on a product data sheet published by the designer, manufacturer, or seller of the given make and model of barometric pressure sensor 108. Thus, server 102 looks up the calibration offset and confidence interval in the sensor make / model lookup table. Using this information, server 102 determines (at 406) a calibration result for barometric pressure sensor make and model calibration technique 208. For example, if a product data sheet specifies an accuracy of + / - 100 Pa, the calibration can be defined as 0 Pa with a confidence of 100 Pa. Alternatively, many barometric pressure sensors of the same sensor make / 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 make / model of barometric pressure sensor. For example, if the distribution of measured accuracies for a group of barometric pressure sensors is -10 + / - 50 Pa, the predetermined calibration in the datasheet for barometric pressure sensors with that particular sensor make / model can be provided as -10 Pa with a confidence of 50 Pa. The server 102 returns (at 408) the calibration results to the example process 200 for further processing after 226.
[0067] 5 shows a simplified flowchart of an exemplary process 500 by calibration system 100 for performing device ID calibration technique 210 when the device ID calibration technique is selected at 206 and executed at 226 in exemplary process 200 of FIG. 2 above, according to some embodiments. In step 502, server 102 reads the unique device ID of user device 104 (e.g., International Mobile Equipment Identity (IMEI) number, phone number, mobile advertising ID (AD-ID), or other unique identifier) in data packet 114. Server 102 uses the device ID to look up (at 504) the make and model of the barometric pressure sensor (or the unique ID of barometric pressure sensor 108) in a lookup table. (From this point, process 500 proceeds similarly to process 400.) Using the make and model of the barometric pressure sensor, server 102 looks up (at 506) the accuracy (i.e., the given calibration) of barometric pressure sensor 108 in a look-up table, for example, based on a product data sheet published by the designer, manufacturer, or seller of the given make and model of barometric pressure sensor 108. Accordingly, server 102 looks up the calibration offset and confidence interval in the sensor make / model look-up table. Using this information, server 102 determines (at 508) the calibration results of device ID calibration technique 210. Server 102 returns (at 510) the calibration results to example process 200 for further processing after 226.
[0068] 6 shows a simplified flowchart of an exemplary process 600 by the calibration system 100 for performing the device make and model calibration technique 212 when the device make and model calibration technique is selected at 206 and executed at 226 in the exemplary process 200 of FIG. 2 above, according to some embodiments. At 602, the server 102 reads the device make and model information of the user device 104 in the data packet 114. Different user devices 104 have different commercially available accuracies of their barometric pressure sensors 108, with sensors in some user devices being more accurate than others due to the quality of the construction, assembly, location 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 predetermined calibration can be calculated therefrom to provide the accuracy of the barometric pressure sensors 108 of this make / model user device. For example, if the distribution of measured accuracy is -10 + / - 50 Pa, then the calibration for that particular make / model user device 104 can be defined as -10 Pa with a confidence level of 50 Pa. Thus, using the device's make and model, the server 102 looks up (at 604) the accuracy (i.e., predetermined calibration or standard calibration) of the barometric pressure sensor 108 for the user device 104 in a lookup table, for example, based on independent test results. This causes the server 102 to look up the calibration offset and confidence interval in the make / model lookup table. Using this information, the server 102 determines (at 606) the calibration results of the device's make and model calibration technique 212. The server 102 returns (at 608) the calibration results to the example process 200 for further processing after 226.
[0069] In some embodiments, the calibration results of the calibration techniques 208-212 are generally considered static, i.e., unchanging, and therefore these calibration techniques need only be performed once. Therefore, calibration values based on these calibration results can be maintained indefinitely in the historical calibration table 116. Furthermore, the sensor make and model information of the barometric pressure sensor 108, the unique device ID of the user device 104, and the device make and model information of the user device 104 need not 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 now be described with reference to Figures 7-9. Figure 7 illustrates a simplified diagram of an exemplary terrain having a building 700 for use in this calibration technique, shown in Figure 8, in accordance with some embodiments. In this example, the terrain 702 is displayed unevenly with different elevations and slopes therebetween, and buildings 704 and 706 have different heights, different numbers of floors, and different floor separation values. Additionally, location data provided by the user device 104 may indicate a 2D location region 708 (user device footprint) in which the user device 104 may reside. Furthermore, the 2D location region 708 includes an area outside the buildings 704 and 706 and an area inside the buildings 704 and 706, as indicated by the shaded, partially overlapping regions 710 and 712. The shaded overlapping regions 710 and 712 are applicable to each floor of the buildings 704 and 706, respectively. Thus, the user and user device 104 may be outside the buildings 704 and 706 (e.g., at 714), inside the first building 704 on any floor thereof (e.g., at 716), or inside the second building 706 on any floor thereof (e.g., at 718).
[0071] If the user device 104 collects and transmits data packets 112 when its altitude is unknown (e.g., outside flat terrain with no overlapping building locations), the barometric pressure sensor 108 can be calibrated against a reference network of known pressure sensors. If the altitude cannot be determined unambiguously (e.g., it could be on any floor within a building), the possible altitudes of the user device 104 can be limited and calibrated against the possible altitudes of the floors. For example, if the user device 104 is determined to be entirely within a three-story building, the possible altitudes could be on one of the three floors, and calibration could be performed against the mean or median of the three floors (e.g., floor 2 in the U.S. floor marking code), with a confidence interval of + / - 1 floor.
[0072] The possible altitudes of the user device 104 can be determined as follows: For a given 2D confidence (i.e., 2D location region 708) centered on the most likely 2D location of the user device 104, the possible 3D locations of the user device can be defined as above the terrain outside the buildings 704 and 706 (plus some additional heights held above ground level), and above any floors within the buildings 704 or 706 (plus some additional heights held above ground level) that are within the user confidence footprints, i.e., the respective shaded overlap regions 710 and 712. The heights of individual floors can be used if known in advance, or can be estimated from assumptions about the building height, number of floors, floor divisions, or any combination thereof.
[0073] If a uniform probability is assumed that the user device 104 is equally likely to be located within the 2D location region 708, including the shaded overlap regions 710 and 712, for each floor of each building 704 and 706, then a probability distribution of the elevation of the user device 104 can be determined, including possible heights above ground or above floor level. In a simple example, if the terrain elevation is 0 m, the device height above floor level is 1 m, and the area of the confidence circle of the 2D location region is 200 m, 2, there is only one overlapping building, and the overlapping building has only two ground floors, and the area of the upper floor is 100m 2 , the upper floor is 3 m away, so 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, and the probability that the user device 104 is located at 7 m is 100 / (200 + 100 + 100) = 0.25. Therefore, since a 90% range of possible altitudes is 1 m to 7 m and the median of the distribution is 2.5 m, the possible altitude is 2.5, and the asymmetric altitude confidence interval is +4.5 to -1.5 m. Alternatively, the system could report an altitude that is considered to be in the middle of the confidence interval range, reporting 4 + / - 3 m. If the measured altitude resulting from the pressure measured by the barometric pressure sensor 108 is 20 m, then the calibration value is 20 - (4 + / - 3) or 16 + / - 3 m (or (4 + / - 3) - 20 = -16 + / - 3, depending on the positive / negative sign convention in the calibration definition). Converted to pressure, the calibration value of the barometric pressure sensor 108 is approximately 192 + / - 36 Pa (assuming 1 m ~ 12 Pa as the general relationship between altitude difference and pressure difference) (or -192 + / - 36 Pa, depending on the positive / negative sign convention in the calibration definition). The + / - error does not need to be symmetrical, as building footprints may be significantly smaller than outdoor terrain footprints, or there may be multiple other buildings within the user's confidence range of various heights and footprints. Also, building footprints need not lie entirely within the footprint of the user device, and vice versa. This is because the overlap area between the two footprints (including partial or complete coverage of either footprint) is important. Also, the first floor of building 704 or 706 does not need to be at the same height as the surrounding terrain, but can be above or below. Also, if some floors or ranges of floors are known to be inaccessible (e.g., server floors, mechanical floors, floors closed for renovation, roofs, etc.), these areas can be excluded from the altitude distribution of potential user devices.
[0074] If the height of the overlapping building 704 or 706 is unknown, it is possible or possible to assume a separation of height and floor height based on morphology. For example, if the building in question is in a suburban location, the height can be assumed to be one or two floors, for a typical one- or two-story home or small business. In another example, if the building in question is in an industrial area of a town with a large warehouse, the height can be assumed to be one floor. Such elevations may be less accurate, but still provide a limited margin of error.
[0075] In accordance with the above discussion, FIG. 8 shows a simplified flowchart of an exemplary process 800 by calibration system 100 for performing building and terrain calibration technique 214, according to some embodiments. At 802, server 102 reads pressure data and location data from data packet 114. At 804, server 102 searches (e.g., in a mapping database) for building and terrain data for 2D location region 708 indicated by the location data. At 806, server 102 determines whether 2D location region 708 overlaps with any buildings, and if so, calculates (using 2D location region 708 and building and terrain data) the overlap (e.g., shaded overlap regions 710 and 712) between the user device's 2D location region 708 and the building footprint area of each building.
[0076] In some embodiments, server 102 determines (at 808) the number of floors of a building (e.g., 704 or 706). For example, the number of floors can be determined by any suitable or available technique, such as: 1) looking up the number of floors in a database of known buildings; 2) estimating the number of floors and a reasonable floor separation from the building height (from the building database) (e.g., a 12-meter tall building with 3-meter floor spacing: 12 / 3 = 4 floors); or 3) assuming the number of floors based on morphology (e.g., suburban areas typically have only 1-2 floors). In some embodiments, determining (at 808) the number of floors of a building is not necessary if the elevation of each floor is already known (see 810 below).
[0077] In some embodiments, the server 102 estimates or calculates (at 810) the elevation of each floor. For example, the elevation of each floor can be determined by any suitable or available technique, such as 1) looking up the elevation in a building database, or 2) looking up the ground elevation in a terrain database and adding (floor separation value) * (floor number - 1) (assuming the floor separation value is reasonable and floors start counting at 1). This step can optionally exclude certain floors that are known to be inaccessible. Additionally, since the elevation of the user device 104 is an issue, this step can optionally add an offset to the floor elevation (e.g., 1 meter) to indicate how much higher the user device 104 is than the floor.
[0078] In some embodiments, the server 102 estimates or calculates (at 812) the overlap area between each floor and the user device's 2D location area 708. This overlap area will typically be the same as the overlap calculated at 806 for each building, unless different floors have different areas.
[0079] Process 800 repeats 808-812 for each building that overlaps with the user device's 2D location region 708.
[0080] In some embodiments, the server 102 determines (at 814) a non-overlapping region (e.g., an unshaded region of the 2D location region 708) and an altitude distribution of the non-overlapping region (based on the terrain variations or topography in the 2D location region 708 as indicated by the terrain database). The server 102 can also optionally add a device offset to the altitude distribution (e.g., 1 meter) to indicate how high the user device is above the ground, since the altitude of the user device 104 is of interest.
[0081] In some embodiments, the server 102 combines (at 816) the altitude distributions of the exterior altitudes (outside the building) and all interior altitudes (each floor inside the building), weighted by the area of each altitude, to obtain a combined altitude distribution that establishes the likely altitudes of the user device 104. Figure 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 the process 800. In graph 900, a simple horizontal, flat terrain, a partially overlapping three-story building, a device offset altitude of 1 meter, and a floor spacing of 3 meters were assumed. Thus, the 1 meter altitude contributed the largest portion of the cumulative probability, and the 4 meter and 7 meter altitudes contributed smaller, equally sized portions 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 of interest) of the distribution by any suitable means. At 820, server 102 determines calibration results for building and terrain calibration technique 214, calculating a calibration offset using the median altitude and a confidence interval using the standard deviation and a typical relationship between altitude difference and pressure difference. At 830, server 102 returns the calibration results to example process 200 for further processing after 226.
[0083] FIG. 10 shows a simplified flowchart of an exemplary process 1000 by the calibration system 100 for performing a nearby accurate sensor calibration technique 216 when the nearby accurate sensor calibration technique is selected at 206 and executed at 226 in the exemplary process 200 of FIG. 2 above, according to some embodiments. At 1002, the server 102 reads pressure data, location data, and time data from the data packet 114. Using the location data, the server 102 determines (at 1004) that the 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 in a network of mobile pressure sensors of another user device 104 that was recently calibrated with a high level of confidence. Thus, the proximity of the user device 104 to the 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 locations of other user devices 104. In another example, proximity to another user device 104 can be determined by measuring the strength of the other user device's Bluetooth® signal (if available); if the signal strength exceeds a predetermined threshold, the two user devices 104 can be considered close enough to perform this calibration technique. At 1006, the 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 in the data packet 114 using the time data. At 1008, the server 102 retrieves terrain data for the location area indicated by the user device 104's location data and the location of the known accurate reference pressure sensor. (Terrain data may not be necessary if the location data indicates that the user device 104 is close enough to the location of the known accurate reference pressure sensor to assume any altitude difference is insignificant.) At 1010, the server 102 determines a calibration result for 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. Additionally, terrain data in the area between or surrounding the user device 104 and the known accurate reference pressure sensor provides the possible 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 meters of a properly calibrated reference pressure sensor located, perhaps in a fenced enclosure in an urban park, and the terrain flatness metric within the 2D location area of the user device 104 is approximately + / - 1 m 95% of the time (approximately + / - 12 Pa in pressure difference), and the pressure data indicates a pressure value approximately 50 Pa away from the known accurate pressure data from the reference pressure sensor, the calibration result may 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 near accurate sensor calibration techniques 216, the altitude based on the barometric pressure of the barometric pressure sensor 108 (or user device 104) is calculated as H baro =+ / -((R*T reference ) / (gM))*ln(P reference / P user ), where g is the acceleration due to gravity (e.g., -9.8 m / s 2 ), where R is the gas constant, and M is the molar mass of air (e.g., dry air or other), and T reference is the reference temperature in Kelvin at the reference pressure sensor, and P reference is the reference pressure in Pa from known accurate pressure data at a reference altitude (typically 0 m HAE or some other altitude), and P user is the pressure at the barometric pressure sensor 108 from the pressure data in the data packet 114. "+ / -" is the sign convention depending on whether g is defined as 9.8 or -9.8. The altitude confidence (dH baro) is determined as described in commonly assigned U.S. Patent No. 10,655,961. The true altitude (or estimated true altitude) of the barometric pressure sensor 108 is determined by any suitable method, such as by the location indicated in the location data relative to a known, accurate altitude determined from a map, a database, a nearby POI (a specific point of known altitude), etc. The true altitude confidence (dH true ) is determined based on the accuracy of the underlying method for determining true altitude, as well as the accuracy of the 2D location area of the user device 104 and terrain variations. The server 102 then calculates the user device pressure P using the pressure difference value dP in the above formula so that the barometric altitude and the true altitude are equal. user The pressure difference value dP is the calibration offset of the calibration result. The confidence interval is dH baro 2 +dH true 2 It is calculated as the square root of the sum of
[0085] 11 shows a simplified flowchart of an example process 1100 by the calibration system 100 for performing the nearby known geographic point calibration technique 218 when the nearby known geographic point calibration technique is selected at 206 and executed at 226 in the example process 200 of FIG. 2 above, according to some embodiments. At 1102, the server 102 reads pressure and location data from the data packet 114. At 1104, the server 102 determines that the 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 whose 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 position (altitude), in which case the server 102 also reads the wireless data from the data packet. Thus, the proximity of the user device 104 to a known geographic point can be determined, for example, from a map or database that provides the locations of such geographic points. At 1106, the server 102 searches for known, precise altitude data for the geographic point, for example, in a map or database. At 1108, the server 102 searches for terrain data for the location area indicated by the location data of the user device 104 and the location of the known geographic point. At 1110, the server 102 determines a calibration result of the calibration technique based on the pressure data, terrain data, and known, precise altitude data. In some embodiments, the server 102 calculates an air-pressure-based altitude of the user device 104 based on the pressure data and a typical relationship between an altitude difference and a pressure difference. The server 102 then calculates the difference between the air-pressure-based altitude and the known, precise altitude of the geographic point. Thus, the altitude difference provides a calibration offset for the calibration result based on the typical relationship between an altitude difference and a pressure difference. In some embodiments, the server 102 converts the known, precise altitude data into a calculated pressure value based on the typical relationship between an altitude difference and a pressure difference. The pressure difference between the calculated pressure value and the pressure data then provides the calibration offset.Additionally, terrain data for the area between or surrounding the user device 104 and the known geographic point provides the likely variation in altitude between the user device 104 and the known geographic point. The change in altitude is used to calculate a confidence interval based on the typical relationship between altitude difference and air pressure difference. For example, if the user device 104 is determined to be within 10 m of a monument (known altitude) in a city park, the terrain flatness metric around the user's 2D location area is 1 m 95% of the time (a pressure change of ~12 Pa), the monument's altitude is known to be 10 m high in height above ellipsoid (HAE), and the air pressure-based altitude is determined to be 15 m HAE, then the calibration offset is 60 Pa ((15 m - 10 m) × 12 Pa / m), or -60 Pa, depending on the convention for the sign of the calibration offset, and the confidence interval is + / - 12 Pa.
[0086] FIG. 12 shows a simplified flowchart of an example process 1200 by the calibration system 100 for performing the app-context calibration technique 220 when the app-context calibration technique is selected at 206 and executed at 226 in the example process 200 of FIG. 2 above, according to some embodiments. At 1202, the server 102 reads pressure data, location data, and app data from the data packet 114. The app data indicates which apps were running by the user device 104 at the time of data collection. Some of these apps may indicate underlying activities the user is engaged in, i.e., location-specific apps, which can potentially indicate the location of the user and, therefore, the location of the user device 104. For example, if the user device 104 is running an app related to a particular business, and the business has offices or stores in certain locations, and the location data indicates that the user device 104 is near one of these locations, it is reasonable to assume that the user is engaged in business at the business in the certain locations, and the altitude of the user device 104 is the same as the altitude of the certain locations. Thus, if there is a known, precise altitude for a given location, the barometric pressure sensor 108 can potentially be calibrated when the user device 104 is running an app for a business near the given location. Thus, at 1204, the server 102 analyzes the app data and determines that the running app is associated with a given location for the business whose altitude is known. At 1206, the server 102 determines that the user device 104 is within a threshold distance of the given location. At 1208, the server 102 searches the database for known, precise altitude data for the given location. At 1210, the server 102 determines a calibration result for this calibration technique based on the pressure data, building and terrain data, and known, precise altitude data in a manner similar to the building and terrain calibration technique 214 described above, because the app context calibration technique 220 can assume that the user device 104 is on the same floor as the given location and that the floor is flat.(Alternatively, if businesses occupy more than one floor at a given location, the app context calibration technique 220 takes this into account to determine the calibration offsets and confidence intervals in a manner similar to the building and terrain calibration technique 214 described above.) At 1212, the server 102 returns the calibration results to the example 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 location region of the user device 104 overlaps with one of the chain's retail stores, and the retail store is known to be on the second floor of the shopping mall, the server 102 will determine 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 directions app, the user device 104 is likely traveling in a vehicle rather than in a building, and the server 102 will use this information to constrain the location of the user device 104.
[0087] FIG. 13 illustrates a simplified flowchart of an exemplary process 1300 by the calibration system 100 for performing the machine learning model calibration technique 222 when the machine learning model calibration technique is selected at 206 and executed at 226 in the exemplary process 200 of FIG. 2 above, according to some embodiments. If enough data is collected and processed using any or all of the calibration techniques 208-220 described above for the calibration data to yield a highly reliable calibration result, a supervised machine learning model can be trained to predict the calibration results for the calibration data in the received data packet 114. The supervised machine learning model uses input parameters for data items for measurements, such as location data and pressure data. Additional data for the input parameters includes derived quantities, such as building overlap with the 2D location area and terrain flatness, quantified by terrain variations within the 2D location area. Using these input parameters and the corresponding calibration results or values for the user device 104, a 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 calibration results given input parameters from future data packets 114. Deep learning training and prediction steps are supported by several available frameworks, such as Tensorflow, Keras, Pytorch, Caffe2, and Theano. Thus, at 1302, the server 102 reads data items for input parameters from the data packets 114. At 1304, the server 102 retrieves or derives additional data for the input parameters. At 1306, the server 102 inputs the data items and additional data into the supervised machine learning model. At 1308, the server 102 receives the calibration results output from the supervised machine learning model. At 1310, the server 102 returns the calibration results to the example process 200 for further processing after 226.
[0088] FIG. 14 is a simplified flowchart of an exemplary process 1400 by the calibration system 100 for determining the combined calibration result 308 of FIG. 3 by combining some or all of the 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 there is only one calibration result in the historical calibration table 116 because only one calibration technique 208-224 has been performed to this point, this calibration result is simply adopted as the new calibration value in the above-described process 300. However, the quality of a single calibration result may vary depending on the situation and environment. For example, a user device 104 located in the middle of a high-rise building may have a very poor calibration when a calibration result based on the building and terrain calibration technique 214 is applied, but the user device 104 may have a very good calibration result if the barometric pressure sensor 108 therein had excellent accuracy under the barometric pressure sensor manufacturer and model calibration technique 208. Different algorithms for combining multiple calibration results, and the advantages thereof, are disclosed herein. Furthermore, different calibration results may be determined at different locations (e.g., one calibration at home, one calibration at work, etc.), at different times, or with different calibration techniques (e.g., calibrating at a nearby sensor and calibrating in-building) using the same data packet 114.
[0089] Thus, if the server 102 determines (at 1402) that there are multiple calibration results in the historical calibration table 116, the server 102 determines (at 1404) a weighting value corresponding to each calibration result so that the multiple calibration results can be weighted and combined. At 1406, the server 102 scales or multiplies each calibration result 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, then 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, then the confidence interval is ((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, then 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, then the weighted confidence interval is ((w0 2 *B0 2 +w1 2 *B1 2 The combined calibration offset can be extended to N calibration results (A*w0+...+AN*wN) / (w0+...+wN), and the combined confidence interval can be calculated by quadrature as the square root of ((w0 2 *B0 2 +...+wN 2 *BN 2 ) / (w0+...+wN)).
[0091] The weight value w in this context i is the corresponding confidence interval c i In one example, the calibration result with the smallest confidence interval (non-negative value) is i =1 / c i or 1 / (1+c i) may be weighted most highly. In this context, confidence is defined as the range of possible calibration values that cover a given number of cases (e.g., 68% of all cases, 95% of all cases, etc.). Using these functional weighting values, calibration results with low confidence can be de-weighted (i.e., their weighting value is reduced). Other weighting functions may also be considered. In another example, the weighting value may be binary, with the calibration result with the smallest confidence interval weighted at 1 and all others weighted at 0. In this case, the example process 1400 simply selects the best calibration result instead of combining them. In another example, the weighting value may be independent of the confidence interval and weighted based on the type of calibration technique (e.g., reducing the weighting value for the nearby known geographic point calibration technique 218 or the app context calibration technique 220, or the barometric pressure sensor make and model calibration technique 208 or the device make and model calibration technique 212). The priority of one calibration technique over another is generally determined empirically by comparing a relatively large number of calibration results from each calibration technique 208-224 and determining which calibration technique 208-224 performs better on average. Different types or models of user device 104 or barometric pressure sensor 108, or the manner in which calibration techniques 208-224 are performed, may result in different priorities of calibration techniques 208-224. Also, with an ongoing data collection process, priorities may change over time. However, exemplary priorities are listed below, from highest priority to lowest priority: User intervention required Buildings and terrain Barometric pressure sensor manufacturer and model Device make and model Nearby precision sensors Device ID Nearby known geographic points App Context Machine learning models
[0092] Alternatively, the combined calibration value can be determined based on the overlap of the ranges of the calibration results. For example, if the calibration results are A0 + / - B0 = 60 Pa + / - 12 Pa and A1 + / - B1 = 50 Pa + / - 10 Pa, the overlapping calibration value is 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 results to the example process 300 for further processing after 308. For example, the combined calibration value may be included as one of the previously determined calibration results 120, or may be used in place of one, some, or all of the previously determined calibration results 120 in subsequent processing.
[0094] 15 shows a simplified flowchart of an exemplary process 1500 by calibration system 100 for filtering new calibration results (per 228 of FIG. 2) as acceptable for storage in historical calibration table 116 and, if acceptable, updating historical calibration table 116 with the new calibration values, according to some embodiments. (In some embodiments, process 1500 may also be used as part of the decision to update current calibration table 118 between 310 and 312, as described above.) Generally, server 102 selects whether the new calibration value is acceptable by comparing it to current calibration value 122, and, if acceptable, stores the new calibration value in historical calibration table 116 as one of the previously determined calibration results 120. When a new calibration result is available, a decision must be made whether to update historical calibration table 116 with the new calibration result or not to update historical 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 accepts or rejects the new calibration results for storage in the historical calibration table 116.
[0095] Thus, at 1502, the server 102 determines that new calibration results are available, i.e., one or more calibration techniques 208-224 have been performed and results have been generated. At 1504, the server 102 looks up the current calibration value 122 in the current calibration table 118. In some embodiments, at 1506, the server 102 compares the new calibration results to the current calibration value 122 and uses appropriate rules to determine whether to accept or reject the new calibration results. In other embodiments, at 1506, the server 102 compares the new calibration results (instead of the current calibration value 122) to the best of the previously determined calibration results 120 in the historical calibration table 116 for the same calibration technique of the new calibration result and uses appropriate rules to determine whether to accept or reject the new calibration results. For example, in this situation, the "best" previously determined calibration result 120 may be the one with the smallest confidence interval or the mean of the previously determined calibration results 120.
[0096] 16, according to a possible first rule, a new calibration result (A1 + / - B1) is accepted if 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 center 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 example of graphs 1602 and 1604, the first rule would be for the server 102 to accept 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 center 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). Therefore, in the example of graphs 1606 and 1608, the first rule would cause the server 102 to reject the new calibration result for storage in the historical calibration table 116. The first rule is desirable not to adopt dramatic changes in the calibration value and is therefore useful in situations where the new calibration result is not too different from the current calibration value. This is desirable when the calibration drift of the barometric pressure sensor 108 is known to be slow over a characteristic time period that is typically shorter than the time between subsequent measurements performing the calibration techniques 208-224.
[0097] In contrast, as illustrated by graphs 1702-1708 of calibration value versus time in Figure 17, according to a possible second rule, a new calibration result (A1 + / - B1) is adopted if its calibration offset A1 is outside the range of the current calibration value A0 + / - B0. As illustrated 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 example of graphs 1702 and 1704, the second rule would result in the server 102 adopting 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 center 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 example 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 is useful in situations where it is desirable to be able to significantly change the current calibration value and, therefore, the new calibration result is significantly different from the current calibration value. The second rule is preferred when it is desirable to change to a new calibration result only if the new calibration result has changed significantly from the current calibration value, such as 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 characteristic, or when the new calibration result (A1+ / -B1) was calculated using a method with an unreliable 2D position region.
[0098] As shown by graphs 1802-1808 of calibration value versus time in FIG. 18 , according to a possible third rule, if the ratio of overlap between the current calibration value (A0 + / - B0) and the new calibration result (A1 + / - B1) relative to the length of the new confidence interval is greater than or equal to 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 overlap (indicated by the shaded area between graphs 1802 and 1804) to the length of the new confidence interval (indicated by the range of the error bars for A1 + / - B1) is relatively large, e.g., greater than 0.8. Thus, in the example of graphs 1802 and 1804, the third rule would result in server 102 adopting the new calibration result for storage in historical calibration table 116. On the other hand, as shown by graphs 1806 and 1808, the ratio of the overlap (indicated by the shaded area between graphs 1806 and 1808) to the length of the new confidence interval (indicated by the range of the error bars for A1 + / - B1) is relatively small, e.g., less than 0.8. Thus, in the example of graphs 1806 and 1808, the third rule would cause server 102 to reject the new calibration result for storage in historical calibration table 116. The third rule is useful 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 degree of confidence in the new calibration result).
[0099] As shown by graphs 1902-1908 of calibration value versus time in FIG. 19 , according to a possible fourth rule, if the difference between the new calibration offset A1 (indicated by the center dot in graph 1904) and the current calibration offset A0 (indicated by the center dot in graph 1902) divided by the new confidence interval B1 is less than or equal to a threshold value (e.g., 2), then the new calibration result (A1 + / - B1) is accepted. As shown by graphs 1902 and 1904, the difference (A1 - A0) divided by B1 is less than 2. Thus, for the example of graphs 1902 and 1904, the fourth rule would result in the server 102 accepting the new calibration result for storage in the historical calibration table 116. On the other hand, as shown in graphs 1906 and 1908, the difference (A1 - A0) divided by B1 is greater than 2. Thus, for the example of graphs 1906 and 1908, the fourth rule would cause the server 102 to reject the new calibration result for storage in the historical calibration table 116. The fourth rule is useful in situations where the server 102 adopts a change in the current calibration value if the new calibration result drifts beyond the current confidence interval without drifting excessively.
[0100] According to a possible fifth rule, new calibration results are accepted or rejected based on a comparison of the calibration technique used to generate the new calibration result with the current calibration value. Thus, the fifth rule is not based on a comparison or calculation involving a calibration offset or confidence interval between two calibration values. Instead, one type of calibration technique 208-224 may be prioritized over another because some calibration techniques may be more reliable than others. The reliability or prioritization of the calibration techniques 208-224 can be determined empirically by comparing numerous calibration results with high-confidence results to determine which calibration techniques typically perform better than others. The fifth rule is beneficial because it allows for the selection of calibration values that are considered more reliable or have a higher degree of confidence. For example, if the current calibration value (A0+ / -B0) was determined using the app-context calibration technique 220 and a new calibration result (A1+ / -B1) was determined using a well-surveyed POI using the nearby known geographic point calibration technique 218, where the well-surveyed POI technique takes precedence over the app-context calibration technique 220, the server 102 will adopt the new calibration result (A1+ / -B1) for storage in the historical calibration table 116. In another example, if the current calibration value (A0+ / -B0) was measured using the building and terrain calibration technique 214 and the new calibration result (A1+ / -B1) was measured using the user-intervention-required calibration technique 224, where the user-intervention-required calibration technique 224 takes precedence over the building and terrain calibration technique 214, the server 102 will adopt the new calibration result (A1+ / -B1) for storage in the historical calibration table 116.
[0101] If the result of the comparison and determination at 1506 is to reject or not adopt the new calibration result, as determined at 1508, then server 102 does not update (at 1510) the historical calibration table with the new calibration result. On the other hand, if the result of the comparison and determination at 1506 is to adopt the new calibration result, as determined at 1508, then server 102 updates (at 1512) historical calibration table 116 with the new calibration result by storing the new calibration result as one of the previously determined calibration results 120. Process 1500 then returns to process 200.
[0102] Many of the calibration techniques described herein assume that the 2D location of the user device 104 and the confidence provided in the location data (e.g., as indicated by the 2D location region 708) are accurate. However, if the 2D location is determined to be unreliable, any calibration result determined using the 2D location may be weighted less when considering all of the calibration results with which it may be combined. The fundamental accuracy of the 2D location may be called into question based on several factors, such as: 1) It is known a priori that forms of location, e.g., 2D location, are difficult to determine in dense urban and city environments. 2) Because some user devices 104 determine location using a combination of different 2D location sources, e.g., global navigation satellite systems (GNSS), Wi-Fi transmitters, etc., the accuracy of the location data can be determined by measuring the location of each source and determining how correlated or clustered they are. 3) Stability of subsequent measurements, for example, if subsequent 2D positions vary significantly but the user device 104 can be determined to remain stationary, the 2D position may be unreliable. 4) With regard to the app context calibration technique 220, if the user device 104 is performing a task using a location-specific app, such as making a payment at a retail store app, but the nearest associated retail store is far away from the user device 104 and outside the 2D location region, the 2D location may be unreliable. 5) If a previous calibration gave non-physical results for the building envelope (e.g., outside the range of possible floors, far above the roof, or far below the basement), it may be that the 2D positions used in the previous calibration were low confidence, or that the current 2D positions are low confidence. 6) Inconsistencies in comparisons using different calibration techniques, for example, if calibration results determined without using 2D position are inconsistent with calibration results using 2D position, the user device 104 may be an outlier or the 2D position may be unreliable.
[0103] Any method, technique, process, approach, or computation described or otherwise enabled by the disclosure herein may be implemented by hardware components (e.g., machines), software modules (e.g., stored on machine-readable media), or a combination thereof. In particular, any method or technique described or enabled by the disclosure herein may be implemented by any tangible system described herein. By way of example, a machine may include one or more computing devices, processors, controllers, integrated circuits, chips, systems on a chip, servers, programmable logic devices, field programmable gate arrays, electronic devices, special purpose circuits, and / or other suitable devices described herein or known in the art. Contemplated herein are one or more non-transitory machine-readable media embodying program instructions that, when executed by one or more machines, cause the one or more machines to perform or implement operations, including steps of any of the methods described herein. As used herein, a machine-readable medium includes any form of machine-readable medium, including, but not limited to, one or more non-volatile or volatile storage 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 are patentable under the laws of the jurisdiction in which this application is filed, but does not include machine-readable media that are not patentable under the laws of the jurisdiction in which this application is filed (e.g., transitory propagating signals). The methods disclosed herein provide a set of rules for implementation. Systems including one or more machines and one or more non-transitory machine-readable media for implementing any of the methods described herein are also contemplated herein. One or more machines configured, operable, or adapted to implement, perform, or perform, perform operations, including steps of any 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 significant advantages in the calibration and positioning fields.The method steps described herein are not order-dependent and, where possible, can be performed in parallel or in a different order than described. Different method steps described herein can be combined 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. Certain well-known structures and devices have not been shown in the figures to avoid obscuring the concepts of the present disclosure. When two things are "coupled" to each other, the two things may be directly connected or separated by one or more intervening elements. When there is no line or intervening element connecting two particular things, coupling of these things is contemplated in at least one embodiment unless otherwise stated. When an output of one thing is coupled to an input of another thing, information transmitted from the output is received by the input in its output form or a modified version thereof, even if the information passes through one or more intermediate elements. Unless otherwise stated, any known communication paths and protocols can be used to transmit the information (e.g., data, commands, signals, bits, symbols, chips, etc.) disclosed herein. Words such as "comprise," "comprising," "include," "including," and the like should be construed in an inclusive sense (i.e., not limited to) rather than an exclusive sense (i.e., consisting only of). Words using singular or plural numbers include the plural or singular respectively unless otherwise stated. The words "or" and "and" as used in the Detailed Description include any and all items in a list unless otherwise stated. The words some, any, and at least one refer to one or more.The terms "may" or "can" are used herein to indicate examples rather than requirements, e.g., may or can perform an action or may or can have a characteristic, and while it is not necessary for every embodiment to perform that action or have that characteristic, it will perform that action or have that characteristic in at least one embodiment. Unless another approach is described, access to data from a data source may be achieved using known techniques (e.g., a requesting component requests data from a source via a query or other known approach, the source searches and finds the data, the source collects the data and sends it to the requesting component, or other known techniques).
[0104] An environment in which the processes described herein may operate may 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 may be located at various altitudes or depths, inside or outside of various natural or man-made structures (e.g., buildings). Location or positioning signals may be transmitted from the transmitters and satellites, respectively, and then received by the mobile device using known transmission techniques. For example, the transmitters may transmit signals using one or more common multiplexing parameters utilizing time slots, pseudorandom sequences, frequency offsets, or other approaches, as known in the art or as disclosed herein. The mobile device may 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 may include atmospheric sensors (e.g., pressure and temperature sensors) that generate 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 on the mobile device may also be appropriately calibrated.
[0105] As an example, a transmitter discussed herein may 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 air 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 other) 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 execute instructions from the modules to perform different operations, including: (i) performing some or all of the methods described herein as executable in the transmitter or understood by those skilled in the art, (ii) generating positioning signals for transmission using selected times, frequencies, codes, and / or phases, (iii) processing signals received from mobile devices or other sources, 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, once determined by the mobile device or a server, can identify the transmitter, the location of the transmitter, the environmental conditions at or near the transmitter, and / or other known information. The atmospheric sensor may be integral to the transmitter or separate from the transmitter, and may be co-located with the transmitter or near (e.g., within a distance threshold) the transmitter.
[0106] 20 , as an example, the user device 104 may include a network interface 2001 for exchanging information with the server 102 via the network 106 (e.g., wired and / or wireless interface ports, antennas, 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, atmospheric sensors 2004 (including the 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., compass and inertial sensors for measuring movement and orientation), a user interface 2006 (display, keyboard, microphone, speaker, etc.) that allows a user of the user device 104 to provide input and receive output, and other components known to those skilled in the art. GNSS interfaces and processing units (not shown) are contemplated and may be integrated with other components or standalone antennas, RF front-ends, and processors dedicated to receiving and processing GNSS signals. The memory / data source 2003 may include memory that stores data and software modules with executable instructions, including a signal processing module, a signal-based position estimation module, a pressure-based altitude module, a movement determination module, current calibration values, data packets, a calibration module, and other modules.The processor 2002 may 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 by the user device 104; (ii) estimating the altitude of the user device 104 (based on pressure measurements from the user device 104 and transmitter, temperature measurements from the transmitter or another source, and other information necessary for the calculation); (iii) processing received signals to determine location information or location data (e.g., signal time of arrival or time of travel, pseudorange between the mobile device and the transmitter, atmospheric conditions of the transmitter, transmitter and / or location, or other transmitter information); (iv) using the location information to calculate an estimated position of the user device 104; (v) determining motion based on measurements from inertial sensors of the user device 104; (vi) GNSS signal processing; (vii) collecting and transmitting data packets 112; (viii) storing 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] 21 , as an example, the server 102 may include a network interface 2101 for exchanging information with the user devices 102 and other data sources via the network 106 (e.g., wired and / or wireless interface ports, antennas, or the like), 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. The memory / data source 2103 may include memory that stores software modules having executable instructions, such as, for example, a barometric pressure sensor make and model calibration module, a device ID calibration module, a device make and model calibration module, a building and terrain calibration module, a nearby precise 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. The processor 2102 can execute instructions from the modules to perform different operations, 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 the server 102, (ii) estimating the altitude of the user device 104, (iii) calculating the estimated location of the user device 104, (iv) performing calibration techniques, (v) calibrating the user device 104, or (vi) other processing required by the operations or processes described in this disclosure. The steps performed by the server as described herein may be performed on other machines remote from the user device 104, including an enterprise computer or any other suitable machine.
[0108] Certain aspects disclosed herein relate to estimating the position or location of a user device, where the position may be represented by latitude, longitude, and / or altitude coordinates, x-, y-, z-coordinates, angular coordinates, or other representations. Various techniques for estimating the position of a user device may be used, including trilateration, which is a process that uses geometry to estimate the location of a user device using the distance traveled by different “positioning” (or “ranging”) signals received by the user device from different beacons (e.g., terrestrial transmitters and / or satellites). If location information, such as the time of transmission and the time of reception of a positioning signal from a beacon, is known, multiplying these time differences by the speed of light provides an estimate of the distance traveled by the positioning signal from that beacon to the user device. The different estimated distances corresponding to different positioning signals from different beacons, along with location information such as the locations of those beacons, may be used to estimate the location of the user device. Positioning systems and methods for estimating the location of a user device (in terms of latitude, longitude, and / or altitude) based on positioning signals from beacons (e.g., transmitters and / or satellites) and / or atmospheric measurements are described in commonly assigned U.S. Patent No. 8,130,141, issued March 6, 2012, and U.S. Patent No. 9,057,606, issued June 16, 2015. 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] Determining the precise location (including altitude) of a user device within an environment can be very difficult, especially when the user device is in an urban environment or within a building. For example, an inaccurate altitude estimate can have life-threatening consequences for the user of the user device, as an inaccurate altitude estimate can slow the response time of emergency personnel as they search for the user on multiple floors of a building. In less serious situations, an inaccurate altitude estimate can lead the user to a wrong location within the environment. Various approaches exist for estimating the altitude of a user device. In barometric pressure-based positioning systems, pressure measurements from a calibrated pressure sensor on the user device, along with ambient pressure measurements from a network of calibrated reference pressure sensors, and ambient temperature measurements from a network or other sources, can be used to calculate the altitude. The estimated altitude (h) of the user device can be calculated using the altitude estimate (h). user ) can be calculated by the user device, server, or other equipment receiving the required information as follows: JPEG2025138665000002.jpg21159 (Formula 1)
[0110] where P user is the pressure estimate from the pressure sensor of the user device at the location of the user device, and P sensor is an estimate of the pressure at the reference pressure sensor location that is accurate within a tolerance of the true pressure (e.g., less than 5 Pa), and T remote is an estimate of the temperature (e.g., in Kelvin) at the location of the reference pressure sensor or at a different location of the remote temperature sensor, and 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), and g is the acceleration due to gravity (e.g., −9.8 m / s 2 ), where R is the gas constant and M is the molar mass of air (e.g., dry air or otherwise). As will be appreciated by those skilled in the art, in alternative embodiments of Equation 1, the minus sign (-) may be replaced with a plus sign (+) (e.g., g = 9.8 m / s 2 ).
[0111] The estimate of pressure at the location of the reference pressure sensor can be converted to an estimated reference surface pressure corresponding to the reference pressure sensor in that it identifies an estimate of pressure at the latitude and longitude of the reference pressure sensor, but at a reference surface altitude that may be different from the altitude of the reference pressure sensor. The pressure at the reference surface can be determined as follows: JPEG2025138665000003.jpg23159 (Formula 2)
[0112] where P sensor is the estimated pressure at the reference pressure sensor location, P ref is the estimated pressure at the reference surface, T remote is the reference ambient temperature, h ref is the altitude of the reference plane. The altitude of the user device h user can be calculated using Equation 1, where h sensor h ref Instead of P sensor HA P ref The altitude of the reference plane h ref can be any altitude and is often set to mean sea level (MSL). If two or more reference level pressure estimates are available, the reference level pressure estimates are combined into a single reference level pressure estimate (e.g., using an average, weighted average, or other suitable combination of the reference pressures), and the single reference level pressure estimate is called the reference level pressure estimate P ref Used for.
[0113] Reference will now be made in detail to embodiments of the disclosed invention, one or more examples of which are illustrated in the accompanying drawings. Each example is provided by way of explanation of the present technology, not as a limitation of the present technology. Indeed, while the specification has been described in detail with reference to specific embodiments of the invention, it will be understood that those skilled in the art, upon understanding the foregoing, will be able to readily contemplate modifications, variations, and equivalents of these embodiments. For example, features illustrated or described as part of one embodiment can be used with another embodiment to yield a still further embodiment. Accordingly, the present subject matter is intended to cover all such modifications and variations within the scope of the appended claims and their equivalents. These and other modifications and variations to the present invention can be practiced by those skilled in the art without departing from the scope of the invention, which is more particularly set forth in the appended claims. Moreover, those skilled in the art will understand that the foregoing description is by way of example only and is not intended to limit the invention.
Claims
1. receiving, by a server, a data packet from the device; 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, and the device currently using a current calibration value for calibrating the barometric pressure sensor; and for each calibration result of the plurality of calibration results, if a comparison of the calibration result with the current calibration value indicates that the calibration result satisfies a rule regarding a relationship between the calibration result and the current calibration value, updating, by the server, 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 results after updating the historical calibration table; for each calibration result of the plurality of calibration results, if the comparison by the server 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; determining, by the server, a plurality of weighting values corresponding to the plurality of previously determined calibration results in the historical calibration table; determining, by the server, a combined calibration result by adjusting 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 combining the plurality of weighted calibration results; selecting, by the server, a selected calibration value from the combined calibration results and the current calibration value based on a selection criterion; transmitting, by the server, to the device the selected calibration value for use by the device in calibrating the barometric pressure sensor.
2. the calibration result includes a calibration offset and a confidence interval; the calibration offset is the amount by which the measured pressure value produced by the barometric pressure sensor is altered to produce a calibrated pressure value that is expected to be substantially closer to the actual barometric pressure at the barometric pressure sensor; When applied to the calibration offset, the confidence interval gives a likely error range for the calibration result; The method of claim 1 , wherein the confidence interval, when applied to the calibration pressure value, is a range above and below the calibration pressure value within which the actual air pressure is expected to lie.
3. 3. The method of claim 2, wherein the rule regarding the relationship between the calibration result and the current calibration value is based on the possible error range of the calibration result completely overlapping with a previous possible error range of the current calibration value.
4. The method of claim 2 , wherein the rule regarding the relationship between the calibration result and the current calibration value is based on the calibration offset of the calibration result not being within a previous possible error range of the current calibration value.
5. further determining, by the server, that the potential error range of the calibration result overlaps with a previous potential error range of the current calibration value by an overlap amount; The method of claim 2 , wherein the rule regarding the relationship between the calibration result and the current calibration value is based on a ratio of the amount of overlap to the possible error range of the calibration result being greater than or equal to a threshold amount.
6. 3. The method of claim 2, wherein the rule regarding the relationship between the calibration result and the current calibration value is based on the difference between the calibration offset of the calibration result and the calibration offset of the current calibration value divided by the confidence interval of the calibration result being less than or equal to a threshold amount.
7. 3. The method of claim 2, wherein the rule regarding the relationship between the calibration result and the current calibration value is based on a first calibration technique used to determine the calibration result taking precedence over a second calibration technique used to determine the current calibration value.
8. adjusting, by the server, the plurality of previously determined calibration results based on their respective elapsed times prior to determining the combined calibration result to obtain a plurality of adjusted previously determined calibration results; The method of claim 1 , further comprising: determining the combined calibration result using the plurality of adjusted previously determined calibration results.
9. 2) the minimum uncertainty and the current calibration value of the combined calibration result being less than an uncertainty threshold; 3) a highest priority calibration technique and the current calibration value among multiple calibration techniques used to determine the combined calibration result; or 4) a median calibration value and the current calibration value of the combined calibration result.
10. the data in the data packet includes a plurality of data items; the plurality of data items are used in a plurality of calibration techniques to determine the plurality of calibration results; The method of claim 1 , wherein each calibration result of the plurality of calibration results is determined by a different calibration technique of the plurality of calibration techniques.
11. each calibration technique of the plurality of calibration techniques is associated with a corresponding confidence level of the calibration result produced thereby; The method of claim 10 , wherein each weighting value of the plurality of weighting values is based on the confidence level of a corresponding calibration result of the plurality of calibration results.
12. 11. The method of claim 10, wherein the plurality of data items include: 1) sensor characteristic data relating to the barometric pressure sensor; and 2) current state data relating to the state of the device at the time 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 a 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 a model type of the device; the current state data includes: 1) pressure data indicative of a barometric pressure measurement performed by the barometric pressure sensor; 2) time data indicative of a time when the barometric pressure sensor performed the barometric pressure measurement; 3) location data indicative of an area in which the device was located when the barometric pressure sensor performed the barometric pressure measurement; and 4) application data indicative of an application running on the device when the barometric pressure sensor performed the barometric pressure measurement; moreover, determining, by the server, a first calibration result of 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 of 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 of the plurality of calibration results based on the pressure data, the location data, and building and terrain data; determining, by the server, a fourth calibration result of the plurality of calibration results based on the pressure data, the location data, the time data, and known accurate pressure data, the known accurate pressure data being from a known accurate barometric pressure sensor within a first threshold distance of the area in which the device was located; determining, by the server, a fifth calibration result of the plurality of calibration results based on the pressure data, the location data, and known precise altitude data, the known precise altitude data being based on a geographic point whose altitude is known and that is within a second threshold distance of the region in which the device was located; determining, by the server, a sixth calibration result of the plurality of calibration results based on the pressure data, the location data, and the application data, the application data indicating that the application running on the device is associated with a predetermined location having a known altitude and within a third threshold distance of the region in which the device was located; and determining, by the server, the new calibration value for the barometric pressure sensor based on two or more of the first, second, third, fourth, fifth, and sixth calibration results.
14. the data packet is a first data packet, and the data in the data packet is first data; moreover, receiving, by the server, a second data packet from the device; and determining, by the server, 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. determining, by the server, a first calibration result of the plurality of calibration results using the first data of the first data packet and a first calibration technique; 15. The method of claim 14, further comprising: determining, by the server, a second calibration result of the plurality of calibration results using the second data of the second data packet and a second calibration technique, the second calibration technique being different from the first calibration technique.
16. determining, by the server, a first calibration result of the plurality of calibration results using the first data of the first data packet and a calibration technique; 15. The method of claim 14, further comprising determining, by the server, a second calibration result of the plurality of calibration results using the second data of the second data packet and the calibration technique.
17. receiving a first data packet from the device by the server; receiving a second data packet from the device by the server; determining, by the server, a plurality of calibration results based on the first data of the first data packet and the second data of the second data packet, each of the plurality of calibration results being for calibration of a barometric pressure sensor of the device, and the device currently using a current calibration value for calibrating the barometric pressure sensor; updating, by the server, for each calibration result among the plurality of calibration results, a historical calibration table with the calibration result when a comparison of the calibration result with the current calibration value indicates that the calibration result satisfies a rule regarding a relationship between the calibration result and the current calibration value, 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, if the comparison of the calibration result with the current calibration value 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; determining, by the server, a combined calibration result by adjusting 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 combining the plurality of weighted calibration results; selecting, by the server, a selected calibration value from the combined calibration results and the current calibration value based on a selection criterion; transmitting, by the server, to the device the selected calibration value for use by the device in calibrating the barometric pressure sensor.
18. the new calibration values include a calibration offset and a confidence interval; the calibration offset is the amount by which the measured pressure value produced by the barometric pressure sensor is altered to produce a calibrated pressure value that is expected to be substantially closer to the actual barometric pressure at the barometric pressure sensor; the confidence interval, when applied to the calibration offset, gives a likely error range for the new calibration value; 18. The method of claim 17, wherein the confidence interval, when applied to the calibration pressure value, is a range above and below the calibration pressure value within which the actual air pressure is expected to lie.
19. 20. The method of claim 18, wherein the rule regarding the relationship between the calibration result and the current calibration value is based on the possible error range of the calibration result completely overlapping with a previous possible error range of the current calibration value.
20. 20. The method of claim 18, wherein the rule regarding the relationship between the calibration result and the current calibration value is based on the calibration offset of the calibration result not being within a previous possible error range of the current calibration value.
21. further determining, by the server, that the potential error range of the calibration result overlaps with a previous potential error range of the current calibration value by an overlap amount; 20. The method of claim 18, wherein the rule regarding the relationship between the calibration result and the current calibration value is based on a ratio of the amount of overlap to the possible error range of the calibration result being greater than or equal to a threshold amount.
22. 20. The method of claim 18, wherein the rule regarding the relationship between the calibration result and the current calibration value is based on the difference between the calibration offset of the calibration result and the calibration offset of the current calibration value divided by the confidence interval of the calibration result being less than or equal to a threshold amount.
23. 20. The method of claim 18, wherein the rule regarding the relationship between the calibration result and the current calibration value is based on a first calibration technique used to determine the calibration result taking precedence over a second calibration technique used to determine the current calibration value.
24. adjusting, by the server, the plurality of previously determined calibration results based on their respective elapsed times prior to determining the combined calibration result to obtain a plurality of adjusted previously determined calibration results; 18. The method of claim 17, further comprising: determining the combined calibration value using results of the plurality of adjusted previously determined calibration values.
25. 20. The method of claim 17, wherein the selection criteria is based on: 1) a minimum uncertainty of the combined calibration result and the current calibration value; 2) the minimum uncertainty of the combined calibration result and the current calibration value being less than an uncertainty threshold; 3) a highest priority calibration technique of multiple calibration techniques used to determine the combined calibration result and the current calibration value; or 4) a median calibration value of the combined calibration result and the current calibration value.
26. the first data in the first data packet includes a first plurality of data items, and the second data in the second data packet includes a second plurality of data items corresponding to the first plurality of data items; the first plurality of data items are used in a first plurality of calibration techniques to determine a first portion of the plurality of calibration results; 20. The method of claim 17, wherein the second plurality of data items are used in a second plurality of calibration techniques to determine a second portion of the plurality of calibration results.
27. each calibration technique of the first and second plurality of calibration techniques is associated with a corresponding confidence level of the calibration results produced thereby; 27. The method of claim 26, wherein each weighting value of the plurality of weighting values is based on the confidence level of a corresponding calibration result of the plurality of calibration results.
28. 27. The method of claim 26, wherein the first and second plurality of data items include: 1) sensor characteristic data relating to the barometric pressure sensor; and 2) current state data relating to the state of the device at the time the first or second respective data packet was created by the device.
29. the sensor characteristic data includes: 1) device identification data that uniquely identifies the device and can identify a 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 a model type of the device; the current state data includes: 1) pressure data indicative of a barometric pressure measurement performed by the barometric pressure sensor; 2) time data indicative of a time when the barometric pressure sensor performed the barometric pressure measurement; 3) location data indicative of an area in which the device was located when the barometric pressure sensor performed the barometric pressure measurement; and 4) application data indicative of an application running on the device when the barometric pressure sensor performed the barometric pressure measurement; moreover, determining, by the server, a first calibration result of 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 of 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 of the plurality of calibration results based on the pressure data, the location data, and building and terrain data; determining, by the server, a fourth calibration result of the plurality of calibration results based on the pressure data, the location 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 in which the device is located; determining, by the server, a fifth calibration result of the plurality of calibration results based on the pressure data, the location data, and known precise altitude data, the known precise altitude data being based on a geographic point whose altitude is known and that is within a second threshold distance of the region in which the device was located; determining, by the server, a sixth calibration result of the plurality of calibration results based on the pressure data, the location data, and the application data, the application data indicating that the application running on the device is associated with a predetermined location having a known altitude and within a third threshold distance of the region in which the device was located; and determining, by the server, the new calibration value for the barometric pressure sensor based on two or more of the first, second, third, fourth, fifth, and sixth calibration results.