Patent ID: 12209924

DETAILED DESCRIPTION

A calibration system or method of calibration described herein enables calibrations of a barometric pressure sensor of a mobile or user device with several calibration techniques which take into consideration a wide variety of potential situations which the user device and the user thereof might encounter. The combination of the calibration techniques and the analysis of the results thereof provides for a relatively accurate calibration of the barometric pressure sensor, thereby resulting in relatively accurate and reliable altitude determinations by the user device.

In some embodiments, the calibration system calibrates the barometric pressure sensor at sporadic times under less-than-ideal conditions. When calibration data is available, the calibration system inspects and processes the available calibration data, performs whichever calibration techniques are enabled by the calibration data, combines the results of the calibration techniques to arrive at a new calibration value, determines the quality or confidence of the new calibration value, determines whether to accept or reject the new calibration value, and determines whether to update the user device with the new calibration value.

Advantages of the present invention include that it allows a barometric pressure sensor to be calibrated with minimal data across a variety of environments. Additionally, the calibration system and method requires little to no user intervention, provided the resulting calibration value is associated with a good confidence. Additionally, when user intervention is requested or required, the calibration system allows for user freedom to pick a location and can handle indoor locations on upper floors of buildings. Furthermore, the present invention minimizes any disruption to the user and provides a seamless, automated method to calibrate barometric pressure sensors. In addition, minimal data used for calibration can aid in reducing power consumption by the user device or alleviate privacy concerns.

FIG.1is a simplified schematic diagram of an example calibration system100for calibrating a barometric pressure sensor in a user's device, in accordance with some embodiments. In some embodiments, the calibration system100generally includes a server102and several mobile or user devices104. The server102generally communicates with the user devices104through a network106. The server102generally represents one or more computerized devices, such as a cloud computing system, a server farm, a set of computers, a desktop computer, a notebook computer, among others. The user devices104each generally represent a smart phone, a cell phone, a personal computer, etc. The network106generally represents any appropriate combination of the Internet, cell phone communication systems, broadband cellular networks, wide area networks (WANs), local area networks (LANs), wireless networks, networks based on the IEEE 802.11 family of standards (Wi-Fi networks), and other data communication networks.

In some embodiments, each user device104generally includes a barometric pressure sensor108, a current calibration value110, and a data packet112, among other hardware, software and data. The barometric pressure sensor108generates a pressure measurement with which the user device104determines its altitude. The current calibration value110is used by the user device104or the barometric pressure sensor108to calibrate the barometric pressure sensor108, i.e., to adjust the raw pressure measurement to obtain a more accurate adjusted pressure measurement with which to determine the altitude. The data packet112contains calibration data that the user device104gathers for sending to the server102for the server102to determine and return the current calibration value110as described below.

In some embodiments, the server102generally contains data packets114(corresponding to the data packets112) received from each of the user devices104, a historical calibration table116for each of the user devices104, and a current calibration table118for each of the user devices104, among other hardware, software and data. For each user device104, the server102maintains one or more of the data packets114that contain recent unexpired calibration data. The server102may delete data packets that contain calibration data that are considered unreliable for being too old and have thus expired. With the calibration data in the one or more data packet114from one of the user devices104, the server102performs one or more of a variety of calibration techniques with which to determine calibration values as described below for that user device104. The server102stores the calibration values in the historical calibration table116. The historical calibration table116contains previously determined calibration results120that have not expired, i.e., are considered to be still useable, for the corresponding user device104. As described below, the server102selects a calibration value from among, or generates a calibration value based on, the previously determined calibration results120and stores the selected or generated calibration value in the current calibration table118. The current calibration table118, thus, contains the selected or generated calibration value as a current calibration value122, which is generally considered to be the current best available calibration value. The server102sends the current calibration value122(i.e., the selected or generated calibration value) to the user device104for use as the current calibration value110to calibrate the barometric pressure sensor108. For alternative embodiments, variations on the above-described functions are described below.

FIG.2shows a simplified flowchart of an example process200by the calibration system100for performing calibration techniques and processing the results thereof, in accordance with some embodiments. The particular steps, combination of steps, and order of the steps for this process (and other processes disclosed herein) are provided for illustrative purposes only. Other processes with different steps, combinations of steps, or orders of steps can also be used to achieve the same or similar result. Features or functions described for one of the steps performed by one of the components may be enabled in a different step or component in some embodiments. Additionally, some steps may be performed before, after or overlapping other steps, in spite of the illustrated order of the steps.

At202, the server102receives and stores one or more data packets114(at one or more times) from the user device104. (The receipt of any data packet114generally triggers performance of the example process200.) In some embodiments, the calibration techniques described herein can be used with the calibration data from just one data packet114received from the user device104or with the calibration data from multiple data packets114received at different times. Additionally, the server102might receive a new one of the data packets114from the user device104at any unscheduled sporadic time, as well as at regular intervals. The user device104typically sends the data packet112to the server102whenever new data becomes available or the user device104determines that its location is within a threshold distance of a point, object or device with a known accurate altitude or pressure measurement that can be used in a calibration, as described below.

An example set of the calibration data of the data packets114includes multiple data items, such as:1) sensor make and model information of the barometric pressure sensor108in the user device104;2) a unique device identification (ID) of the user device104;3) device make and model information of the user device104;4) a timestamp (time data) for a pressure measurement made by the barometric pressure sensor108;5) a location (location data) of the user device104at the time the pressure measurement was made;6) a pressure value (pressure data) for the pressure measurement;7) a list of apps (app data) running on the user device104; and8) wireless data from wireless devices (e.g., Wi-Fi device, Bluetooth beacon, etc. that broadcast a Z-position, etc.) within range of the user device104.

The data items 1-3 are referred to as “sensor characteristic data” since they are used to determine a basic characteristic of the sensor that does not usually change. For example, a designer, manufacturer or seller of a given make and model of barometric pressure sensor can publish (e.g., in a product datasheet) an empirically determined calibration value that is applicable to all barometric pressure sensors of the same model. Additionally, the make and model of the barometric pressure sensor in the user device104can potentially be determined based on the unique device ID or make/model of the user device104. Similarly, a calibration value that is applicable to the barometric pressure sensor108in all user devices104of the same make/model can be empirically determined by measuring the accuracy of the pressure measurements of a large batch of the user devices104with identical make/models and calculating the distribution of the accuracy of the barometric pressure sensors therein. Therefore, with any of the data items 1-3, the empirically determined calibration value for the barometric pressure sensor108or for the user device104(and by implication, for the barometric pressure sensor108therein) can be determined. The calibration value obtained in this manner would generally be empirically determined only once, so this calibration value may be considered to be a static, or unchanging, characteristic of the barometric pressure sensor108or the user device104.

On the other hand, the data items 4-8 are referred to as “current condition data” since they are related to specific current conditions of the user device104or the barometric pressure sensor108that can change. For example, as the user moves with user device104during any given day, the time, location, pressure measurement, running apps, and nearby Wi-Fi devices would be constantly changing. Thus, calibration values obtained with any of these data items would be dependent on current conditions of the user device104and the barometric pressure sensor108at the time and location that each of the data items of the calibration data is obtained.

Each calibration technique described herein uses only a subset of the data items in the one or more data packets114. Additionally, some of the data packets114might not include every type of data item. (Missing data items may be indicated by a null or dummy value.) Therefore, after the server102reads (at204) the data items from the one or more data packets114, the server102determines (at206) whether any of the types of calibration techniques can be performed with the available data items. The calibration techniques generally include a “barometric pressure sensor make and model” calibration technique208, a “device ID” calibration technique210, a “device make and model” calibration technique212, a “building and terrain” calibration technique214, a “nearby accurate sensor” calibration technique216, a “nearby known geographic point” calibration technique218, an “app context” calibration technique220, a “machine learning model” calibration technique222, and a “user intervention request” calibration technique224. (Each calibration technique is described in more detail below.) Therefore, at206, the server102selects one or more of these calibration techniques to be performed based on the available data items in the one or more data packets114.

Since this disclosure generally describes automatic calibration techniques, the user intervention request calibration technique224is a special case that may be performed, for example, if the other available calibration techniques yield calibration values with confidences that are not desired (i.e., not accurate enough) or would not be available quickly enough (i.e., needed immediately by the user). In such situations, the server102sends a request to the user device104for the user to manually enter the calibration value into the user device104, which is then used going forward in the barometric altitude determination. Additionally, the user could be requested to manually calibrate the user device104if the existing calibrations are of poor quality because their confidence intervals (described below) are all above a predetermined threshold N that is set by either the server102or is user-configurable, or there are no available calibration values due to lack of useable calibration data, or enough time has passed that previous calibration values are inaccurate due to sensor drift.

