Systems and methods for elevation tracking of devices

One or more computing devices, systems, and/or methods for elevation tracking of devices are provided. Barometric pressure data points and elevation data points associated with a set of barometric measurement devices proximate a device are obtained. An interpolated field of barometric pressure is generated using the barometric pressure data points and the elevation data points. x, y location coordinates of the device are projected onto the interpolated field as a projected point within the interpolated field. Barometric leveling is executed upon a device barometric pressure value provided by the device and a barometric pressure data point at the projected point to determine a relative height difference between the device and the projected point. An elevation of the device is determined based upon the relative height difference.

BACKGROUND

There are many techniques for outdoor positional tracking of objects. These positional tracking techniques can be used to track the location and movement of various types of objects, such as a mobile device, a smart device, a cellular phone, an object such as inventory container or item with a local tracking beacon attached, a robot or drone, etc. Unfortunately, these positional tracking techniques are unable to accurately track devices that are indoors, such as a mobile device of a user walking around in a multi-story building.

DETAILED DESCRIPTION OF EXAMPLE EMBODIMENTS

Subject matter will now be described more fully hereinafter with reference to the accompanying drawings, which form a part hereof, and which show, by way of illustration, specific example embodiments. This description is not intended as an extensive or detailed discussion of known concepts. Details that are well known may have been omitted, or may be handled in summary fashion.

One or more systems and/or techniques for elevation tracking of devices are provided. Many location tracking techniques such as global positioning system (GPS) functionality, real-time kinematic (RTK) positioning, and 5G positioning, are unable to accurately track the location of devices within indoor locations. In particular, these location tracking techniques cannot accurately track z-axis elevation information of devices while indoors. Additionally, many mobile devices and Internet of Things (IoT) devices are not equipped with necessary hardware to use positioning technologies capable of accurately performing z-axis measurements.

Barometric leveling may be used to calculate z-axis information to determine elevation values of a device by using a difference in barometric pressure since barometric pressure changes with elevation in predictable ways. However, barometric leveling has various drawbacks that makes it alone unsuitable for many use cases for tracking elevation of devices within indoor locations. In particular, barometric leveling requires two reference points of barometric pressure data. In many use case scenarios, there may be only one reference point available. Additionally, both reference points must be taken from calibrated barometric pressure sensors. In many use case scenarios, there is no practical means to calibrate the barometric pressure sensors being used, such as those sensors of a consumer's cell phone. Both reference points must be taken very close in time, otherwise changes in ambient pressure makes the reference points unusable. Also, barometric leveling can only calculate the relative elevation between two reference points, and cannot calculate an absolute elevation of the device unless the height of one of the reference points is known. The reference points must be vertically aligned or the ground level must be consistent in a horizontal axis along a horizontal distance between the two reference points. Neither of these are practical assumptions for most use cases. Furthermore, temperature differences between the two reference points (e.g., one reference point is taken outdoors and another reference point is taken indoors) may invalidate the barometric leveling calculation since air pressure is influenced by ambient temperature. Accordingly, conventional barometric leveling is not practical or capable of accurately determining elevation of devices indoors for many use cases, such as tracking a mobile phone, smart wearable device, inventory or an object, an IoT device, a drone or robot, equipment, etc.

Accordingly, as provided herein, interpolated fields of barometric pressure are generated and used to accurately determine elevation of devices regardless of whether the devices are indoors or outdoors. An interpolated field of barometric pressure is generated through interpolation using barometric pressure data points from a network of barometric measurement devices of known elevation, such as barometric pressure sensors installed on weather stations, cell towers, etc. In this way, the interpolated field of barometric pressure represents interpolated points derived from barometric pressure data and elevation data associated with the barometric measurement devices. When determining the elevation of a device, longitude and latitude of the device may be identified as x, y location coordinates of the device such as through GPS or other location tracking technology. The x, y location coordinates may be projected onto the interpolated field of barometric pressure as a projected point within the interpolated field of barometric pressure. The barometric pressure and elevation of the projected point is known and accurate. This enables the ability to perform barometric leveling upon a device barometric pressure value measured by the device and a barometric pressure data point at the projected point in order to determine a relative height difference between the device and the projected point. The relative height difference may be added to or subtracted from an elevation of the projected point (depending on whether the device is located above or below the interpolated field) in order to calculate an elevation of the device.

Knowing the elevation (z-axis) and the x, y location coordinates of the device at a relatively high accuracy enables the ability to perform various types of actions. For example, a command may be generated and transmitted to the device to control the device, such as to control the state or actions of a robot or drone. The command and/or the location of the device may be transmitted to a different device, such as an emergency responder device used by an emergency responder that was called for help by a user of the device. The location information may be used by a location tracking service to display, through a user interface displayed on the device, a map of an indoor location and directions through the indoor location to a destination to help navigate the user through the indoor location such as an office building. It may be appreciated that various types of actions may be performed alone, together, or in any combination.

