Patent Description:
The present invention relates to indoor positioning systems, and in particular mapping of an indoor environment using magnetic sensor measurements.

Mobile devices provide users with a variety of services. One such service is navigation. Navigation in outdoor environments can take advantage of a variety of inputs and sensors, for example global positioning system (GPS) related inputs and sensors. Navigation in GPS-denied or GPS-inaccurate areas requires new methods and systems to navigate, track, and position mobile devices, for example indoors, underground, dense urban streets with high buildings, natural canyons, and similar environments.

A typical modem Indoor Positioning System (IPS) relies on a mapping process which associates sensors measurements in a location (location fingerprint) to coordinates of an indoor map. An IPS may use various mobile device sensors measurements, such as received signal strength indication (RSSI) from transceiver beacons (e.g., wireless LAN modules) or magnetic measurements, to perform the mapping process. These types of sensor measurements are environmental measurements that sense the environment in the locations in which a mobile device has traversed, and the map that is created may be referred to as the fingerprint map and is used for positioning by matching new device sensor measurements to the fingerprint map. Some IPSs also update the fingerprint map while positioning in a process known as Simultaneous localization and Mapping (SLAM). In some IPSs, the map is not a fingerprint map but rather some feature map that is either derived directly from the sensor measurements or by performing some additional operations on the fingerprint map.

In IPS based on magnetic sensor measurements (referred to as magnetic IPS), certain types of measurement errors may arise from imperfections in the calibration of the magnetic sensors (magnetometers). Magnetometers generally perform sensor measurements by sensing the magnetic field of the Earth. However, these sensor measurements are typically distorted by the soft iron effect and the hard iron effect. The soft iron is caused by ferromagnetic objects (any object attracted by a magnet), and changes the direction of an existing magnetic field (such as the Earth magnetic field) depending on the orientation the ferromagnetic objects. The hard iron effect is cause by any magnet (either natural or electric) which generates its own magnetic field that is added to the Earth magnetic field. Due to the soft iron and hard iron effects, a magnetometer needs to periodically undergo a calibration process in order to estimate and cancel the soft and hard iron effects. However, known magnetometer calibration processes have imperfections themselves, including typically requiring human intervention by actively rotating the device carrying the magnetometer (e.g., mobile device) around various rotational axes. The quality of the calibration largely depends on the quality and accuracy of the sensor, the amount of motion of the device during calibration, and the quality of the calibration process. Practically, even after a device undergoes calibration processing, there are always some non-negligible residual calibration errors which may affect the quality of the IPS mapping process. Furthermore, since the mapping process may be performed using multiple mobile devices each having undergone a different magnetometer calibration process, different magnetic sensor measurements may be associated with exactly the same location on a magnetic fingerprint map. Similarly, a device that compares a magnetic sensor measurement to a fingerprint map may have a different magnetic sensor measurement at the same location.

To exacerbate matters, generating and updating a fingerprint map almost always includes location association errors, in which a sensor measurement performed at a given location on a map is incorrectly associated with a different map location.

The present invention is directed to methods and systems for equalizing calibration errors in magnetic sensor measurements, according to the appended claims.

Embodiments of the present disclosure are directed to a method that comprises: partitioning data from a plurality of magnetic sensor measurements collected at one or more mobile devices into a plurality of partitioned sets of data, each of the magnetic sensor measurements associated with a location of one of the mobile devices and having an associated calibration error, the partitioning such that each partitioned set is associated with a respective calibration error associated with the magnetic sensor measurements used to generate the data in the partitioned set; identifying one or more pairs of data items, each pair including: a data item from a first of the partitioned sets corresponding to a magnetic sensor measurement, associated with a first location, used to generate the data in the first partitioned set, and a data item from a second of the partitioned sets corresponding to a magnetic sensor measurement, associated with a second location that is substantially the same as the first location, used to generate the data in the first partitioned set; and estimating the calibration error associated with each of the partitioned sets based in part on the one or more pairs.

Optionally, the method further comprises: for each partitioned set of the partitioned sets, modifying the data in the partitioned set based on the estimated calibration error associated with the partitioned set.

Optionally, the method further comprises: associating the magnetic sensor measurements with locations in a map reference frame.

Optionally, for each pair, the second location is substantially the same as the first location if the first and second locations are within a certain distance from each other.

Optionally, for each pair, the first and second locations are magnetic feature locations, and the second location is substantially the same as the first location if the magnetic feature locations are within a certain distance from each other.

Optionally, for each pair, the first and second locations are fingerprint locations.

Optionally, for each pair, the first and second locations are magnetic fingerprint locations.

The partitioning is performed based on at least one of: orientation of the one or more mobile devices, or the mobile devices at which the magnetic sensor measurements are collected.

Optionally, the data generated from the plurality of magnetic sensor measurements includes fingerprint location data that associates the magnetic sensor measurements to coordinates of an indoor map.

Optionally, the data generated from the plurality of magnetic sensor measurements includes magnetic feature data derived from the magnetic sensor measurements.

Optionally, the estimation is performed by minimizing a cost function that is a function of the magnetic sensor measurements associated with the data pairs.

Optionally, the one or more mobile devices includes exactly one mobile device, and the magnetic sensor measurements are collected at the exactly one mobile device at a plurality of different orientations.

Optionally, the one or more mobile devices includes at least first and second mobile devices, and at least some of the magnetic sensor measurements are collected at the first mobile device and at least some of the magnetic sensor measurements are collected at the second mobile device.

Embodiments of the present disclosure are directed to a system that comprises: a processing subsystem associated with one or more mobile devices including at least one processor in communication with a memory, the processing subsystem configured to: partition data from a plurality of magnetic sensor measurements collected at one or more mobile devices into a plurality of partitioned sets of data, each of the magnetic sensor measurements associated with a location of one of the mobile devices and having an associated calibration error, the partitioning such that each partitioned set is associated with a respective calibration error associated with the magnetic sensor measurements used to generate the data in the partitioned set, identify one or more pairs of data items, each pair including: a data item from a first of the partitioned sets corresponding to a magnetic sensor measurement, associated with a first location, used to generate the data in the first partitioned set, and a data item from a second of the partitioned sets corresponding to a magnetic sensor measurement, associated with a second location that is substantially the same as the first location, used to generate the data in the first partitioned set; and estimate the calibration error associated with each of the partitioned sets based in part on the one or more pairs.

Optionally, the processing subsystem is further configured to: for each partitioned set of the partitioned sets, modify the data in the partitioned set based on the estimated calibration error associated with the partitioned set.