In some embodiments of the user intervention request calibration technique224, the user is requested to input (and the user device104receives and sends to the server102) their position, either by entering their latitude and longitude, their address (which can be reverse geocoded to determine latitude and longitude), or a pin drop on a displayed map (which can be mapped to a latitude and longitude), etc. In some embodiments, the altitude of the manually entered user position can be determined using one or more of the other calibration techniques that use location data, as described below, but with a highly accurate location provided by the user, instead of a potentially less accurate location provided by the user device104. Thus, the user intervention request calibration technique224can be performed in cooperation with some of the other calibration techniques to manually determine some of the calibration data. However, if the server102determines that manually entered calibration data, such as the location data, is not suitable for calibration (e.g., the pin drop is over water, the pin drop is on a very sloped hill, the pin drop is on a building where the number of floors and/or building height is unknown), then the user intervention request calibration technique can be aborted or denied, since the resulting altitude might be unreliable.

As an example, if the manually entered location is determined to be inside a building (e.g., based on falling within a building polygon, determined to be inside based on being near a building and GNSS signal strength or other I/O methods, etc.), then the server102can prompt the user device104to request that the user input their floor number/label. Upon receiving the floor number, the server102can map it to an absolute altitude using a building database that contains floor altitudes, or a building database with a building height (i.e., height of roof) and an estimated number of floors, or a building database with an estimated number of floors and an assumption about floor separation, or a building database with a building height and an assumption about floor separation. The server102will translate, if needed, between floor number and floor label (e.g., in areas where Ground level and 1st floor are synonymous compared with areas where 1st floor is one floor above Ground level, where the 13th floor label is purposely skipped, where floor labels containing the number 4 are purposely skipped, etc.).

The confidence interval for the user intervention request calibration technique224would depend on one or more of a variety of considerations, depending on how the user input is used, such as 1) the accuracy of a reference network of known accurate sensors, 2) a distance to the network reference nodes, 3) the accuracy of the manually entered 2D location, 4) the accuracy of a terrain/(Point of Interest)/building database, 5) variation of the terrain within the user's location confidence circle, and 6) the accuracy of the floor level determination, among other considerations.

At226, the server102performs the selected calibration techniques208-224, which are described in more detail below with respect toFIGS.4-13. Each calibration technique208-224generates a new “calibration result”. At228, the server102optionally filters the new calibrations result(s) by determining whether the new calibration result(s) is acceptable relative to the current calibration value122, as described in more detail below with respect toFIG.15. If the new calibration result(s) is acceptable at228, the server102stores (at230, or1512below) the new calibration result(s) as part of the previously determined calibration results120in the historical calibration table116. As an alternative, the server102simply stores (at230) all calibration results in the historical calibration table116without the filtering at228. (Each calibration result and calibration value has a form of A+/−B, where A is a “calibration offset”, and B is a “confidence interval” or “calibration confidence”, as described below. Additionally, the calibration offset can have a positive or negative value, which can be, depending on a +/− sign convention, added to or subtracted from a “measured pressure value” produced by the barometric pressure sensor108to generate a “calibrated pressure value”.) Each previously determined calibration result120is stored in the historical calibration table116with the following information: 1) a timestamp (e.g., for the time at which measurements were made 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). When an individual calibration result in the historical calibration table116has become too old, e.g., has expired after a predetermined period of time (e.g., one month), that calibration result could be deleted from the historical calibration table116.

The calibration offset is an amount by which the measured pressure value produced by the barometric pressure sensor108is altered, or offset, to generate the calibrated pressure value, which is expected to be substantially close to an “actual barometric pressure” at the barometric pressure sensor108. The confidence interval, when applied to the calibration offset, provides a “potential error range” (e.g., error bars) below and above the calibration offset of the calibration result or the calibration value. When applied to the calibrated pressure value, the confidence interval is a range greater than and less than the calibrated pressure value that the actual barometric pressure is expected to be within. Thus, the phrase “confidence interval” generally means the range of values that it is relatively certain that the calibration is actually falling within, out to a given percentage confidence level. A smaller range of values, for example, indicates a greater “confidence” in the calibration. As an example, for a calibration result or calibration value of 100+/50 Pa, where the confidence is measured to be 1 sigma standard deviation (68%), this means that there is a 68% confidence level that the calibration would fall within the range between 50 and 150 Pa. (Other percent confidence levels may alternatively be used.) For figures with error bars, the confidence interval would be half the length of the entire error bar, so in this example, the error bar would be 150−50=100 Pa long. Additionally, the phrases “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 calibration value generally corresponds to a small “confidence interval”, and a low “confidence” in a calibration result or calibration value generally corresponds to a large “confidence interval”. Furthermore, “confidence” is a general term used herein to refer to an overall confidence in the calibration result or calibration value, which is based on the confidence interval, the percentage confidence level, and an understanding of the relative likelihood that one calibration technique may be better than another.

The calibrated pressure value is typically used to determine the calculated altitude of the user device104. The confidence interval is used to determine a range below and above the calculated altitude that the actual altitude is expected to be within to the percentage confidence level.

FIG.3shows a simplified flowchart of an example process300by the calibration system100for updating the calibration of the barometric pressure sensor108in the user device104, in accordance with some embodiments. At302, the server102determines that it is time to calibrate the barometric pressure sensor108of the user device104. This determination might be triggered after a predetermined amount of time has passed since the previous time that the barometric pressure sensor108was calibrated or updated (e.g., 1 or 2 days or several hours, i.e., sufficient time for the current calibration value to have become unreliable). Alternatively, the determination at302might occur when a new calibration result has been added to the historical calibration table116, thereby making it desirable to ensure that the best of the previously determined calibration results120(including the new calibration result and the current calibration value, among any available or unexpired other calibration results) is used as the current calibration value.

At304, therefore, the server102reads the previously determined calibration results120from the historical calibration table116. If there is only one previously determined calibration result120, then the process300can branch from this point to312.

At306, the server102updates the confidence intervals of the previously determined calibration results120in the historical calibration table116. In some embodiments, the server adjusts the previously determined calibration results120based on their respective ages to obtain “adjusted previously determined calibration results”. This update generally increases the value of each confidence interval to produce an “adjusted confidence interval” based on a time difference between a present time (i.e., when the process300or the step306is being performed) and the time indicated by the timestamp in the historical calibration table116for the previously determined calibration result120. In some embodiments, the update at306is performed only for the previously determined calibration results120that resulted from the calibration techniques214-224that used any of the current condition data, and not for the previously determined calibration results120that resulted from the calibration techniques208-212that used only the sensor characteristic data. This is because the calibration techniques214-224(which rely on measured calibration data from the barometric pressure sensor108) can be prone to sensor drift, so the calibration techniques214-224may be less accurate as time increases. Such “aging” increases the uncertainty of the calibration results resulting from the calibration techniques214-224, so the confidence interval is increased accordingly. In other embodiments, the update at306is performed for all of the previously determined calibration results120, regardless of the calibration technique used to produce them, in a situation in which the barometric pressure sensor108exhibits linear or non-oscillatory drift. The aging factor can be linear (e.g. a predetermined constant number for each day of age, e.g., 10 Pa/day), decaying exponential (e.g. a first predetermined number for the first day, a second smaller predetermined number for the second day, a third still-smaller number for the third day, and so on, e.g., 10 Pa for the first day, 8 Pa more for the second day, etc.), or asymptotic (e.g. 10 Pa for first day, 5 Pa more for second day, topping out at 30 Pa total), among other aging techniques. The server102also (at306) may delete any calibration result from the historical calibration table116for which the adjusted confidence interval has become too large or that has become too old, e.g., has expired after a predetermined period of time (e.g., one month).

In some embodiments, at308, the server102combines the calibration results of each of the previously determined calibration results120or of the adjusted previously determined calibration results (or selects from among the calibration results thereof) to obtain a “combined calibration result” (as described in more detail below with respect toFIG.14), which can be used in place of or as one of the previously determined calibration results120or the adjusted previously determined calibration results. At310, the server102selects a best calibration result (a.k.a. a selected calibration result) from the previously determined calibration results (as adjusted, combined, or updated above) based on a selection criteria. (In some embodiments, the selection is between the combined calibration result and the current calibration value. In some embodiments, the selection is between every one of the previously determined calibration results120in the historical calibration table116, which further includes the current calibration value and optionally includes the combined calibration result.) The selection criteria may be based on any appropriate criteria found to be relevant, such as 1) a smallest uncertainty (confidence interval) in the (adjusted) previously determined calibration results, 2) the smallest uncertainty (confidence intervals) in the (adjusted) previously determined calibration results that is less than a maximum uncertainty threshold value (e.g. only those with confidence intervals<=50 Pa), 3) a highest priority calibration technique of the calibration techniques208-224used to determine the (adjusted) previously determined calibration results, or 4) a median calibration value of the (adjusted) previously determined calibration results. For an example of the priority of techniques, if there are previously determined calibration results120that resulted from a user intervention request calibration technique224, a device make and model calibration technique212, and an app context calibration technique220, and if the user intervention request calibration technique224has been prioritized above the others, then the server102selects the previously determined calibration results120that resulted from the user intervention request calibration technique224. Additionally, in addition to performing the filtering process1500at228above, or if the server102did not filter the new calibration results at228before storing them in the historical calibration table at230or1512, then the filtering process1500can be used on the selected calibration result subsequent to the selection of the best calibration result at310. In this case, a determination is made whether to update the current calibration table118at1508-1512or312, rather than the historical calibration table116.