In addition to providing the capability to accurately determine elevation of the device regardless of whether the device is located indoors or outdoors, opportunistic calibration of the device is performed to calibrate barometric measurements generated by the device so that the device can calculate more accurate device barometric pressure data points. As part of opportunistic calibration, barometric pressure reading offsets are generated, which may be used to correct device barometric pressure values generated by the device so that the device barometric pressure values are more precise. Opportunistic calibration therefor improves the accuracy of a barometric pressure sensor measurement by the device. This is useful for consumer devices, IoT devices, and/or other devices that may not be equipped with highly accurate and calibrated barometric pressure sensors that could otherwise cost thousands of dollars per instance.

Elevation tracking and opportunistic calibration may be implemented by a location tracking device and a calibrator device. In some embodiments, the location tracking device and/or the calibrator device may be hosted by the same device or on separate devices. The location tracking device and/or the calibrator device may be hosted on the device being tracked, a different device, a server, an IoT device, communication networking equipment (e.g., a radio access network controller, a multi-access edge server, a base station, a baseband unit, a core network component, etc.), hardware, software, or combination thereof.

Various embodiments of the present technology provide for a wide range of technical effects, advantages, and/or improvements to computing systems, components, and devices (e.g., a smart device, a cellular device, a mobile device, an IoT device, user equipment, etc.). For example, various embodiments may include one or more of the following technical effects, advantages, and/or improvements: 1) performing opportunistic calibration to improve the accuracy of device barometric pressure values generated by devices, 2) improving the accuracy of barometric pressure sensor of certain types of devices (e.g., user equipment, cellular devices, smart wearable devices, consumer and commodity devices, IoT devices, etc.) that otherwise do not have calibrated and accurate barometric pressure sensors that could cost more than the devices themselves or are impractical to incorporate into these types of devices, 3) generating interpolated fields of barometric pressure with interpolated points derived from known barometric pressure data values and known elevation values, 4) using the interpolated fields of barometric pressure to accurately identify elevation of devices regardless of whether the devices are indoors or outdoors, and/or 5) implementing actions for various use cases based upon identified elevation of devices, such as 1) public safety to assist in tracking the vertical location of specific first responders in the field, 2) tracking an IoT asset's vertical location in a building (e.g., track equipment or drugs in a multi-story hospital, 3) tracking, controlling, and managing a drone or vehicular robot (e.g., monitoring and controlling drones during package delivery or agricultural monitoring), 4) tracking a user's location within a building (e.g., a high-rise office building) such as to control a navigation app (e.g., a corporate or campus real estate navigation app) to assist the user in navigating to a location such as a specific conference room), 5) controlling a robot to locate a vertical location of a product or assist in precisely picking out a product in a warehouse, 6) providing a user's vertical location to aid with e911 vertical z-axis compliance, and/or 7) improving accuracy and usefulness of location services for indoor environments.

FIG.1illustrates an example of a system100within which elevation tracking for devices may be implemented. A building102may comprise one or more floors, such as a first floor104, a second floor106, a third floor108, and a fourth floor110. A device112having a barometric pressure sensor may be located within the building102, such as on the third floor108. For example, a user may be carrying around a cellular phone as the device112, the device112may be a robot or drone making a package delivery within the building102, the device112may be attached to an object such as an inventory container or item within a warehouse or equipment within a hospital, etc. Location tracking of the device112within the building102, including elevation tracking, may be implemented using an interpolated field of barometric pressure132.

The interpolated field of barometric pressure132may be generated using barometric pressure data points and elevation data points associated with a set of barometric measurement devices (barometric pressure sensors), such as a first barometric measurement device116, a second barometric measurement device124, a third barometric measurement device120, and/or any other number of barometric measurement devices. The barometric measurement devices may be located on cellular towers, buildings, weather stations, or any other type of structure. For example, the first barometric measurement device116may be installed on a weather station114. The second barometric measurement device124may be installed on a cellular tower122. The third barometric measurement device120may be installed on a cellular tower118. The barometric measurement devices may be installed at known elevations on the structures. In this way, barometric pressure data points generated by the barometric measurement devices may be associated with known and/or accurate elevations. In some embodiments, the barometric measurement devices may be calibrated to output highly accurate barometric pressure data points (e.g., factory calibrated using a regulated pressure source), such as compared to barometric measurement devices (barometric pressure sensors) of consumer devices and IoT devices.