Optionally, the system further comprises: one or more magnetic sensors carried by the one or more mobile devices for collecting the magnetic sensor measurements, and the processing subsystem is further configured to associate the magnetic sensor measurements with locations in a map reference frame.

The processing subsystem configured to partition the data based on at least one of: orientation of the one or more mobile devices, or the mobile devices at which the magnetic sensor measurements are collected.

Optionally, the processing subsystem is configured to estimate the calibration error associated with each of the partitioned sets by minimizing a cost function that is a function of the magnetic sensor measurements associated with the data pairs.

Embodiments of the present disclosure are directed to a computer usable non-transitory storage medium having a computer program embodied thereon for causing a suitable programmed system to estimate calibration errors associated with magnetic sensor measurements, by performing the following steps when such program is executed on the system. The steps comprise: partitioning data from a plurality of magnetic sensor measurements collected at one or more mobile devices into a plurality of partitioned sets of data, each of the magnetic sensor measurements associated with a location of one of the mobile devices and having an associated calibration error, the partitioning such that each partitioned set is associated with a respective calibration error associated with the magnetic sensor measurements used to generate the data in the partitioned set; identifying one or more pairs of data items, each pair including: a data item from a first of the partitioned sets corresponding to a magnetic sensor measurement, associated with a first location, used to generate the data in the first partitioned set, and a data item from a second of the partitioned sets corresponding to a magnetic sensor measurement, associated with a second location that is substantially the same as the first location, used to generate the data in the first partitioned set; and estimating the calibration error associated with each of the partitioned sets based in part on the one or more pairs.

Unless otherwise defined herein, all technical and/or scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which the invention pertains. Although methods and materials similar or equivalent to those described herein may be used in the practice or testing of embodiments of the invention, exemplary methods and/or materials are described below.

Some embodiments of the present invention are herein described, by way of example only, with reference to the accompanying drawings. With specific reference to the drawings in detail, it is stressed that the particulars shown are by way of example and for purposes of illustrative discussion of embodiments of the invention.

Attention is now directed to the drawings, where like reference numerals or characters indicate corresponding or like components. In the drawings:.

The present invention is directed to methods and systems for equalizing calibration errors in magnetic sensor measurements in magnetic IPS systems.

Before explaining at least one embodiment of the invention in detail, it is to be understood that the invention is not necessarily limited in its application to the details of construction and the arrangement of the components and/or methods set forth in the following description and/or illustrated in the drawings and/or the examples.

By way of introduction, a vectorial magnetic field measurement m can be of the form: <MAT> in which mr is the true magnetic field being measured (i.e., Earth magnetic field), D is a scale matrix accounting for the soft iron effect, h is an offset accounting for the hard iron effect, and R is a matrix representing the orientation of the sensor device. In an ideal scenario in which the true values of D and h are known, the measurement value of m is an ideal measurement value of the true magnetic field. In practice, however, the magnetic field measurement is performed by a magnetic sensor device (e.g., magnetometer) to which the exact values of D and h are unknown, and thus estimations of D and h (denoted D̂ and ĥ) must be used instead of the true values of D and h. As will be shown in the following formulation, inaccuracies in D and ĥ will create a magnetic calibration error merror that is summed with mr to produce measurement mc (i.e., mc = mr + merror). In the following formulation an estimate of a variable is represented by ^ placed over the variable (e.g., R̂ is an estimate of R).

Working back from the expression of m = DRmr + h, the measurement mc can be expressed as: <MAT>.

Substituting the expression m = DRmr + h into the expression for mc yields: <MAT>.

Letting R̂TD̂-<NUM> = RTD-<NUM> + ΔRD (where ΔRD is an estimation error between the product of the true RT and D-<NUM> and the product of the estimates R̂T and D-<NUM>), and letting ĥ = h + Δn (where Δh is an estimation error between the true hard iron effect and the estimated hard iron effect), mc can be expressed as: <MAT>.

The above expression for mc can be approximated as: <MAT>.

Thus, a magnetic calibration error can be approximated to a fixed offset (in three-dimensional space, i.e., along each of the x, y, and z axes) over a period of time, as long as the magnetic sensor device remains at roughly the same orientation over the time period and the estimates are not updated significantly over the time period.

Bearing the above in mind, refer now to <FIG>, an illustrative example environment in which embodiments of the present disclosure can be performed over a network <NUM>. The embodiments include a system, generally designated <NUM>, operative to equalize calibration errors in magnetic sensor measurements. The system <NUM> includes at least one (i.e., one or more) mobile device linked to a server processing system (SPS) <NUM> via the network <NUM>, which can be formed from one or more networks including, for example, cellular networks, the Internet, wide area, public, and local networks.

In the non-limiting example illustrated in <FIG>, the at least one mobile device includes a plurality of mobile devices, generally designated <NUM>a, <NUM>b, and <NUM>c. Although three mobile devices are illustrated in <FIG>, the embodiments of the present disclosure can be implemented using a single mobile device, or using two or more mobile devices, and in certain instances up to several tens or even hundreds of mobile devices. Each of the mobile devices <NUM>a, <NUM>b, and <NUM>c can be any type of communication device that includes one or more sensors, and moves or can be moved from one location to another, often while exchanging data via a communication network, such as a cellular network or a wireless local area network. Examples of such communication devices include, but are not limited to, smartphones, tablet computers, laptop computers, and the like. Most typically, the mobile devices <NUM>a, <NUM>b, and <NUM>c are implemented as a smartphone (such as an iPhone from Apple of Cupertino, CA) or a tablet computer (such as an iPad also from Apple of Cupertino, CA).

With continued reference to <FIG>, refer now to <FIG>, a schematic block diagram of a mobile device <NUM> that is a representation of each of the mobile devices <NUM>a, <NUM>b, and <NUM>c. Throughout the remainder of the present disclosure, the description of the structure and function of the mobile device <NUM> (and its components) is applicable to the structure and function of each of the mobile devices <NUM>a, <NUM>b, and <NUM>c.

The mobile device <NUM> includes one or more sensors <NUM> and a processing unit <NUM>. The one or more sensors <NUM> includes at least one magnetic sensor device <NUM> which can be implemented as a magnetometer. Although the magnetic sensor <NUM> is shown as single components for representative purposes, the magnetic sensor may be multiple components. The magnetic sensor <NUM> collects magnetic sensor measurements at the mobile device <NUM> to perform magnetic sensing.