If there is a selected calibration result based on the above criteria, then the server102stores (at312) the selected calibration result as the current calibration value in the current calibration table118corresponding to the user device104to indicate that this value is the current calibration value122for the user device104. (If no selected calibration result is produced at310, then the current calibration table118is not updated.) Additionally, the server102sends (at314) the selected or current calibration value122to the user device104. The user device104receives and stores the current calibration value122as its current calibration value110for use in calibrating the barometric pressure sensor108.

In some alternative embodiments, the server102does not use the historical calibration table116but simply maintains the current calibration value122for the user device104. In this case, the server102uses the selection at228(as described in more detail with respect toFIG.15) to determine whether to update the current calibration value122with the new calibration value and to send the new calibration value to the user device104.

The disclosure herein provides an advantage of being able to consolidate calibration results from multiple calibration techniques to produce a reliable calibration value for calibrating the barometric pressure sensor108. The disclosure herein also provides an advantage of maintaining multiple previously determined calibration values with which to select a best calibration value.

The preceding and following description generally assumes that the server102performs the functions as described. However, in some alternative embodiments, the user device104can perform some of these functions. In this case, the user device104keeps its most recent data packets112and maintains its historical calibration table and current calibration table. The server102sends the additional described data to the user device104. Then the user device104determines when any of the calibration techniques208-224is to be performed, performs the calibration techniques208-224, combines the results thereof to obtain a new calibration value, stores the new calibration value in its historical calibration table, determines when to calibrate its barometric pressure sensor108, 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 uses the current calibration value to calibrate its barometric pressure sensor108. Alternatively, the user device104performs an appropriate subset of these functions, and the server102performs the rest.

FIG.4shows a simplified flowchart of an example process400by the calibration system100for performing the barometric pressure sensor make and model calibration technique208when this calibration technique is selected at206and performed at226in the example process200ofFIG.2above, in accordance with some embodiments. At402, the server102reads the barometric pressure sensor make and model data from the data packet114. The barometric pressure sensor make and model is generally used to compare against an expected accuracy specification. Using the make and model, therefore, the server102looks up (at404) the accuracy (i.e., a predetermined calibration) of the barometric pressure sensor108in a lookup table, e.g., based on the product datasheet published by the designer, manufacturer or seller of the given make and model of the barometric pressure sensor108. Thus, the server102looks up the calibration offset and the confidence interval in the sensor make/model lookup table. With this information, the server102determines (at406) the calibration result for the barometric pressure sensor make and model calibration technique208. For example, if the product datasheet specifies an accuracy of +/−100 Pa, then the calibration can be defined as 0 Pa with a confidence of 100 Pa. Alternatively, a large batch of barometric pressure sensors with identical sensor make/model can be independently tested for the accuracy of their pressure measurements, and the predetermined calibration can be calculated therefrom to provide the accuracy of this make/model of barometric pressure sensor. For example, if the distribution of the accuracies measured for the batch of barometric pressure sensors is −10+/−50 Pa, then the predetermined calibration in the datasheet of a barometric pressure sensor with that specific sensor make/model can be provided as −10 Pa with a confidence of 50 Pa. The server102returns (at408) the calibration result to the example process200for further processing after226.

FIG.5shows a simplified flowchart of an example process500by the calibration system100for performing the device ID calibration technique210when this calibration technique is selected at206and performed at226in the example process200ofFIG.2above, in accordance with some embodiments. At502, the server102reads the unique device ID (e.g., International Mobile Equipment Identity (IMEI) number, phone number, mobile advertising ID (AD-ID), or other unique identifier) of the user device104in the data packet114. Using the device ID, the server102looks up (at504) the barometric pressure sensor make and model (or a unique ID for the barometric pressure sensor108) in a lookup table. (From this point, process500proceeds similarly to process400.) Using the barometric pressure sensor make and model, the server102looks up (at506) the accuracy (i.e., a predetermined calibration) of the barometric pressure sensor108in a lookup table, e.g., based on the product datasheet published by the designer, manufacturer or seller of the given make and model of the barometric pressure sensor108. Thus, the server102looks up the calibration offset and the confidence interval in the sensor make/model lookup table. With this information, the server102determines (at508) the calibration result for the device ID calibration technique210. The server102returns (at510) the calibration result to the example process200for further processing after226.

FIG.6shows a simplified flowchart of an example process600by the calibration system100for performing the device make and model calibration technique212when this calibration technique is selected at206and performed at226in the example process200ofFIG.2above, in accordance with some embodiments. At602, the server102reads the device make and model information of the user device104in the data packet114. Different user devices104have different off-the-shelf accuracies of their barometric pressure sensors108, with the sensors of some user devices being more accurate than others owing to the quality of the construction, assembly, location in device, etc. Thus, a large batch of user devices104with identical make/model can be independently tested for the accuracy of the pressure measurements of their barometric pressure sensors108, and a predetermined calibration can be calculated therefrom to provide the accuracy of the barometric pressure sensor108of this make/model of user device. For example, if the distribution of the accuracies measured is −10+/−50 Pa, then the calibration of the user device104of that specific make/model can be defined as −10 Pa with a confidence of 50 Pa. Using the device make and model, therefore, the server102looks up (at604) the accuracy (i.e., a predetermined calibration or standard calibration) of the barometric pressure sensor108for the user device104in a lookup table, e.g., based on the independent testing results. Thus, the server102looks up the calibration offset and the confidence interval in the device make/model lookup table. With this information, the server102determines (at606) the calibration result for the device make and model calibration technique212. The server102returns (at608) the calibration result to the example process200for further processing after226.

In some embodiments, since the calibration results of the calibration techniques208-212are generally considered to be static, i.e., unchanging, these calibration techniques need be performed only once. Thus, calibration values based on these calibration results could be maintained in the historical calibration table116indefinitely. Additionally, the sensor make and model information of the barometric pressure sensor108, the unique device ID of the user device104, and the device make and model information of the user device104do not all have to be included in all of the data packets112or114, unless needed to identify the user device104to the server102.

The building and terrain calibration technique214is described with reference toFIGS.7-9.FIG.7shows a simplified diagram of an example terrain with buildings700for use in this calibration technique shown inFIG.8, in accordance with some embodiments. For this example, a terrain702is shown as uneven with different altitudes and slopes in between, and buildings704and706have different heights, different numbers of floors, and different floor separation values. Additionally, the location data provided by the user device104might indicate a 2D location area708(user device footprint) within which the user device104may be. Furthermore, the 2D location area708includes an area outside of the buildings704and706as well as areas within the buildings704and706, as indicated by shaded partially overlapping areas710and712. The shaded overlapping areas710and712are applicable to each floor of the buildings704and706, respectively. Thus, the user and user device104may be outside the buildings704and706(e.g., at714), inside the first building704on any floor thereof (e.g., at716), or inside the second building706on any floor thereof (e.g., at718).

If the user device104happened to collect and send the data packet112when the altitude thereof is unambiguous (e.g., outside on flat terrain with no location area overlapping a building), then it is possible to calibrate the barometric pressure sensor108against a reference network of known pressure sensors. If the altitude cannot be determined unambiguously (e.g., possibly being inside a building on any floor), it is still possible to constrain the potential altitude of the user device104and calibrate against the potential altitudes of the floors. For example, if the user device104were determined to be entirely in a 3-story building, then the likely altitude is on one of three floors, and the calibration could be made to the average or median of the three floors (e.g. the second floor in the US floor labeling convention), with the confidence interval being +/−1 floor.

It is possible to determine the potential altitudes of the user device104as follows. For a given 2D confidence (i.e., the 2D location area708) centered on the most likely 2D position of the user device104, the possible 3D positions of the user device can be defined as: on the terrain outside the buildings704and706(plus some additional height held above the ground), and on any floor within either building704or706that falls within the user confidence footprint, i.e., the respective shaded overlapping areas710and712, (plus some additional height held above the ground). The individual floor heights can be used if they are known a priori, or they can be estimated from the building height, the number of floors, an assumption about floor separation, or any combination of these.

