PATENT DOCUMENT

Publication Number: US-9071937-B2
Application Number: US-201313756452-A
Country: US
Kind Code: B2

Title: Tiered delivery of location data

Abstract:
Techniques of delivering location data are described. A location server can receive, from a mobile device, a request for location data for determining a location of the mobile device at a venue. The request can include an estimated location of the mobile device. The location server can provide to the mobile device coarse location data for each venue that is located within a threshold distance to the estimated location of the mobile device. The coarse location data can include a list of coarse tiles at each venue, and parameters of a probability distribution function for determining in which tile of the venue the mobile device is located based on signals detected by the mobile device. The location server can the provide location fingerprint data associated with the tile and neighboring tiles to the mobile device. The mobile can use the location fingerprint data to determine a more detailed location.

Claims:
What is claimed is: 
     
       1. A method comprising:
 determining that a location of a mobile device is within a threshold distance from a venue cluster, the venue cluster comprising one or more venues, each venue comprising a space accessible by a pedestrian and one or more constraints of movement of the pedestrian in the space; 
 providing, to the mobile device, coarse location data for each venue in the venue cluster, the coarse location data comprising:
 a venue identifier of a corresponding venue and a venue bounding box of the corresponding venue, the venue bounding box representing space occupied by the venue; 
 a group of one or more coarse tiles of the corresponding venue, each coarse tile comprising a coarse tile identifier and a tile bounding box, the tile bounding box representing space occupied by the corresponding coarse tile at the venue; and 
 parameters of a probability distribution function for determining a location of the mobile device at the venue based on measurements of signals from one or more signal sources; 
 
 receiving, from the mobile device:
 an indication that a contextual condition for downloading location fingerprint data has been satisfied, and 
 one of the coarse tile identifiers; and 
 
 based on the contextual condition, providing detailed location data corresponding to the coarse tile to the mobile device for determining a location of the mobile device in at least one of the one or more venues, 
 wherein the method is performed by one or more computers. 
 
     
     
       2. The method of  claim 1 , wherein the venue bounding box and each coarse tile bounding box is a three-dimensional box. 
     
     
       3. The method of  claim 1 , wherein each of the one or more signal sources includes a radio frequency (RF) signal transmitter. 
     
     
       4. The method of  claim 1 , wherein the contextual condition comprises at least one of:
 a movement velocity of the mobile device satisfies a pedestrian walking speed threshold; or 
 an estimated location of the mobile device is in the venue bounding box. 
 
     
     
       5. The method of  claim 1 , wherein the detailed location data comprise location fingerprints of the corresponding venue, the location fingerprints comprising:
 expected measurements of signals at multiple locations of the venue; and 
 variance of the expected measurements, wherein the location fingerprints are usable by the mobile device to determine a venue location of the mobile device at the corresponding venue, the venue location being a location relative to the venue. 
 
     
     
       6. The method of  claim 1 , wherein the identifier received from the mobile device is determined from the one or more coarse tile identifiers based on a probability that the mobile device is located in the tile bounding box of the corresponding coarse tile. 
     
     
       7. The method of  claim 1 , comprising:
 determining, based on the location of the mobile device, that the mobile device will enter a venue in which data communications are subject to interference; and 
 upon the determining, providing detailed location data corresponding to the venue to the mobile device. 
 
     
     
       8. A non-transitory storage device storing instructions operable to cause one or more processors to perform operations comprising:
 determining that a location of a mobile device is within a threshold distance from a venue cluster, the venue cluster comprising one or more venues, each venue comprising a space accessible by a pedestrian and one or more constraints of movement of the pedestrian in the space; 
 providing, to the mobile device, coarse location data for each venue in the venue cluster, the coarse location data comprising:
 a venue identifier of a corresponding venue and a venue bounding box of the corresponding venue, the venue bounding box representing space occupied by the venue; 
 a group of one or more coarse tiles of the corresponding venue, each coarse tile comprising a coarse tile identifier and a tile bounding box, the tile bounding box representing space occupied by the corresponding coarse tile at the venue; and 
 parameters of a probability distribution function for determining a location of the mobile device at the venue based on measurements of signals from one or more signal sources; 
 
 receiving, from the mobile device:
 an indication that a contextual condition for downloading location fingerprint data has been satisfied, and 
 a coarse tile identifier, the coarse tile identifier being determined from the one or more coarse tile identifiers based on a probability that the mobile device is located in the tile bounding box of the corresponding coarse tile; and 
 
 based on the contextual condition, providing detailed location data corresponding to the coarse tile to the mobile device for determining a location of the mobile device in at least one of the one or more venues. 
 
     
     
       9. The non-transitory storage device of  claim 8 , wherein the venue bounding box and each coarse tile bounding box is a three-dimensional box. 
     
     
       10. The non-transitory storage device of  claim 8 , wherein each of the one or more signal sources includes a radio frequency (RF) signal transmitter. 
     
     
       11. The non-transitory storage device of  claim 8 , wherein the contextual condition comprises at least one of:
 a movement velocity of the mobile device satisfies a pedestrian walking speed threshold; or 
 an estimated location of the mobile device is in the venue bounding box. 
 
     
     
       12. The non-transitory storage device of  claim 8 , wherein the detailed location data comprise location fingerprints of the corresponding venue, the location fingerprints comprising:
 expected measurements of signals at multiple locations of the venue; and 
 variance of the expected measurements, wherein the location fingerprints are usable by the mobile device to determine a venue location of the mobile device at the corresponding venue, the venue location being a location relative to the venue. 
 
     
     
       13. The non-transitory storage device of  claim 8 , wherein the identifier received from the mobile device is determined from the one or more coarse tile identifiers based on a probability that the mobile device is located in the tile bounding box of the corresponding coarse tile. 
     
     
       14. The non-transitory storage device of  claim 8 , the operations comprising:
 determining, based on the location of the mobile device, that the mobile device will enter a venue in which data communications are subject to interference; and 
 upon the determining, providing detailed location data corresponding to the venue to the mobile device. 
 
     
     
       15. A system comprising:
 one or more processors; and 
 a storage device storing instructions operable to cause the one or more processors to perform operations comprising:
 determining that a location of a mobile device is within a threshold distance from a venue cluster, the venue cluster comprising one or more venues, each venue comprising a space accessible by a pedestrian and one or more constraints of movement of the pedestrian in the space; 
 providing, to the mobile device, coarse location data for each venue in the venue cluster, the coarse location data comprising:
 a venue identifier of a corresponding venue and a venue bounding box of the corresponding venue, the venue bounding box representing space occupied by the venue; 
 a group of one or more coarse tiles of the corresponding venue, each coarse tile comprising a coarse tile identifier and a tile bounding box, the tile bounding box representing space occupied by the corresponding coarse tile at the venue; and 
 parameters of a probability distribution function for determining a location of the mobile device at the venue based on measurements of signals from one or more signal sources; 
 
 receiving, from the mobile device:
 an indication that a contextual condition for downloading location fingerprint data has been satisfied, and 
 a coarse tile identifier, the coarse tile identifier being determined from the one or more coarse tile identifiers based on a probability that the mobile device is located in the tile bounding box of the corresponding coarse tile; and 
 
 based on the contextual condition, providing detailed location data corresponding to the coarse tile to the mobile device for determining a location of the mobile device in at least one of the one or more venues. 
 
 
     
     
       16. The system of  claim 15 , wherein the venue bounding box and each coarse tile bounding box is a three-dimensional box. 
     
     
       17. The system of  claim 15 , wherein each of the one or more signal sources includes a radio frequency (RF) signal transmitter. 
     
     
       18. The system of  claim 15 , wherein the contextual condition comprises at least one of:
 a movement velocity of the mobile device satisfies a pedestrian walking speed threshold; or 
 an estimated location of the mobile device is in the venue bounding box. 
 
     
     
       19. The system of  claim 15 , wherein the detailed location data comprise location fingerprints of the corresponding venue, the location fingerprints comprising:
 expected measurements of signals at multiple locations of the venue; and 
 variance of the expected measurements, wherein the location fingerprints are usable by the mobile device to determine a venue location of the mobile device at the corresponding venue, the venue location being a location relative to the venue. 
 
     
     
       20. The system of  claim 15 , wherein the identifier received from the mobile device is determined from the one or more coarse tile identifiers based on a probability that the mobile device is located in the tile bounding box of the corresponding coarse tile. 
     
     
       21. The system of  claim 15 , the operations comprising:
 determining, based on the location of the mobile device, that the mobile device will enter a venue in which data communications are subject to interference; and 
 upon the determining, providing detailed location data corresponding to the venue to the mobile device.