The interpolated field of barometric pressure132may be generated as a flat plane with vertices corresponding to locations of the barometric measurement devices116,120,124. It may be appreciated that any number of barometric measurement devices may be used, and thus the interpolated field of barometric pressure132may be generated as a polygon with any number of vertices, and is not limited to a triangle with3vertices. The interpolated field of barometric pressure132may be used to identify an elevation (a z-axis coordinate) of the device112within the building102, such as to make a determination that the device112is currently located on the third floor108of the building102. In particular, x, y location coordinates (longitude and latitude) of the device112may be identified such as through GPS or other location tracking functionality. The x, y location coordinates may be projected onto the interpolated field of barometric pressure132as a projected point130within the interpolated field of barometric pressure132(e.g., a normal of the x, y location coordinates may be projected to the flat plane of the interpolated field of barometric pressure132). The projected point130has an interpolated barometric pressure value derived from the barometric pressure data points associated with the first barometric measurement device116, the second barometric measurement device124, and/or the third barometric measurement device120. The projected point130has an interpolated elevation (a z-axis coordinate) derived from the elevation data points of the first barometric measurement device116, the second barometric measurement device124, and/or the third barometric measurement device120.

Barometric leveling is performed upon the barometric pressure data point at the projected point130(the interpolated barometric pressure value) and a device barometric pressure value measured by the device112. The device barometric pressure value (at112) is compared to the interpolated barometric value (at projected point130) to determine a relative height difference between the device112and the projected point130. The relative height difference corresponds to a pressure difference between the barometric pressure value provided by the device112and the barometric pressure data point (the interpolated pressure value) assigned to the projected point130. Because the device112is below the projected point130, the relative height difference is subtracted from the elevation (the interpolated elevation) of the projected point130in order to determine an elevation of the device112. The elevation may be compared to structural building information of the building102to determine that the device112is currently on the third floor108of the building102. Various actions may be performed based upon the elevation of the device112. For example, a location (e.g., the x, y location coordinates and a z location coordinate determined based upon the elevation of the device112) may be transmitted to a remote device so that a user of the remote device, such as a first responder, can with confidence, accurately locate the user at the device112. In another example, navigation instructions may be generated and displayed on a map through a user interface on the device112.

FIG.2illustrates an example of a method200for elevation tracking for devices, which is further described in conjunction with system300ofFIG.3, system400ofFIG.4, and system500ofFIGS.5A-5E. A calibrator device308may be configured to perform opportunistic calibration310for a barometric measurement device304(a barometric pressure sensor) of a device302in order to improve the accuracy of device barometric pressure values generated by the barometric measurement device304.

Various triggers may be set to determine when the calibrator device308is to perform the opportunistic calibration310. In some embodiments, the opportunistic calibration310is triggered based upon a determination that a sensor of the device302indicates a change in surrounding conditions since a previous opportunistic calibration was performed and/or based upon the device302being located outdoors. The change in surrounding conditions may be detected based upon a change in magnetic field detected by the sensor, a change in speed of the device302detected by the sensor (e.g., the device302is now traveling at the speed of a car or airplane instead of walking around), a change in barometric pressure detected by the sensor (e.g., the barometric measurement device304), a change in sound level detected by the sensor (e.g., a sound level previously indicated that the user was in a quiet area such as a bedroom sleeping and now indicates that the user is outside surrounded by noisy traffic), etc. In some embodiments, the opportunistic calibration310is triggered based upon a determination that the device302has travelled a threshold distance since the previous opportunistic calibration and/or based upon the device302being located outdoors.

In some embodiments, the device302may be identified as being indoors or outdoors using soundscape fingerprinting, building polygons, or transition detection. Soundscape fingerprinting may utilize a model (e.g., a machine learning model) to determine if a sound profile at a current location of the device302matches certain patterns (e.g., traffic noise, sound of nature, white noise of an office building, etc.) that the model has been designed to detect as indoors or outdoors. Location tracking functionality such as GPS, RTK, or 5G positioning may be used to identify a location of the device302, which may be queried against a database of building polygons to determine whether the device302is located within a building or outside. Transition detecting may use a model (such as a machine learning model) developed to detect transitions from outdoors to indoors or indoors to outdoors based upon sensor data (e.g., location data, sound data, changes in speed, imagery, barometric pressure data, temperature data, etc.).

As part of performing the opportunistic calibration310, outdoor barometric measuring systems may be used to calibrate the barometric measurement device304to compensate for device specific inaccuracies of the barometric measurement device304when generating device barometric pressure values (e.g., device barometric pressure values generated when indoors for elevation tracking). The opportunistic calibration310outputs barometric pressure reading offsets306that can be applied to device barometric pressure values in order to correct the device barometric pressure values. These corrected device barometric pressure values are more accurate for elevation-determining purposes than the original device barometric pressure values.