If a uniform probability is assumed that the user device104is equally likely to be located within the 2D location area708, including the shaded overlapping areas710and712for each floor of the respective buildings704and706, then the probability distribution of the altitude of the user device104can be determined, including any assumed height above the ground or floor level. In a simplified example, if the terrain altitude is 0 m, the device above floor height is 1 m, the area of the confidence circle of the 2D location area is 200 m2, there is only one overlapping building, there are only two floors of the overlapping building above ground, the upper floor areas are 100 m2, and the upper floors are separated by 3 meters, then the probability of the user device104being located at 1 m is 200/(200+100+100)=0.5, the probability of the user device104being at 4 m is 100/(200+100+100)=0.25, and the probability of the user device104being at 7 m is 100/(200+100+100)=0.25. Therefore, the 90% range of likely altitude is 1 m to 7 m, and since the median of the distribution is 2.5 m, the likely altitude is 2.5 with an asymmetric altitude confidence interval of +4.5 to −1.5 m. Alternatively, we can report the likely altitude to be the middle of the confidence interval range and report 4+/−3 m. If the measured altitude due to the measured pressure of the barometric pressure sensor108reads 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 of the calibration definition). When converted to pressure, this means the calibration value of the barometric pressure sensor108is about 192+/−36 Pa (assuming 1 m˜12 Pa as a typical relationship between altitude differences and pressure differences) (or −192+/−36 Pa, depending on the positive/negative sign convention of the calibration definition). The +/− errors need not be symmetrical, since the building footprint may be considerably smaller than the outdoor terrain footprint, or there are multiple other buildings within the user's confidence of varying heights and footprints. Also, the building footprint need not to entirely lie within the user device footprint, nor does the user device footprint need to entirely lie within the building footprint, since the overlapping area (whether including a partial or complete extent of either footprint) between the two is of interest. Also, the ground floor of the building704or706need not be the same height as the surrounding terrain: it could be above or below. Also, if a portion of a floor or range of floors is known to be inaccessible (e.g., a server floor, machine floor, closed for renovation, roof, etc.), these regions can be excluded in the altitude distribution of potential user device altitudes.

If the height of the overlapping building704or706were unknown, it is possible or acceptable to assume a height and a floor height separation based on morphology. For example, if the building of interest lies in a suburban area, the heights can be assumed to be 1 or 2 floors for a typical 1 or 2 story home or small business establishment. In another example, if the building of interest lies within an industrial part of town with large warehouses, the heights can be assumed to be 1 floor. Such altitudes may be less accurate, but the error can still be bound.

In accordance with the above considerations,FIG.8shows a simplified flowchart of an example process800by the calibration system100for performing the building and terrain calibration technique214, in accordance with some embodiments. At802, the server102reads the pressure data and location data from the data packet114. At804, the server102looks up the building and terrain data (e.g., in a mapping database) for the 2D location area708indicated by the location data. At806, the server102determines whether the 2D location area708overlaps any building, and if so, calculates (using the 2D location area708and the building and terrain data) the overlap (e.g., the shaded overlapping areas710and712) of the user device's 2D location area708and the building footprint area for each building.

In some embodiments, the server102determines (at808) the number of floors of the building (e.g.,704or706). For example, the number of floors can be determined by any appropriate or available technique, such as 1) looking up the number of floors in a database of known buildings, 2) estimating the number of floors from the height of the building (from a building database) and a reasonable floor separation value (e.g., 12 m tall building with 3 m/floor separation: 12/3=4 floors), 3) assuming the number of floors based on morphology (e.g. a suburban area typically has only 1-2 floors), etc. In some embodiments, determining (at808) the number of floors of a building is unnecessary if the altitudes of each floor is already known (see810below).

In some embodiments, the server102estimates or calculates (at810) the altitude of each floor. For example, each floor altitude can be determined by any appropriate or available technique, such as 1) looking the altitudes up in a building database, 2) looking up the ground height from a terrain database and adding a (floor separation value)*(floor number−1) (assuming a reasonable floor separation value and the floors start counting from 1), etc. This step may optionally exclude a particular floor number if it is known to be inaccessible. Additionally, this step may optionally add an offset to the floor altitude (e.g., 1 m) to indicate how high the user device104could be above the floor, since it is the altitude of the user device104that is of concern.

In some embodiments, the server102estimates or calculates (at812) the area of overlap of each floor with the user device's 2D location area708. This area of overlap might typically be the same as the overlap calculated at806for each building, unless different floors have different areas.

The process800repeats808-812for each building that overlaps the user device's 2D location area708.

In some embodiments, the server102determines (at814) the non-overlapping area (e.g., the non-shaded area of the 2D location area708) and the altitude distribution of the non-overlapping area (based on terrain change or topography in the 2D location area708as indicated by the terrain database). The server102may also optionally add a device offset to the altitude distribution (e.g., 1 m) to indicate how high the user device might be above the ground, since it is the altitude of the user device104that is of concern.

In some embodiments, the server102combines (at816) the altitude distributions of the exterior altitudes (outside buildings) and all interior altitudes (each floor inside buildings), weighted by the areas of each altitude, to get a combined altitude distribution that establishes the potential altitudes of the user device104.FIG.9shows a simplified graph900of an example likely altitude v. cumulative probability that can be obtained for the combined altitude distribution at this point in the process800. For the graph900, a simple horizontally flat terrain, a partially overlapping three-floor building, a device offset altitude of 1 m, and a floor separation of 3 meters were assumed. Thus, the 1 m altitude added the largest portion of the cumulative probability, and the 4 m and 7 m altitudes added smaller equal-sized portions to the cumulative probability.

From the combined altitude distribution (such as that illustrated by the graph900), the server102determines or calculates (at818) a median altitude and standard deviation (or other percent confidence of interest) of the distribution by any appropriate means. At820, the server102determines the calibration result of the building and terrain calibration technique214, where the median altitude is used to calculate the calibration offset, and the standard deviation is used to calculate the confidence interval, using the typical relationship between altitude differences and pressure differences. At830, the server102returns the calibration result to the example process200for further processing after226.

FIG.10shows a simplified flowchart of an example process1000by the calibration system100for performing the nearby accurate sensor calibration technique216when this calibration technique is selected at206and performed at226in the example process200ofFIG.2above, in accordance with some embodiments. At1002, the server102reads the pressure data, location data, and time data from the data packet114. Using the location data, the server102determines (at1004) that the user device104(and barometric pressure sensor108) is within a threshold distance of a known accurate reference pressure sensor. The known accurate reference pressure sensor may be a static pressure sensor in a network of reference pressure sensors that are maintained to be highly accurate or a mobile pressure sensor of another user device104that was recently calibrated with a high level of confidence. Thus, the proximity of the user device104to the known accurate reference pressure sensor can be determined, for example, from a map or database that provides the locations of a network of reference pressure sensors or the locations of other user devices104. In another example, proximity to another user device104can be determined by measuring the strength of the other user device's Bluetooth signal (if available), and if the signal strength exceeds a predetermined threshold, then the two user devices104can be considered to be close enough together for performing this calibration technique. At1006, the server102requests 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 packet114using the time data. At1008, the server102looks up the terrain data for the location area indicated by the location data for the user device104and the location of the known accurate reference pressure sensor. (The terrain data may be unnecessary if the location data indicates that the user device104is close enough to the location of the known accurate reference pressure sensor to assume that any altitude difference is insignificant.) At1010, the server102determines the calibration result for this calibration technique based on the pressure data, the terrain data (optionally), and the known accurate pressure data. The difference in pressure between the pressure data in the data packet114and the known accurate pressure data provides the calibration offset for the calibration result. Additionally, the terrain data in the area between or around the user device104and the known accurate reference pressure sensor provides a potential variation in altitude between the user device104and the known accurate reference pressure sensor. The variation in altitude (i.e., flatness) is used to calculate the confidence interval, based on the typical relationship between altitude differences and pressure differences. For example, if the user device104is determined to be within 10 m of a properly calibrated reference pressure sensor located in, perhaps, a fenced off enclosure in a city park, and if the terrain flatness metric within the 2D location area of the user device104is about +/−1 m 95% of the time (about +/−12 Pa in pressure difference), and if the pressure data indicates a pressure value that is about 50 Pa off the known accurate pressure data from the reference pressure sensor, then the calibration result can be defined as 50 Pa+/−12 Pa. At1012, the server102returns the calibration result to the example process200for further processing after226.