In certain embodiments, the one or more <NUM> preferably includes a plurality of sensors, which in addition to the at least one magnetic sensor <NUM> may include one or more other sensors <NUM>, including, but not limited to one or more one or more inertial sensors such as one or more accelerometers and/or one or more gyroscopes, one or more barometers, one or more radio sensors, one or more image sensors (that are part of a camera (i.e., imaging device), which can be a depth camera, of the mobile device), one or more proximity sensors, or any other type of sensor that can provide sensor data that can be used by an indoor positioning system. When using one or more radio sensors, each radio sensor can be implemented as a radio frequency (RF) sensor that measures the power that is present in received radio signals, such as ultra-wideband (UWB) signals, cellular signals (e.g., CDMA signals, GSM signals, etc.) Bluetooth signals, wireless local area network (LAN) signals (colloquially referred to as "Wi-Fi signals"). In one non-limiting implementation, each radio sensor is implemented as a wireless LAN RF sensor configured to perform received signal strength indication (RSSI) measurements based on received wireless LAN signals from wireless LAN routers or beacons.

The magnetic sensor <NUM> is configured to generate magnetic sensor data in response to magnetic sensor measurements collected and performed at the mobile device <NUM>. The sensor data is provided to the processing unit <NUM>, which collects and processes the sensor data.

The processing unit <NUM> includes a central processing unit (CPU) <NUM>, a storage/memory <NUM>, an operating system (OS) <NUM>, a transceiver unit <NUM>, an estimation module <NUM>, a calibration module <NUM>, an association module <NUM>, and an indoor positioning system (IPS) module <NUM>. Although the CPU <NUM> and the storage/memory <NUM> are each shown as single components for representative purposes, either or both of the CPU and the storage/memory may be multiple components.

The CPU <NUM> is formed of one or more computerized processors, including microprocessors, for performing the functions of the mobile device <NUM>, including executing the functionalities and operations of the estimation module <NUM>, the calibration module <NUM>, the association module <NUM>, and the IPS module <NUM>, as will be detailed herein, including at least some of the processes shown and described in the flow diagrams of <FIG>, as well as executing the functionalities and operations of the OS <NUM>. The processors are, for example, conventional processors, such as those used in servers, computers, and other computerized devices. For example, the processors may include x86 Processors from AMD and Intel, Xeon® and Pentium® processors from Intel, as well as any combinations thereof.

The storage/memory <NUM> is any conventional computer storage media. The storage/memory <NUM> stores machine executable instructions for execution by the CPU <NUM>, to perform the processes of the present embodiments. The storage/memory <NUM> also includes machine executable instructions associated with the operation of the components of the mobile device <NUM>, including the sensors <NUM>, and instructions for executing the processes of <FIG>, as will be detailed herein.

The OS <NUM> includes any of the conventional computer operating systems, such as those available from Microsoft of Redmond Washington, commercially available as Windows® OS, such as Windows® <NUM>, Windows® <NUM>, Apple of Cupertino, CA, commercially available as MAC OS, or iOS, open-source software based operating systems, such as Android, and the like.

Each of the estimation module <NUM>, the calibration module <NUM>, the association module <NUM>, and the IPS module <NUM> can be implemented as a hardware module or a software module, and includes software, software routines, code, code segments and the like, embodied, for example, in computer components, modules and the like, that are installed on the mobile device <NUM>. Each of the estimation module <NUM>, the calibration module <NUM>, the association module <NUM>, and the IPS module <NUM> performs actions when instructed by the CPU <NUM>.

The transceiver unit <NUM> can be any transceiver that includes components, such as a modem and a network interface, for transmitting data to, and receiving data from, the network <NUM>, so as to enable the exchange of data between the mobile device <NUM> and the SPS <NUM>. The transceiver unit <NUM> can typically be implemented as a cellular network transceiver for communicating with a cellular network, such as, for example, a <NUM>, <NUM>, <NUM> LTE, or <NUM> cellular network. Such cellular networks are communicatively linked to other types of networks, including the Internet, via one or more network connections or communication hubs, thereby allowing the mobile device <NUM> to communicate with a variety of types networks, including those networks mentioned above.

All components of the mobile device <NUM> are connected or linked to each other (electronically and/or data), either directly or indirectly. These connections and links are represented by bold lines in <FIG>. As can be seen in <FIG>, some of the bold connection/link lines are terminated at one or both ends by an arrow, which represents the flow of data from one component of the system <NUM> to another component of the system <NUM>. For example, the sensor data generated by the sensors <NUM> is provided to each of the estimation module <NUM>, the calibration module <NUM>, the association module <NUM>, and the IPS module <NUM>. As a further example, the outputs generated by the estimation module <NUM> and the calibration module <NUM> are provided as input to the association module <NUM>, which also receives input from the sensors <NUM> and the IPS module <NUM>. As a further example, outputs from the IPS module <NUM> are provided as input to the SPS <NUM> and outputs form the SPS <NUM> are provided as input to the IPS module <NUM>.

The flow of data will be described in further detail in subsequent sections of the present disclosure.

With continued reference to <FIG> and <FIG>, refer now to <FIG> a schematic block diagram of the SPS <NUM>. The SPS <NUM> includes a central processing unit (CPU) <NUM>, a storage/memory <NUM>, an operating system (OS) <NUM>, a transceiver unit <NUM>, an equalization module <NUM>, and a mapping module <NUM>. In certain embodiments, such as the non-limiting embodiment illustrated n <FIG>, the SPS <NUM> further includes a fingerprint-features processing module (FFPM) <NUM>. Although the CPU <NUM> and the storage/memory <NUM> are each shown as single components for representative purposes, either or both of the CPU and the storage/memory may be multiple components.

The CPU <NUM> is formed of one or more computerized processors, including microprocessors, for performing the functions of the SPS <NUM>, including executing the functionalities and operations of the equalization module <NUM>, the FFPM <NUM>, and the mapping module <NUM>, as will be detailed herein, including at least some of the processes shown and described in the flow diagrams of <FIG>, as well as executing the functionalities and operations of the OS <NUM>. The processors are, for example, conventional processors, such as those used in servers, computers, and other computerized devices. For example, the processors may include x86 Processors from AMD and Intel, Xeon® and Pentium® processors from Intel, as well as any combinations thereof.

The storage/memory <NUM> is any conventional computer storage media. The storage/memory <NUM> stores machine executable instructions for execution by the CPU <NUM>, to perform the processes of the present embodiments. The storage/memory <NUM> also includes machine executable instructions associated with the operation of the components of the SPS <NUM>, and instructions for executing the processes of <FIG>, as will be detailed herein.