In some embodiments, the opportunistic calibration310is performed by using real-time kinematic positioning to determine x, y, z location coordinates of the device302. The x, y, z location coordinates of the device302, device barometric pressure values generated by the barometric measurement device304, and barometric pressure data points retrieved by the calibrator device308from the outdoor barometric measuring systems may be used to generate the barometric pressure reading offsets306as compensation values. These compensation values can be added to or subtracted from subsequently generated device barometric pressure values to correct these device barometric pressure values in order to improve the accuracy of the device barometric pressure values. In particular, an elevation of the device302may be determined from the x, y, z location coordinates. The barometric pressure data points and elevation data points from the outdoor barometric measuring systems and the elevation of the device302may be used to determine what the actual barometric pressure should be at the elevation of the device302using interpolated fields of barometric pressure. For example, the elevation of the device302may be projected onto an interpolated field of barometric pressure as a projected point whose assigned barometric pressure (an interpolated barometric pressure derived from the barometric pressure data points of the outdoor barometric measuring systems) is the actual barometric pressure that should be detected. This technique is further described in relation toFIG.4. The actual barometric pressure (the interpolated barometric pressure) is compared to a device barometric pressure value generated by the barometric measurement device304, and a difference between these values is stored as the barometric pressure reading offsets306.

Other techniques may be used to determine the location of the device302such as the elevation of the device302for use by the calibrator device308to perform the opportunistic calibration310. For example, a current elevation of the device302with respect to a cell site may be determined such as by using 5G positioning. In particular, a tangent of theta calculation and an elevation of the cell site are used for interpolation (e.g., interpolation used to generate interpolated fields of barometric pressure) for determining the current elevation of the device302. That is, various information about the cell site may be retrieved from the cell site, such as height, latitude and longitude, antenna tilt, etc. An angle, such as an angle of elevation or departure from the cell site to the device302, may be determined. An index system may be used to obtain a round trip time (RTT) value between the cell site and the device302. Using the angle and a distance derived from the RTT value, a geometric function may be used to calculate a height from the antenna to the device302. This value is either added to or subtracted from the elevation of the antenna depending on whether the device302is above or below the antenna to determine as estimated elevation of the device302. In this way, the elevation of the device302, device barometric pressure values measured by the device302, and barometric pressure data points from the outdoor barometric measuring systems are used by the calibrator device308to perform the opportunistic calibration310to generate the barometric pressure reading offsets306used to improve the accuracy of device barometric pressure values generated by the barometric measurement device304.

FIG.4illustrates an example of determining an elevation of a device412using interpolated fields, which may be used by the calibrator device308to perform the opportunistic calibration310and/or may be used by a location tracking device514to perform various actions. The device412may be currently located indoors, such as within a building410. As part of determining the elevation of the device412with respect to a ground level408, barometric pressure data points and elevation data points associated with a set of barometric measurement devices proximate the device412may be retrieved. For example, a first barometric measurement device402, a second barometric measurement device404, and a third barometric measurement device406may be identified based upon the barometric pressure devices being within a threshold distance of a current location (longitude and latitude) of the device412.

During operation202of method200, an interpolated field of barometric pressure401is generated using the barometric pressure data points and the elevation data points associated with the set of barometric measurement devices. Each point within the interpolated field of barometric pressure401may be associated with a barometric pressure data point (an interpolated pressure value) and a corresponding elevation data point (an interpolated elevation value). In particular, the barometric pressure data points and the elevation data points from the set of barometric devices are interpolated together to create interpolated pressure values and interpolated elevation values for points within the interpolated field of barometric pressure.

During operation204of method200, x, y location coordinates of the device412may be identified. The x, y location coordinates may be identified from longitude and latitude values of the device412. For example, the longitude and latitude values may be determined from GPS and/or other location data of the device412.

During operation206of method200, the x, y location coordinates of the device412are projected onto the interpolated field of barometric pressure401as a projected point414within the interpolated field of barometric pressure401. The projected point414may have an interpolated elevation data point/value (elevation416from ground level408) and/or an interpolated barometric pressure data point/value derived through interpolation of the barometric pressure data points and elevation data points from the set of barometric measurement devices when generating the interpolated field of barometric pressure401. For example, elevation data points from the first barometric measurement device402, the second barometric measurement device404, and/or the barometric measurement device406may be interpolated to assign the interpolated elevation data point/value (elevation416from ground level408) to the projected point414. Barometric pressure data points from the first barometric measurement device402, the second barometric measurement device404, and/or the barometric measurement device406may be interpolated to assign the interpolated barometric pressure data point/value to the projected point414.

During operation208of method200, barometric leveling is executed upon a device barometric pressure value measured by the device412and the barometric pressure data point (the interpolated pressure value) assigned to the projected point414to determine a relative height difference418between the device412and the projected point414. Barometric leveling is capable of determining a difference between two points given barometric pressures at those two points. In this way, the relative height difference418between the device412and the projected point414can be determined based upon the device barometric pressure value provided by the device412and the barometric pressure data point (the interpolated pressure value) assigned to the projected point414.