In an alternative calibration calculation for the nearby accurate sensor calibration technique216, the barometric based altitude of the barometric pressure sensor108(or user device104) is calculated as Hbaro=+/−((R*Treference)/(gM))*ln(Preference/Puser), where g corresponds to the acceleration due to gravity (e.g., −9.8 m/s2), R is a gas constant, and M is molar mass of air (e.g., dry air or other), Treferenceis a reference temperature in Kelvin at the reference pressure sensor, Preferenceis the reference pressure in Pa from the known accurate pressure data at a reference altitude (typically 0 m HAE or some other altitude), and Puseris the pressure at the barometric pressure sensor108from the pressure data in the data packet114. The “+/−” is the sign convention depending on whether g is defined as 9.8 or −9.8. The confidence in the altitude (dHbaro) for the barometric pressure sensor108is determined as described in co-assigned U.S. Pat. No. 10,655,961. A true altitude (or estimated true altitude) of the barometric pressure sensor108is determined by any appropriate method, such as the location indicated in the location data in relationship to a known accurate altitude determined from a map, a database, a nearby POI (Point of Interest of known altitude), etc. A true altitude confidence (dHtrue) is determined based on the underlying accuracy of the method for determining the true altitude and the accuracy and terrain variation of the 2D location area of the user device104. The server102then adjusts the user device pressure Puserby a pressure difference value dP in the above formula in order to cause the barometric based altitude and the true altitude to be equal. The pressure difference value dP is then the calibration offset for the calibration result. The confidence interval is calculated as the square root of the sum of dHbaro2+dHtrue2.

FIG.11shows a simplified flowchart of an example process1100by the calibration system100for performing the nearby known geographic point calibration technique218when this calibration technique is selected at206and performed at226in the example process200ofFIG.2above, in accordance with some embodiments. At1102, the server102reads the pressure data and location data from the data packet114. At1104, the server102determines that the user device104(and barometric pressure sensor108) is within a threshold distance of a known geographic point. The known geographic point may be a POI or a Z Anchor Point (location where altitude Z is known) that is well surveyed. The known geographic point may alternatively be a wireless device, such as a Wi-Fi access point or a Bluetooth beacon that broadcasts a Z-position (altitude), in which case, the server102also reads the wireless data from the data packet. Thus, the proximity of the user device104to the known geographic point can be determined, for example, from a map or database that provides the locations of such geographic points. At1106, the server102looks up known accurate altitude data for the geographic point, e.g., in the map or database. At1108, the server102looks up the terrain data for the location area indicated by the location data for the user device104and the location of the known geographic point. At1110, the server102determines the calibration result for this calibration technique based on the pressure data, the terrain data, and the known accurate altitude data. In some embodiments, the server102calculates a barometric based altitude of the user device104based on pressure data and the typical relationship between altitude differences and pressure differences. The server102then calculates the difference between the barometric based altitude and the known accurate altitude of the geographic point. The altitude difference, thus, provides the calibration offset for the calibration result based on the typical relationship between altitude differences and pressure differences. In some embodiments, the server102converts the known accurate altitude data into a calculated pressure value based on the typical relationship between altitude differences and pressure differences. Then the pressure difference between the calculated pressure value and the pressure data provides the calibration offset. Additionally, the terrain data in the area between or around the user device104and the known geographic point provides a potential variation in altitude between the user device104and the known geographic point. The variation in altitude is used to calculate the confidence interval, based on the typical relationship between altitude differences and pressure differences. For example, if the user device104is determined to be within 10 m of a monument (of known altitude) at a city park, and the terrain flatness metric around the user's 2D location area is 1 m 95% of the time (˜12 Pa in pressure change), and if altitude of the monument were known to be 10 m height above ellipsoid (HAE) and the barometric based altitude were determined to be 15 m HAE, then the calibration offset would be 60 Pa ((15 m−10 m)×12 Pa/m), or −60 Pa depending on the sign convention of the calibration offset, and the confidence interval would be +/−12 Pa.

FIG.12shows a simplified flowchart of an example process1200by the calibration system100for performing the app context calibration technique220when this calibration technique is selected at206and performed at226in the example process200ofFIG.2above, in accordance with some embodiments. At1202, the server102reads the pressure data, the location data, and the app data from the data packet114. The app data shows which apps were being run by the user device104at the time of data collection. Some of these apps may be indicative of the underlying activity the user is doing, i.e., a location-specific app, which can potentially indicate the location of the user and thus the user device104. For example, if the user device104is running an app that is related to a predetermined business enterprise, and if the business enterprise has offices or storefronts at predetermined locations, and if the location data indicates that the user device104is near one of these predetermined locations, then it is reasonable to assume that the user is engaged with the business enterprise at the predetermined location, which means that the altitude of the user device104is the same as the altitude of the predetermined location. Therefore, if there is a known accurate altitude of the predetermined location, then the barometric pressure sensor108can potentially be calibrated when the user device104is running the app for the business enterprise while near the predetermined location. At1204, therefore, the server102analyses the app data and determines that a running app is related to a predetermined location of a business enterprise for which an altitude is known. At1206, the server102determines that the user device104is within a threshold distance of the predetermined location. At1208, the server102looks up the known accurate altitude data for the predetermined location in a database. At1210, the server102determines the calibration result for this calibration technique based on the pressure data, the building and terrain data, and the known accurate altitude data in a manner similar to that for the building and terrain calibration technique214described above, since the app context calibration technique220may assume that the user device104is on the same floor as the predetermined location and that the floor is flat. (Alternatively, if the business enterprise occupies more than one floor at the predetermined location, then the app context calibration technique220takes this into consideration to determine the calibration offset and confidence interval in a manner similar to that of the building and terrain calibration technique214described above.) At1212, the server102returns the calibration result to the example process200for further processing after226. As an example of this calibration technique, if the user device104is running an app for a chain of retail stores, and if the location data indicates that the 2D location area of the user device104overlaps one of the retail stores of the chain, and if the retail store is known to be on the second floor in a shopping mall, then the server102determines that the user device104is also on the second floor of the shopping mall based on this information. On the other hand, if the user device104is running a driving directions app, then the user device104is most likely moving in a vehicle and not in a building, and the server102uses this information to constrain the location of the user device104.

FIG.13shows a simplified flowchart of an example process1300by the calibration system100for performing the machine learning model calibration technique222when this calibration technique is selected at206and performed at226in the example process200ofFIG.2above, in accordance with some embodiments. If enough data is collected and processed using any or all of the calibration techniques208-220described above, for calibration data that yields high-confidence calibration results, a supervised machine learning model can be trained to predict a calibration result for the calibration data of a receive data packet114. The supervised machine learning model uses input parameters for data items for measurements such as the location data and pressure data. Additional data for input parameters include derived quantities, such as building overlap area with the 2D location area and the terrain flatness as quantified through variation of the terrain within the 2D location area. Using these input parameters and corresponding calibration results or calibration values for the user devices104, a deep learning neural network is trained with all available data to a great degree of accuracy to produce the supervised machine learning model. The training phase yields a supervised machine learning model that is used to predict a calibration result when given the input parameters from a future data packet114. The training and prediction steps of deep learning are supported by several available frameworks such as Tensorflow, Keras, Pytorch, Caffe2 and Theano. At1302, therefore, the server102reads the data items for the input parameters from the data packet114. At1304, the server102looks up or derives additional data for the input parameters. At1306, the server102inputs the data items and additional data to the supervised machine learning model. At1308, the server102receives the calibration result output from the supervised machine learning model. At1310, the server102returns the calibration result to the example process200for further processing after226.

FIG.14is a simplified flowchart of an example process1400by the calibration system100for determining a combined calibration result at308inFIG.3by combining some or all of the previously determined calibration results120, in accordance with some embodiments. The barometric pressure sensor108can be calibrated using any one of the calibration techniques described herein. Therefore, if there is only one calibration result in the historical calibration table116from having performed only one calibration technique208-224at this point, then this calibration result is simply accepted as the new calibration value in the process300above. However, the quality of any one calibration result can vary depending on the circumstances and environment. For example, a user device104in the middle of a skyscraper will have a very poor calibration if the calibration result based on the building and terrain calibration technique214were applied, but the user device104may have a very good calibration result if the barometric pressure sensor108therein had excellent accuracy under the barometric pressure sensor make and model calibration technique208. Different algorithms for combining multiple calibration results, and their benefits, are disclosed herein. Additionally, different calibration results can be determined at different locations (e.g., one calibration at home, one calibration at work, etc.), at different times, or with different calibration techniques using the same data packet114(e.g. calibrating with a nearby sensor and calibrating within a building).

Accordingly, if the server102determines (at1402) that there are multiple calibration results in the historical calibration table116, then the server102determines (at1404) weighting values corresponding to each of the calibration results, so that the multiple calibration results can be weighted and combined. At1406, the server102adjusts or multiplies each calibration result with its corresponding weighting value to generate weighted calibration results. At1408, the server102combines the weighted calibration results to obtain the combined calibration result.