Each of the equalization module <NUM>, FFPM <NUM>, and the mapping module <NUM> can be implemented as a hardware module or a software module, and includes software, software routines, code, code segments and the like, embodied, for example, in computer components, modules and the like, that are installed on the mobile device <NUM>. Each of the equalization module <NUM>, FFPM <NUM>, and the mapping module <NUM> performs actions when instructed by the CPU <NUM>.

The transceiver unit <NUM> can be any transceiver that includes components, such as a modem and a network interface, for transmitting data to, and receiving data from, the network <NUM>, so as to enable the exchange of data between the mobile device <NUM> and the SPS <NUM>.

The modules <NUM>, <NUM>, <NUM> can be implemented in a single server (such as the SPS <NUM>) or in multiple servers, where each such server typically includes one or more computerized processors, one or more storage/memory (computer storage media), an operating system, and a transceiver/network interface. Moreover, although <FIG> and <FIG> show the modules as being distributed among the processing unit <NUM> and the SPS <NUM> in a particular way, other distributions are possible, including distributions in which all of the modules are deployed as part of the SPS <NUM> or one or more similar such servers.

The various modules of the processing unit <NUM> and the SPS <NUM> together form a processing subsystem that execute the processes of the present embodiments, including the processes shown and described in the flow diagrams of <FIG>.

With continued reference to <FIG>, the following paragraphs describe the functions of each of the modules <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>.

The estimation module <NUM> functions to estimate the orientation of the mobile device <NUM> over time in some reference frame. The estimation module <NUM> performs orientation estimation based on sensor data received from the sensors <NUM>, which may include inertial sensor data (e.g., accelerometer data and/or gyroscope data) generated from the sensors <NUM>. The orientation estimates produced by the estimation module <NUM> can be represented in various ways. One convenient representation is a vector representation, for example using conventional yaw, pitch, roll. Other representations include rotation matrices and quaternions. The orientation estimates are typically in the reference frame of the mobile device <NUM>, and can be formed using any estimation technique, including motion estimation techniques that estimate location, orientation and velocity over time to form a time-varying position estimate.

Parenthetically, motion estimation techniques are well-known in the art. Pedestrian Dead Reckoning (PDR) is one well-known example motion estimation. PDR uses knowledge of the human gait cycle and the effect on signals generated by inertial sensors to estimate a trajectory. In a simple implementation, an accelerometer (one of the sensors <NUM>) can be used as a pedometer and the magnetic sensor <NUM> can be used to provide compass heading. Each step taken by the user of the mobile device <NUM> (measured by the accelerometer) causes position to move forward a fixed distance in the direction measured by the compass (magnetic sensor <NUM>). Another known, albeit relatively newer, approach for motion estimation relies on machine learning, in particular deep learning, techniques to train models that output trajectory estimates from available sensor signals carrying sensor data from inertial sensors. Yet another form of motion estimation that can provide accurate trajectory is performed by fusing sensor data from inertial sensors of a mobile device and a camera of the mobile device in a process known as Visual Inertial Odometry (VIO). Images obtained by the camera (i.e., image sensor data) are processed together with inertial measurements (inertial sensor data) to estimate location and orientation.

The calibration module <NUM> functions to perform a calibration process in order to calibrate the magnetic sensor measurements in the sensor data received from the sensor <NUM>. The calibration performed by the calibration module <NUM> includes performing estimation processing of the received magnetic sensor data to estimate the soft and hard iron effect, and cancelling the estimated soft and hard iron effects. As mentioned in the background, the calibration processing has imperfections, and residual calibration errors remain.

The association module <NUM> functions to associate the sensor measurements performed at a location (location fingerprint) to coordinates of an indoor map (either a fingerprint map or feature map). In certain embodiments, some of the functions performed by the association module <NUM> can be performed by the IPS module <NUM>.

In general, the association of the sensor measurements to the map coordinates is performed based on the sensor data received from the sensors <NUM>, as well as the orientation estimation output by the estimation module <NUM> and the calibration processed sensor data output by the calibration module <NUM>.

Since the orientation estimates are typically in the reference frame of the mobile device <NUM>, in order to utilize fingerprints derived from sensor measurements from multiple mobile devices <NUM>, alignment of the orientations of the mobile devices <NUM> to a common reference frame is needed. In certain embodiments, the IPS module <NUM> functions to align the orientation of each mobile device <NUM> to the reference frame of the map, such that fingerprints received from each mobile device <NUM> will be in a common map reference frame. The orientation alignment performed by the IPS module <NUM> is also useful in situations in which the fingerprints from only a single mobile device <NUM> are used but the fingerprints are generated over a relatively large time period over which the orientation of the mobile device <NUM> changes significantly. Here too the IPS module <NUM> can align the orientation estimate corresponding to each fingerprint to the map reference frame. Note that after the IPS module <NUM> performs the alignment, the IPS module <NUM> also associates the fingerprints to the map. This process can be done manually, or semi-manually, using for example the mapping tool described in <CIT>.

In certain embodiments, the IPS module <NUM> can provide a sample-by-sample orientation estimate of the mobile device <NUM>. In such embodiments, it may not be necessary for the estimation module <NUM> to perform orientation estimation to determine the orientation of the mobile device <NUM> (since the IPS module <NUM> provides mobile device orientation). However, in such embodiments the estimation module <NUM> may function to perform reference frame alignment, whereby the estimation module <NUM> estimates the mobile device <NUM> orientation in some initial reference frame and aligns the magnetic sensor measurements collected by the magnetic sensor <NUM> to that initial reference frame. The aligned magnetic sensor measurements can then be aligned to the map reference frame by the IPS module <NUM>.

The equalization module <NUM> functions to receive the associated sensor measurements (i.e., the sensor measurements that have been associated to the map reference frame) from the association module <NUM> and/or the IPS module <NUM>, and to perform equalization processing of data generated from the received sensor measurements in order to estimate calibration errors associated with the magnetic sensor measurements. The equalization processing performed by the equalization module <NUM> will now be described in detail within the context of the non-limiting embodiment of the present disclosure illustrated in drawings. However, as will be discussed, the equalization processing can be modified in accordance with other embodiments of the present disclosure.