In some embodiments, temperature can affect barometric pressure measurements. If the barometric pressure data point (the interpolated pressure value) assigned to the projected point414was derived from barometric pressure measurements by the set of barometric measurement devices outside and the device barometric pressure value is measured by the device412while inside the building410, then these measurements can be skewed in some situations. Accordingly, the device barometric pressure value may be adjusted based upon the device412being detected as being indoors such as inside the building410. The device barometric pressure value may be adjusted based upon a temperature difference between an outdoor temperature and an indoor temperature inside the building410. In some embodiments, an indoor average temperature assumption may be used as the indoor temperature (e.g., an average of temperatures of similar buildings as the building410for the particular time of year such as 72 degrees Fahrenheit). In some embodiments, an ambient temperature reading by the device412may be used as the indoor temperature. In some embodiments, a machine learning model may be implemented to predict ambient temperature from a battery temperature of the device412and a proximity sensor of the device412.

During operation210of method200, an elevation420of the device412(e.g., an elevation from ground level408along a z-axis) may be determined by either adding or subtracting the relative height difference418from the elevation416of the projected point414(e.g., the interpolated elevation value) assigned to the projected point414). If the device412is below the interpolated field of barometric pressure401, as illustrated byFIG.4, then the relative height difference418is subtracted from the elevation416of the projected point414to determine the elevation420of the device412. If the device412is above the interpolated field of barometric pressure401, then the relative height difference418is added to the elevation416of the projected point414to determine the elevation420of the device412.

Once the elevation420of the device412is determined, various actions may be performed, during operation212of method200.FIG.5Aillustrates an example of a location tracking device514using location information516of a device512to implement an action to generate and transmit a control operation518to the device512in order to control operation of the device512. For example, the device512may be a robot within a warehouse building502. The location tracking device514may receive a notification that the robot has been assigned a task to retrieve an inventory item from the fourth floor of the warehouse building502. The location tracking device514may evaluate the location information516of the device512(robot) to determine that the device512is on the third floor of the warehouse building502. Accordingly, the location tracking device514may transmit the control operation518(e.g., robot movement control instructions) to control movement of the device512(robot) to move from the third floor to a location of the inventory item on the fourth floor.

FIG.5Billustrates an example of the location tracking device514using location information520of a device522(e.g., z, y location coordinates, an elevation of the device522, a vertical location of the device522derived from the elevation, etc.) to implement an action to generate and transmit the location information520to a requesting device526and/or an emergency dispatch system. For example, the location tracking device514or a system hosting the location tracking device514may receive a safety alert from the requesting device526. The safety alert may request a current location of the device522(e.g., a user of the device522may have activated a 911 alert). The location information520may be transmitted to the requesting device526for locating the device522on the third floor of the building524.

FIG.5Cillustrates an IoT device538executing an action using location information530of a device534within a building536to track532a location of the device534. For example, the device534may be equipment or a tracking device attached to medicine within a hospital. The IoT device538can use the location information530to track the equipment or medicine as it moves around the building536.

FIG.5Dillustrates the location tracking device514executing an action using location information540of a drone544in order to perform an action to generate and transmit a command542to control the drone544. The drone544may be instructed to deliver a package within a building. The location tracking device514may receive a delivery location for the package within the building. In this way, the location tracking device514may use the delivery location and the location information540in order to transmit commands to control movement of the drone544within the building towards the delivery location.

FIG.5Eillustrates the location tracking device514executing an action using location information550of a device554within an indoor structure in order to perform an action to generate and transmit a user interface display command552to the device554for display through a user interface556of the device554. The device554may request indoor location services from the location tracking device514in order to receive navigation instructions such as the user interface display command552for display through the user interface556in order to guide a user of the device554to a destination location.

According to some embodiments, a method may be provided. The method may include retrieving barometric pressure data points and elevation data points associated with a set of barometric measurement devices approximate to a device. The method includes generating an interpolated field of barometric pressure using the barometric pressure data points, wherein the barometric pressure data points are associated with elevation data points. The method includes projecting x, y location coordinates of the device onto the interpolated field as a projected point within the interpolated field. The method includes executing barometric leveling upon a device barometric pressure value provided by the device and a barometric pressure data point at the projected point to determine a relative height difference between the device and the projected point. The method includes, determining an elevation of the device from the relative height difference and the known elevation of the projected point within the interpolated field. The method includes performing an action based upon the elevation of the device.

According to some embodiments, the method includes in response to receiving a safety alert from a requesting device regarding the device, transmitting a location of the device to the requesting device, wherein the location is derived from the x, y location coordinates and the elevation of the device.

According to some embodiments, the method includes at least one of: executing, by an internet of things IoT device, the action to track a vertical location of the device within a building; transmitting a command to a drone to control operation of the drone based on the location of the drone, wherein the location is derived from the x, y location coordinates and the elevation of the device; or generating and transmitting navigation instructions to the device for display on a user interface of the device for user navigation within a building.