For example, multiple calibration results can be equally weighted and then combined to form the combined calibration result: if the calibration offset of one calibration result is A0and 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 to A0is B0and the corresponding confidence interval to A1is B1, then the confidence intervals can be combined in quadrature: square root of ((B02+B12)/2). In another example, multiple calibration results with different weighting values can be combined: if one calibration offset is A0with weight w0and the other calibration offset is A1with weight w1, then the weighted calibration offset is (A0*w0+A1*w1)/(w0+w1). If the corresponding confidence interval to A0is B0and the corresponding confidence interval to A1is B1, then the weighted confidence interval can be determined in quadrature: square root of ((w02*B02+w12*B12)/(w0+w1)). The combined calibration offset can be extended to N calibration results: (A0*w0+ . . . +AN*wN)/(w0+ . . . +wN), and the combined confidence interval can be similarly extended to N calibration results: square root of ((w02*B02+ . . . +wN2*BN2)/(w0+ . . . +wN)).

Weighting values wiin this context can be based on corresponding confidence intervals ci. In one example, the calibration result with the smallest confidence interval (non-negative value) could be weighted the most such as wi=1/cior 1/(1+ci). In this context, confidence is defined as the range of possible calibration values to cover a given number of cases (e.g., 68% of all cases, 95% of all cases, etc.). With these functional forms of weighting values, calibration results with poor confidences can be de-weighted (i.e., have their weighting value decreased). Other weighting functions can be considered. In another example, the weighting values could be binary and the calibration result with the smallest confidence interval has a weighting value of 1, and all other weighting values are 0. In this case, the example process1400is simply selecting the best calibration result, instead of combining them. In another example, weighting values could be independent of confidence interval and be weighted based on the type of calibration technique (e.g., decrease the weighting value for the nearby known geographic point calibration technique218or the app context calibration technique220relative to the barometric pressure sensor make and model calibration technique208or the device make and model calibration technique212). Priority of one calibration technique over another is generally determined empirically by comparing a relatively large number of calibration results from each of the calibration techniques208-224and determining which of the calibration techniques208-224perform better on average. Different types or models of the user devices104or of the barometric pressure sensor108or variations in the manner in which the calibration techniques208-224are performed can result in different orders for the priority of the calibration techniques208-224. Additionally, in an ongoing data-gathering process, the priority order can potentially change over time. However, an example priority order is the following order from highest priority to lowest priority:User Intervention RequestBuilding and TerrainBarometric Pressure Sensor Make & ModelDevice Make & ModelNearby Accurate SensorDevice IDNearby Known Geographic PointApp ContextMachine Learning Model

As an alternative, a combined calibration value can be determined based on the overlap of the range of the calibration results. For example, if calibration result A0+/−B0is 60 Pa+/−12 Pa and A 1+/−B1is 50 Pa+/−10 Pa, then 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.

At1410, the server102returns the combined calibration result to the example process300for further processing after308. For example, the combined calibration value can be included as one of the previously determined calibration results120or it can be used in place of one, some or all of the previously determined calibration results120in subsequent processing.

FIG.15shows a simplified flowchart of an example process1500by the calibration system100for filtering (in accordance with228inFIG.2) a new calibration result as being acceptable for storing in the historical calibration table116and, if so, updating the historical calibration table116with the new calibration value, in accordance with some embodiments. (In some embodiments the process1500can also be used as part of the decision to update the current calibration table118between310and312, as described above.) In general, the server102selects whether the new calibration value is acceptable in comparison relative to the current calibration value122and, if so, stores the new calibration value as one of the previously determined calibration results120in the historical calibration table116. When a new calibration result is available, a decision must be made on whether to update the historical calibration table116with the new calibration result or to not update the historical calibration table116. Depending on the current calibration offset A0, current confidence interval B0, new calibration offset A1and new confidence interval B1, the server102accepts or rejects the new calibration result for storing in the historical calibration table116.

Thus, at1502, the server102determines that a new calibration result is available, i.e., one or more calibration techniques208-224have been performed and results have been produced. At1504, the server102looks up the current calibration value122in the current calibration table118. In some embodiments, at1506, the server102compares the new calibration result to the current calibration value122and uses an appropriate rule for determining whether to accept or reject the new calibration result. In other embodiments, at1506, the server102compares the new calibration result to the best one of the previously determined calibration results120in the historical calibration table116(instead of to the current calibration value122), of the same calibration technique of the new calibration result, and uses the appropriate rule for determining whether to accept or reject the new calibration result. For example, in this situation, the “best” one of the previously determined calibration results120may be the one that has the smallest confidence interval or an average of the previously determined calibration results120.

According to a potential first rule, as illustrated by calibration value vs. time graphs1602-1608inFIG.16, the new calibration result (A1+/−B1) is accepted if the calibration offset thereof A1lies within the range of the current calibration value A0+/−B0. As illustrated by graphs1602and1604, the new calibration offset A1(indicated by the center dot of graph1604) lies within the range of the current calibration value A0+/−B0(indicated by the dashed line intersecting the error bars of graph1602). For the example of graphs1602and1604, therefore, the first rule results in the server102accepting the new calibration result for storing in the historical calibration table116. As illustrated by graphs1606and1608, on the other hand, the new calibration offset A1(indicated by the center dot of graph1608) lies outside the range of the current calibration value A0+/−B0(indicated by the dashed line being outside the error bars of graph1606). For the example of graphs1606and1608, therefore, the first rule results in the server102rejecting the new calibration result for storing in the historical calibration table116. The first rule is beneficial in a situation in which it is preferable not to allow for a dramatic change in the calibration value, so the new calibration result is not much different from the current calibration value. This is desirable if the calibration drift of the barometric pressure sensor108is known to be typically slow over a characteristic time period that is less than the time between subsequent measurements that trigger performance of the calibration techniques208-224.

In contrast, according to a potential second rule, as illustrated by calibration value vs. time graphs1702-1708inFIG.17, the new calibration result (A1+/−B1) is accepted if the calibration offset thereof A1lies outside the range of the current calibration value A0+/−B0. As illustrated by graphs1702and1704, the new calibration offset A1(indicated by the center dot of graph1704) lies outside the range of the current calibration value A0+/−B0(indicated by the dashed line being outside the error bars of graph1702). For the example of graphs1702and1704, therefore, the second rule results in the server102accepting the new calibration result for storing in the historical calibration table116. As illustrated by graphs1706and1708, on the other hand, the new calibration offset A1(indicated by the center dot of graph1708) lies within the range of the current calibration value A0+/−B0(indicated by the dashed line intersecting the error bars of graph1706). For the example of graphs1706and1708, therefore, the second rule results in the server102rejecting the new calibration result for storing in the historical calibration table116. The second rule is beneficial in a situation in which it is preferable to allow for a dramatic change in current calibration value, so the new calibration result is drastically different from the current calibration value. The second rule is preferable when is desirable to change to the new calibration result only if it has changed considerably from the current calibration value, such as if the new confidence interval B1happens to be larger than the current confidence interval B0, or if the time between t1(when the new calibration result was determined) and t0(when the current calibration value was determined) exceeds an expected drift characteristic, or if the new calibration result (A1+/−B1) was calculated using a method with an unreliable 2D location area.