According to certain non-limiting embodiments illustrated herein, the associated sensor measurements are magnetic sensor measurements that are associated with (and typically form part of) a fingerprint location. In such embodiments, the data generated from the received sensor measurements that is to undergo equalization processing is location fingerprint data that includes for each data item of the location fingerprint data at least one magnetic sensor measurement and a spatial location (which can be a location in three-dimensional space or two-dimensional space). Typically, multiple magnetic sensor measurements are collected at the same or approximately the same location. The system <NUM> according to the present disclosure uses the multiple sensor measurements to advantage in order to equalize the calibration error associated with the magnetic sensor measurements by employing partitioning and estimation techniques. First, the equalization module <NUM> partitions the data (which in certain non-limiting embodiments is location fingerprint data) into multiple partitioned sets of data according to one or more partitioning schemes, such that each partitioned set has a fixed (or approximately fixed) associated magnetic sensor measurement calibration error. In other words, for each partitioned set, the calibration error associated with the particular magnetic sensor measurements used to generate the data in the partitioned set is the same (or approximately the same) across the particular magnetic sensor measurements.

Various partitioning schemes can be used to form the partitioned sets. In one example, the data is partitioned according to mobile device orientation. In such a partitioning scheme, the orientation estimates produced by the estimation module <NUM> are used as a basis for partitioning, whereby magnetic sensor measurements that were performed at the same or similar (within a similarity threshold between orientation estimates) are grouped in the same partitioned set. In another example, the data is partitioned according to a mobile device identifier, such that magnetic sensor measurements performed by a given mobile device (e.g., one of the mobile devices <NUM>a, <NUM>b, <NUM>c of <FIG>) are grouped in the same partitioned set. In yet another example, the data is partitioned according to timestamps associated with the magnetic sensor measurements, whereby magnetic sensor measurements that were collected (preferably continuously) over a time period (preferably during which the orientation of the mobile device is constant) are grouped in the same partitioned set. In a further example, the data is partitioned according to sensor measurements corresponding to a recognizable trajectory or path estimate, whereby magnetic sensor measurements that were collected (preferably continuously) in a recognizable trajectory/path are grouped in the same partitioned set. In a final example, magnetic sensor measurements associated with location fingerprints that were already (i.e., previously) equalized are grouped in the same partitioned set.

The above partitioning schemes are merely examples of possible partitioning schemes that can be employed by the embodiments of the present disclosure, and should not be interpreted to be exhaustive. As should be apparent, various partitioning schemes can be used in combination in order to generate the partitioned sets of data. <FIG> schematically illustrates magnetic sensor measurements in a fingerprint map <NUM> and the partitioning of location fingerprint data according to a combination of mobile device orientation and mobile device identifier. The fingerprint map <NUM> shows location fingerprint data formed from magnetic sensor measurement data and location data. The magnetic sensor measurement data is generated from magnetic sensor measurements collected by magnetic sensors of three different mobile devices (e.g., mobile device <NUM>a, mobile device <NUM>b, and mobile device <NUM>c) at various locations (corresponding to the location data) of an indoor environment <NUM> that includes landmarks <NUM>a - d (which can be structures, walls, shelves, vending machines, furniture, stands, etc.). As previously mentioned, each of the three mobile devices <NUM>a, <NUM>b, <NUM>c is according to the mobile device <NUM> of <FIG>. Each of the mobile devices <NUM>a, <NUM>b, <NUM>c also has an associated orientation estimate at each location (which can be estimated by the estimation module <NUM> of the mobile device).

The location fingerprint data M2 is generated from the magnetic sensor measurements collected by the magnetic sensor of the mobile device <NUM>b while traversing locations of the indoor environment <NUM>. The mobile device <NUM>b has an estimated orientation (yaw, pitch, roll) of approximately (<NUM>°, <NUM>°, <NUM>°) over the entire duration of time for which the magnetic sensors measurements are collected by the magnetic sensor of the mobile device <NUM>b. Each dot in M2 represents a location fingerprint data item, defined by a location of the indoor environment <NUM> and the magnetic sensor measurement that was collected/performed by the magnetic sensor of the mobile device <NUM>b at that location.

The location fingerprint data M3 is generated from the magnetic sensor measurements collected by the magnetic sensor of the mobile device <NUM>c while traversing locations of the indoor environment <NUM>. The mobile device <NUM>c has an estimated orientation (yaw, pitch, roll) of approximately (<NUM>°, <NUM>°, <NUM>°) over the entire duration of time for which the magnetic sensors measurements are collected by the magnetic sensor of the mobile device <NUM>b. Each dot in M3 represents a location fingerprint data item, defined by a location of the indoor environment <NUM> and the magnetic sensor measurement that was collected/performed by the magnetic sensor of the mobile device <NUM>c at that location.

The location fingerprint data M1 is generated from the magnetic sensor measurements collected by the magnetic sensor of the mobile device <NUM>a while traversing locations of the indoor environment <NUM>. The mobile device <NUM>a has an estimated orientation (yaw, pitch, roll) of approximately (<NUM>°, <NUM>°, <NUM>°) over a first segment of the duration of time for which the magnetic sensors measurements are collected by the magnetic sensor of the mobile device <NUM>b, and an estimated orientation (yaw, pitch, roll) of approximately (<NUM>°, <NUM>°, <NUM>°) over a second segment of the duration of time for which magnetic sensors measurements are collected by the magnetic sensor of the mobile device <NUM>b. Each dot in M1 represents a location fingerprint data item, defined by a location of the indoor environment <NUM> and the magnetic sensor measurement that was collected/performed by the magnetic sensor of the mobile device <NUM>a at that location.

In the illustrated example, the equalization module <NUM> partitions the data into four partitioned sets according to a combination of mobile device orientation and mobile device identifier. The mobile device identifier is an identifier that uniquely identifies each mobile device (e.g., the identifier of each of the mobile devices 12a, <NUM>, 12c). The partitioned sets are depicted as oval or oblong shapes demarcated with dashed lines. The first partitioned set, designated as S1, includes the part of the data M1 that is generated from the magnetic sensor measurements collected by the mobile device <NUM>a at locations in which the mobile device <NUM>a had an estimated orientation of approximately (<NUM>°, <NUM>°, <NUM>°). The second partitioned set, designated as S2, includes the part of the data M1 that is generated from the magnetic sensor measurements collected by the mobile device <NUM>a at locations in which the mobile device <NUM>a had an estimated orientation of approximately (<NUM>°, <NUM>°, <NUM>°). The third partitioned set, designated as S3, includes the data M2, which is generated from the magnetic sensor measurements collected by the mobile device <NUM>b at locations in which the mobile device <NUM>b had an estimated orientation of approximately (<NUM>°, <NUM>°, <NUM>°). The fourth partitioned set, designated as S4, includes the data M3, which is generated from the magnetic sensor measurements collected by the mobile device <NUM>c at locations in which the mobile device <NUM>c had an estimated orientation of approximately (<NUM>°, <NUM>°, <NUM>°).