According to some embodiments, the method includes adding the relative height difference to an elevation of the projected point based upon the device being located above the interpolated field of barometric pressure.

According to some embodiments, the method includes subtracting the relative height difference from an elevation of the projected point based upon the device being located below the interpolated field of barometric pressure.

According to some embodiments, the method includes transmitting a vertical location of the device to an emergency dispatch system, wherein the vertical location is derived from the elevation of the device.

According to some embodiments, the method includes determining an indoor location for the device based upon the elevation of the device.

According to some embodiments, the method includes performing opportunistic calibration of the device to generate barometric pressure reading offsets; and applying the barometric pressure reading offsets to device barometric pressure values generated by the device to correct the device barometric pressure values.

According to some embodiments, the method includes utilizing a first barometric pressure data point of a first barometric measurement device, a second barometric pressure data point of a second barometric measurement device, and a third barometric pressure data point of a third barometric measurement device to assign the barometric pressure data point to the projected point.

According to some embodiments, the method includes utilizing a first elevation data point of a first barometric measurement device, a second elevation data point of a second barometric measurement device, and a third elevation data point of a third barometric measurement device to determine an elevation of the projected point.

According to some embodiments, the method includes in response to detecting that the device is within an indoor location, adjusting the device barometric pressure value based upon a temperature difference between an indoor temperature of the indoor location and an outdoor temperature outside of the indoor location.

According to some embodiments, the method includes utilizing at least one of an indoor average temperature assumption or an ambient temperature reading by the device as the indoor temperature.

According to some embodiments, the method includes utilizing a machine learning model to predict ambient temperature from a battery temperature of the device and a proximity sensor of the device.

According to some embodiments, a device is provided. The device comprises a processor. The processor is configured to execute instructions to facilitate performance of operations comprising retrieving barometric pressure data points and elevation data points associated with a set of barometric measurement devices proximate a device; generating an interpolated field of barometric pressure using the barometric pressure data points, wherein the barometric pressure data points are associated with elevation data points; identifying x, y location coordinates of the device; projecting the x, y location coordinates of the device onto the interpolated field as a projected point within the interpolated field; applying barometric pressure reading offsets to a device barometric pressure value generated by the device to correct the device barometric pressure value; executing barometric leveling upon the device barometric pressure value and a barometric pressure data point at the projected point to determine a relative height difference between the device and the projected point; and determining an elevation of the device based upon the relative height difference.

According to some embodiments, the operations include generating and transmitting an instruction to control operation of the device based upon the elevation of the device.

According to some embodiments, the operations include in response to determining that a sensor of the device indicates at least one of a change in surrounding conditions since a previous opportunistic calibration or a threshold distance has been travelled since the previous opportunistic calibration, determining whether the device is indoor or outdoor; and in response to determining that the device is outdoor, determining x, y, z location coordinates of the device based upon real-time kinematic positioning.

According to some embodiments, the operations include in response to determining that a sensor of the device indicates at least one of a change in surrounding conditions since a previous opportunistic calibration or a threshold distance has been travelled since the previous opportunistic calibration, determining whether the device is indoor or outdoor; and in response to determining that the device is outdoor, calculating a current elevation of the device relative to a cell site using a tangent of theta calculation and an elevation of the cell site for interpolation.

According to some embodiments, the operations include in response to determining that a sensor of the device indicates at least one of a change in surrounding conditions since a previous opportunistic calibration or a threshold distance has been travelled since the previous opportunistic calibration, determining whether the device is indoor or outdoor using at least one of a soundscape fingerprinting technique, building polygons, or transition detection; and in response to determining that the device is outdoor, determining a location of the device within an outdoor space.

According to some embodiments, the operations include detecting the change in surrounding conditions based upon at least one of magnetic fields, speed, barometric pressures, or sound levels detected by the device.

According to some embodiments, a non-transitory computer-readable medium storing instructions that when executed facilitate performance of operations, is provided. The operations include retrieving barometric pressure data points and elevation data points associated with a set of barometric measurement devices proximate a device; generating an interpolated field of barometric pressure using the barometric pressure data points, wherein the barometric pressure data points are associated with elevation data points; projecting x, y location coordinates of the device onto the interpolated field as a projected point within the interpolated field; applying barometric pressure reading offsets to a device barometric pressure value generated by the device correct the device barometric pressure value; executing barometric leveling upon the device barometric pressure value and a barometric pressure data point at the projected point to determine a relative height difference between the device and the projected point; and determining an elevation of the device based upon the relative height difference.