According to a potential third rule, as illustrated by calibration value vs. time graphs1802-1808inFIG.18, the new calibration result (A1+/−B1) is accepted if the ratio of the overlap between the current calibration value (A0+/−B0) and the new calibration result (A1+/−B0to the length of the new confidence interval is greater than or equal to an overlap threshold (for example, 0.8). As illustrated by graphs1802and1804, the ratio of the overlap (indicated by the shaded area between the graphs1802and1804) to the length of the new confidence interval (indicated by the extent of the error bars for A1+/−B1) is relatively large, e.g., greater than 0.8. For the example of graphs1802and1804, therefore, the third rule results in the server102accepting the new calibration result for storing in the historical calibration table116. As illustrated by graphs1806and1808, on the other hand, the ratio of the overlap (indicated by the shaded area between the graphs1806and1808) to the length of the new confidence interval (indicated by the extent of the error bars for A1+/−B1) is relatively small, e.g., less than 0.8. For the example of graphs1806and1808, therefore, the third rule results in the server102rejecting the new calibration result for storing in the historical calibration table116. The third rule is beneficial in a situation in which it is preferable to change the current calibration value provided the confidence interval of the new calibration result is small relative to the overlap of the confidence intervals of the two calibration values (i.e., indicating a high confidence in the new calibration result).

According to a potential fourth rule, as illustrated by calibration value vs. time graphs1902-1908inFIG.19, the new calibration result (A1+/−B1) is accepted if the difference between the new calibration offset A1(indicated by the center dot of graph1904) and the current calibration offset A0(indicated by the center dot of graph1902) divided by the new confidence interval B1is less than or equal to a threshold, e.g., 2. As illustrated by graphs1902and1904, the difference (A1−A0) divided by B1is less than 2. For the example of graphs1902and1904, therefore, the fourth rule results in the server102accepting the new calibration result for storing in the historical calibration table116. As illustrated by graphs1906and1908, on the other hand, the difference (A1−A0) divided by B1is greater than 2. For the example of graphs1906and1908, therefore, the fourth rule results in the server102rejecting the new calibration result for storing in the historical calibration table116. The fourth rule is beneficial in a situation that allows for a change in the current calibration value when the new calibration result may have drifted beyond the current confidence interval without drifting too far.

According to a potential fifth rule, the new calibration result is accepted or rejected based on a comparison of the calibration techniques used to generate the new calibration result and the current calibration value. The fifth rule, thus, is not based on comparisons or calculations involving the calibration offsets or confidence intervals of the two calibration values. Instead, some types of the calibration techniques208-224may be prioritized over other types, since some calibration techniques can be more reliable than others. The reliability or prioritization of the calibration techniques208-224can be empirically determined by comparing a large number of calibration results with high-confidence results to determine which calibration technique typically perform better than others. The fifth rule is beneficial as it allows for selecting a calibration value that is considered to be more reliable or to have a higher confidence. For example, if the current calibration value (A0+/−B0) was determined using the app context calibration technique220, and if the new calibration result (A1+/−B1) was determined using a well-surveyed POI with the nearby known geographic point calibration technique218, and if the technique using a well-surveyed POI is prioritized over the app context calibration technique220, then the server102will accept the new calibration result (A1+/−B1) for storing in the historical calibration table116. In another example, if the current calibration value (A0+/−B0) was measured using the building and terrain calibration technique214, and if the new calibration result (A1+/−B1) was measured using the user intervention request calibration technique224, and the user intervention request calibration technique224is prioritized over the building and terrain calibration technique214, then the server102will accept the new calibration result (A1+/−B1) for storing in the historical calibration table116.

If the result of the comparison and determination at1506is to reject or not accept the new calibration result, as determined at1508, then the server102(at1510) does not update the historical calibration table with the new calibration result. On the other hand, if the result of the comparison and determination at1506is to accept the new calibration result, as determined at1508, then the server102updates the historical calibration table116(at1512) with the new calibration result by storing the new calibration result therein as one of the previously determined calibration results120. The process1500then returns to process200.

Many of the calibration techniques described herein assume that the 2D location of the user device104and the confidence thereof (e.g., as indicated by the 2D location area708) provided in the location data are accurate. However, if the 2D location is determined to be unreliable, then any calibration result determined using the 2D position can be de-weighted when considering all possible calibration results with which it is combined. The underlying accuracy of the 2D location can be questioned based on several factors, such as:1) morphology of the location, e.g., 2D location is known a priori to be difficult to determine in dense urban and urban environments;2) usage of different 2D location sources, e.g., some user devices104determine location using a combination of sources such as a global navigation satellite system (GNSS), a Wi-Fi transmitter, etc., so accuracy of the location data can be determined by measuring location for each source and determining how well they correlate or are clustered;3) stability of subsequent measurements, e.g., if subsequent 2D locations are considerably different, but it can be determined that the user device104remained still, then the 2D location may be unreliable;4) for the app context calibration technique220, the 2D location may be unreliable if the user device104is performing a task using a location-specific app, such as paying with a retail store app, but the nearest related retail store is far away from the user device104and outside the 2D location area;5) if a prior calibration gives an unphysical result relative to a building envelope (e.g., outside the range of possible floors, far above the roof, or well below the basement), then the 2D location used in the prior calibration may have been unreliable, or the current 2D location may be unreliable; and6) conflicting comparisons with different calibration techniques, e.g., if a calibration result determined not using the 2D location conflicts with a calibration result using the 2D location, then the user device104may be an outlier or the 2D location may be unreliable.

Any method, technique, process, approach or computation described or otherwise enabled by disclosure herein may be implemented by hardware components (e.g., machines), software modules (e.g., stored in machine-readable media), or a combination thereof. In particular, any method or technique described or otherwise enabled by disclosure herein may be implemented by any concrete and tangible system described herein. By way of example, machines may include one or more computing device(s), processor(s), controller(s), integrated circuit(s), chip(s), system(s) on a chip, server(s), programmable logic device(s), field programmable gate array(s), electronic device(s), special purpose circuitry, and/or other suitable device(s) described herein or otherwise known in the art. 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 comprising the steps of any of the methods described herein are contemplated herein. As used herein, machine-readable media includes all forms of machine-readable media, 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 any other storage media, including RAM, ROM, and EEPROM, that may be patented under the laws of the jurisdiction in which this application is filed, but does not include machine-readable media that cannot be patented under the laws of the jurisdiction in which this application is filed (e.g., transitory propagating signals). Methods disclosed herein provide sets of rules that are performed. Systems that include one or more machines and one or more non-transitory machine-readable media for implementing any method described herein are also contemplated herein. One or more machines that perform or implement, or are configured, operable or adapted to perform or implement operations comprising the steps of any 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 fields of calibration and position location. Method steps described herein may be order independent and can be performed in parallel or in an order different from that described if possible to do so. Different method steps described herein can be combined to form any number of methods, as would be understood by one of ordinary skill in the art. Any method step or feature disclosed herein may be omitted from a claim for any reason. Certain well-known structures and devices are not shown in figures to avoid obscuring the concepts of the present disclosure. When two things are “coupled to” each other, those two things may be directly connected together, or separated by one or more intervening things. Where no lines or intervening things connect two particular things, coupling of those things is contemplated in at least one embodiment unless otherwise stated. Where an output of one thing and an input of another thing are coupled to each other, information sent from the output is received in its outputted form or a modified version thereof by the input even if the information passes through one or more intermediate things. Any known communication pathways and protocols may be used to transmit information (e.g., data, commands, signals, bits, symbols, chips, and the like) disclosed herein unless otherwise stated. The words comprise, comprising, include, including and the like are to be construed in an inclusive sense (i.e., not limited to) as opposed to an exclusive sense (i.e., consisting only of). Words using the singular or plural number also include the plural or singular number, respectively, unless otherwise stated. The word “or” and the word “and” as used in the Detailed Description cover any of the items and all of the 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 an example, not a requirement—e.g., a thing that may or can perform an operation, or may or can have a characteristic, need not perform that operation or have that characteristic in each embodiment, but that thing performs that operation or has that characteristic in at least one embodiment. Unless an alternative approach is described, access to data from a source of data may be achieved using known techniques (e.g., requesting component requests the data from the source via a query or other known approach, the source searches for and locates the data, and the source collects and transmits the data to the requesting component, or other known techniques).

An environment in which processes described herein may operate may include a network of terrestrial transmitters, at least one mobile device (e.g., user device), and a server. Each of the transmitters and the mobile device may be located at different altitudes or depths that are inside or outside various natural or manmade structures (e.g. buildings). Location or positioning signals may be respectively transmitted from the transmitters and satellites, and subsequently received by the mobile device using known transmission technologies. For example, the transmitters may transmit the signals using one or more common multiplexing parameters that utilize time slots, pseudorandom sequences, frequency offsets, or other approaches, as is known in the art or otherwise disclosed herein. The mobile device may take different forms, including a mobile phone or other wireless communication device, a portable computer, a navigation device, a tracking device, a receiver, or another suitable device that can receive the signals. Each transmitter and mobile device may include atmospheric sensors (e.g., a pressure and temperature sensors) for generating measurements of atmospheric conditions (e.g., pressure and temperature) that are used to estimate an unknown altitude of the mobile device. By way of example, a pressure sensor of the mobile device may also be calibrated from time to time.

By way of example, transmitters discussed herein may include: a mobile device interface for exchanging information with a mobile device (e.g., antenna(s) and RF front end components known in the art or otherwise disclosed herein); one or more processor(s); memory/data source for providing storage and retrieval of information and/or program instructions; atmospheric sensor(s) for measuring environmental conditions (e.g., pressure, temperature, humidity, other) at or near the transmitter; a server interface for exchanging information with a server (e.g., an antenna, a network interface, or other); and any other components known to one of ordinary skill in the art. The memory/data source may include memory storing software modules with executable instructions, and the processor(s) may perform different actions by executing the instructions from the modules, including: (i) performance of part or all of the methods as described herein or otherwise understood by one of skill in the art as being performable at the transmitter; (ii) generation of positioning signals for transmission using a selected time, frequency, code, and/or phase; (iii) processing of signaling received from the mobile device or other source; or (iv) other processing as required by operations described in this disclosure. Signals generated and transmitted by a transmitter may carry different information that, once determined by a mobile device or a server, may identify the following: the transmitter; the transmitter's position; environmental conditions at or near the transmitter; and/or other information known in the art. The atmospheric sensor(s) may be integral with the transmitter, or separate from the transmitter and either co-located with the transmitter or located in the vicinity of the transmitter (e.g., within a threshold amount of distance).