For each of the partitioned sets, the orientation of the device carrying the magnetic sensor is approximately constant (i.e., fixed), and therefore the calibration error associated with the magnetic sensor measurements that are used to generate the data in the partitioned set is effectively the same (fixed) across the magnetic sensor measurements. Thus, each partitioned set is associated with a respective fixed calibration error. In other words, the same fixed calibration error C1 is present across all of the magnetic sensor measurements in the data M1 in set S1. Likewise, the same fixed calibration error C2 is present across all of the magnetic sensor measurements in the data M1 in set S2, and the same fixed calibration error C3 is present across all of the magnetic sensor measurements in the data M2 in set S3, and the same fixed calibration error C4 is present across all of the magnetic sensor measurements in the data M3 in set S4. The calibration errors C1, C2, C3 and C4 are not necessarily the same, and in fact are typically different from each other, as the calibration error is a function of both the magnetic sensor device itself as well as the orientation of the mobile device that carries the magnetic sensor device (e.g., sensor <NUM>).

After the equalization module <NUM> partitions the data into the partitioned sets, the equalization module <NUM> then identifies one or more pairs of data items (also referred to as "pairs", "data item pairs", or "paired data items"), where each pair includes a data item (a "first data item") from one of the partitioned sets (a "first of the partitioned sets") and a data item (a "second data item") from another one of the partitioned sets (a "second of the partitioned sets"). The first data item corresponds to a magnetic sensor measurement in the first set that is associated with a first location, and the second data item corresponds to a magnetic sensor measurement in the second set that is associated with a location (second location) that is the same or approximately the same as the first location. The first and second data items may include the magnetic sensor measurements themselves (as in the current embodiment), or can be features associated with the magnetic sensor measurements, which in certain embodiments can be derived from the sensor measurements (as will be discussed in further detail).

Various conditions for qualification of "the same" or "approximately the same" can be used. In certain non-limiting implementations, for example when fingerprint locations are used, the second location is determined to be the same or approximately as the first location if the two locations are within a certain distance (e.g., Euclidean distance) from each other, i.e., if the distance between the two locations is within a given amount. In other non-limiting implementations, for example when magnetic fingerprint locations are used, the second location is determined to be the same or approximately as the first location if the two magnetic fingerprints are within a certain distance from each other. In yet other non-limiting implementations, in particular when the data items include magnetic feature data, the second location is determined to be the same or approximately as the first location if the magnetic features associated with the sensor measurements are within a certain distance from each other.

In the illustrated embodiment, the pairs of data items are referred to interchangeably as "paired fingerprints". Continuing with the example fingerprint map <NUM> illustrated in <FIG>, several paired fingerprints are shown, designated as P23, P12, P14a, and P14b. Looking at the paired fingerprint P23 as an example, the paired fingerprint consists of: i) a first data item corresponding to a magnetic sensor measurement performed by the mobile device <NUM>a (from the set of magnetic sensor measurements in data M1) in the partitioned set S1 at a first location (in data M1 corresponding to that magnetic sensor measurement), and ii) a second data item corresponding to a magnetic sensor measurement performed by the mobile device <NUM>b (from the set of magnetic sensor measurements in data M2) in the partitioned set S3 at a second location (in data M2 corresponding to that magnetic sensor measurement) that is the same or approximately the same as the first location. Here, the two sensor measurements are collected by two different mobile devices (the mobile device <NUM>a and the mobile device <NUM>b).

Similarly, the paired fingerprint P12 consists of: i) a first data item corresponding to a magnetic sensor measurement performed by the mobile device <NUM>a (from the set of magnetic sensor measurements in data M1) in the partitioned set S1 at a first location (in data M1 corresponding to that magnetic sensor measurement), and ii) a second data item corresponding to a magnetic sensor measurement performed by the mobile device <NUM>a (from the set of magnetic sensor measurements in data M1) in the partitioned set S2 at a second location (in data M1 corresponding to that magnetic sensor measurement) that is the same or approximately the same as the first location. Here, the two sensor measurements are collected by the same device (Device <NUM>), but correspond to two different orientations of the mobile device.

Similarly, the paired fingerprint P14a consists of: i) a first data item corresponding to a magnetic sensor measurement performed by the mobile device <NUM>a (from the set of magnetic sensor measurements in data M1) in the partitioned set S1 at a first location (in data M1 corresponding to that magnetic sensor measurement), and ii) a second data item corresponding to a magnetic sensor measurement performed by the mobile device <NUM>c (from the set of magnetic sensor measurements in data M3) in the partitioned set S4 at a second location (in data M3 corresponding to that magnetic sensor measurement) that is the same or approximately the same as the first location. Here, the two sensor measurements are collected by two different mobile devices (the mobile device <NUM>a and the mobile device <NUM>c). These two mobile devices are also responsible for contributing the data of the paired fingerprint P14b, which consists of: i) a "second" first data item corresponding to a magnetic sensor measurement performed by the mobile device <NUM>a (from the set of magnetic sensor measurements in data M1) in the partitioned set S1 at a "second" first location (in data M1 corresponding to that magnetic sensor measurement), and ii) a "second" second data item corresponding to a magnetic sensor measurement performed by the mobile device <NUM>c (from the set of magnetic sensor measurements in data M3) in the partitioned set S4 at a "second" second location (in data M3 corresponding to that magnetic sensor measurement) that is the same or approximately the same as the "second" first location.

To be clear, any two partitioned sets may have none, one, or multiple paired data items. As in the example fingerprint map <NUM> illustrated in <FIG>, no paired data items are formed from pairs taken from S3 and S4, while the sets S1 and S4 together form two paired data items (P14a, P14b).

After the equalization module <NUM> identifies the pairs (and forms the pairs by taking one data item from each of the two contributing partitioned sets of the pair), the equalization module <NUM> estimates the fixed calibration error associated with each of the partitioned sets. In general, the estimation is performed by minimizing a cost function of the form: <MAT> in which m<NUM>i is the associated magnetic sensor measurement in the data item from one of the partitioned sets forming the ith data item pair, and m<NUM>i is the associated magnetic sensor measurement in the data item from the other of the partitioned sets forming the ith data item pair. According to this formulation, the square of the difference between the magnetic sensor measurements in each pair of data items are summed together. The cost function is minimized to produce an estimate for the calibration error associated with each of the partitioned sets that is represented by at least one of the pairs of data items. Since the magnetic sensor measurements associated with m<NUM>i and m<NUM>i should be associated with the same (or approximately the same) location, it is reasonable to assume that the true sensor measurements (without calibration error) should be identical (or at least very close, i.e., within some small amount δ from each other). Thus, minimization of the cost function (when performed over all pairs of data items) provides a robust estimate of the calibration error associated with each of the partitioned sets.