FIG.6is an illustration of a scenario600involving an example non-transitory machine readable medium602. The non-transitory machine readable medium602may comprise processor-executable instructions612that when executed by a processor616cause performance (e.g., by the processor616) of at least some of the provisions herein. The non-transitory machine readable medium602may comprise a memory semiconductor (e.g., a semiconductor utilizing static random access memory (SRAM), dynamic random access memory (DRAM), and/or synchronous dynamic random access memory (SDRAM) technologies), a platter of a hard disk drive, a flash memory device, or a magnetic or optical disc (such as a compact disk (CD), a digital versatile disk (DVD), or floppy disk). The example non-transitory machine readable medium602stores computer-readable data604that, when subjected to reading606by a reader610of a device608(e.g., a read head of a hard disk drive, or a read operation invoked on a solid-state storage device), express the processor-executable instructions612. In some embodiments, the processor-executable instructions612, when executed cause performance of operations, such as at least some of the example method200ofFIG.2, for example. In some embodiments, the processor-executable instructions612are configured to cause implementation of a system, such as at least some of the example system100ofFIG.1, at least some of the example system300ofFIG.3, at least some of the example system400ofFIG.4, and/or at least some of the example system500ofFIGS.5A-5E.

FIG.7is an interaction diagram of a scenario700illustrating a service702provided by a set of computers704to a set of client devices710via various types of transmission mediums. The computers704and/or client devices710may be capable of transmitting, receiving, processing, and/or storing many types of signals, such as in memory as physical memory states.

The computers704of the service702may be communicatively coupled together, such as for exchange of communications using a transmission medium706. The transmission medium706may be organized according to one or more network architectures, such as computer/client, peer-to-peer, and/or mesh architectures, and/or a variety of roles, such as administrative computers, authentication computers, security monitor computers, data stores for objects such as files and databases, business logic computers, time synchronization computers, and/or front-end computers providing a user-facing interface for the service702.

Likewise, the transmission medium706may comprise one or more sub-networks, such as may employ different architectures, may be compliant or compatible with differing protocols and/or may interoperate within the transmission medium706. Additionally, various types of transmission medium706may be interconnected (e.g., a router may provide a link between otherwise separate and independent transmission medium706).

In scenario700ofFIG.7, the transmission medium706of the service702is connected to a transmission medium708that allows the service702to exchange data with other services702and/or client devices710. The transmission medium708may encompass various combinations of devices with varying levels of distribution and exposure, such as a public wide-area network and/or a private network (e.g., a virtual private network (VPN) of a distributed enterprise).

In the scenario700ofFIG.7, the service702may be accessed via the transmission medium708by a user712of one or more client devices710, such as a portable media player (e.g., an electronic text reader, an audio device, or a portable gaming, exercise, or navigation device); a portable communication device (e.g., a camera, a phone, a wearable or a text chatting device); a workstation; and/or a laptop form factor computer. The respective client devices710may communicate with the service702via various communicative couplings to the transmission medium708. As a first such example, one or more client devices710may comprise a cellular communicator and may communicate with the service702by connecting to the transmission medium708via a transmission medium707provided by a cellular provider. As a second such example, one or more client devices710may communicate with the service702by connecting to the transmission medium708via a transmission medium709provided by a location such as the user's home or workplace (e.g., a WiFi (Institute of Electrical and Electronics Engineers (IEEE) Standard 702.11) network or a Bluetooth (IEEE Standard 702.15.1) personal area network). In this manner, the computers704and the client devices710may communicate over various types of transmission mediums.

FIG.8presents a schematic architecture diagram800of a computer704that may utilize at least a portion of the techniques provided herein. Such a computer704may vary widely in configuration or capabilities, alone or in conjunction with other computers, in order to provide a service such as the service702.

The computer704may comprise one or more processors810that process instructions. The one or more processors810may optionally include a plurality of cores; one or more coprocessors, such as a mathematics coprocessor or an integrated graphical processing unit (GPU); and/or one or more layers of local cache memory. The computer704may comprise memory802storing various forms of applications, such as an operating system804; one or more computer applications806; and/or various forms of data, such as a database808or a file system. The computer704may comprise a variety of peripheral components, such as a wired and/or wireless network adapter814connectible to a local area network and/or wide area network; one or more storage components816, such as a hard disk drive, a solid-state storage device (SSD), a flash memory device, and/or a magnetic and/or optical disk reader.

The computer704may comprise a mainboard featuring one or more communication buses812that interconnect the processor810, the memory802, and various peripherals, using a variety of bus technologies, such as a variant of a serial or parallel AT Attachment (ATA) bus protocol; a Uniform Serial Bus (USB) protocol; and/or Small Computer System Interface (SCI) bus protocol. In a multibus scenario, a communication bus812may interconnect the computer704with at least one other computer. Other components that may optionally be included with the computer704(though not shown in the schematic architecture diagram800ofFIG.8) include a display; a display adapter, such as a graphical processing unit (GPU); input peripherals, such as a keyboard and/or mouse; and a flash memory device that may store a basic input/output system (BIOS) routine that facilitates booting the computer704to a state of readiness.