By way of exampleFIG.20, the user device104may include a network interface2001for exchanging information with the server102via the network106(e.g., a wired and/or a wireless interface port, an antenna and RF front end components known in the art or otherwise disclosed herein); one or more processor(s)2002; memory/data source2003for providing storage and retrieval of information and/or program instructions; atmospheric sensor(s)2004(including the barometric pressure sensor108) for measuring environmental conditions (e.g., pressure, temperature, other) at the user device104; other sensor(s)2005for measuring other conditions (e.g., compass and inertial sensors for measuring movement and orientation); a user interface2006(e.g., display, keyboard, microphone, speaker, other) for permitting a user of the user device104to provide inputs and receive outputs; and any other components known to one of ordinary skill in the art. A GNSS interface and processing unit (not shown) are contemplated, which may be integrated with other components or a standalone antenna, RF front end, and processors dedicated to receiving and processing GNSS signaling. The memory/data source2003may include memory storing data and software modules with executable instructions, including a signal processing module, a signal-based position estimate module, a pressure-based altitude module, a movement determination module, the current calibration value, the data packet, a calibration module, and other modules. The processor(s)2002may perform different actions by executing the instructions from the modules, including: (i) performance of part or all of the methods, processes and techniques as described herein or otherwise understood by one of ordinary skill in the art as being performable at the user device104; (ii) estimation of an altitude of the user device104(based on measurements of pressure from the user device104and transmitter(s), temperature measurement(s) from the transmitter(s) or another source, and any other information needed for the computation); (iii) processing of received signals to determine position information or location data (e.g., times of arrival or travel time of the signals, pseudoranges between the mobile device and transmitters, transmitter atmospheric conditions, transmitter and/or locations or other transmitter information); (iv) use of position information to compute an estimated position of the user device104; (v) determination of movement based on measurements from inertial sensors of the user device104; (vi) GNSS signal processing; (vii) assembling and transmitting the data packet112; (viii) storing the current calibration value110and data packet112; (ix) calibrating the barometric pressure sensor108; and/or (x) other processing as required by operations described in this disclosure.

By way of exampleFIG.21, the server102may include: a network interface2101for exchanging information with the user device104and other sources of data via the network106(e.g., a wired and/or a wireless interface port, an antenna, or other); one or more processor(s)2102; memory/data source2103for providing storage and retrieval of information and/or program instructions; and any other components known to one of ordinary skill in the art. The memory/data source2103may include memory storing software modules with executable instructions, such as 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 accurate sensor calibration module, a nearby known geographic point calibration module, an app context calibration module, a machine learning model calibration module, and a user intervention request calibration module, as well as other modules for each of the above described methods and processes. The processor(s)2102may perform different actions by executing instructions from the modules, including: (i) performance of part or all of the methods, processes and techniques as described herein or otherwise understood by one of ordinary skill in the art as being performable at the server102; (ii) estimation of an altitude of the user device104; (iii) computation of an estimated position of the user device104; (iv) performance of calibration techniques; (v) calibration of the user device104; or (vi) other processing as required by operations or processes described in this disclosure. Steps performed by servers as described herein may also be performed on other machines that are remote from the user device104, including computers of enterprises or any other suitable machine.

Certain aspects disclosed herein relate to estimating the positions or locations of user devices—e.g., where the position is represented in terms of: latitude, longitude, and/or altitude coordinates; x, y, and/or z coordinates; angular coordinates; or other representations. Various techniques to estimate the position of a user device can be used, including trilateration, which is the process of using geometry to estimate the position of a user device using distances traveled by different “positioning” (or “ranging”) signals that are received by the user device from different beacons (e.g., terrestrial transmitters and/or satellites). If position information like the transmission time and reception time of a positioning signal from a beacon are known, then the difference between those times multiplied by speed of light would provide an estimate of the distance traveled by that positioning signal from that beacon to the user device. Different estimated distances corresponding to different positioning signals from different beacons can be used along with position information like the locations of those beacons to estimate the position of the user device. Positioning systems and methods that estimate a position 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 co-assigned U.S. Pat. No. 8,130,141, issued Mar. 6, 2012, and U.S. Pat. No. 9,057,606, issued Jun. 16, 2015. It is noted that the term “positioning system” may refer to satellite systems (e.g., Global Navigation Satellite Systems (GNSS) like GPS, GLONASS, Galileo, and Compass/Beidou), terrestrial transmitter systems, and hybrid satellite/terrestrial systems.

Determining the exact location (including altitude) of a user device in an environment can be quite challenging, especially when the user device is located in an urban environment or is located within a building. Imprecise estimates of the user device's altitude, for example, may have life or death consequences for the user of the user device since the imprecise altitude estimate can delay emergency personnel response times as they search for the user on multiple floors of a building. In less dire situations, imprecise altitude estimates can lead a user to the wrong area in an environment. Different approaches exist for estimating an altitude of a user device. In a barometric-based positioning system, altitude can be computed using a measurement of pressure from a calibrated pressure sensor of the user device along with ambient pressure measurement(s) from a network of calibrated reference pressure sensors and a measurement of ambient temperature from the network or other source. An estimate of an altitude of a user device (huser) can be computed by the user device, a server, or another machine that receives needed information as follows:

hu⁢s⁢e⁢r=hsensor-R⁢Tremoteg⁢M⁢ln⁢(PsensorPu⁢s⁢e⁢r)Eqn⁢1

where Puseris the estimate of pressure at the location of the user device by a pressure sensor of the user device, Psensoris an estimate of pressure at the location of a reference pressure sensor that is accurate to within a tolerated amount of pressure from true pressure (e.g., less than 5 Pa), Tremoteis an estimate of temperature (e.g., in Kelvin) at the location of the reference pressure sensor or a different location of a remote temperature sensor, hsensoris an estimated altitude of the reference pressure sensor that is estimated to within a desired amount of altitude error (e.g., less than 1.0 meters), g corresponds to the acceleration due to gravity (e.g., −9.8 m/s2), R is a gas constant, and M is molar mass of air (e.g., dry air or other). The minus sign (−) may be substituted with a plus sign (+) in alternative embodiments of Equation 1, as would be understood by one of ordinary skill in the art (e.g., for g=9.8 m/s2).

The estimate of pressure at the location of the reference pressure sensor can be converted to an estimated reference-level pressure that corresponds to the reference pressure sensor in that it specifies an estimate of pressure at the latitude and longitude of the reference pressure sensor, but at a reference-level altitude that likely differs from the altitude of the reference pressure sensor. The reference-level pressure can be determined as follows:

Pref=Psensor×exp⁢(-g⁢M⁡(href-hsensor)R⁢Tremote)Eqn⁢2

where Psensoris the estimate of pressure at the location of the reference pressure sensor, Prefis the reference-level pressure estimate, Tremoteis the reference ambient temperature, and hrefis the reference-level altitude. The altitude of the user device husercan be computed using Equation 1, where hrefis substituted for hsensorand Prefis substituted for Psensor. The reference-level altitude hrefmay be any altitude and is often set at mean sea-level (MSL). When two or more reference-level pressure estimates are available, the reference-level pressure estimates are combined into a single reference-level pressure estimate value (e.g., using an average, weighted average, or other suitable combination of the reference pressures), and the single reference-level pressure estimate value is used for the reference-level pressure estimate Pref.

Reference has been made in detail to embodiments of the disclosed invention, one or more examples of which have been illustrated in the accompanying figures. Each example has been provided by way of explanation of the present technology, not as a limitation of the present technology. In fact, while the specification has been described in detail with respect to specific embodiments of the invention, it will be appreciated that those skilled in the art, upon attaining an understanding of the foregoing, may readily conceive of alterations to, variations of, and equivalents to these embodiments. For instance, features illustrated or described as part of one embodiment may be used with another embodiment to yield a still further embodiment. Thus, it is intended that the present subject matter covers 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 may be practiced by those of ordinary skill in the art, without departing from the scope of the present invention, which is more particularly set forth in the appended claims. Furthermore, those of ordinary skill in the art will appreciate that the foregoing description is by way of example only, and is not intended to limit the invention.