In practice, the equalization module <NUM> can perform the calibration error estimation in various ways. In one non-limiting implementation, least squares estimation is employed by the equalization module <NUM>. In another non-limiting implementation, the equalization module <NUM> employs singular value decomposition to estimate the calibration errors. In another non-limiting implementation, the equalization module <NUM> employs algorithms that handle outlier data points, such as random sample consensus (RANSAC), which is an iterative method that estimates parameters of a mathematical model. In RANSAC implementations, the equalization module <NUM> iteratively executes over subsets of the pairs of data items together with a fitting model (which can be derived from the resulting minimized cost function) in order to remove outlier data from the estimate.

In certain embodiments, the equalization module <NUM> performs detection of outlier calibration error estimates for the partitioned sets. In one non-limiting implementation, the equalization module <NUM> identifies calibration error estimates as outliers if the calibration error estimates are: i) stale (i.e., the estimates are old compared to more recent calibration error estimates), and/or ii) do not conform with the majority of the calibration error estimate data. In certain embodiments, the equalization module <NUM> removes the outlier calibration error estimates, and removes the location fingerprints in the partitioned set associated with an outlier calibration error estimate.

The equalization module <NUM> further functions to modify, for each of the partitioned sets, the data in the partitioned set based on the estimated calibration error associated with the partitioned set so as to equalize the calibration error for the partitioned set. The modified data that is output by the equalization module <NUM> is referred to as equalized data, which can be equalized location fingerprints or equalized location features. In one simple example, if the calibration error associated with a partitioned set is estimated to be some positive error Δ, the magnetic sensor measurements used to generate the data in the partitioned set are adjusted by the calibration error by, for example, subtracting Δ from the magnetic sensor measurements associated with the partitioned set. Other, more complex modifications/adjustments are also contemplated, including modification by some offset that is a function of the estimated calibration error.

In certain embodiments, the equalization module <NUM> further functions to detect fingerprints that are in the vicinity of two or more different paired data items that are separated from each other by a significant distance. For example, a location fingerprint that is in the vicinity of both paired fingerprint P12 and paired fingerprint P14b could be detected as an outlier. The equalization module <NUM> can remove the detected outlier fingerprint from the corresponding partitioned set. The removal can be performed by the equalization module <NUM> before the equalization process (i.e., before set partitioning, calibration error estimation, and data modification to generate equalized location fingerprints), after the completion of the equalization process (i.e., after data modification to generate equalized location fingerprints), or during (as part of) the equalization process.

In certain embodiments, such as the non-limiting embodiment illustrated in <FIG>, the FFPM <NUM> functions to compute map features from the equalized location fingerprints in order to generate equalized location features associated with the magnetic sensor measurements. In other embodiments, the FFPM <NUM> may first compute map features from the un-equalized data, and then provide the un-equalized feature map data to the equalization module <NUM>. In such embodiments, the equalization module <NUM> performs estimation on the computed map features (derived from the magnetic sensor measurements) instead of directly on the magnetic measurements. In this case, the estimation is performed by minimizing a cost function of the form: <MAT> in which f is a magnetic feature operator or function. The feature operator f is not necessarily limited to a single location measurement (i.e., magnetic sensor measurements associated with different locations may be associated with different feature operators).

The equalized location fingerprints (from the equalization module <NUM>) or the equalized location features (from the equalization module <NUM> or from the FFPM <NUM>) are then provided to the mapping module <NUM>, which functions to update the map data of the fingerprint map or feature map, and provide the updated fingerprint/feature map to the IPS module <NUM>.

In certain embodiments, the aforementioned cost functions that are to be minimized in order to estimate the calibration error by the equalization module <NUM> can be weighted according to one or more weighting criterion. By way of one non-limiting example, weights can be applied to a cost function according to the distance between the fingerprint locations or location features, where preferably the weight is inversely proportional to the distance. For example, for a given data item pair k, a large weight can be applied if there is a small distance between the location associated with m<NUM>k and the location associated with m<NUM>k. Similarly, for another given data item pair j, a small weight can be applied if there is a large distance between the location associated with the m<NUM>j and the location associated with m<NUM>j. As another example, the cost function can be weighted by a configurable association error that may be a function of the sensor quality or error of the association of a particular magnetic sensor measurement with a particular location. For example, if the magnetic sensor measurements in a given data item pair have a high quality (i.e., the sensors that collected the sensor measurements have a high reliability factor), a large weight may be applied to that data item pair, as compared to magnetic sensor measurements of another data item pair that were collected by less reliable (lower quality) magnetic sensors. In yet another example, the cost function can be weighted based on the timestamps associated with the magnetic sensor measurements, such that larger weights are applied to more recent magnetic sensor measurements. For example, for a first data item pair having magnetic sensor measurements that were collected more recently than magnetic sensor measurements of a second data item pair, a larger weight can be applied to the first data item pair as compared to the weight applied to the second data item pair.

Attention is now directed to <FIG>, which shows a flow diagram detailing a process <NUM> in accordance with embodiments of the disclosed subject matter. The process includes an algorithm for equalizing magnetic sensor calibration errors in magnetic sensor measurements collected by a mobile device or mobile devices. Reference is also made to <FIG> and the elements illustrated therein. The process and sub-processes of <FIG> include computerized (i.e., computer-implemented) processes performed by the system, including, for example, the CPU <NUM> and/or the CPU <NUM> and associated components, including the equalization module <NUM>, and in certain embodiments one or more of the estimation module <NUM>, the calibration module <NUM>, the association module <NUM>, the IPS module <NUM>, the FFPM <NUM>, and the mapping module <NUM>. The aforementioned process and sub-processes are for example, performed automatically, but can be, for example performed manually, and are performed, for example, in real time.