The computer704may operate in various physical enclosures, such as a desktop or tower, and/or may be integrated with a display as an “all-in-one” device. The computer704may be mounted horizontally and/or in a cabinet or rack, and/or may simply comprise an interconnected set of components. The computer704may comprise a dedicated and/or shared power supply818that supplies and/or regulates power for the other components. The computer704may provide power to and/or receive power from another computer and/or other devices. The computer704may optionally comprise a temperature sensor. The computer704may comprise one or more barometric sensors820configured to measure barometric pressure. Many such computers704may be configured and/or adapted to utilize at least a portion of the techniques presented herein.

FIG.9presents a schematic architecture diagram900of a client device710whereupon at least a portion of the techniques presented herein may be implemented. Such a client device710may vary widely in configuration or capabilities, in order to provide a variety of functionality to a user such as the user712. The client device710may be provided in a variety of form factors, such as a desktop or tower workstation; an “all-in-one” device integrated with a display908; a laptop, tablet, convertible tablet, or palmtop device; a wearable device mountable in a headset, eyeglass, earpiece, and/or wristwatch, and/or integrated with an article of clothing; and/or a component of a piece of furniture, such as a tabletop, and/or of another device, such as a vehicle or residence. The client device710may serve the user in a variety of roles, such as a workstation, kiosk, media player, gaming device, and/or appliance. In some embodiments, the client device710comprises one or more sensors903, such as one or more barometric sensors configured to measure barometric pressure and/or optionally a temperature sensor.

The client device710may comprise one or more processors910that process instructions. The one or more processors910may optionally include a plurality of cores; one or more coprocessors, such as a mathematics coprocessor or an integrated graphical processing unit (GPU); and/or one or more layers of local cache memory. The client device710may comprise memory901storing various forms of applications, such as an operating system903; one or more user applications902, such as document applications, media applications, file and/or data access applications, communication applications such as web browsers and/or email clients, utilities, and/or games; and/or drivers for various peripherals. The client device710may comprise a variety of peripheral components, such as a wired and/or wireless network adapter906connectible to a local area network and/or wide area network; one or more output components, such as a display908coupled with a display adapter (optionally including a graphical processing unit (GPU)), a sound adapter coupled with a speaker, and/or a printer; input devices for receiving input from the user, such as a keyboard911, a mouse, a microphone, a camera, and/or a touch-sensitive component of the display908; and/or environmental sensors, such as a global positioning system (GPS) receiver919that detects the location, velocity, and/or acceleration of the client device710, a compass, accelerometer, and/or gyroscope that detects a physical orientation of the client device710. Other components that may optionally be included with the client device710(though not shown in the schematic architecture diagram900ofFIG.9) include one or more storage components, such as a hard disk drive, a solid-state storage device (SSD), a flash memory device, and/or a magnetic and/or optical disk reader; and/or a flash memory device that may store a basic input/output system (BIOS) routine that facilitates booting the client device710to a state of readiness; and a climate control unit that regulates climate properties, such as temperature, humidity, and airflow.

The client device710may comprise a mainboard featuring one or more communication buses912that interconnect the processor910, the memory901, and various peripherals, using a variety of bus technologies, such as a variant of a serial or parallel AT Attachment (ATA) bus protocol; the Uniform Serial Bus (USB) protocol; and/or the Small Computer System Interface (SCI) bus protocol. The client device710may comprise a dedicated and/or shared power supply918that supplies and/or regulates power for other components, and/or a battery904that stores power for use while the client device710is not connected to a power source via the power supply918. The client device710may provide power to and/or receive power from other client devices.

Various operations of embodiments are provided herein. In an embodiment, one or more of the operations described may constitute computer readable instructions stored on one or more computer readable media, which if executed by a computing device, will cause the computing device to perform the operations described. The order in which some or all of the operations are described should not be construed as to imply that these operations are necessarily order dependent. Alternative ordering may be implemented without departing from the scope of the disclosure. Further, it will be understood that not all operations are necessarily present in each embodiment provided herein. Also, it will be understood that not all operations are necessary in some embodiments.

Also, although the disclosure has been shown and described with respect to one or more implementations, alterations and modifications may be made thereto and additional embodiments may be implemented based upon a reading and understanding of this specification and the annexed drawings. The disclosure includes all such modifications, alterations and additional embodiments and is limited only by the scope of the following claims. The specification and drawings are accordingly to be regarded in an illustrative rather than restrictive sense. In particular regard to the various functions performed by the above described components (e.g., elements, resources, etc.), the terms used to describe such components are intended to correspond, unless otherwise indicated, to any component which performs the specified function of the described component (e.g., that is functionally equivalent), even though not structurally equivalent to the disclosed structure. In addition, while a particular feature of the disclosure may have been disclosed with respect to only one of several implementations, such feature may be combined with one or more other features of the other implementations as may be desired and advantageous for any given or particular application.