Description:
TECHNICAL FIELD 
     This disclosure relates generally to location determination. 
     BACKGROUND 
     Some mobile devices have features for determining a geographic location. For example, a mobile device can include a receiver for receiving signals from a global satellite system (e.g., global positioning system or GPS). The mobile device can determine a geographic location, including latitude and longitude, using the received GPS signals. In many places, GPS signals can be non-existent, weak, or subject to interference, such that it is not possible to accurately determine a location using the GPS functions of the mobile device. For example, a conventional mobile device often fails to determine a location based on GPS signals when the device is inside a building or tunnel. 
     SUMMARY 
     Techniques of delivering location data are described. A location server can receive, from a mobile device, a request for location data that can be used to determine a location of the mobile device at a venue. The request can include an estimated location of the mobile device. The location server can provide to the mobile device coarse location data for each venue that is located within a threshold distance to the estimated location of the mobile device. The coarse location data can include a list of coarse tiles at each venue, and parameters of a probability distribution function for determining in which tile of the venue the mobile device is located based on signals detected by the mobile device. The location server can the provide location fingerprint data associated with the tile and neighboring tiles to the mobile device. The mobile can use the location fingerprint data to determine a more detailed location. 
     The features described in this specification can be implemented to achieve the following advantages. Compared to a conventional mobile device having GPS functions and conventional dead reckoning functions, a mobile device utilizing features described in this specification can provide a location estimate when GPS signals and dead reckoning are unavailable. Accordingly, for example, a user entering an airport building from an airplane can know the user&#39;s location in the airport building using the mobile device. 
     Compared to a conventional system in which a server provides location data to a mobile device, communications between the mobile device and a location server implementing the features described in this specification can be more efficient. The location server can provide the location data to a mobile device on an as-needed basis. The location server can transmit the location data in a tiered manner, where the location server provides data that are more detailed only when the location server determines that the mobile device needs that more detailed data, e.g., when the mobile device is located at a given coarse location. Accordingly, the location server can avoid sending all detailed data upfront. 
     The details of one or more implementations of tiered delivery of location data are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of tiered delivery of location data will become apparent from the description, the drawings, and the claims. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a diagram illustrating an exemplary first tier of tiered delivery of location data. 
         FIG. 2  is a diagram illustrating an exemplary second tier of tiered delivery of location data. 
         FIG. 3  is a diagram illustrating an exemplary logical structure of location fingerprint data delivered from a location server to a mobile device. 
         FIG. 4  is a diagram illustrating an exemplary logical structure of coarse location data delivered from a location server to a mobile device. 
         FIG. 5  is a block diagram illustrating components of an exemplary location subsystem of a mobile device. 
         FIG. 6  is a block diagram illustrating components of an exemplary location server. 
         FIG. 7  is a flowchart of an exemplary procedure of tiered delivery of location data. 
         FIG. 8  is a block diagram of an exemplary system architecture for implementing the features and operations of  FIGS. 1-7 . 
         FIG. 9  is a block diagram illustrating an exemplary device architecture of a mobile device implementing the features and operations described in reference to  FIGS. 1-7 . 
         FIG. 10  is a block diagram of an exemplary network operating environment for the mobile devices of  FIGS. 1-7 . 
     
    
    
     Like reference symbols in the various drawings indicate like elements. 
     DETAILED DESCRIPTION 
     Exemplary Tiers of Delivery 
       FIG. 1  is a diagram illustrating an exemplary first tier of tiered delivery of location data. Mobile device  102  can request location data from location server  112 . The location data can include data that mobile device  102  can use to determine a location of mobile device  102  at a venue based on measurements of signals received from one or more signal sources, e.g., signal source  116 . The request can include or be accompanied by an estimated location, e.g., location A, of mobile device  102 . Mobile device  102  can determine location A based on GPS signals or triangulation using cellular information. 
     Location server  112  can include one or more computers. Upon receiving the request and location A of mobile device  102 , location server  112  can query location database  132  and determine one or more venues, e.g., venue  134  and venue  136 , that are located within a threshold distance from location A. The threshold distance can be a distance pre-specified by location server  112 , a distance determined based on a characteristic of mobile device  102 , or a distance provided by mobile device  102 . 
     Each of venue  134  and venue  136  can be a space accessible by a pedestrian. Each of venue  134  and venue  136  can include one or more constraints limiting the pedestrian&#39;s movement in the space. These constraints can include, for example, map constraints (e.g., walls, railings, or cubicle separators), pathway constraints (e.g., a pedestrian walking on a pathway defined by road signs tends to follow the pathway), or pedestrian motion constraints (e.g., a pedestrian cannot move faster than X miles per hour, or move vertically when not in a stairway or elevator). Each of venue  134  and venue  136  can be a physical structure. The physical structure can be closed (e.g., an office building) or open (e.g., an open stadium). The space can be indoor space inside of the physical structure, or space inside of a bounding space of the physical structure if the physical structure is open. Each of venue  134  and venue  136  can be mobile (e.g., an airplane, a cruise ship, or a mobile oil platform). 
     Location server  112  can provide first tier location data to mobile device  102  as a response to the request. The first tier location data can include coarse location data of each of venue  134  and venue  136  to mobile device  102 . The coarse location data can include an identifier for the corresponding venue, and a two dimensional or three dimensional bounding box corresponding to space the corresponding venue occupies on Earth. For example, the coarse location data of venue  134  can include bounding box  138  that encloses venue  134 . Mobile device  102  can use the bounding boxes to determine whether to request second tier information from location server  112 . 
     In addition, the coarse location data can include parameters of a probability distribution function. Mobile device  102  can apply the probability distribution function to detected signals (e.g., signals from signal source  116 ) to determine a likelihood that mobile device  102  is located at various locations at venue  134  or venue  136 . The location can be a coarse estimate of a location of mobile device  102  relative to a venue. 
     The coarse location data can include a list of tiles, e.g., tile  140  and tile  142 , within the venue. Each of tile  140  and tile  142  can include information of a portion of venue  134 . Each of tile  140  and tile  142  can include a two dimensional or three dimensional bounding box enclosing the portion of venue  134 . Each of tile  140  and tile  142  can be associated with a tile identifier. Mobile device  102  can map the coarse location of mobile device  102  to one or more of the tiles, when the coarse location is inside the one or more tiles or includes the one or more tiles. When requesting second tier location data, mobile device  102  can submit the identifiers of the one or more tiles to location server  112 , and request second tier location data associated with the one or more tiles and neighboring tiles. If no second tier location data are available, mobile device  102  can designate the coarse location as the location of mobile device  102 . If second tier location data are available, mobile device  102  can determine a detailed location of mobile device  102  relative to the corresponding venue, and designate the detailed location as the location of mobile device  102 . Compared to a coarse location estimate, a detailed location estimate can have smaller error margin, higher confidence, or both. For example, a coarse location in a building can correspond to several rooms and several floors, whereas a detailed location in the building can correspond to a particular area of a particular room on one floor. 
       FIG. 2  is a diagram illustrating an exemplary second tier of tiered delivery of location data. Mobile device  102  can be located at location B. Mobile device  102  can determine that a contextual condition for requesting second tier location data has been satisfied. The contextual condition can trigger mobile device  102  to request detailed location data from location server  112 . The contextual condition can include, for example, whether mobile device  102  is heading to entrance  202  of venue  134 , whether mobile device  102  is moving at a pedestrian speed (e.g., an estimated speed of human walking), or whether mobile device  102  has entered bounding box  138  of venue  134 . Mobile device  102  can send a request to location server  112  for second tier location data. The request can include, or be associated with, an indication that the contextual condition has been satisfied, and identifier of tile  204 . Tile  204  can be a tile of venue  134  that encloses entrance  202 . 
     Upon receiving the request, location server  112  can determine location fingerprint data associated with tile  204 . Location fingerprint data associated with tile  204  can be stored in location database  132 . Location server  112  can provide the location fingerprint data to mobile device as the detailed location data. Mobile device  102  can use the location fingerprint data to determine a detailed location of mobile device  102  at venue  134 . 
     In another scenario, mobile device  102  can be located at location C at venue  134 . Based on the first tier location data, mobile device  102  can determine a coarse estimated location of mobile device  102  based on signals from signal source  210 , signal source  212 , and signal source  214 . Signal sources  210 ,  212 , and  214  can include radio frequency (RF) signal transmitters. The first tier location data can include parameters of a probability density function. The parameters can include locations of signal source  210 , signal source  212 , and signal source  214 . Based on measurements of signals from signal source  210 , signal source  212 , and signal source  214 , mobile device  102  can determine a most likely location of mobile device  102  using the probability distribution function. Mobile device  102  can designate the most likely location as the coarse location. Mobile device  102  can identify tile  224  that encloses the coarse location. 
     Mobile device  102  can submit a request for second tier location data to location server  112 . The request can include or be associated with an identifier of tile  224 , and a probability that mobile device  102  is location at location C, as determined by the probability density function. Location server  112  can identify location fingerprint data associated with tile  224  from location database  132 . In addition, location server  112  can determine that the probability is lower than a threshold probability. Accordingly, location server  112  can identify location fingerprint data associated with tile  226 , which neighbors tile  224 , from location server  112 . Location server  112  can provide the location fingerprint data for tiles  224  and  226  as second tier location data to mobile device  102 . 
     Exemplary Location Data 
       FIG. 3  illustrates an exemplary logical structure of location fingerprint data. The location fingerprint data can be generated by location server  112 , and stored in location database  132  of  FIG. 1 . The location fingerprint data can be the first tier location data. The exemplary logical structure illustrated in  FIG. 3  can correspond to a portion of the location fingerprint database, e.g., the portion that corresponds to venue  134 . 
     Location fingerprint data can include, for each location among multiple locations in a venue (e.g., venue  134  of  FIG. 1 ), a measurement vector, e.g., measurement vector  302 A or  302 B. Each of measurement vectors  302 A and  302 B can include expected measurements of signals from one or more signal sources at the location, variance of the expected measurements at the location, and weights of the expected measurements at the location. The expected measurements can include measurements that a mobile device, if located at the corresponding location, is expected to take. The variance can include a range of values of the expected measurements, and a probability that the measurements have each value. The weights can indicate how much weight the mobile device is going to apply to the corresponding expected measurements in statistical classification. The weight of a given signal source can correspond to a probability that a mobile device can detect the signal from the signal source. 
     The expected measurements can correspond to more than one type of signal sources. For example, location fingerprint data can include at least one of: wireless access point fingerprint data; radio frequency identification (RFID) fingerprint data; near field communication (NFC) fingerprint data; Bluetooth™ fingerprint data; magnetic field fingerprint data; cellular fingerprint data; or computer vision fingerprint data. The various fingerprint data can be aggregated to form the location fingerprint data for a given venue or a given location at the venue. The various fingerprint data can include, for example, a received signal strength indication (RSSI), a round trip time, a magnetic field strength and direction. 
     Location fingerprint data can be stored as multi-dimensional data in association with venue  134 . Some of the dimensions of the multi-dimensional data can be space dimensions. The space dimensions can include X (e.g., latitude), Y (e.g., longitude), and Z (e.g., altitude, not shown). The space dimension can be continuous, expressed in a function, or discrete, where the space dimension can include locations distributed as the venue. The distribution can be even and uniform, or concentrated around areas where good measurements (e.g., strong signals or strong contrast between a first signal and a second signal) can be obtained. 
     At least one dimension of the multi-dimensional data can be a signal source dimension. Location fingerprint data can include multiple measurement vectors, each measurement vector corresponding to a location in the venue. Measurement vector  302 A can correspond to a location represented by (X 1 , Y 1 , Z 1 ), and have one or more values of each signal source at location (X 1 , Y 1 , Z 1 ). Likewise, measurement vector  302 B can correspond to a location represented by (X 2 , Y 2 , Z 2 ), and have one or more values of each signal source at location (X 2 , Y 2 , Z 2 ). The values can include one or more of an expected value of an environment variable (e.g., an expected RSSI), a variance of the expected value, or the weight. Location server  112  can determine the expected measurement and variance based on measurements and variance of the measurements received from a sampling device. The sampling device can be a mobile device configured to detect signals from signal sources at multiple locations in the venue when the mobile device moves in the venue. 
     In some implementations, the space dimension can be normalized. Each measurement received from a sampling device can correspond to a sampling point. For example, a surveyor can carry the sampling device and follow path  304  to survey a venue. Location server  112  can determine a location grid, and normalize path  304  to locations  306 ,  308   310 ,  312 , and  314  according to distribution of locations  306 ,  308   310 ,  312 , and  314 . More details on obtaining measurement using survey by sampling device will be described below in reference to  FIG. 4 . 
     The entire search space for venue  134  can include all the signal sources (e.g., SS 1 , SS 2 , and SS 3 ) and all sample points, as well as location in venue  134  that are not sampled where the expected measurements are determined by interpolation or extrapolation. The search space can be reduced when a coarse location is known. Reduced search space  320  can include a portion of the signal sources, e.g., SS 1  and SS 2 , and a portion of all sample locations. Reduced search space  320  can include the portion of the signal sources and portion of sample locations associated with one or more tiles (e.g., tile  204  of  FIG. 2 ). A mobile device can determine a location by performing statistical classification of signal measurements in reduced search space  320 . 
       FIG. 4  is a diagram illustrating an exemplary logical structure of coarse location data  400  delivered from location server  112  to mobile device  102 . Coarse location data  400  can be second tier location data. Coarse location data  400  can be associated with each venue, e.g., venue  134 . Coarse location data  400  can include venue identifier  402  identifying the venue. 
     Coarse location data  400  can include venue bounding box  404 . Venue bounding box  404  can be a three dimensional box. In various implementations, venue bounding box  404  can be defined by multiple vertices, by a given vertex or center and length, width, and depth, or by a center and a radius. For example, venue bounding box  404  can include latitude, longitude, and altitude coordinates of each of eight vertices of a box enclosing a building. Venue bounding box  404  can be larger than the building venue bounding box  404  encloses, e.g., when the building has a concave shape. 
     Coarse location data  400  can include location probability density function (PDF) parameters  406 . Location PDF parameters  406  can include signal source locations  408 . Signal source locations  408  can include estimated or actual locations (e.g., latitude, longitude, and altitude coordinates) of signal sources the signals from which are detectable at the corresponding venue. Location PDF parameters  406  can include location probability histogram  410  for each of the signal sources. Location probability histogram  410  can include a probability distribution in a three-dimensional space. The probability distribution for a given signal source can indicate a probability that a mobile device is located at location (X, Y, Z) when the mobile device can detect a signal of the corresponding signal source. Location probability histogram  410 , as illustrated in  FIG. 4 , is a top view of an exemplary two-dimensional histogram. A solid box in location probability histogram  410  indicates a highest likelihood that the mobile device is located in an area corresponding to the box; a shaded box in location probability histogram  410  indicated a lower likelihood; a blank box indicates a lowest likelihood. Mobile device  102  can use location probability histogram  410  to estimate a coarse location based on signals from multiple signal sources. 
     Coarse location data  400  can include coarse tile list  412 . Coarse tile list  412  can include tile  414  and tile  416 . Tile  414  and tile  416  can each correspond to a portion of the venue associated with coarse location data  400 . The portions of venue represented by tile  414  and tile  416  may overlap. Tile  414  can include coarse tile identifier  418  identifying tile  414 . Tile  414  can include coarse tile bounding box  420 . Coarse tile bounding box  420  can have a same structure as venue bounding box  404 . Coarse tile bounding box  420  can be fully or partially enclosed by venue bounding box  404 . In some implementations, tile  414  can include neighboring tile identifiers  422 . 
     Exemplary Device Components and Server Components 
       FIG. 5  is a block diagram illustrating components of exemplary location subsystem  500  of mobile device  102 . Location subsystem  500  can include hardware or software components for reducing a search space in location determination and determining an estimated location of mobile device  102  using the reduced search space. 
     Location subsystem  500  can include location manager  502 . Location manager  502  is a component of location subsystem  500  configured to manage location determination functions. When signals from a global satellite system (e.g., GPS) are available, location manager  502  can determine a location of mobile device  102  using the signals from the global satellite system. When signals from a global satellite system are unavailable, location manager  502  can request signal source interface  504  to provide one or more measurements of signals received from signal sources by one or more sensors or receivers of mobile device  102 . 
     Signal source interface  504  can be a component of location subsystem  500  configured to interface with the one or more sensors or receivers of mobile device  102  and provide measurements of the signals and identifiers of the signal sources to location manager  502 . The measurements can include, for example, an RSSI or a round-trip time when the signal sources are wireless access points, a temperature when the signal sources are heat sources, a sound pressure level when the signal sources are sound sources, a light intensity or spectrum when the signal sources are light sources. 
     Upon receiving the measurements from signal source interface  504 , location manager  502  can provide the received measurements and identifiers to coarse location estimator  506 . Coarse location estimator  506  is a component of location subsystem  500  configured to determine a coarse location of mobile device  102 . Coarse location estimator  506  can submit the identifiers of the signal sources to location server interface  508  in a request for coarse location data. In some implementations, coarse location estimator  506  can submit a location determined by a GPS subsystem to location server interface  508  in the request for coarse location data. The coarse location data can be first tier location data. 
     Location server interface  508  is a component of location subsystem  500  configured to send location data requests to location server  112  and receive location data from location server  112 . Upon receiving the request for coarse location data, location server interface  508  can submit the request to location server  112  and receive coarse location data in response. The request can include identifiers of signal sources or an estimated location of mobile device  102 . Location server interface  508  can submit the coarse location data received in response to the request to coarse location estimator  506 . 
     Upon receiving the coarse location data, coarse location estimator  506  can determine a coarse location of mobile device  102  based on the measurements received from location manager  502  and the coarse location data. The coarse location can be associated with an uncertainty value indicating an error margin of the coarse location. Coarse location estimator  506  can submit the coarse location and the associated uncertainty value to location manager  502 . Location manager  502  can determine a tile that corresponds to the coarse location. Location manager  502  can submit an identifier of the tile to location server interface  508  in a request for second tier location data, e.g., location fingerprint data. Location server interface  508  can submit the request to location server  112  as a second request. Location server  112  can retrieve the location fingerprint data to the tile and neighboring tiles, and provide the location fingerprint data to location server interface  508 . Location server interface  508  can store the received location fingerprint data in local location fingerprint database  510 . Local location fingerprint database  510  can be a component of location subsystem  500  configured to store location fingerprint data on mobile device  102 . 
     Location manager  502  can request location estimator  512  to determine an estimated location of mobile device  102 . The request can include the uncertainty value as determined by coarse location estimator  506  and measurements provided by signal source interface  504 . Location estimator  512  is a component of location subsystem configured to determine the estimated location by performing statistical classification of the measurement using location fingerprint data. Location estimator  512  can request the location fingerprint data from local location fingerprint database  510 , and perform the statistical classification of the measurements based on the uncertainty value. Location estimator  512  can provide the estimated location resulting from the statistical classification as an output of location subsystem  500 . Mobile device  102  can provide the output for display on a display device, or use the output to drive location based application programs or system services. 
       FIG. 6  is a block diagram illustrating components of exemplary location server  112  configured to generate coarse location data and location fingerprint data, and to provide the coarse location data and location fingerprint data to a mobile device. 
     Location server  112  can include data harvesting unit  602 . Data harvesting unit  602  is a component of location server  112  that is programmed to receive and process survey data from sampling device  604 . Sampling device  604  can be a mobile device configured to record measurements of signal sources at multiple locations at a (e.g., venue  134 ), and submit the recorded measurements to location server  112  as survey data. Sampling device  604  can be mobile device  102  or another mobile device. 
     Data harvesting unit  602  can include data parsing unit  606 . Data parsing unit  606  is a component of data harvesting unit  602  that is configured to receive the survey data from sampling device  604 , parse data fields of the survey data, and generate structured data, e.g., name-value pairs that match identifier of a signal source to a measurement of signals from that signal source and venue-name pairs that match signal sources to a venue. The identifier can be a media access control (MAC) address or a service set identifier (SSID) of a signal source. 
     Data harvesting unit  602  can include data registration unit  608 . Data registration unit  608  is a component of data harvesting unit  602  that is configured to receive parsed data (e.g., the name-value pairs) generated by data parsing unit  606 , and send at least a portion of the parsed data to data point data store  610  for storage. Data point data store  610  can include a database (e.g., a relational database, an object-oriented database, or a flat file) that is configured to store location information in association with signal source identifiers. 
     Data harvesting unit  602  can include data filtering unit  612 . Data filtering unit  612  is a component of data harvesting unit  602  that is configured to identify stale data from data point data store  610 , and remove the stale data from data point data store  610 . The stale data can include measurement of signals from signal sources that are determined to have moved. 
     Location server  112  can include location calculation unit  614 . Location calculation unit  614  is a component of location server  112  that is configured to generate one or more estimated locations based on data points stored in data point data store  610  using a probability density function. Location calculation unit  614  can include histogram generation unit  616 . Histogram generation unit  616  is a component of location calculation unit  614  that is configured to generate a histogram based on data points from data point data store  610 . The histogram can indicate a probability of a signal source being located at each of multiple locations. Histogram generation unit  616  can generate a histogram for each signal source. 
     Location calculation unit  614  can include grid selection unit  618 . Grid selection unit  618  is a component of location calculation unit  614  that is configured to select one or more locations (“bins”) from the histogram generated by histogram generation unit  616  using a probability density function. The selection operations can include applying a multi-modal probability function. 
     Location calculation unit  614  can include location calculator  620 . Location calculator  620  is a component of location calculation unit  614  that is configured to calculate a location of each signal source based on the selected bins, and to calculate an uncertainty of the calculated location. The calculated location can include location coordinates including a latitude coordinate, a longitude coordinate, and an altitude coordinate. The uncertainty can indicate an estimated accuracy of the calculated location. 
     Location calculator  620  can be configured to calculate a reach of each signal source from information associated with data points stored in data point data store  610 . The reach of a signal source can indicate a maximum distance from which the signal source can be expected to be observable by a mobile device. Location calculator  620  can calculate the reach using locations in the harvested data and the calculated location. 
     Location calculation unit  614  can generate output including the location coordinates determined by location calculator  620 . The location coordinates can be associated with an identifier of the signal source, an uncertainty, and a reach of the signal source. Location server  112  can designate the output as coarse location data  622 . 
     Location server  112  can include data distribution unit  624 . Data distribution unit  624  is a component of location server  112  that is configured to retrieve coarse location data  622 , and send the coarse location data  622  to mobile device  102  as first tier location data. Mobile device  102  can use the coarse location data to determine a coarse location of mobile device  102  using operations that are the same as the operations performed by location calculation unit  614 , where the estimated locations of signal sources are changed to an estimated location of mobile device  102 . 
     Location server  112  can include fingerprint engine  626 . Fingerprint engine  626  can generate location fingerprint data  628  using survey data. To generate location fingerprint data  628  using survey data, fingerprint engine  626  can receive the survey data, and generate the location fingerprint data based on the received survey data using interpolation for determining predicted measurements at points not sampled by sampling device  604 . In some implementations, fingerprint engine  626  can generate location fingerprint data  628  using predication. Predication can include extrapolation using truth data on the signal sources. The truth data can include known locations of the signal sources relative to a venue. Data distribution unit  624  can retrieve location fingerprint data  628 , and, upon request, send location fingerprint data  628  to mobile device  102  as second tier location data. 
     Exemplary Procedures 
       FIG. 7  is a flowchart of exemplary procedure  700  of tiered delivery of location data. Procedure  700  can be performed by location server  112 . Location server  112  can receive a request from a mobile device, e.g., mobile device  102 , a request for location data. The request can include or be associated with a location of the mobile device. 
     Location server  112  can determine ( 702 ) that the location of the mobile device is within a threshold distance from a venue cluster. The venue cluster can include one or more venues (e.g., venues  134  and  136 ). Each venue can include a space accessible by a pedestrian and one or more constraints of movement of the pedestrian in the space. The threshold distance can be defined by a number of kilometers. 
     Location server  112  can provide ( 704 ), to the mobile device, coarse location data for each venue in the venue cluster. The coarse location data can include a group of one or more coarse tiles of the corresponding venue. Each coarse tile can include a coarse tile identifier and a tile bounding box. The tile bounding box can represent space occupied by the corresponding coarse tile at the venue. The coarse location data can include an identifier of the corresponding venue and a venue bounding box of the corresponding venue. The venue bounding box can represent space occupied by the venue. The coarse location data can include parameters of a probability distribution function for determining a location of the mobile device at the venue based on measurements of signals from one or more signal sources detectable at the venue. Each of the one or more signal sources can includes an RF signal transmitter. In some implementations, the venue bounding box and each coarse tile bounding box is a three-dimensional box. 
     Location server  112  can receive ( 706 ), from the mobile device, an indication that a contextual condition for downloading location data of finer granularity, e.g., location fingerprint data, has been satisfied. The contextual condition can include whether a movement velocity of the mobile device satisfies a pedestrian walking speed threshold (e.g., Y kilometers per hour). Alternatively or additionally, the contextual condition can include whether an estimated location of the mobile device is in the venue bounding box. 
     In addition, location server  112  can receive, from the mobile device, a coarse tile identifier. The coarse tile identifier can be determined, by the mobile device, from the one or more coarse tile identifiers based on a probability that the mobile device is located in the tile bounding box of the corresponding coarse tile. 
     Based on the contextual information, location server  112  can provide ( 708 ) detailed location data corresponding to the coarse tile to the mobile device for determining a location of the mobile device in at least one of the one or more venues in the venue cluster. The detailed location data can include location fingerprints of the corresponding venue. The location fingerprints of a venue can include expected measurements of signals at multiple locations of the venue and variance of the expected measurements. The mobile device can use the location fingerprint data to determine a venue location of the mobile device at the corresponding venue. The venue location can be a location relative to the venue. 
     In some implementations, location server  112  can determine based on the location of the mobile device, that the mobile device will enter a venue (e.g., a subway station) in which data communications are subject to interference. Location server  112  can provide detailed location data corresponding to the venue to the mobile device before the mobile device enters the venue. 
     Exemplary System Architecture 
       FIG. 8  is a block diagram of an exemplary system architecture for implementing the features and operations of  FIGS. 1-7 . Other architectures are possible, including architectures with more or fewer components. In some implementations, architecture  800  includes one or more processors  802  (e.g., dual-core Intel® Xeon® Processors), one or more output devices  804  (e.g., LCD), one or more network interfaces  806 , one or more input devices  808  (e.g., mouse, keyboard, touch-sensitive display) and one or more computer-readable mediums  812  (e.g., RAM, ROM, SDRAM, hard disk, optical disk, flash memory, etc.). These components can exchange communications and data over one or more communication channels  810  (e.g., buses), which can utilize various hardware and software for facilitating the transfer of data and control signals between components. 
     The term “computer-readable medium” refers to any medium that participates in providing instructions to processor  802  for execution, including without limitation, non-volatile media (e.g., optical or magnetic disks), volatile media (e.g., memory) and transmission media. Transmission media includes, without limitation, coaxial cables, copper wire and fiber optics. 
     Computer-readable medium  812  can further include operating system  814  (e.g., Mac OS® server, Windows Server®), network communication module  816 , survey manager  820 , location manager  830 , and fingerprint manager  840 . Survey manager  820  can include instructions for causing processor  802  to perform functions of data harvesting unit  602  (of  FIG. 6 ), as well as functions of providing venue maps and sampling routes to sampling devices. Location manager  830  can include instructions for causing processor  802  to perform functions of location calculation unit  614 . Fingerprint manager  840  can include instructions for causing processor  802  to perform functions of fingerprint engine  626 . Operating system  814  can be multi-user, multiprocessing, multitasking, multithreading, real time, etc. Operating system  814  performs basic tasks, including but not limited to: recognizing input from and providing output to devices  806 ,  808 ; keeping track and managing files and directories on computer-readable mediums  812  (e.g., memory or a storage device); controlling peripheral devices; and managing traffic on the one or more communication channels  810 . Network communications module  816  includes various components for establishing and maintaining network connections (e.g., software for implementing communication protocols, such as TCP/IP, HTTP, etc.). 
     Architecture  800  can be implemented in a parallel processing or peer-to-peer infrastructure or on a single device with one or more processors. Software can include multiple software components or can be a single body of code. 
     The described features can be implemented advantageously in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. A computer program is a set of instructions that can be used, directly or indirectly, in a computer to perform a certain activity or bring about a certain result. A computer program can be written in any form of programming language (e.g., Objective-C, Java), including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, a browser-based web application, or other unit suitable for use in a computing environment. 
     Suitable processors for the execution of a program of instructions include, by way of example, both general and special purpose microprocessors, and the sole processor or one of multiple processors or cores, of any kind of computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memories for storing instructions and data. Generally, a computer will also include, or be operatively coupled to communicate with, one or more mass storage devices for storing data files; such devices include magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and optical disks. Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, ASICs (application-specific integrated circuits). 
     To provide for interaction with a user, the features can be implemented on a computer having a display device such as a CRT (cathode ray tube) or LCD (liquid crystal display) monitor for displaying information to the user and a keyboard and a pointing device such as a mouse or a trackball by which the user can provide input to the computer. 
     The features can be implemented in a computer system that includes a back-end component, such as a data server, or that includes a middleware component, such as an application server or an Internet server, or that includes a front-end component, such as a client computer having a graphical user interface or an Internet browser, or any combination of them. The components of the system can be connected by any form or medium of digital data communication such as a communication network. Examples of communication networks include, e.g., a LAN, a WAN, and the computers and networks forming the Internet. 
     The computer system can include clients and servers. A client and server are generally remote from each other and typically interact through a network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. 
     Exemplary Mobile Device Architecture 
       FIG. 9  is a block diagram of an exemplary architecture  900  for the mobile devices of  FIGS. 1-7 . A mobile device (e.g., mobile device  102 ) can include memory interface  902 , one or more data processors, image processors and/or processors  904 , and peripherals interface  906 . Memory interface  902 , one or more processors  904  and/or peripherals interface  906  can be separate components or can be integrated in one or more integrated circuits. Processors  904  can include application processors, baseband processors, and wireless processors. The various components in mobile device  102 , for example, can be coupled by one or more communication buses or signal lines. 
     Sensors, devices, and subsystems can be coupled to peripherals interface  906  to facilitate multiple functionalities. For example, motion sensor  910 , light sensor  912 , and proximity sensor  914  can be coupled to peripherals interface  906  to facilitate orientation, lighting, and proximity functions of the mobile device. Location processor  915  (e.g., GPS receiver) can be connected to peripherals interface  906  to provide geopositioning. Electronic magnetometer  916  (e.g., an integrated circuit chip) can also be connected to peripherals interface  906  to provide data that can be used to determine the direction of magnetic North. Thus, electronic magnetometer  916  can be used as an electronic compass. Motion sensor  910  can include one or more accelerometers configured to determine change of speed and direction of movement of the mobile device. Barometer  917  can include one or more devices connected to peripherals interface  906  and configured to measure pressure of atmosphere around the mobile device. 
     Camera subsystem  920  and an optical sensor  922 , e.g., a charged coupled device (CCD) or a complementary metal-oxide semiconductor (CMOS) optical sensor, can be utilized to facilitate camera functions, such as recording photographs and video clips. 
     Communication functions can be facilitated through one or more wireless communication subsystems  924 , which can include radio frequency receivers and transmitters and/or optical (e.g., infrared) receivers and transmitters. The specific design and implementation of the communication subsystem  924  can depend on the communication network(s) over which a mobile device is intended to operate. For example, a mobile device can include communication subsystems  924  designed to operate over a GSM network, a GPRS network, an EDGE network, a Wi-Fi™ or WiMax™ network, and a Bluetooth™ network. In particular, the wireless communication subsystems  924  can include hosting protocols such that the mobile device can be configured as a base station for other wireless devices. 
     Audio subsystem  926  can be coupled to a speaker  928  and a microphone  930  to facilitate voice-enabled functions, such as voice recognition, voice replication, digital recording, and telephony functions. Audio subsystem  926  can be configured to receive voice commands from the user. 
     I/O subsystem  940  can include touch surface controller  942  and/or other input controller(s)  944 . Touch surface controller  942  can be coupled to a touch surface  946  or pad. Touch surface  946  and touch surface controller  942  can, for example, detect contact and movement or break thereof using any of a plurality of touch sensitivity technologies, including but not limited to capacitive, resistive, infrared, and surface acoustic wave technologies, as well as other proximity sensor arrays or other elements for determining one or more points of contact with touch surface  946 . Touch surface  946  can include, for example, a touch screen. 
     Other input controller(s)  944  can be coupled to other input/control devices  948 , such as one or more buttons, rocker switches, thumb-wheel, infrared port, USB port, and/or a pointer device such as a stylus. The one or more buttons (not shown) can include an up/down button for volume control of speaker  928  and/or microphone  930 . 
     In one implementation, a pressing of the button for a first duration may disengage a lock of the touch surface  946 ; and a pressing of the button for a second duration that is longer than the first duration may turn power to mobile device  102  on or off. The user may be able to customize a functionality of one or more of the buttons. The touch surface  946  can, for example, also be used to implement virtual or soft buttons and/or a keyboard. 
     In some implementations, mobile device  102  can present recorded audio and/or video files, such as MP3, AAC, and MPEG files. In some implementations, mobile device  102  can include the functionality of an MP3 player. Mobile device  102  may, therefore, include a pin connector that is compatible with the iPod. Other input/output and control devices can also be used. 
     Memory interface  902  can be coupled to memory  950 . Memory  950  can include high-speed random access memory and/or non-volatile memory, such as one or more magnetic disk storage devices, one or more optical storage devices, and/or flash memory (e.g., NAND, NOR). Memory  950  can store operating system  952 , such as Darwin, RTXC, LINUX, UNIX, OS X, WINDOWS, or an embedded operating system such as VxWorks. Operating system  952  may include instructions for handling basic system services and for performing hardware dependent tasks. In some implementations, operating system  952  can include a kernel (e.g., UNIX kernel). 
     Memory  950  may also store communication instructions  954  to facilitate communicating with one or more additional devices, one or more computers and/or one or more servers. Memory  950  may include graphical user interface instructions  956  to facilitate graphic user interface processing; sensor processing instructions  958  to facilitate sensor-related processing and functions; phone instructions  960  to facilitate phone-related processes and functions; electronic messaging instructions  962  to facilitate electronic-messaging related processes and functions; web browsing instructions  964  to facilitate web browsing-related processes and functions; media processing instructions  966  to facilitate media processing-related processes and functions; GPS/Navigation instructions  968  to facilitate GPS and navigation-related processes and instructions; camera instructions  970  to facilitate camera-related processes and functions; magnetometer data  972  and calibration instructions  974  to facilitate magnetometer calibration. The memory  950  may also store other software instructions (not shown), such as security instructions, web video instructions to facilitate web video-related processes and functions, and/or web shopping instructions to facilitate web shopping-related processes and functions. In some implementations, the media processing instructions  966  are divided into audio processing instructions and video processing instructions to facilitate audio processing-related processes and functions and video processing-related processes and functions, respectively. An activation record and International Mobile Equipment Identity (IMEI) or similar hardware identifier can also be stored in memory  950 . Memory  950  can store location instructions  976  that, when executed, can cause processor  904  to perform operations of requesting tiered delivery of location data from location server  112 , determining a coarse location based on coarse location data received from location server  112 , and determining a detailed location based on the detailed location data received from location server  112 . 
     Each of the above identified instructions and applications can correspond to a set of instructions for performing one or more functions described above. These instructions need not be implemented as separate software programs, procedures, or modules. Memory  950  can include additional instructions or fewer instructions. Furthermore, various functions of the mobile device may be implemented in hardware and/or in software, including in one or more signal processing and/or application specific integrated circuits. 
     Exemplary Operating Environment 
       FIG. 10  is a block diagram of an exemplary network operating environment  1000  for the mobile devices of  FIGS. 1-7 . Mobile devices  1002   a  and  1002   b  can, for example, communicate over one or more wired and/or wireless networks  1010  in data communication. For example, a wireless network  1012 , e.g., a cellular network, can communicate with a wide area network (WAN)  1014 , such as the Internet, by use of a gateway  1016 . Likewise, an access device  1018 , such as an 802.11g wireless access point, can provide communication access to the wide area network  1014 . Each of mobile devices  1002   a  and  1002   b  can be mobile device  102  configured to survey a venue, or another mobile device requesting location services. 
     In some implementations, both voice and data communications can be established over wireless network  1012  and the access device  1018 . For example, mobile device  1002   a  can place and receive phone calls (e.g., using voice over Internet Protocol (VoIP) protocols), send and receive e-mail messages (e.g., using Post Office Protocol 3 (POP3)), and retrieve electronic documents and/or streams, such as web pages, photographs, and videos, over wireless network  1012 , gateway  1016 , and wide area network  1014  (e.g., using Transmission Control Protocol/Internet Protocol (TCP/IP) or User Datagram Protocol (UDP)). Likewise, in some implementations, the mobile device  1002   b  can place and receive phone calls, send and receive e-mail messages, and retrieve electronic documents over the access device  1018  and the wide area network  1014 . In some implementations, mobile device  1002   a  or  1002   b  can be physically connected to the access device  1018  using one or more cables and the access device  1018  can be a personal computer. In this configuration, mobile device  1002   a  or  1002   b  can be referred to as a “tethered” device. 
     Mobile devices  1002   a  and  1002   b  can also establish communications by other means. For example, wireless device  1002   a  can communicate with other wireless devices, e.g., other mobile devices, cell phones, etc., over the wireless network  1012 . Likewise, mobile devices  1002   a  and  1002   b  can establish peer-to-peer communications  1020 , e.g., a personal area network, by use of one or more communication subsystems, such as the Bluetooth™ communication devices. Other communication protocols and topologies can also be implemented. 
     The mobile device  1002   a  or  1002   b  can, for example, communicate with one or more services  1030 ,  1040 , and  1050  over the one or more wired and/or wireless networks. For example, one or more venue services  1030  can provide coarse location data to mobile devices  1002   a  and  1002   b . The coarse location data can include venue identifiers associated with venue maps. Survey service  1040  can receive survey data from mobile devices  1002   a  and  1002   b , and generating coarse location data and detailed location data for venues based on the survey data. Location service  1050  can provide the generating coarse location data and detailed location data to mobile devices  1002   a  and  1002   b  for determining locations at each venue. 
     Mobile device  1002   a  or  1002   b  can also access other data and content over the one or more wired and/or wireless networks. For example, content publishers, such as news sites, Really Simple Syndication (RSS) feeds, web sites, blogs, social networking sites, developer networks, etc., can be accessed by mobile device  1002   a  or  1002   b . Such access can be provided by invocation of a web browsing function or application (e.g., a browser) in response to a user touching, for example, a Web object. 
     A number of implementations of the invention have been described. Nevertheless, it will be understood that various modifications can be made without departing from the spirit and scope of the invention.

Metadata:
Filing Date: 20130131
Publication Date: 20150630
Grant Date: 20150630
Priority Date: 20130131
Inventors: MARTI LUKAS M.
MAYOR ROBERT
MA SHANNON M.
Assignee: APPLE INC
CPC Classifications: [{"code": "G01S5/02521", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04W4/33", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04W64/00", "inventive": true, "first": false, "tree": "[]"}, {"code": "G01S5/02521", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04W4/023", "inventive": true, "first": true, "tree": "[]"}, {"code": "G01S5/0236", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04W4/023", "inventive": true, "first": true, "tree": "[]"}, {"code": "H04W4/021", "inventive": true, "first": false, "tree": "[]"}, {"code": "G01S5/0236", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04W64/00", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04W4/021", "inventive": true, "first": false, "tree": "[]"}, {"code": "G01S5/0236", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04W64/00", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04W4/046", "inventive": false, "first": false, "tree": "[]"}, {"code": "G01S5/0252", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04W4/025", "inventive": true, "first": true, "tree": "[]"}, {"code": "H04W4/043", "inventive": false, "first": false, "tree": "[]"}]
Family ID: 50071744