The process <NUM> begins at step <NUM>, where magnetic sensor measurements are collected by the magnetic sensor <NUM> of one or more mobile devices <NUM> as the mobile device traverses through an indoor environment. Each magnetic sensor measurement corresponds to a location within the indoor environment at which the magnetic sensor <NUM> performed the measurement. At step <NUM>, the association module <NUM> of each mobile device <NUM> associates the magnetic sensor measurements (collected by the magnetic sensor <NUM> at a location, i.e., location fingerprint) to coordinates of an indoor map (either a fingerprint map or feature map). The process then moves to step <NUM>. In embodiments in which a map with associated magnetic sensor measurements already exists, the process <NUM> can begin from step <NUM>.

At step <NUM>, the equalization module <NUM> partitions data associated with the already associated magnetic sensor measurements into a plurality of partitioned sets of data. The equalization module <NUM> partitions the data (using one or more partitioning schemes) in a way such that each partitioned set has a fixed (or approximately fixed) associated magnetic sensor measurement calibration error.

The process <NUM> then moves to step <NUM>, where the equalization module <NUM> identifies one or more pairs of data items that each consist of a first data item from one of the partitioned sets and a second data item from another one of the partitioned sets. As previously discussed, the first data item corresponds to a magnetic sensor measurement in the one partitioned set that is associated with a first location, and the second data item corresponds to a magnetic sensor measurement in the other partitioned set that is associated with a second location that is the same or approximately the same as the first location.

At step <NUM>, the equalization module <NUM> estimates the fixed calibration error associated with each of the partitioned sets based on the pairs of data items, by, for example, minimizing a cost function. At step <NUM>, the location fingerprints are adjusted based on the estimated calibration errors. The adjustment is made by modifying the data in each partitioned set based on the estimated calibration error associated with the partitioned set so as to equalize the calibration error for the partitioned set. In embodiments in which features are used instead of location fingerprint (i.e., if the equalization module <NUM> performs estimation on the computed map features (derived from the magnetic sensor measurements) instead of directly on the magnetic measurements), the features are adjusted based on the estimated calibration errors. Here the adjustment is made by modifying the feature data in each partitioned set based on the estimated calibration error associated with the partitioned set.

The subdivision of the processing units/systems into various processing modules has been shown herein according to a functional subdivision and for convenience of representation. It should be noted that these functions can be performed by processing systems or other logic circuitry hardware which can be subdivided in any desired manner, with one or more functions being performed by a single processing module of a single processing system, or by a single function being performed by separate processing modules of one or more distributed processing systems. In an extreme example, the mobile device <NUM> can be limited to include only the sensors <NUM> and the processing components that are initially part of the mobile device <NUM>, and the various processing modules <NUM>, <NUM>, <NUM>, <NUM> can be deployed as part of a remote processing system, for example the SPS <NUM>. In such an example, all of the sensor data (generated by the sensors <NUM> in response to collected sensor measurements) can be provided to the various processing modules (e.g., the SPS <NUM>) through a communication link supported by the mobile device <NUM> and the SPS <NUM>, for example via the transceiver units <NUM>, <NUM>.

Optionally, the data processor includes a volatile memory for storing instructions and/or data and/or a non-volatile storage, for example, non-transitory storage media such as a magnetic hard-disk and/or removable media, for storing instructions and/or data.

For example, any combination of one or more non-transitory computer readable (storage) medium(s) may be utilized in accordance with the above-listed embodiments of the present invention. The non-transitory computer readable (storage) medium may be a computer readable signal medium or a computer readable storage medium. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD- ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing.

As will be understood with reference to the paragraphs and the referenced drawings, provided above, various embodiments of computer-implemented methods are provided herein, some of which can be performed by various embodiments of apparatuses and systems described herein and some of which can be performed according to instructions stored in non-transitory computer-readable storage media described herein. Still, some embodiments of computer-implemented methods provided herein can be performed by other apparatuses or systems and can be performed according to instructions stored in computer-readable storage media other than that described herein, as will become apparent to those having skill in the art with reference to the embodiments described herein. Any reference to systems and computer-readable storage media with respect to the following computer-implemented methods is provided for explanatory purposes, and is not intended to limit any of such systems and any of such non-transitory computer-readable storage media with regard to embodiments of computer-implemented methods described above. Likewise, any reference to the following computer-implemented methods with respect to systems and computer-readable storage media is provided for explanatory purposes, and is not intended to limit any of such computer-implemented methods disclosed herein.

The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention.

The descriptions of the various embodiments of the present invention have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.

The above-described processes including portions thereof can be performed by software, hardware and combinations thereof. These processes and portions thereof can be performed by computers, computer-type devices, workstations, processors, micro-processors, other electronic searching tools and memory and other non-transitory storage-type devices associated therewith. The processes and portions thereof can also be embodied in programmable non-transitory storage media, for example, compact discs (CDs) or other discs including magnetic, optical, etc., readable by a machine or the like, or other computer usable storage media, including magnetic, optical, or semiconductor storage, or other source of electronic signals.

The processes (methods) and systems, including components thereof, herein have been described with exemplary reference to specific hardware and software. The processes (methods) have been described as exemplary, whereby specific steps and their order can be omitted and/or changed by persons of ordinary skill in the art to reduce these embodiments to practice without undue experimentation. The processes (methods) and systems have been described in a manner sufficient to enable persons of ordinary skill in the art to readily adapt other hardware and software as may be needed to reduce any of the embodiments to practice without undue experimentation and using conventional techniques.

To the extent that the appended claims have been drafted without multiple dependencies, this has been done only to accommodate formal requirements in jurisdictions which do not allow such multiple dependencies. It should be noted that all possible combinations of features which would be implied by rendering the claims multiply dependent are explicitly envisaged and should be considered part of the invention.

Claim 1:
A method, comprising:
partitioning (<NUM>) data from a plurality of magnetic sensor measurements collected at
one or more mobile devices (12a,12b,12c...) into a plurality of partitioned sets of data,
each of the magnetic sensor measurements associated with a location of one of the mobile devices and having an associated calibration error, wherein the partitioning is performed based on at least one of:
orientation of the one or more mobile devices, or the identifier of the mobile devices at
which the magnetic sensor measurements are collected, the partitioning such that each partitioned set is associated with a respective calibration error associated with the magnetic sensor measurements used to
generate the data in the partitioned set;
identifying (<NUM>) one or more pairs of data items, each pair including:
a data item from a first of the partitioned sets corresponding to a magnetic sensor measurement, associated with a first location, used to generate the data in the first partitioned set, and
a data item from a second of the partitioned sets corresponding to a magnetic sensor measurement, associated with a second location that is substantially the same as the first location, used to generate the data in the first partitioned set; and
estimating (<NUM>) the calibration error associated with each of the partitioned sets based in part on the one or more pairs.