# Patent

## Title
Location based services for RFID and sensor networks

## Abstract

Systems and methods for generating sensor tag locations expressed in a three-dimension global coordinate system from sensor tag locations expressed in three-dimensional local coordinate systems of mobile readers that read each tag and for updating the paths of each mobile reader are disclosed. In one embodiment, a method includes receiving sensor data from one or more mobile reader agents, receiving tag location data that describes the location of one or more sensor tags expressed in local coordinates of the subspace of the mobile reader agent that read the sensor tag, converting the tag location data into a global coordinate system that is common to all mobile reader agents, and updating one or more paths of one or more mobile reader agents to increase the coverage of reading tags in the subspace of the mobile reader agent.

## Background
CROSS-REFERENCE TO RELATED APPLICATIONS
The present application claims priority under 35 U.S.C. § 119(e) to U.S. Provisional Patent Application Ser. No. 62/152,713 entitled “Location Based Services for RFID and Sensor Networks”, filed Apr. 24, 2015, the disclosure of which is hereby incorporated by reference in its entirety.


FIELD OF THE INVENTION
The present invention relates generally to determining the location of radio-frequency identification tagged assets and more specifically to estimating location using location information collected from assets having sensors.
BACKGROUND
Today, passive radio-frequency identification (RFID) tags are widely used for real-time location systems (RTLS) in tracking goods, assets and people. An RTLS typically outputs the location of each sensor or RFID tag with three coordinates relative to a fixed known position of the RFID/sensor reader.
In a fixed reader infrastructure in indoor environments such as warehouses, distribution centers, or retail stores, the coordinates of each reader, excitation node and associated antennas are typically manually measured and individually input to the system by a human operator when initially configuring the system. RFID systems can also include mobile RFID readers. Mobile RFID readers can be handheld units operated by humans, robots, or drones equipped with an embedded RFID reader. In mobile applications, the position of the reader varies when the reader is moved for the purpose of covering different regions in a physical area.
SUMMARY OF THE INVENTION
Systems and methods for generating sensor tag locations expressed in a three-dimension global coordinate system from sensor tag locations expressed in three-dimensional local coordinate systems of mobile readers that read each tag and for updating the paths of each mobile reader are disclosed. In one embodiment, a method includes receiving sensor data from one or more mobile reader agents, receiving tag location data that describes the location of one or more sensor tags expressed in local coordinates of the subspace of the mobile reader agent that read the sensor tag, converting the tag location data into a global coordinate system that is common to all mobile reader agents, and updating one or more paths of one or more mobile reader agents to increase the coverage of reading tags in the subspace of the mobile reader agent.
In a further embodiment, sensor data includes information from an accelerometer, a magnetometer, a gyroscope, and the position of an antenna that are on-board a mobile reader agent.
In another embodiment, the one or more mobile reader agents are configured to roam distinct non-overlapping subspaces within a read area.
A still further embodiment includes receiving reference location data that is obtained from at least one anchor node, where the anchor node has a known location in global coordinates.
In still another embodiment, control of the mobile reader agent is provided via proportional integral derivative (PID) control.
In a yet further embodiment, updating one or more paths of one or more mobile reader agents to increase the coverage of reading tags in the subspace of the mobile reader agent includes receiving obstacle data concerning agents and people in the read area.
In yet another embodiment, converting the tag location data into a global coordinate system that is common to all mobile reader agents includes expressing the sensor data in quaternions and using quaternion algebra to rotate the matrix.
In a further embodiment again, updating one or more paths of one or more mobile reader agents to increase the coverage of reading tags in the subspace of the mobile reader agent includes computing a path for a mobile reader agent around obstacles that are expressed in the form: xobsi={xεX|Ai(xi)∩0≠Ø} and xobsij={xεX|Ai(xi)∩Aj(xj)≠Ø} where




  
    x
    obs
  
  =
  
    
      (
      
        
          ⋃
          
            i
            =
            1
          
          m
        
        ⁢
        
          x
          obs
          i
        
      
      )
    
    ⋃
    
      
        (
        
          
            ⋃
            
              
                i
                ≠
                j
              
              
                i
                ,
                j
              
            
          
          ⁢
          
            x
            obs
            ij
          
        
        )
      
      .
    
  




In another embodiment again, the tag location data that describes the location of one or more sensor tags expressed in local coordinates of the subspace of the mobile reader agent that read the sensor tag is expressed as a quaternion in the form: q=q0+q1i+q2j+q3k, where i, j, and k are imaginary numbers satisfying i2=j2=k2=ijk=−1 with conjugate q2=q0−q1i−q2j−q3k and |q|2=qqc.
In a further additional embodiment, converting the tag location data into a global coordinate system that is common to all mobile reader agents includes rotating the quaternion using a rotation matrix that is expressed as:




  
    R
    ⁡
    
      (
      
        q
        _
      
      )
    
  
  =
  
    
      [
      
        
          
            
              
                -
                
                  q
                  0
                  2
                
              
              +
              
                q
                1
                2
              
              -
              
                q
                2
                2
              
              -
              
                q
                3
                2
              
            
          
          
            
              2
              ⁢
              
                (
                
                  
                    
                      q
                      1
                    
                    ⁢
                    
                      q
                      2
                    
                  
                  -
                  
                    
                      q
                      0
                    
                    ⁢
                    
                      q
                      3
                    
                  
                
                )
              
            
          
          
            
              2
              ⁢
              
                (
                
                  
                    
                      q
                      1
                    
                    ⁢
                    
                      q
                      3
                    
                  
                  +
                  
                    
                      q
                      0
                    
                    ⁢
                    
                      q
                      2
                    
                  
                
                )
              
            
          
        
        
          
            
              2
              ⁢
              
                (
                
                  
                    
                      q
                      1
                    
                    ⁢
                    
                      q
                      2
                    
                  
                  +
                  
                    
                      q
                      0
                    
                    ⁢
                    
                      q
                      3
                    
                  
                
                )
              
            
          
          
            
              
                q
                0
                2
              
              -
              
                q
                1
                2
              
              +
              
                q
                2
                2
              
              -
              
                q
                3
                2
              
            
          
          
            
              2
              ⁢
              
                (
                
                  
                    
                      q
                      2
                    
                    ⁢
                    
                      q
                      3
                    
                  
                  -
                  
                    
                      q
                      0
                    
                    ⁢
                    
                      q
                      1
                    
                  
                
                )
              
            
          
        
        
          
            
              2
              ⁢
              
                (
                
                  
                    
                      q
                      1
                    
                    ⁢
                    
                      q
                      3
                    
                  
                  -
                  
                    
                      q
                      0
                    
                    ⁢
                    
                      q
                      2
                    
                  
                
                )
              
            
          
          
            
              2
              ⁢
              
                (
                
                  
                    
                      q
                      2
                    
                    ⁢
                    
                      q
                      3
                    
                  
                  +
                  
                    
                      q
                      0
                    
                    ⁢
                    
                      q
                      1
                    
                  
                
                )
              
            
          
          
            
              
                q
                0
                2
              
              -
              
                q
                1
                2
              
              -
              
                q
                2
                2
              
              +
              
                q
                3
                2
              
            
          
        
      
      ]
    
    .
  




In another additional embodiment, a sensor tag reader and location system for generating sensor tag locations expressed in a three-dimension global coordinate system from sensor tag locations expressed in three-dimensional local coordinate systems of mobile readers that read each tag and for updating the paths of each mobile reader includes a processor and memory that includes an inventory and agent control application, where the processor is configured by the inventory and agent control application to receive sensor data from one or more mobile reader agents, receive tag location data that describes the location of one or more sensor tags expressed in local coordinates of the subspace of the mobile reader agent that read the sensor tag, convert the tag location data into a global coordinate system that is common to all mobile reader agents, and update one or more paths of one or more mobile reader agents to increase the coverage of reading tags in the subspace of the mobile reader agent.
In a still yet further embodiment, sensor data includes information from an accelerometer, a magnetometer, a gyroscope, and the position of an antenna that are on-board a mobile reader agent.
In still yet another embodiment, the one or more mobile reader agents are configured to roam distinct non-overlapping subspaces within a read area.
In a still further embodiment again, the processor is further configured by the inventory and agent control application to receive reference location data that is obtained from at least one anchor node, where the anchor node has a known location in global coordinates.
In still another additional embodiment, control of the mobile reader agent is provided via proportional integral derivative (PID) control.
In still another embodiment again, the processor being configured to update one or more paths of one or more mobile reader agents to increase the coverage of reading tags in the subspace of the mobile reader agent includes the processor being configured to receive obstacle data concerning agents and people in the read area.
In a still further additional embodiment, the processor being configured to convert the tag location data into a global coordinate system that is common to all mobile reader agents includes the processor being configured to express the sensor data in quaternions and using quaternion algebra to rotate the matrix.
In a yet further embodiment again, the processor being configured to update one or more paths of one or more mobile reader agents to increase the coverage of reading tags in the subspace of the mobile reader agent includes the processor being configured to compute a path for a mobile reader agent around obstacles that are expressed in the form: xobsi={xεX|Ai(xi)∩0≠Ø} and xobsij={xεX|Ai(xi)∩Aj(xj)≠Ø} where




  
    x
    obs
  
  =
  
    
      (
      
        
          ⋃
          
            i
            =
            1
          
          m
        
        ⁢
        
          x
          obs
          i
        
      
      )
    
    ⋃
    
      
        (
        
          
            ⋃
            
              
                i
                ≠
                j
              
              
                i
                ,
                j
              
            
          
          ⁢
          
            x
            obs
            ij
          
        
        )
      
      .
    
  




In yet another embodiment again, the tag location data that describes the location of one or more sensor tags expressed in local coordinates of the subspace of the mobile reader agent that read the sensor tag is expressed as a quaternion in the form: q=q0+q1i +q2j+q3k, where i, j, and k are imaginary numbers satisfying i2=j2=k2=ijk=−1 with conjugate q2=q0−q1i−q2j−q3k and |q|2=qqc.
In a yet further additional embodiment, the processor being configured to convert the tag location data into a global coordinate system that is common to all mobile reader agents includes the processor being configured to rotate the quaternion using a rotation matrix that is expressed as:




  
    R
    ⁡
    
      (
      
        q
        _
      
      )
    
  
  =
  
    
      [
      
        
          
            
              
                -
                
                  q
                  0
                  2
                
              
              +
              
                q
                1
                2
              
              -
              
                q
                2
                2
              
              -
              
                q
                3
                2
              
            
          
          
            
              2
              ⁢
              
                (
                
                  
                    
                      q
                      1
                    
                    ⁢
                    
                      q
                      2
                    
                  
                  -
                  
                    
                      q
                      0
                    
                    ⁢
                    
                      q
                      3
                    
                  
                
                )
              
            
          
          
            
              2
              ⁢
              
                (
                
                  
                    
                      q
                      1
                    
                    ⁢
                    
                      q
                      3
                    
                  
                  +
                  
                    
                      q
                      
                        0
                        ⁢
                        
                          
                        
                      
                    
                    ⁢
                    
                      q
                      2
                    
                  
                
                )
              
            
          
        
        
          
            
              2
              ⁢
              
                (
                
                  
                    
                      q
                      1
                    
                    ⁢
                    
                      q
                      2
                    
                  
                  +
                  
                    
                      q
                      0
                    
                    ⁢
                    
                      q
                      3
                    
                  
                
                )
              
            
          
          
            
              
                q
                0
                2
              
              -
              
                q
                1
                2
              
              +
              
                q
                2
                2
              
              -
              
                q
                3
                2
              
            
          
          
            
              2
              ⁢
              
                (
                
                  
                    
                      q
                      2
                    
                    ⁢
                    
                      q
                      3
                    
                  
                  -
                  
                    
                      q
                      0
                    
                    ⁢
                    
                      q
                      1
                    
                  
                
                )
              
            
          
        
        
          
            
              2
              ⁢
              
                (
                
                  
                    
                      q
                      1
                    
                    ⁢
                    
                      q
                      3
                    
                  
                  -
                  
                    
                      q
                      0
                    
                    ⁢
                    
                      q
                      2
                    
                  
                
                )
              
            
          
          
            
              2
              ⁢
              
                (
                
                  
                    
                      q
                      2
                    
                    ⁢
                    
                      q
                      3
                    
                  
                  +
                  
                    
                      q
                      0
                    
                    ⁢
                    
                      q
                      1
                    
                  
                
                )
              
            
          
          
            
              
                q
                0
                2
              
              -
              
                q
                1
                2
              
              -
              
                q
                2
                2
              
              +
              
                q
                3
                2
              
            
          
        
      
      ]
    
    .
  







BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a system level overview illustrating an RFID reader system in accordance with embodiments of the invention.
FIG. 2 is a system level overview illustrating an RFID location estimation system in accordance with embodiments of the invention.
FIG. 3 is a system level overview illustrating an RFID location estimation system that includes mobile RFID reader systems in accordance with embodiments of the invention.
FIGS. 4A and 4B conceptually illustrate systems for performing location estimation in accordance with embodiments of the invention.
FIG. 5 is a flow chart illustrating a process for generating location estimates in accordance with embodiments of the invention.
FIG. 6 illustrates various location information sources that can generate a terrestrial location estimate in accordance with embodiments of the invention.
FIG. 7 conceptually illustrates a data conversion engine for converting sensor input to common scale and unit in accordance with embodiments of the invention.
FIG. 8 conceptually illustrates a digital filter bank for sampling rate conversion of location information signals in accordance with embodiments of the invention.
FIG. 9 conceptually illustrates a cascaded integrated comb (CIC) filter preceding a finite impulse response (FIR) filter for converting sampling rates in accordance with embodiments of the invention.
FIGS. 10 and 11 are graphs illustrating the response of a cascaded CIC and FIR filter in accordance with embodiments of the invention.
FIG. 12 conceptually illustrates a position tracking engine in accordance with embodiments of the invention.
FIG. 13 conceptually illustrates an Extended Kalman Filter (EKF) for drift estimation.
FIG. 14 is a graph illustrating an error signal for a kinematics and scaling block in accordance with embodiments of the invention.
FIG. 15A conceptually illustrates hexagonal cell tessellation of a sphere in accordance with embodiments of the invention.
FIG. 15B conceptually illustrates triangular cell tessellation of a sphere in accordance with embodiments of the invention.
FIG. 16A conceptually illustrates geodesic cones radiating from the center of the sphere (earth) in accordance with embodiments of the invention.
FIG. 16B conceptually illustrates a location estimate on a location grid in accordance with embodiments of the invention.
FIG. 17 conceptually illustrates a vector representing a previous location estimate, a vector representing a new location estimate, and a correction vector in accordance with embodiments of the invention.
FIGS. 18A, 18B, 18C, and 18D conceptually illustrate different options for generating a location estimate in accordance with various embodiments of the invention.
FIG. 19A conceptually illustrates a state diagram for a hidden Markov model approximation in accordance with several embodiments of the invention.
FIG. 19B illustrates a reduced two state Markov machine matrix in accordance with embodiments of the invention.
FIGS. 20A, 20B, 20C, and 20D conceptually illustrate different systems for generating location estimates from location information sources in accordance with various embodiments of the invention.
FIGS. 21-27 are graphs illustrating the outcomes of simulations using systems in accordance with embodiments of the invention.
FIG. 28 is a flow chart illustrating a process for determining locations of tags and controlling mobile readers in accordance with embodiments of the invention.
FIG. 29A is a diagram illustrating how a read area can be divided into subspaces for different mobile readers in accordance with embodiments of the invention.
FIG. 29B is a diagram illustrating information that can be included in sensor data collected by a mobile agent in accordance with embodiments of the invention.
FIG. 30 is a system diagram conceptually illustrating a system for data fusion and data mining in generating a tag location in a global coordinate system and controlling mobile agents in accordance with embodiments of the invention.
FIG. 31 is a more detailed system diagram conceptually illustrating a system for data fusion in generating a tag location and controlling mobile agents in accordance with embodiments of the invention.
FIG. 32 is a diagram illustrating experimental results of four mobile readers roaming four different subspaces within a read area in accordance with embodiments of the invention.
FIG. 33 is a diagram illustrating experimental results of a mobile reader following a path in reading tags in a read area in accordance with embodiments of the invention.



DETAILED DISCLOSURE OF THE INVENTION
Systems and methods for establishing geographic location information in RFID and sensor networks in accordance with embodiments of the invention are disclosed. In many indoor environments, global positioning system (GPS) signals are not available due to fundamental limitations of GPS signal propagation through building walls and ceilings. Measuring accurate location is a fundamental challenge in indoor environments. In many embodiments, a geographic information system combines multiple location information sources to determine a position of an RFID reader system. The geographic position of the reader system can be used to establish the geographic location of each asset identified by the RFID reader system. Location information streams can include, but are not limited to, global positioning system (GPS), sensors, passive or active radio frequency identification (RFID) tags, and wide area location data and real-time kinematics services. In many embodiments of the invention, the assets are equipped with sensors that generate location information and/or RFID tags.
An RTLS system output vector for the location of each asset can be expressed as the measured coordinates (x, y, z)ε, the three dimensional Euclidean space representation of longitude, latitude and elevation. In many embodiments of the invention, a location fusion engine performs location estimates by combining external reference location data streams with the measured locations (x, y, z) to generate representations of terrestrial geographic coordinates of each tagged RFID/sensor unit read by the reader system. A location fusion engine may be a component of the RFID reader system or may be an auxiliary system.
With the emergence of wide area location services, it is envisioned that each reader and fixed antenna can be equipped with a device to listen and use the wide area location radio or terrestrial service to establish its own location and report it to the reader system. With the emergence of a wide array of new sensors such as gyroscopes, accelerometers and pressure sensors, it is advantageous to further leverage the information from all sensor types to more accurately establish and track the location of an object, provided that the object is using an RFID tag or a sensor that is available to be queried with its identification code. The RTLS system can subsequently measure the characteristic of the received signal from each tagged asset and estimate a relative position of each asset to the position of the reader system, with the reader system being at the center of the coordinate system.
Geographic location estimation systems in accordance with many embodiments of the invention are able to eliminate stray reads in localization of RFID tags. An unintended consequence of reading sensors/RFID tags in an area can be reading other tags in the vicinity of the reader system that are not desired. With accurate measurement of the location of each reader/excitation point, it is possible to reject stray reads.
In several embodiments of the invention, a geographic location estimation system can transform coordinates to Universal Transverse Mercator (UTM) or Universal Polar Stereographic coordinates and make geodetic height available for use by geographic information systems (GIS).
In additional embodiments of the invention, a geographic location estimation system provides real-time availability of asset location for a user interface on a GIS system that can be used in compliance with specific standards to deliver location aware applications and for data mining and analytics for supply chain management, worker safety and a wide variety of use cases using sensor and RFID technology for location tracking.
Mobile readers in accordance with embodiments of the invention can include miniaturized robotics and drone technology for taking inventory of RFID tagged goods and monitoring sensor fields. A class of mobile readers that are semi-autonomous vehicles, such as, but not limited to, drones and robots, may be referred to as “agents.” Several embodiments of the invention provide the ability to track multiple “agents” (e.g., drones or robots) and navigate them in fairly tight spacing in environments such as a retail store or factory while reading and locating tags. Potential applications in accordance with embodiments of the invention provide autonomous navigation of these agents safely and accurately in real-life deployment. Many embodiments include reliable wireless links to communicate with each agent device. The overall network of these agent devices as sensors in accordance with several embodiments of the invention is illustrated in FIG. 1.
Many embodiments utilize an accurate position for each agent in three-dimensional Euclidean space, namely longitude, latitude and elevation/attitude. In the application of inventory counting using passive RFID, reads of RFID tags may be more effective when the radiating antenna is able to tilt and move to align the bore-sight of the antenna with the target area to be inventoried. In several embodiments, each agent is able to move freely in open space in all three dimensions to reach various locations and heights to take proper inventory and position of all the tagged items. Further embodiments include the assistance of multi-modal sensors, such as way-points or anchors having known locations. These can be via visual cues such as (but not limited to) optical LEDs, two dimensional bar codes or wireless bluetooth or WiFi devices that broadcast their position.
The estimation of attitude of each sensor and agent presents a particular challenge in-indoor applications, even when different types of sensors, such as pressure, magnetometer and others are used. For example pressure sensors can be highly noisy in the presence of an air conditioning system.
Many embodiments of the invention include “anchor nodes” as discussed earlier with known relative attitudes between pairs of anchors. These can be used in retrieving or knowing the reference position from an Euclidean distance matrix even if it is incomplete and noisy. Principal applications can include motion capture and vectorial waves measurement. In other embodiments, any of a variety of processes and/or combinations of processes can be utilized as appropriate to the requirements of a given application.
Navigation of each agent can assume a known kinematics, position vector for center of gravity and antenna elevation of each agent in the local coordinate system of the agent itself, which is communicated to the central processing unit or server. A central server, such as the server shown in FIG. 1, can process this data and perform path planning across the physical area to complete the underlying task in an efficient and/or optimal fashion, for example finding the shortest time (or a path that satisfies a time and/or other criterion) for multiple drones to fly through a retail store and perform a “cycle count” across one or many floors, while minimizing contention or collision.
In several embodiments, a process utilizing quaternion algebra is adopted for three-dimensional positioning of the radiating antenna of agents and to enable matrix algebra for solving the underlying problem to conveniently represent rotations and orientations in three dimensions. Quaternions encode spatial rotational information with representation in four numbers, representing a point relative to the origin in .
Additional embodiments can include the polarization dimension of each agent's radiating antenna. The approach can be extended by employing Grassmann algebra to support additional dimensions beyond three dimensions. Processes that utilize this mathematical framework in the representation of spatial information can enable translations of different local coordinate systems into a global coordinate system by simple rotations with quaternion algebra or tensor metrics when Grassmann algebra is adopted.
Systems for Determining Geographic Location Information
Geographic location estimation systems in accordance with many embodiments of the invention may include hardware and appropriate software or other embedded instructions that configure each piece of hardware to execute the instructions. Basic systems for reading RFID tags include at least an RFID reader system and RFID tags that may be attached to assets. A system for reading RFID tags that may be utilized in accordance with an embodiment of the invention is illustrated in FIG. 1. The system 100 includes at least one RFID reader system 110 and at least one RFID tag 112. The system may include RFID reader systems that are fixed 110 (in a static location) or mobile (moving or in motion at least part of the time). Mobile RFID reader systems may include, but are not limited to, a vehicle based reader 114, handheld reader 116 (such as on a mobile device or phone), robot 118, and/or drone 120.
More advanced systems may be configured to collect location information and generate location estimates. A geographic location estimation system for generating location estimates in accordance with embodiments of the invention is illustrated in FIG. 2. The geographic location estimation system 200 may include a location fusion engine 210, one or more RFID reader systems 212, 214, 216, one or more RFID location databases 218, and one or more RFID tags 220. RFID tags 220 may be attached to fixed or mobile assets. One or more elements of the system 200 such as antenna 224, reader 212, and/or RFID tag 220 may be configured to obtain reference location data indicative of its position to a very high precision. In several embodiments, reference location data can be obtained using a real time location system (RTLS) receiver. In some embodiments, RTLS receivers can obtain reference location data that provides location information to an accuracy of several centimeters or even several millimeters and/or within an indoor environment where global positioning system (GPS) signals may be unavailable. As will be discussed further below, RFID reader systems may also be configured to obtain the locations of RFID tags using the backscattered signals received from the tags. This location information generated from the backscattered signals may be processed with reference location data to refine locations of tags and/or other assets to a higher accuracy.
The location fusion engine 210, RFID reader system(s) 212, 214, 216, and RFID location database 218 may communicate over a local or wide area network such as the Internet 222. In some embodiments, the location database 218 may be local to the location fusion engine 210 and have direct lines of communication. The location fusion engine 210 may be configured by a location fusion application stored in memory to receive geographic information from RFID reader system(s) and/or other sensors that generate geographic information and to generate location estimates for one or more RFID reader system(s) and/or assets using the geographic information. Processes for generating location estimates in accordance with embodiments of the invention are discussed further below.
RFID reader systems may be fixed 216 (in a static location) or mobile 214 (moving or in motion at least part of the time). RFID reader systems may include one or more antennas 224. In some embodiments of the invention, at least one reader system both transmits RFID tag interrogation signals and receives backscattered signals transmitted from RFID tags in response to the interrogation signals. In other embodiments, at least one RFID reader system is implemented in a distributed architecture having a reader 212 in communication with one or more remote exciters 226. In several such embodiments, one or more exciters 226 are provided with an interrogation signal or information which can be used to generate an interrogation signal. The exciter(s) 226 illuminates its interrogation space with the interrogation signal(s) and one or more RFID readers 212 receive backscattered signals transmitted from RFID tags in response to the interrogation signal(s). In still additional embodiments, readers and/or exciters utilize multiple antennas, where each of the antennas may transmit, receive, or both transmit and receive. In various embodiments where a reader system both transmits and receives signals or where an exciter transmits signals and a reader receives signals as discussed above, one or more received signals may be utilized to determine the location of an RFID tag that transmitted the signal. Location can be determined from information such as, but not limited to, range/distance of an RFID tag to a transmitting antenna calculated from phase differences in signals backscattered from signals having different frequencies, direction of arrival of one or more signals, and/or other information.
RFID reader systems that may be utilized in accordance with embodiments of the invention to transmit and receive signals from RFID tags are disclosed in U.S. Pat. Nos. 8,395,482, 8,680,970, and U.S. Patent Publication No. 2014/0292494 entitled RFID Systems Using Distributed Exciter Network, U.S. Pat. No. 8,400,271 entitled RFID receiver, U.S. Pat. No. 8,941,472 entitled Methods for Recovering RFID Data Based Upon Probability Using an RFID Receiver, and U.S. Pat. Nos. 8,768,248 and 9,014,635 entitled RFID Beam Forming System, the relevant disclosure from which are hereby incorporated by reference in their entireties. RFID reader systems that may be utilized to determine locations of RFID tags using received signals in accordance with embodiments of the invention are disclosed in U.S. Pat. Nos. 8,072,311, 8,629,762, and U.S. Patent Publication No. 2014/0203914 entitled Radio Frequency Identification Tag Location Estimation and Tracking System and Method, the relevant disclosures from which are hereby incorporated by reference in their entireties.
In several embodiments of the invention, mobile readers are installed on handheld devices and/or vehicles. An RFID reader system including mobile readers in accordance with embodiments of the invention is illustrated in FIG. 3. The RFID reader system 300 includes a location fusion engine 310, mobile phone RFID reader 312, automobile based RFID reader 314, airplane based RFID reader 316, and one or more RFID location databases 318. The location fusion engine 310, RFID readers 312, 314, 316, and one or more RFID location databases 318 may communicate over a local or wide area network such as the Internet 320. In some embodiments, the location database 318 may be local to the location fusion engine 310 and have direct lines of communication. As in the system illustrated in FIG. 2 above, one or more elements, such as readers, RFID tags, or other assets may be equipped with RTLS receivers.
FIGS. 4A and 4B conceptually illustrate systems for performing location estimation in accordance with embodiments of the invention. Location fusion engine 400 illustrated in FIG. 4A receives at least one external reference location data stream and RFID location data and generates updated RFID location data. Location fusion engine 410 illustrated in FIG. 4B similarly receives at least one external location data stream and a set of initial coordinates, generates an output location estimate, updates 420 RFID tag locations and enters the updated locations in RFID location database 430. Processes for updating location data in accordance with various embodiments of the invention are discussed below.
Although geographic location estimation systems including specific hardware and software in accordance with several embodiments of the invention are discussed above, one skilled in the art will recognize that any of a variety of hardware and software may be utilized for collecting and processing location information in accordance with embodiments of the invention.
Processes for Determining Geographic Location Information
In many embodiments of the invention, a geographic location estimation system includes a location fusion engine configured to perform a process to collect geographic location information, determine initial location estimates, and refine the location estimates. In several embodiments, a geographic location estimation system can determine positioning data for RFID tagged assets and refine the position using a location fusion engine. In this way, some embodiments of the invention enable the geographical location error for each asset to be bounded by the error of the RTLS system(s) used in locating each asset. A process for generating location estimates in accordance with embodiments of the invention is illustrated in FIG. 5.
The process 500 includes receiving (510) location information concerning at least one asset from sources of location information. Different types of sources and harmonizing the information from the sources are discussed in greater detail further below. As will be discussed further below, location information can be expressed as a vector for each location.
The location information can be translated or converted (512) into a common format. As will be discussed in great detail further below, location information of assets may be acquired at different sampling rates, and/or be represented in different measurement units and/or coordinate systems. To facilitate processing, the pieces of location information for different assets may be translated into a common format.
The location fusion engine can utilize the location information to generate (514) an estimated location of the RFID system and refine (516) the locations of at least one asset. RFID reader systems that may be utilized to determine locations of RFID tags using received signals in accordance with embodiments of the invention are disclosed in U.S. Pat. Nos. 8,072,311, 8,629,762, and U.S. Patent Publication No. 2014/0203914 entitled Radio Frequency Identification Tag Location Estimation and Tracking System and Method, incorporated by reference further above. As discussed further above, reference location data may precisely identify the locations of antennas, readers, tags, and/or other assets to a high degree of accuracy in many embodiments of the invention. This enables location information that may be less accurate (or with greater error or deviation), such as those obtained that may be obtained by readers using backscattered signals from tags, to be refined to be more precisely located in three-dimensions, particularly when using mobile reader infrastructure where the location of antennas may otherwise be unknown or known with low precision. Techniques such as those discussed below may be utilized to refine location information using reference location data. Although a specific process for generating geographic location information is described above, one skilled in the art will recognize that any of a variety of processes may be utilized in accordance with embodiments of the invention. Various techniques for generating location estimates using statistical models in accordance with embodiments of the invention are discussed further below.
Location Fusion
Accurately determining the location of an asset can be difficult when GPS signals are not available or when the precision of available GPS signals is not satisfactory. In many embodiments of the invention, additional measurement sources can be employed to enhance and/or assist in establishing the location of an asset. Composite location information can be formed using public or private infrastructure that continuously broadcasts location information over a wide area in urban and rural areas, in addition to multimodal sensor sources such as, but not limited to: wide area wireless radio network for location systems; location information from WIFI or cellular networks; pressure sensors to measure elevation; measurement from a gyroscope for measuring orientation via angular measurements; accelerometer to track velocity and acceleration; and compass (magnetometer) to establish heading and direction in reference to the North Pole.
FIG. 6 illustrates various location information sources that can generate a terrestrial location estimate in accordance with various embodiments of the invention. Sources can include, but are not limited to, GPS, Wi-Fi, cellular network information, and/or wide area location services. Sources such as gyroscopes, accelerometers, and compasses that generate “motion” type data or data regarding movement, which may involve tracking, are discussed further below. One skilled in the art will recognize that various other information sources can be used to supplement location information as appropriate to any particular application in accordance with embodiments of the invention.
Measurements representing location information received by a location fusion engine can be modeled by a random vector rnεΩ={rn:rnε,nε} of size k which is the number of sources providing location information to the system and where n is time index. The vector may be processed and translated into common absolute coordinate units (x,y,z), and the vector measurement can be denoted as:

un=(un1un2 . . . unj)

where each element of the vector embeds a “coordinate” vector, that is





  
    
      u
      n
      j
    
    =
    
      (
      
        
          
            
              x
              j
            
          
        
        
          
            
              y
              j
            
          
        
        
          
            
              z
              j
            
          
        
      
      )
    
  
  ,




x denotes the longitude, y the latitude, and z the elevation and the index j the j-th sensor. The location for each asset can be denoted as the vector:

vn=(vn1vn2 . . . vnQ), with





  
    v
    n
    j
  
  =
  
    
      (
      
        
          
            
              x
              j
            
          
        
        
          
            
              y
              j
            
          
        
        
          
            
              z
              j
            
          
        
      
      )
    
    
      Ω
      =
      
        {
        
          
            
              
                r
                n
              
              ⁢
              
                :
              
              ⁢
              
                r
                n
              
            
            ∈
            
              
            
            ⁢
                      
          ,
          
            
          
          ⁢
          
            n
            ∈
            Z
          
        
        }
      
    
  




Further, {Ω, F, P) can be defined, where g denotes the σ-algebra induced over Ω, P denotes the probability measure on F, and Q represents the number of assets equipped with sensors within the field of vision or range of the reader or excitation node.
Sensor Signal Reconstruction Using Filter Banks
In many embodiments of the invention, location information received from sensors may have been sampled at different rates and/or be represented in different measurement units and/or coordinate systems.
In order to accommodate a wide choice of sensor data streams from different sensor types ranging from GPS to accelerometer to WIFI and Bluetooth measurements, a geographic location estimation system can be configured to translate and equalize the observed value from each sensor type. That is, each element of vector r may be interpolated into a common sampling rate, which is at least twice the Nyquist rate with respect to the sensor stream with the highest update rate. Sensor bandwidth can vary from different types and may operate in polled mode and observed at constant blink rate. WAN location services bandwidth is typically a network feature choice with trade-off between cost and availability. Due to variability of data streams from each sensor in terms of bandwidth and measurement type, all the sensor streams may also be scaled and converted to a common location measurement unit (e.g. cm, feet) and mapped to a representation in longitude, latitude and elevation. A data conversion engine for converting sensor input to common scale and unit in accordance with embodiments of the invention in FIG. 7. The data conversion engine 710 receives location information from Wi-Fi, GPS, cellular, and/or wide area location estimation sensors and provides converted location information to location fusion engine 720.
In many embodiments of the invention, for synchronous sensor streams, the sampling rate conversion can be performed using a digital filter bank as illustrated in FIG. 8. It can assumed that each element of the vector r is mutually independent as the measurement from one sensor type or location service is typically independent from the measurement from another source, that is, ri∩rj=Ø∀i≠j, i,jεZ. This observation allows each sensor stream to be treated independently with a single chain of digital filters.
In several embodiments, a computationally efficient and flexible option to support a variety of sensor update rates by different sensor types is possible by employing a cascaded integrated comb (CIC) filter preceding a finite impulse response (FIR) filter as illustrated in FIG. 9. The overall transfer function of the CIC filter is




  
    
      H
      CIC
    
    ⁡
    
      (
      z
      )
    
  
  =
  
    
      
        
          H
          I
          N
        
        ⁡
        
          (
          z
          )
        
      
      ⁢
      
        
          H
          C
          N
        
        ⁡
        
          (
          z
          )
        
      
    
    =
    
      
        
          
            (
            
              1
              -
              
                z
                
                  -
                  D
                
              
            
            )
          
          N
        
        
          
            (
            
              1
              -
              
                z
                
                  -
                  1
                
              
            
            )
          
          N
        
      
      =
      
        
          [
          
            
              ∑
              
                k
                =
                0
              
              
                D
                -
                1
              
            
            ⁢
            
              z
              
                -
                k
              
            
          
          ]
        
        N
      
    
  




where the overall transfer function is Hsysi(z)=HCICi(z)HFIRi(z).

The CIC filter may be utilized to perform interpolation of factor Li and the FIR filter utilized to eliminate any underlying images from the CIC filter. Interpolation and decimation factors Li,Mi for the i-th sensor stream can be chosen for the ratio FSi,Li/Mi to match the desired sampling frequency for the location fusion engine. In the example discussed above, the overall response of the cascaded CIC and FIR filter has been found to provide better than −100 dB out-of-band attenuation as illustrated in the graphs in FIGS. 10 and 11.
In several embodiments of the invention, one or more sensors generate “motion” type sensor data such as, but not limited to, a gyro, compass, and/or accelerometer. Translating such data to a location vector may involve preprocessing these signals using a position tracking engine as illustrated in FIG. 7. A more detailed block diagram of a position tracking engine in accordance with embodiments of the invention is illustrated in FIG. 12. The position tracking engine 1200 can utilize measurements from the accelerometer and compass when processing the feedback signal from the gyroscope's measurement. Further embodiments may employ an Extended Kalman Filter (EKF) for drift estimation as shown in FIG. 13. The tracking algorithm adapts the position input to the location fusion engine by updating the previous position estimate with new measurement from the output of the block referred to as kinematics and scaling block. This initial condition (IC) value can be the last “waypoint” used for location measurement. The initial condition at system reset or boot time can be set by the relative position of the reader to a known waypoint. This setting establishes the origin of the coordinate system used by the reader system for measuring the coordinates of each asset. The design and implementation of a kinematics and scaling block in accordance with embodiments of the invention such as the one shown in FIG. 12 for handling an error signal such as the signal shown in FIG. 14 from the gyro can be appreciated by one skilled in the art.
Location Fusion Engine and Space Quantization
The optimal maximum aposterior (MAP) location estimate for all of the assets based on the observed vector u can be expressed as:




  
    v
    ^
  
  =
  
    
      
        Max
        
          v
          ∈
          Ω
        
      
      
        -
        1
      
    
    ⁢
    
      Pr
      ⁡
      
        (
        
          v
          ❘
          u
        
        )
      
    
  




This optimization problem can be solved by initially quantizing the surface of the sphere (i.e. earth) representing possible locations of the reader within a subset of the surface of the sphere. In accordance with various embodiments of the invention, the surface of the sphere can be quantized with different forms of tessellations using equally sized cells such as hexagonal cells as shown in FIG. 15A or triangular cells as shown in FIG. 15B. One skilled in the art will recognize that cells of various shapes may be utilized in accordance with embodiments of the invention as appropriate to a specific application. The tessellation can be seen as turning the sphere into a lattice with i-th region being represented as Ai. The probability(v|u) can be computed as:

Pr(vεAi|u)

This corresponds to the probability of the location estimate to belong to region Ai (for example triangle complex chain), where Ai forms the proper tessellation on Ω. The two dimensional surface of the sphere can be expressed as S2=Ui=1NAi. The size of the lattice N can be a variable chosen to satisfy the desired location accuracy for a specific application. In various embodiments, this parameter can be set at configuration time or adapted in real-time, if there is a desire to find both coarse and fine estimates of the location over varying periods of time. A number of approaches to compute the probability of the location estimate belonging to region A as defined above and estimate the location of the reader will be discussed in greater detail further below. It can be noted that in real-world circumstances, location estimation processes may be successful using only a very small subset of cells of the sphere from sensor data for location finding and/or correction. The ambiguity in location position after the initial condition is set is typically limited to a base of a cone from the center of the earth to the region of interest, which in an indoor environment specifically is limited to a physical area that is at most bounded by a square kilometer for the present generation of active and passive sensors. Thus, computing the probability of the location estimate belonging to a region may be simplified to computing the probabilities associated with only the subsets within the region of interest, instead of the whole surface of the sphere. FIG. 16A conceptually illustrates geodesic cones radiating from the center of the sphere (earth) to the surface and FIG. 16B conceptually illustrates a location estimate E[x|y] on location grid (x,y) with Pr(x|y).
Once the location fusion engine determines the solution to the probability of the location estimate belonging to region Ai and output the final estimate of the location of the reader system, the location of any or every asset can be updated and corrected. Without loss of generality, spherical coordinates can be used. Let x′, y′ and z′ denote the corrected coordinates from the previous location estimate (x,y,z) maintained by the LIE, as follows:
x=r sin θ cos φ
y=r sin θ sin φ
z=r cos θ
x′=x=r sin θ cos φ
y′=y cos α−z sin α=(r sin θ sin φ)cos α−(r cos θ) sin α
z′=y sin α+z cos α=(r sin θ sin φ)sin α+(r cos θ) cos α
r′=sqrt(x′2+y′2+z′2)=r
θ′=cos−1(z′/r′)=cos−1(sin θ sin φ sin α+sin θ sin α)
φ′=tan−1(y′/x′)=tan−1(tan φ cos α−cotan θ sin α sec φ)
FIG. 16B conceptually illustrates a location estimate on an x,y grid. FIG. 17 conceptually illustrates a vector representing a previous location estimate, a vector representing a new location estimate, and a correction vector from the previous location to the new location.
Location Estimation
The output location estimate {circumflex over (V)} can be calculated using a number of options for different use cases. The vector sequence {un } can be assumed to be a Markov process. Then, any of a number techniques can be applied in accordance with embodiments of the invention, such as, but not limited to, a hidden Markov model, particle filter, and/or kernel based machine learning in generating a location estimate. The different options in accordance with various embodiments of the invention are conceptually illustrated in FIGS. 18A, 18B, 18C, and 18D.
Hidden Markov Model
In several embodiments, a hidden Markov model (HMM) is assumed around the location of the reader system. By way of example, for a first order approximation for a two dimensional grid, a state diagram for the HMM in accordance with several embodiments of the invention is shown in FIG. 19A. In this simplified model the location can only change to neighboring cell (triangle). The state of the HMM model is denoted as Si. At each step the transition probability from an state to another is estimated by estimating the probability Pr(Si−>Si+1). A reduced two state Markov machine matrix in accordance with embodiments of the invention is illustrated in FIG. 19B.
Particle Filter
A robust method for location estimation and tracking based on receiving multiple observations is particle filtering. Monte Carlo methods are a class of computational algorithms that rely on repeated random sampling to compute their results. The sequential importance sampling (SIS) algorithm is a Monte Carlo (MC) method that forms the basis for many sequential MC filters developed over the past two decades. This sequential MC (SMC) approach is known variously as bootstrap filtering, the condensation algorithm, and particle filtering. Particle filters are advanced model estimation techniques that can be based on simulation.
A recursive Bayesian filter can be implemented by MC simulations. The required posterior density function can be represented by a set of random samples with associated weights and estimates can be computed based on these samples and weights. As the number of samples becomes very large, this MC characterization becomes an equivalent representation to the usual functional description of the posterior probability density function (pdf), and the SIS filter approaches the optimal Bayesian estimate. As mentioned they are typically used to estimate Bayesian models and are the sequential namely on-line analogue of Markov chain Monte Carlo (MCMC) batch methods and are often similar to importance sampling methods. If well designed, particle filters can be much faster than MCMC. They are often an alternative to the Extended Kalman filter (EKF) or Unscented Kalman filter (UKF) with the advantage that, with sufficient samples, they approach the Bayesian optimal estimate, so they can be made more accurate than the EKF or UKF. The approaches can also be combined by using a version of the Kalman filter as a proposal distribution for the particle filter.
Consider a nonlinear state space model that satisfies the Hidden Markov model (HMM) that was described further above.
For HMM the assumptions are:
The state sequence xk, k=0, 1, 2, . . . is a Markov process. That means p(xk|xk−1,past)=p(xk|xk−1). Past means the event {x0:k−2}.
The observations yk, k=1, 2 , . . . are conditionally independent given the state at time index k. This means p(yk|xk, future, past)=p(yk|xk). Future means {xk+1:T, yk+1:T}, and past means {x0:k−1, y1:k}.
Thus assume xk and the observations yk can be modeled in this form:
x0, x1, . . . xk is a first order Markov process such that

xk|xk−1 ̃pxk|xk−1(x|xk−1)

and with an initial distribution p(x0).
The observations y1, y2, . . . , yk are conditionally independent provided that x0, x1, . . . xk are known. In other words, each yk only depends on xk 

yk|xk ̃yk|xk(y|xk)

One example form of this could be:

xk=fk(xk−1, vk−1)

yk=hk(xk,nk)

Or another example form of this could be:

xk=fk(xk−1)+vk−1 

yk=hk(xk)+nk 

where both vk and nk are mutually independent and identically distributed sequences with known probability density functions and f(.) and h(.) are known functions.
These two equations can be viewed as state space equations and look similar to the state space equations for the Kalman filter. If the functions f(.) and h(.) were linear, and if both vk and nk were Gaussian, the Kalman filter finds the exact Bayesian filtering distribution. If not, Kalman filter based methods are a first-order approximation. Particle filters are also an approximation, but with enough particles can be much more accurate.
Particle methods, like all sampling-based approaches (e.g., MCMC), generate a set of samples that approximate the filtering distribution p(xk|y1,y2, . . . , yk). So, with L samples, expectations with respect to the filtering distribution can be approximated by




  
    ∫
    
      
        f
        ⁡
        
          (
          
            x
            k
          
          )
        
      
      ⁢
      
        p
        ⁡
        
          (
          
            
              
                x
                k
              
              ❘
              
                y
                1
              
            
            ,
            
              y
              2
            
            ,
            ...
            ⁢
            
              
            
            ,
            
              y
              k
            
          
          )
        
      
      ⁢
      
        dx
        k
      
    
  
  ≈
  
    
      1
      L
    
    ⁢
    
      
        ∑
        
          i
          =
          1
        
        L
      
      ⁢
      
        f
        ⁡
        
          (
          
            x
            k
            
              (
              i
              )
            
          
          )
        
      
    
  




and f(.) in the usual way for a Monte Carlo method, can give all the moments etc. of the distribution up to some degree of approximation.

Generally, the algorithm is repeated iteratively for a specific number of k values (call this N). Initializing xk=0|k=0 for all particles provides a starting place to generate x1, which can then be used to generate x2, which can be used to generate x3 and so on up to k=N. When done, the mean of xk over all the particles




  (
  
    or
    ⁢
    
      
    
    ⁢
    
      1
      L
    
    ⁢
    
      
        ∑
        
          i
          =
          1
        
        L
      
      ⁢
      
        f
        ⁡
        
          (
          
            x
            k
            
              (
              i
              )
            
          
          )
        
      
    
  
  )




is approximately the actual value of xk.

In order to develop the details of the Sequential Importance Sampling (SIS) process, let {ωki, x0:ki}i=1L denote a random measure that characterizes the posterior probability density function (pdf) (x0:k|y1:k), where {x0:ki, i=0,1, . . . L}, is a set of support points with associated weights {ωki, i=0,1, . . . L}, and x0:k={xi, i=0,1, . . . k}, is the set of all states up to time k. The weights are normalized such that Σi=1Lωki=1. Then, the posterior density at k can be approximated as




  
    p
    ⁡
    
      (
      
        
          x
          
            0
            ⁢
            
              :
            
            ⁢
            k
          
        
        ❘
        
          y
          
            1
            ⁢
            
              :
            
            ⁢
            k
          
        
      
      )
    
  
  ≈
  
    
      ∑
      
        i
        =
        1
      
      L
    
    ⁢
    
      
        ω
        k
        i
      
      ⁢
      
        δ
        ⁡
        
          (
          
            
              x
              
                0
                ⁢
                
                  :
                
                ⁢
                k
              
            
            -
            
              x
              
                0
                ⁢
                
                  :
                
                ⁢
                k
              
              i
            
          
          )
        
      
    
  




This produces a discrete weighted approximation to the true posterior p(x0:k|y1:k). The weights can be chosen using the principle of importance sampling. Suppose p(x0:k|y1:k) is a probability density from which it is difficult to draw samples but for which the probability density function can be evaluated up to proportionality. In addition, let x0:ki ̃q(x0:k|y1:k) be samples that are easily generated from a proposal q(x0:k|y1:k), referred to as an importance density. Then, a weighted approximation to the density is given by



  
    
      p
      ⁡
      
        (
        
          
            x
            
              0
              ⁢
              
                :
              
              ⁢
              
                
              
              ⁢
              k
            
          
          ❘
          
            y
            
              1
              ⁢
              
                :
              
              ⁢
              
                
              
              ⁢
              k
            
          
        
        )
      
    
    ≈
    
      
        ∑
        
          i
          =
          1
        
        L
      
      ⁢
      
        
          ω
          k
          i
        
        ⁢
        
          δ
          ⁡
          
            (
            
              
                x
                
                  0
                  ⁢
                  
                    :
                  
                  ⁢
                  
                    
                  
                  ⁢
                  k
                
              
              -
              
                x
                
                  0
                  ⁢
                  
                    :
                  
                  ⁢
                  
                    
                  
                  ⁢
                  k
                
                i
              
            
            )
          
        
      
    
  




  where




  
    
      ω
      k
      i
    
    ∝
    
      
        p
        ⁡
        
          (
          
            
              x
              
                0
                ⁢
                
                  :
                
                ⁢
                
                  
                
                ⁢
                k
              
              i
            
            ❘
            
              y
              
                1
                ⁢
                
                  :
                
                ⁢
                
                  
                
                ⁢
                k
              
            
          
          )
        
      
      
        q
        ⁡
        
          (
          
            
              x
              
                0
                ⁢
                
                  :
                
                ⁢
                
                  
                
                ⁢
                k
              
              i
            
            ❘
            
              y
              
                1
                ⁢
                
                  :
                
                ⁢
                
                  
                
                ⁢
                k
              
            
          
          )
        
      
    
  



is the normalized weight of the i-th particle. Note that this concept applies to any p(.) and with corresponding importance density q(.) whether it is a conditional or a marginal density function.

Returning to the sequential case, at each iteration, one could have samples constituting an approximation to p(x0:k−1|y1:k−1) and want to approximate p(x0:k|y1:k) with a new set of samples. If the impoance density is chosen to factorize such that

q(x0:k|y1:k)=q(xk|x0:k−1, y1:k)q(x0:k−1|y1:k−1)

then samples x0:ki ̃q(x0:k|y1:k) can be obtained by augmenting each of the existing samples x0:k−1i ̃q(x0:k−1|y1:k−1), with the new state xki ̃q(xk|x0:k−1, y1:k). To derive the weight update equation, p(x0:k|y1:k) is first expressed in terms of p(x0:k−1|y1:k−1), p(yk|xk), and p(xk|xk−1).

Note that




  
    
      
        
          
            p
            ⁡
            
              (
              
                
                  x
                  
                    0
                    ⁢
                    
                      :
                    
                    ⁢
                    
                      
                    
                    ⁢
                    k
                  
                
                ❘
                
                  y
                  
                    1
                    ⁢
                    
                      :
                    
                    ⁢
                    
                      
                    
                    ⁢
                    k
                  
                
              
              )
            
          
          =
          
          ⁢
          
            
              
                p
                ⁡
                
                  (
                  
                    
                      
                        y
                        k
                      
                      ❘
                      
                        x
                        
                          0
                          ⁢
                          
                            :
                          
                          ⁢
                          
                            
                          
                          ⁢
                          k
                        
                      
                    
                    ,
                    
                      y
                      
                        
                          1
                          ⁢
                          
                            :
                          
                          ⁢
                          
                            
                          
                          ⁢
                          k
                        
                        -
                        1
                      
                    
                  
                  )
                
              
              ⁢
              
                p
                ⁡
                
                  (
                  
                    
                      x
                      
                        0
                        ⁢
                        
                          :
                        
                        ⁢
                        
                          
                        
                        ⁢
                        k
                      
                    
                    ❘
                    
                      y
                      
                        
                          1
                          ⁢
                          
                            :
                          
                          ⁢
                          
                            
                          
                          ⁢
                          k
                        
                        -
                        1
                      
                    
                  
                  )
                
              
            
            
              p
              ⁡
              
                (
                
                  
                    y
                    k
                  
                  ❘
                  
                    y
                    
                      
                        1
                        ⁢
                        
                          :
                        
                        ⁢
                        
                          
                        
                        ⁢
                        k
                      
                      -
                      1
                    
                  
                
                )
              
            
          
        
      
    
    
      
        
          =
          
          ⁢
          
            
              
                
                  
                    
                      p
                      ⁡
                      
                        (
                        
                          
                            
                              y
                              k
                            
                            ❘
                            
                              x
                              
                                0
                                ⁢
                                
                                  :
                                
                                ⁢
                                
                                  
                                
                                ⁢
                                k
                              
                            
                          
                          ,
                          
                            y
                            
                              
                                1
                                ⁢
                                
                                  :
                                
                                ⁢
                                
                                  
                                
                                ⁢
                                k
                              
                              -
                              1
                            
                          
                        
                        )
                      
                    
                    ⁢
                    
                      p
                      ⁡
                      
                        (
                        
                          
                            
                              x
                              k
                            
                            ❘
                            
                              x
                              
                                
                                  0
                                  ⁢
                                  
                                    :
                                  
                                  ⁢
                                  
                                    
                                  
                                  ⁢
                                  k
                                
                                -
                                1
                              
                            
                          
                          ,
                          
                            y
                            
                              
                                1
                                ⁢
                                
                                  :
                                
                                ⁢
                                
                                  
                                
                                ⁢
                                k
                              
                              -
                              1
                            
                          
                        
                        )
                      
                    
                  
                
              
              
                
                  
                    p
                    ⁡
                    
                      (
                      
                        
                          x
                          
                            
                              0
                              ⁢
                              
                                :
                              
                              ⁢
                              
                                
                              
                              ⁢
                              k
                            
                            -
                            1
                          
                        
                        ❘
                        
                          y
                          
                            
                              1
                              ⁢
                              
                                :
                              
                              ⁢
                              
                                
                              
                              ⁢
                              k
                            
                            -
                            1
                          
                        
                      
                      )
                    
                  
                
              
            
            
              p
              ⁡
              
                (
                
                  
                    y
                    k
                  
                  ❘
                  
                    y
                    
                      
                        1
                        ⁢
                        
                          :
                        
                        ⁢
                        
                          
                        
                        ⁢
                        k
                      
                      -
                      1
                    
                  
                
                )
              
            
          
        
      
    
  
   




This can be written as




  
    p
    ⁡
    
      (
      
        
          x
          
            0
            ⁢
            
              :
            
            ⁢
            
              
            
            ⁢
            k
          
        
        ❘
        
          y
          
            1
            ⁢
            
              :
            
            ⁢
            
              
            
            ⁢
            k
          
        
      
      )
    
  
  =
  
    
      
        
          p
          ⁡
          
            (
            
              
                y
                k
              
              ❘
              
                x
                k
              
            
            )
          
        
        ⁢
        
          p
          ⁡
          
            (
            
              
                x
                k
              
              ❘
              
                x
                
                  k
                  -
                  1
                
              
            
            )
          
        
        ⁢
        
          p
          ⁡
          
            (
            
              
                x
                
                  
                    0
                    ⁢
                    
                      :
                    
                    ⁢
                    
                      
                    
                    ⁢
                    k
                  
                  -
                  1
                
              
              ❘
              
                y
                
                  
                    1
                    ⁢
                    
                      :
                    
                    ⁢
                    
                      
                    
                    ⁢
                    k
                  
                  -
                  1
                
              
            
            )
          
        
      
      
        p
        ⁡
        
          (
          
            
              y
              k
            
            ❘
            
              y
              
                
                  1
                  ⁢
                  
                    :
                  
                  ⁢
                  
                    
                  
                  ⁢
                  k
                
                -
                1
              
            
          
          )
        
      
    
    ∝
    
      
        p
        ⁡
        
          (
          
            
              y
              k
            
            ❘
            
              x
              k
            
          
          )
        
      
      ⁢
      
        p
        ⁡
        
          (
          
            
              x
              k
            
            ❘
            
              x
              
                k
                -
                1
              
            
          
          )
        
      
      ⁢
      
        p
        ⁡
        
          (
          
            
              x
              
                
                  0
                  ⁢
                  
                    :
                  
                  ⁢
                  
                    
                  
                  ⁢
                  k
                
                -
                1
              
            
            ❘
            
              y
              
                
                  1
                  ⁢
                  
                    :
                  
                  ⁢
                  
                    
                  
                  ⁢
                  k
                
                -
                1
              
            
          
          )
        
      
    
  




By substituting, the weight update equation can then be shown to be:




  
    
      ω
      k
      i
    
    ∝
    
      
        
          p
          ⁡
          
            (
            
              
                y
                k
              
              ❘
              
                x
                k
                i
              
            
            )
          
        
        ⁢
        
          p
          ⁡
          
            (
            
              
                x
                k
                i
              
              ❘
              
                x
                
                  k
                  -
                  1
                
                i
              
            
            )
          
        
        ⁢
        
          p
          ⁡
          
            (
            
              
                x
                
                  
                    0
                    ⁢
                    
                      :
                    
                    ⁢
                    
                      
                    
                    ⁢
                    k
                  
                  -
                  1
                
                i
              
              ❘
              
                y
                
                  
                    1
                    ⁢
                    
                      :
                    
                    ⁢
                    
                      
                    
                    ⁢
                    k
                  
                  -
                  1
                
              
            
            )
          
        
      
      
        
          q
          ⁡
          
            (
            
              
                
                  x
                  k
                  i
                
                ❘
                
                  x
                  
                    
                      0
                      ⁢
                      
                        :
                      
                      ⁢
                      
                        
                      
                      ⁢
                      k
                    
                    -
                    1
                  
                  i
                
              
              ,
              
                y
                
                  1
                  ⁢
                  
                    :
                  
                  ⁢
                  
                    
                  
                  ⁢
                  k
                
              
            
            )
          
        
        ⁢
        
          q
          ⁡
          
            (
            
              
                x
                
                  
                    0
                    ⁢
                    
                      :
                    
                    ⁢
                    
                      
                    
                    ⁢
                    k
                  
                  -
                  1
                
                i
              
              ❘
              
                y
                
                  
                    1
                    ⁢
                    
                      :
                    
                    ⁢
                    
                      
                    
                    ⁢
                    k
                  
                  -
                  1
                
              
            
            )
          
        
      
    
  
  =
  
    
      ω
      
        k
        -
        1
      
      i
    
    ⁢
    
      
        
          p
          ⁡
          
            (
            
              
                y
                k
              
              ❘
              
                x
                k
                i
              
            
            )
          
        
        ⁢
        
          p
          ⁡
          
            (
            
              
                x
                k
                i
              
              ❘
              
                x
                
                  k
                  -
                  1
                
                i
              
            
            )
          
        
      
      
        q
        ⁡
        
          (
          
            
              
                x
                k
                i
              
              ❘
              
                x
                
                  
                    0
                    ⁢
                    
                      :
                    
                    ⁢
                    
                      
                    
                    ⁢
                    k
                  
                  -
                  1
                
                i
              
            
            ,
            
              y
              
                1
                ⁢
                
                  :
                
                ⁢
                
                  
                
                ⁢
                k
              
            
          
          )
        
      
    
  




Furthermore, if q(xk|x0:k−1, y1:k)=q(xk|xk−1, yk), then the importance density becomes only dependent on xk−1 and yk. This is particularly useful in the common case when only a filtered estimate of p(xk|y1:k) is required at each time step. For the remaining discussion below, this case can be assumed, except when stated otherwise. In such scenarios, only xki need to be stored; therefore, one can discard the path x0:k−1i and history of observations y1:k−1. The modified weight is then




  
    ω
    k
    i
  
  ∝
  
    
      ω
      
        k
        -
        1
      
      i
    
    ⁢
    
      
        
          p
          ⁡
          
            (
            
              
                y
                k
              
              ❘
              
                x
                k
                i
              
            
            )
          
        
        ⁢
        
          p
          ⁡
          
            (
            
              
                x
                k
                i
              
              ❘
              
                x
                
                  k
                  -
                  1
                
                i
              
            
            )
          
        
      
      
        q
        ⁡
        
          (
          
            
              
                x
                k
                i
              
              ❘
              
                x
                
                  k
                  -
                  1
                
                i
              
            
            ,
            
              y
              k
            
          
          )
        
      
    
  




and the posterior filtered density p(xk|y1:k) can be approximated as





  
    p
    ⁡
    
      (
      
        
          x
          k
        
        ❘
        
          y
          
            1
            ⁢
            
              :
            
            ⁢
            
              
            
            ⁢
            k
          
        
      
      )
    
  
  ≈
  
    
      ∑
      
        i
        =
        1
      
      L
    
    ⁢
    
      
        ω
        k
        i
      
      ⁢
      
        δ
        ⁡
        
          (
          
            
              x
              k
            
            -
            
              x
              k
              i
            
          
          )
        
      
    
  




where the weights are defined by the above approximation. It can be shown that as L→∞, the approximation approaches the true posterior density p(xk|y1:k). The SIS algorithm thus consists of recursive propagation of the weights and support points as each measurement is received sequentially.

Basic SIS Particle Filter

Pseudo code for a basic SIS particle filter utilizing the above calculations may be expressed as follows:

{(xki,ωki): i=1, . . . , L}=SIS{(xki,ωki): i=1, . . . L, yk}

FOR i=1,L

Draw particle xkiq(xk|xk−1i,yk)
Assign weight ωki to the particle based on the equation above for the modified weight ωki 
END FOR
A common problem with the SIS particle filter is the degeneracy phenomenon, where after a few iterations, all but one particle will have negligible weight. It has been asserted that the variance of the importance weights can only increase over time, and thus, it would be impossible to avoid the degeneracy phenomenon. This degeneracy implies that a large computational effort is devoted to updating particles whose contribution to the approximation to p(xk|y1:k) is almost zero. A suitable measure of degeneracy of the algorithm is the effective sample size Neff which can be defined as:



  
    
      N
      eff
    
    =
    
      L
      
        1
        +
        
          Var
          ⁢
          
            {
            
              ω
              k
              
                t
                ,
                i
              
            
            }
          
        
      
    
  




  where




  
    
      ω
      k
      
        t
        ,
        i
      
    
    =
    
      
        p
        ⁡
        
          (
          
            
              x
              k
              i
            
            |
            
              y
              
                1
                :
                k
              
            
          
          )
        
      
      
        q
        ⁡
        
          (
          
            
              
                x
                k
                i
              
              |
              
                x
                
                  k
                  -
                  1
                
                i
              
            
            ,
            
              y
              k
            
          
          )
        
      
    
  



is referred to as the “true weight.” While this may not be evaluated exactly, an estimate can be obtained as:





  
    
      N
      ^
    
    eff
  
  =
  
    L
    
      
        ∑
        
          i
          =
          1
        
        L
      
      ⁢
      
        
          (
          
            ω
            k
            i
          
          )
        
        2
      
    
  




where ωki is the normalized weight obtained using the weight update equation for ωki above. Notice that Neff≦L , and small Neff indicates severe degeneracy. Clearly, the degeneracy problem is an undesirable effect in particle filters. A brute force approach to reducing its effect is to use a very large L. This is often impractical; therefore, at least two other methods can be utilized: 1) good choice of importance density and 2) use of resampling.
Choice of Importance Density: The first method involves choosing the importance density q(xk|xk−1i, yk) to minimize Var{ωkt,i} so that Neff is maximized. The optimal importance density function that minimizes the variance of the true weights ωkt,i conditioned on xk−1i and yk can be shown to be




  
    
      q
      ⁡
      
        (
        
          
            
              x
              k
            
            |
            
              x
              
                k
                -
                1
              
              i
            
          
          ,
          
            y
            k
          
        
        )
      
    
    opt
  
  =
  
    
      p
      ⁡
      
        (
        
          
            
              x
              k
            
            |
            
              x
              
                k
                -
                1
              
              i
            
          
          ,
          
            y
            k
          
        
        )
      
    
    =
    
      
        
          p
          ⁡
          
            (
            
              
                
                  y
                  k
                
                |
                
                  x
                  k
                
              
              ,
              
                x
                
                  k
                  -
                  1
                
                i
              
            
            )
          
        
        ⁢
        
          p
          ⁡
          
            (
            
              
                x
                k
              
              |
              
                x
                
                  k
                  -
                  1
                
                i
              
            
            )
          
        
      
      
        p
        ⁡
        
          (
          
            
              y
              k
            
            |
            
              x
              
                k
                -
                1
              
              i
            
          
          )
        
      
    
  




Substitution of the equation above for the modified weight ωki k into the equation for factorizing the importance density q(x0:k|y1:k) yields

ωki∝ωk−1ip(yk|xk−1i)=ωk−1i∫p(yk|xk)p(xk|xk−1i)dxk 

This choice of importance density can be considered optimal because for a given xk−1i, ωki takes the same value, whatever sample is drawn from q(xk|xk−1i,yk)opt. Hence, conditional on xk−1i, Var{ωkt,i}=0. This is the variance of the different results from different sampled xki. This optimal importance density may have two potential drawbacks. It requires the ability to sample from p(xk|xk−1i, yk) and to evaluate the integral over the new state. In the general case, it may not be straightforward to do either of these things. There are two cases when use of the optimal importance density is possible. The first case is when xk is a member of a finite set. In such cases, the integral in the equation above becomes a sum, and sampling from p(xk|xk−1i, yk) is possible. An example of an application when xk is a member of a finite set is a Jump-Markov linear system for tracking maneuvering targets, whereby the discrete model state (defining the maneuver index) is tracked using a particle filter, and (conditioned on the maneuver index) the continuous base state is tracked using a Kalman filter.
Analytic evaluation is possible for a second class of models for which p(xk|xk−1i,yk) is Gaussian. This can occur if the dynamics are nonlinear and the measurements linear. Such a system can be given by

xk=ƒk(xk−1)+vk−1 

yk=Hkxk+nk 

where

vk−1 ̃N(0,Qk−1)

nk ̃N(0, Rk)

and ƒk is a nonlinear function, Hk is an observation matrix, and vk−1 and nk are mutually independent and identically distributed (i.i.d.) Gaussian sequences. Defining

Sk=(Qk−1−1+HkTRk−1Hk)−1 

mk=Sk(Qk−1−1fk(xk−1)+HkTRk−1yk)

one obtains

p(xk|xk−1,yk)=N(xk;mk,Sk)

and

p(yk|xk−1)=N(yk;Hkfk(xk−1), Qk−1+HkRkHkT)

For many other models, such analytic evaluations are not possible. However, it is possible to construct suboptimal approximations to the optimal importance density by using local linearization techniques. Such linearizations use an importance density that is a Gaussian approximation to p(xk|xk−1,yk). Another approach is to estimate a Gaussian approximation to p(xk|xk−1,yk) using the unscented transform. The additional computational cost of using such an importance density is often more than offset by a reduction in the number of samples required to achieve a certain level of performance. Finally, it is often convenient to choose the importance density to be the prior

p(xk|xk−1i,yk)=p(xk|xk−1i)

Substitution of this equation into the equation above for modified weight ωki then yields

ωki∝ωk−1ip(yk|xki)

This would seem to be the most common choice of importance density since it is intuitive and simple to implement. However, there are other densities that can be used in accordance with a number of embodiments of the invention.
Resampling: A second method by which the effects of degeneracy can be reduced is to use resampling whenever a significant degeneracy is observed (i.e., when Neff falls below some threshold NT). The basic idea of resampling is to eliminate particles that have small weights and to concentrate on particles with large weights. The resampling step involves generating a new set {xki*}i−1L by resampling (with replacement) L times from an approximate discrete representation of p(xk|y1:k) given by

p(xk|y1:k)≈Σi=1Lωkiδ(xk−xki)

so that Pr(xki*=xkj)=ωkj. The resulting sample is in fact an i.i.d. sample from the discrete density p(xk|y1:k); therefore, the weights are now reset to





  
    ω
    k
    i
  
  =
  
    
      1
      L
    
    .
  




It is possible to implement this resampling procedure in O(L) (means linear in L) operations by sampling L ordered uniforms using an algorithm based on order statistics. Note that other efficient (in terms of reduced MC variation) resampling schemes, such as stratified sampling and residual sampling, may be applied as alternatives to this approach. Systematic resampling is the scheme preferred in a number of embodiments [since it is simple to implement, takes O(L) time, and minimizes the MC variation], and its operation is described in Systematic Resampling (further below), where U[a, b] is the uniform distribution on the interval [a, b] (inclusive of the limits). A generic particle filter then can be described by Generic Particle Filter (further below). Although the resampling step reduces the effects of the degeneracy problem, it can introduce other practical problems. First, it may limit the opportunity to parallelize since all the particles must be combined. Second, the particles that have high weights ωki are statistically selected many times. This can lead to a loss of diversity among the particles as the resultant sample will contain many repeated points. This problem, which is known as sample impoverishment, is severe in the case of small process noise. In fact, for the case of very small process noise, all particles will collapse to a single point within a few iterations. Third, since the diversity of the paths of the particles is reduced, any smoothed estimates based on the particles' paths degenerate. Schemes can be utilized to counteract this effect. One approach considers the states for the particles to be predetermined by the forward filter and then obtains the smoothed estimates by recalculating the particles' weights via a recursion from the final to the first time step. Another approach is to use a Markov chain Monte Carlo (MCMC) based process.

Systematic Resampling

Pseudo code for a process to reduce the effects of degeneracy using systematic resampling as discussed above can be express as follows:












 {(xkj*, ωkj): j = 1, . . . , L} = Resample{(xki, ωki): i = 1, . . . , L}


 Initialize the CDF: c1 = 0


 FOR i = 2: L


  Construct CDF: ci = ci−1 + ωki


 END FOR


 Start at the bottom of the CDF: i = 1


 


 



  Draw
  ⁢
  
    
  
  ⁢
  a
  ⁢
  
    
  
  ⁢
  starting
  ⁢
  
    
  
  ⁢
  point
  ⁢
  
    :
  
  ⁢
  
    
  
  ⁢
  
    
      u
      1
    
    ~
    
      U
      ⁡
      
        [
        
          0
          ,
          
            1
            L
          
        
        ]
      
    
  






 


 FOR j = 1: L


 


  



  
    Move
    ⁢
    
      
    
    ⁢
    along
    ⁢
    
      
    
    ⁢
    the
    ⁢
    
      
    
    ⁢
    CDF
    ⁢
    
      :
    
    ⁢
    
      
    
    ⁢
    
      u
      j
    
  
  =
  
    
      u
      1
    
    +
    
      
        1
        L
      
      ⁢
      
        (
        
          j
          -
          1
        
        )
      
    
  






 


  WHILE uj > ci


   i = i + 1


   j* = j


  END WHILE


 


  



  
    
      
        
          
            Assign
            ⁢
            
              
            
            ⁢
            sample
            ⁢
            
              :
            
            ⁢
            
              
            
            ⁢
            
              x
              k
              
                j
                *
              
            
          
          =
          
            x
            k
            i
          
        
      
    
    
      
        
          
            Assign
            ⁢
            
              
            
            ⁢
            weight
            ⁢
            
              :
            
            ⁢
            
              
            
            ⁢
            
              ω
              k
              j
            
          
          =
          
            1
            L
          
        
      
    
  
   






 


 END FOR









Generic Particle Filter

Pseudo code for a process to reduce the effects of degeneracy using a particle filter as discussed further above can be expressed as follows:












{(xki, ωki): i = 1, . . . , L} = GPF{(xki, ωki): i = 1, . . . , L, yk}


FOR i = 1: L


 Draw xki~q(xk|xk−1i, yk)


 Assign the particle a weight, ωki


 Based on the equation for modified weight ωki above


END FOR


Calculate total weight: t = sum [{ωki}, i = 1, . . . , L]


FOR i = 1: L


 


 



  
    Normalize
    ⁢
    
      :
    
    ⁢
    
      
    
    ⁢
    
      ω
      k
      i
    
  
  =
  
    
      ω
      k
      i
    
    t
  






 


END FOR


Calculate {circumflex over (N)}eff using equation the equation for estimated {circumflex over (N)}eff above


IF {circumflex over (N)}eff < {circumflex over (N)}T


 Resample using Systematic Resampling (see above) or other resampling


 scheme:


 {(xki, ωki): i = 1, . . . , L} = Resample{(xki, ωki): i = 1, . . . , L}


END IF









There have been some systematic techniques proposed to solve the problem of sample impoverishment. One such technique is the resample-move algorithm. Although this technique draws conceptually on the same technologies of importance sampling-resampling and MCMC sampling, it avoids sample impoverishment. It does this in a rigorous manner that ensures the particles asymptotically approximate samples from the posterior and, therefore, is the method of choice by many researchers.
An alternative solution to the same problem is regularization. This approach is frequently found to improve performance, in preference to the resample-move algorithm since its use was so widespread.
Techniques for Circumventing the Use of a Suboptimal Importance Density: In some cases a good importance density is not available. For example, if the prior p(xk|xk−1) is used as the importance density and is a much broader distribution than the likelihood (yk|xk), then only a few particles will have a high weight. Methods can be utilized for encouraging the particles to be in the right place; the use of bridging densities and progressive correction both introduce intermediate distributions between the prior and likelihood. The particles are then reweighted according to these intermediate distributions and resampled. This herds the particles into the right part of the state space. Another approach referred to as partitioned sampling is useful if the likelihood is very peaked but can be factorized into a number of broader distributions. Typically, this occurs because each of the partitioned distributions are functions of some (not all) of the states. By treating each of these partitioned distributions in turn and resampling on the basis of each such partitioned distribution, the particles are again herded toward the peaked likelihood.
Sampling Importance Resampling (SIR)
One particular particle filtering algorithm that can be utilized in accordance with embodiments of the invention is sampling importance resampling (SIR). SIR approximates the filtering distribution p(xk|y1, y2, . . . , yk) by a weighted set of particles {(xki, ωki): i=1, . . . , L}. The importance weights ωki are approximations to the relative posterior probabilities (or densities) of the particles such that Σi=1Lωki=1. SIR is a sequential (i.e., recursive) version of importance sampling. As in importance sampling, the expectation of a function ƒ(.) can be approximated as a weighted average:

∫ƒ(xk)p(xk|y1, y2, . . . , yk)dxk≈Σi=1Lωiƒ(xki)

The algorithm performance is dependent on the choice of the importance distribution:

q(xk|x0:k−1,y1:k)

The optimal importance distribution can be given as:

q(xk|x-:k−1,y1:k)=p(xk|xk−1,yk)

However, the transition prior is often used as importance function, since it can be easier to draw particles (or samples) and perform subsequent importance weight calculations:

q(xk|x0:k−1,y1:k)=p(xk|xk−1).

SIR filters with transition prior as importance function can be referred to as bootstrap filters and condensation algorithms.

As discussed further above, resampling can be used to avoid the problem of degeneracy of the algorithm, that is, avoiding the situation that all but one of the importance weights are close to zero. The performance of the algorithm can be also affected by proper choice of resampling method. Resampling methods that can be utilized in accordance with embodiments of the invention include, but are not limited to, Systematic Resampling (popular and can be considered simplest and sometimes referred to as universal resampling), Residual Resampling, Multinomial Resampling, and Stratified Resampling. Stratified Resampling can be considered optimal in terms of variance.
In summary and clarity, a single step of sequential importance resampling can be expressed as follows:
For i=1,2, . . . , L draw samples from the importance distributions:

xki ̃q(xk|x0:k−1i,y1:k)

For i=1,2, . . . , L evaluate the importance weights up to a normalizing constant:




  
    
      ω
      ^
    
    k
    i
  
  =
  
    
      
        ω
        ^
      
      
        k
        -
        1
      
      i
    
    ⁢
    
      
        
          p
          ⁡
          
            (
            
              
                y
                k
              
              |
              
                x
                k
                i
              
            
            )
          
        
        ⁢
        
          p
          ⁡
          
            (
            
              
                x
                k
                i
              
              |
              
                x
                
                  k
                  -
                  1
                
                i
              
            
            )
          
        
      
      
        q
        ⁡
        
          (
          
            
              
                x
                k
                i
              
              |
              
                x
                
                  0
                  :
                  
                    k
                    -
                    1
                  
                
                i
              
            
            ,
            
              y
              
                1
                :
                k
              
            
          
          )
        
      
    
  




For i=1,2, . . . , L compute the normalized importance weights:




  
    ω
    k
    i
  
  =
  
    
      
        ω
        ^
      
      k
      i
    
    
      
        ∑
        
          i
          =
          1
        
        L
      
      ⁢
      
        
          ω
          ^
        
        k
        i
      
    
  




Compute an estimate of the effective number of particles as:




  
    
      N
      ^
    
    eff
  
  =
  
    1
    
      
        ∑
        
          i
          =
          1
        
        L
      
      ⁢
      
        
          (
          
            ω
            k
            i
          
          )
        
        2
      
    
  




If the effective number of particles is less than a given threshold {circumflex over (N)}eff<NT=βL, then perform resampling:

a) Draw L particles from the current particle set with probabilities proportional to their weights. One of 4 methods mentioned above can be used. Replace the current particle set with this new one.
b) For i=1,2, . . . , L set




  
    ω
    k
    i
  
  =
  
    
      1
      L
    
    .
  




The term Sequential Importance Resampling is also sometimes used when referring to SIR filters. Pseudo code of the above (for bootstrap filter) as an SIR Particle Filter in accordance with embodiments of the invention is provided below:










SIR Particle Filter















{(xki, ωki): i = 1, . . . , L} = SIR{(xki, ωki): i = 1, . . . , L, yk}


FOR i = 1: L


 Draw xki~p(xk|xk−1i) 


 Calculate, ωki = p(yk|xki)


END FOR


Calculate total weight: t = sum[{ωki}, i = 1, . . . , L]


FOR i = 1: L


 


 



  
    Normalize
    ⁢
    
      :
    
    ⁢
    
      
    
    ⁢
    
      ω
      k
      i
    
  
  =
  
    
      ω
      k
      i
    
    t
  






 


END FOR


Resample using Systematic Resampling (see above) or other resampling


scheme:


{(xki, ωki): i = 1, . . . , L} = Resample{(xki, ωki): i = 1, . . . , L}









Particle Filter—Direct Version

A “direct version” algorithm is rather simple (compared to other particle filtering algorithms) and it uses composition and rejection. To generate a single sample x at k from pxk|y1:k(x|y1:k):













1)
Set i = 1


2)
Uniformly generate i from {1, . . . , L}


3)
Generate a test {circumflex over (x)} from its distribution pxk|xk−1(x|xk−1(i))


4)
Generate the probability of ŷ using {circumflex over (x)} from py|x (yk|{circumflex over (x)}) where yk 



is the measured value


5)
Generate another uniform u from [0, mk] (mk = supx p(y|x) if the 



observation density is bounded)


6)
Compare u and ŷ


6a)
If u is larger than repeat from step 2


6b) 
If u is smaller than save {circumflex over (x)} as xk(i) and increment i


7)
If i > L then quit









The goal is to generate L “particles” at k using only the particles from k−1. This requires that a Markov equation can be written (and computed) to generate a xk based only upon xk−1. This algorithm uses composition of the L particles from k−1 to generate a particle at k and repeats (steps 2-6) until L particles are generated at k.
This can be more easily visualized if x is viewed as a two-dimensional array. One dimension is k and the other dimension is the particle number. For example, x(k,i) would be the i-th particle at k and can also be written xk(i) (as in the algorithm above). Step 3 generates a potential xk based on a randomly chosen particle (xk(i)) at time k−1 and rejects or accepts it in step 6. In other words, the xk values are generated using the previously generated xk−1.
Kernel Based Machine Learning
A vast majority of localization techniques proposed for RFID are based on triangulation methods in Euclidean geometry. They utilize the geometrical properties of the RFID network to infer the RFID locations. A fundamentally different approach is discussed here. This approach is based on machine learning, which works directly on the natural non-Euclidean coordinate systems provided by the known reference RFID devices. The known locations of a few nodes in the network and the RFID readings can be exploited to construct signal strength or hop-count based function spaces that are useful for learning unknown RFID locations, as well as other extrinsic quantities of interest. As discussed further above, RTLS receivers in accordance with embodiments of the invention may provide reference location data that identifies locations to a high precision. This more precise location information can be used to refine less precise location information obtained by other methods. Two learning methods can be useful: the classification method and the regression method. These methods are especially suitable for RFID tracking applications.
Kernel methods are widely used in statistical learning. Positive definite symmetric (PDS) kernels implicitly specify an inner product in a Hilbert space where large-margin techniques are used for learning and estimation. A Hilbert space is a real or complex inner product space that is also a complete metric space with respect to the distance function induced by the inner product. PDS kernels can be combined with algorithms such as support vector machines (SVMs) or other kernel-based algorithms to form powerful learning techniques. SVMs are supervised learning models with associated learning algorithms that analyze data and recognize patterns, useful for classification and regression analysis and other tasks. An SVM constructs a hyperplane or set of hyperplanes in a high- or infinite-dimensional space. A good separation is achieved by the hyperplane that has the largest distance to the nearest training-data point of any class.
But the choice of the kernel, which is critical to the success of these algorithms, is typically left to the user. To limit the risk of a poor choice of kernel, in the last decade or so, a number of publications have investigated the idea of learning the kernel from data. Rather than requesting the user to commit to a specific kernel, which may not be optimal, in particular if the user's prior knowledge about the task is poor, learning kernel methods require the user only to supply a family of kernels. The task of selecting (or learning) a kernel out of that family is then reserved to the learning algorithm which, as for standard kernel-based methods, must also use the data to choose a hypothesis in the reproducing kernel Hilbert space (RKHS) associated to the kernel selected.
Next will be discussed the main theoretical, algorithmic, and empirical results related to learning kernels obtained in the last decade, including recent progress in all of these aspects in the last few years. In addition, software libraries and packages incorporating the implementation of several of the most effective learning kernel algorithms will be introduced and how to use these algorithms in applications to effectively improve performance particularly in location estimation.
Learning kernel is a fundamental topic for kernel methods and machine learning in general. Selecting the appropriate kernel can be important, in particular for SVMs. Significant improvements in this area will both reduce the requirements from the users when applying machine learning techniques and help achieve better performance. Additionally, the methods used for learning kernels, including the formulation and solution to the optimization techniques, the algorithms, and the theoretical insights can be useful in other areas of machine learning, such as learning problems with data-dependent hypotheses, feature selection or feature reweighting, distance learning, transfer learning and many others. Finally, there are many interesting questions in this area that have not been explored sufficiently yet. This will provide a convenient introduction to both standard and advanced material in this area, which will help in investigating these questions to better estimate the location of an object in the indoor environment.
Processes for Unifying Locations into a Global Coordinate System and Directing Mobile Readers
In many embodiments of the invention, an inventory and agent control process converts the locations of RFID tags and/or other sensors that is expressed in the separate local coordinate systems of mobile readers that read them into a common global coordinate system. In further embodiments, the process determines proper antenna position for mobile agents and where to move each mobile agent for comprehensive coverage of RFID tags within the read area. An inventory and agent control process in accordance with several embodiments of the invention is illustrated in FIG. 28. In the illustrated process, an agent reads an RFID tag and determines the location of the RFID tag in local coordinates and sends the location data to a central location fusion server, which converts the tag location into global coordinates and determines whether an agent should change its position and/or the position of its antenna. The process may utilize anchor nodes which have a known location in determining the tag location. In several embodiments, a rotation matrix can be expressed and manipulated using quaternion algebra. The calculations using quaternion algebra are discussed in greater detail further below.
The process 2800 includes receiving (2802) sensor data from one or more agents. As described above, agent sensor data can include, but is not limited to, data from an accelerometer, magnetometer, gyroscope, and/or antenna position that are on-board an agent. An illustration showing an example of different read areas that agents may cover is shown in FIG. 29A. Four agents read in the discrete areas A, B, C, and D. An illustration visualizing examples of different components of sensor data collected by an agent 2900 and a tag 2902 on a shelf that the agent antenna is pointing to is shown in FIG. 29B.
The process includes receiving (2804) tag location data that describes the location of one or more tags. In many embodiments, the tag location data is specified with reference to the local coordinate system of the agent that read the tag.
The process can also include receiving (2806) reference location data. In several embodiments, reference location data can be obtained from anchor nodes—multi-modal sensors, such as way-points or anchors, that have known locations. Anchor nodes can be any of a variety of device or label such as, but not limited to, visual cues such optical LEDs, two dimensional bar codes or wireless Bluetooth or WiFi devices that broadcast their position. In many embodiments, a variety of anchor nodes are provided to achieve a diversity of information sources. An anchor node may be identified by a code or identifier that has an associated location stored in a database. In some embodiments, an anchor node may determine its location via GPS or other location system and broadcast its location. Reference location data can also include wide area location services that precisely identify the locations of antennas, readers, tags, and/or other assets to a high degree of accuracy.
The process includes determining (2808) global coordinates for the tag(s) that were read, i.e., converting the previously obtained local coordinates into a common coordinate system.
The process can include updating (2810) one or more agent's path by providing control signals to change its path for better coverage and/or to avoid obstacles. The process can be repeated to read tags, obtain locations, and update agent paths continuously.
Although a specific process is described above with respect to FIG. 28, one skilled in the art would recognize that any of a variety of processes may be utilized for inventory and agent control as appropriate to a particular application in accordance with embodiments of the invention.
A system configured to perform inventory and agent control, such as by implementing the processes described above, in accordance with embodiments of the invention is illustrated in FIG. 30. The illustrated system includes application modules that may be implemented any of a variety of ways including in memory storing software that configures a processor to perform computations or in firmware.
The system includes sensor data agent driver software 3008 that receives sensor data from Agents 1, 2, . . . M (3002, 3004, 3006). The software 3008 collects sensor data (e.g., accelerometer, magnetometer, gyroscope, antenna position) from the agents and provides it to agent path tracking engine 3010. The agent path tracking engine 3010 uses location data concerning the locations of agents, RFID tags, and/or sensors to store events (such as a person appearing in the read area as an obstacle) in an event database 3012 and store path data in a path database 3014.
Inventory and workflow engine 3016 converts locations given in local coordinates into global coordinates. Data fusion refers to the continuous process of evaluating the antenna position of antennas on the agents and providing control signals to aim the antennas. A model 3030 created of the tag inventory can be provided to machine learning engine 3018. Machine learning can be used to improve location precision and designing agent paths for maximum reads. Data from data warehouse 3028 can be provided to the machine learning engine 3018 through data filters 3026, data transform 3024, and data mining and path optimization engine 3020. The data can also be stored in RFID object database 3022.
A more detailed view of components of a data fusion portion of a system in accordance with several embodiments of the invention is illustrated in FIG. 31. Sensor data 3102 (e.g., accelerometer, magnetometer, gyroscope, antenna position) and obstacle data 3104 is provided to agent and antenna path computation engine 3106. Data from RFID tags that are read and their locations can be stored in RFID location based inventory database 3108. If there are tags that are unread, one or more agents may be instructed to move along their path and continue reading or remain in place and read additional tags in that location that have not yet been read. The computation engine 3106 can provide kinematics or control information (such as, but not limited to direction of flight, lift, speed, and antenna position) to agent control signal generation engine 3108. Agent control signal generation engine 3108 can instruct the agent 3110 (e.g., robot or drone) to keep it on the path that it should follow via proportional integral derivative (PID) or other appropriate control.
FIG. 32 is a graphical user interface illustrating experimental results of four mobile readers roaming four different subspaces within a read area in accordance with embodiments of the invention. In several embodiments, the graphical user interface displays paths traversed for each mobile reader with waypoints and counts for numbers of tags that are read. In some embodiments, the interface enables a user to initiate scanning, interactively investigate items that appear, and/or modify the path of the agent in the event that some tags are not read.
FIG. 33 is a graphical user interface illustrating experimental results of a mobile reader following a path in reading tags in a read area in accordance with embodiments of the invention. In several embodiments, the graphical user interface displays a path traversed by the mobile reader with waypoints and approximate locations for tags that are read. In some embodiments, the interface enables a user to initiate scanning, interactively investigate items that appear, and/or modify the path of the agent in the event that some tags are not read.
Although specific system architectures are described above with respect to FIGS. 30 and 31, one skilled in the art will recognize that any of a variety of architectures may be utilized in accordance with embodiments of the invention. Processes for data fusion using quaternion algebra are described below.
Processes for Data Fusion using Quaternion Algebra
The ambient space can be expressed as the three dimensional Euclidean space . Each agent's path and the position of its antenna can be computed and tracked to avoid collision with obstacles and other agents and people in the area, who could be employees or customers. In this section superscripts can be used to identify a set of agents, namely A1, A2, . . . Am. Each agent Ai has an associated configuration subspace Ci⊂. The state space of the configurations of all agents simultaneously can be expressed as X=C1C2 . . . Cm where  denotes the Cartesian product.
Two types of obstacles can be considered: 1) agent obstacles/people collisions and 2) agent-agent collisions. Let xobsi={xεX|Ai(xi)∩0≠Ø} and xobsij={xεX|Ai(xi)∩Aj(xj)≠Ø} where




  
    x
    obs
  
  =
  
    
      (
      
        
          ⋃
          
            i
            =
            1
          
          m
        
        ⁢
        
          x
          obs
          i
        
      
      )
    
    ⋃
    
      
        (
        
          
            ⋃
            
              
                i
                ≠
                j
              
              
                i
                ,
                j
              
            
          
          ⁢
          
            x
            obs
            ij
          
        
        )
      
      .
    
  




In several embodiments, a decoupled agent path manager (DAPM) can be used in  to keep agents from colliding with each other, effectively, decoupling the problem of path planning for each agent. A DAPM can allocate individually dedicated spaces to cover different agents, therefore




  
    
      •
      
        
          i
          ,
          j
        
        
          i
          ≠
          j
        
      
    
    ⁢
    
      
    
    ⁢
    
      x
      obs
      ij
    
  
  =
  φ




xobs is the union of a series of obstacles, approximated as a cylindrical structure with finite height. In the case of a drone the limited height presents an option to fly over the obstacle, whereas for a robot xobs can be completely characterized by 2D projection on the plane, hence simplifying obstacle avoidance into a two dimensional navigation problem.
A DAPM can be used to enforce xobsij=Ø. This can be accomplished when the decomposed areas patrolled by each agent do not overlap.
The index i can be dropped from Ai for the configuration space of each agent, without loss of generality. Quaternion q can be defined as a four component number q=q0+q1i+q2j+q3k, where i, j, and k are imaginary numbers satisfying i2=j2=k2=ijk=−1 with conjugate q2=q0−q1i−q2j−q3k then |q|2=qqc. For a unit 3D vector in , u=[αβγ], q=cos(θ/2)+sin(θ/2)u, where u=αi+βj+γk. Hence any 3D rotation matrix of angle θ and vector u in canonical base in  can be represented as:



  
    
      
    
    ⁢
    
      
        R
        ⁡
        
          (
          
            q
            _
          
          )
        
      
      =
      
        [
        
          
            
              
                
                  -
                  
                    q
                    0
                    2
                  
                
                +
                
                  q
                  1
                  2
                
                -
                
                  q
                  2
                  2
                
                -
                
                  q
                  3
                  2
                
              
            
            
              
                2
                ⁢
                
                  (
                  
                    
                      
                        q
                        1
                      
                      ⁢
                      
                        q
                        2
                      
                    
                    -
                    
                      
                        q
                        0
                      
                      ⁢
                      
                        q
                        3
                      
                    
                  
                  )
                
              
            
            
              
                2
                ⁢
                
                  (
                  
                    
                      
                        q
                        1
                      
                      ⁢
                      
                        q
                        3
                      
                    
                    +
                    
                      
                        q
                        0
                      
                      ⁢
                      
                        q
                        2
                      
                    
                  
                  )
                
              
            
          
          
            
              
                2
                ⁢
                
                  (
                  
                    
                      
                        q
                        1
                      
                      ⁢
                      
                        q
                        2
                      
                    
                    +
                    
                      
                        q
                        0
                      
                      ⁢
                      
                        q
                        3
                      
                    
                  
                  )
                
              
            
            
              
                
                  q
                  0
                  2
                
                -
                
                  q
                  1
                  2
                
                +
                
                  q
                  2
                  2
                
                -
                
                  q
                  3
                  2
                
              
            
            
              
                2
                ⁢
                
                  (
                  
                    
                      
                        q
                        2
                      
                      ⁢
                      
                        q
                        3
                      
                    
                    -
                    
                      
                        q
                        0
                      
                      ⁢
                      
                        q
                        1
                      
                    
                  
                  )
                
              
            
          
          
            
              
                2
                ⁢
                
                  (
                  
                    
                      
                        q
                        1
                      
                      ⁢
                      
                        q
                        3
                      
                    
                    -
                    
                      
                        q
                        0
                      
                      ⁢
                      
                        q
                        2
                      
                    
                  
                  )
                
              
            
            
              
                2
                ⁢
                
                  (
                  
                    
                      
                        q
                        2
                      
                      ⁢
                      
                        q
                        3
                      
                    
                    +
                    
                      
                        q
                        0
                      
                      ⁢
                      
                        q
                        1
                      
                    
                  
                  )
                
              
            
            
              
                
                  q
                  0
                  2
                
                -
                
                  q
                  1
                  2
                
                -
                
                  q
                  2
                  2
                
                +
                
                  q
                  3
                  2
                
              
            
          
        
        ]
      
    
  




  
    with
    ⁢
    
      
    
    ⁢
    property
    ⁢
    
      
    
    ⁢
    
      {
      
        
          
            
              
                R
                ⁡
                
                  (
                  
                    
                      q
                      _
                    
                    c
                  
                  )
                
              
              =
              
                
                  
                    R
                    T
                  
                  ⁡
                  
                    (
                    
                      q
                      _
                    
                    )
                  
                
                =
                
                  
                    
                      
                        R
                        
                          -
                          1
                        
                      
                      ⁡
                      
                        (
                        
                          q
                          _
                        
                        )
                      
                    
                    ⁢
                    
                      
                    
                    ⁢
                    where
                    ⁢
                    
                      
                    
                    ⁢
                    T
                    ⁢
                    
                      
                    
                    ⁢
                    is
                    ⁢
                    
                      
                    
                    ⁢
                    transpose
                    ⁢
                    
                      
                    
                    ⁢
                    and
                  
                  ⁢
                  
                    
                  
                  -
                  
                    1
                    ⁢
                    
                      
                    
                    ⁢
                    is
                    ⁢
                    
                      
                    
                    ⁢
                    inverse
                  
                
              
            
          
        
        
          
            
              
                R
                ⁡
                
                  (
                  
                    pq
                    _
                  
                  )
                
              
              =
              
                
                  R
                  ⁡
                  
                    (
                    
                      p
                      _
                    
                    )
                  
                
                ⁢
                
                  R
                  ⁡
                  
                    (
                    
                      q
                      _
                    
                    )
                  
                
              
            
          
        
      
    
  



With quaternion algebra, three-dimensional rotation is equivalent to matrix multiplication of the associated quaternions. The discussion here will concern quaternions with real parts for unitary representation.
The attitude of the agent is represented as a quaternion in its own reference axis in A and the elevation angle of the antenna in the same reference axis. The global reference axis can be denoted Gr and note that the quaternion in the local axis for the antenna element is with respect to Gl, the local coordinate axis, defined by the angle between quaternion of center of gravity and the vector perpendicular to the center of the antenna facing boresight.
Consider N three component measurements from agent, with three components for center of gravity, center of mass, components of gravity and magnetic field, antenna position, and qi to qN stored in vector Q=[q, . . . qN] where qi to qN are called the reference quaternion locations established in local coordinates of the agent with each reference having a known R(qr) with respect to global coordinate Gr and q1 . . . qN with respect to local coordinate Gl. Let qij=qiqjc. Denote matrix

0={qij, ∀i, i=1, . . . N}. 

Then:
1) Compute the eigenvector of 0, denoted by R.
2) Compute s=(Rr*Rr)−1(Rr*Qr), where * means transpose of conjugate, and index r corresponds to reference measurements.
3) Return Q=Rs.
Although the description above contains many specificities, these should not be construed as limiting the scope of the invention but as merely providing illustrations of some of the presently preferred embodiments of the invention. Various other embodiments are possible within its scope. Accordingly, the scope of the invention should be determined not by the embodiments illustrated, but by the appended claims and their equivalents.

## Claims

1. A method for generating the location of one or more sensor tags expressed in a three-dimension global coordinate system from the location of the one or more sensor tags expressed in three-dimensional local coordinate systems of mobile reader agents that read each tag and for updating the paths of each mobile reader, the method comprising:
receiving sensor data from one or more mobile reader agents;
receiving tag location data that describes the location of one or more sensor tags, each location of a sensor tag expressed in local coordinates of the subspace of the mobile reader agent that read the sensor tag, wherein the tag, location data that describes the location of one or more sensor tags is expressed as a quaternion in the form: q=q0+q1i+q2j+q3k, where i, j, and k are imaginary numbers satisfying i2=j2=k2=ijk=−1 with conjugate q2=q0−q1i−q2j −q3k and |q|2=qqc;
converting the tag location data into a three-dimensional global coordinate system that is common to all mobile reader agents; and
updating one or more paths of one or more mobile reader agents to increase the coverage of reading tags in the subspace of the mobile reader agent.

2. The method of claim 1 wherein the sensor data comprises information from an accelerometer, a magnetometer, a gyroscope, and the position of an antenna that are on-board a mobile reader agent.

3. The method of claim 1 wherein the one or more mobile reader agents are configured to roam distinct non-overlapping subspaces within a read area.

4. The method of claim 1 further comprising receiving reference location data that is obtained from at least one anchor node, where the anchor node has a known location in global coordinates.

5. The method of claim 1 wherein control of the mobile reader agent is provided via proportional integral derivative (PID) control.

6. The method of claim 1 wherein updating one or more paths of one or more mobile reader agents to increase the coverage of reading tags in the subspace of the mobile reader agent further comprises receiving obstacle data concerning agents and people in the read area.

7. The method of claim 1 wherein converting the tag location data into the three-dimensional global coordinate system that is common to all mobile reader agents comprises expressing the sensor data in quaternions and using quaternion algebra to rotate the matrix.

8. The method of claim 1 wherein updating the one or more paths of one or more mobile reader agents to increase the coverage of reading tags in the subspace of the mobile reader agent comprises computing a path for a mobile reader agent around obstacles that are expressed in the form: xobsi={xεX|Ai(xi)∩0≠Ø} and xobsij={xεX|Ai(xi)∩Aj(xj)≠Ø} where




  
    x
    obs
  
  =
  
    
      (
      
        
          ⋃
          
            i
            =
            1
          
          m
        
        ⁢
        
          x
          obs
          i
        
      
      )
    
    ⋃
    
      
        (
        
          
            ⋃
            
              
                i
                ≠
                j
              
              
                i
                ,
                j
              
            
          
          ⁢
          
            x
            obs
            ij
          
        
        )
      
      .

9. The method of claim 1 wherein converting the tag location data into a global coordinate system that is common to all mobile reader agents comprises rotating the quaternion using a rotation matrix that is expressed as:




  
    R
    ⁡
    
      (
      
        q
        _
      
      )
    
  
  =
  
    
      [
      
        
          
            
              
                -
                
                  q
                  0
                  2
                
              
              +
              
                q
                1
                2
              
              -
              
                q
                2
                2
              
              -
              
                q
                3
                2
              
            
          
          
            
              2
              ⁢
              
                (
                
                  
                    
                      q
                      1
                    
                    ⁢
                    
                      q
                      2
                    
                  
                  -
                  
                    
                      q
                      0
                    
                    ⁢
                    
                      q
                      3
                    
                  
                
                )
              
            
          
          
            
              2
              ⁢
              
                (
                
                  
                    
                      q
                      1
                    
                    ⁢
                    
                      q
                      3
                    
                  
                  +
                  
                    
                      q
                      0
                    
                    ⁢
                    
                      q
                      2
                    
                  
                
                )
              
            
          
        
        
          
            
              2
              ⁢
              
                (
                
                  
                    
                      q
                      1
                    
                    ⁢
                    
                      q
                      2
                    
                  
                  +
                  
                    
                      q
                      0
                    
                    ⁢
                    
                      q
                      3
                    
                  
                
                )
              
            
          
          
            
              
                q
                0
                2
              
              -
              
                q
                1
                2
              
              +
              
                q
                2
                2
              
              -
              
                q
                3
                2
              
            
          
          
            
              2
              ⁢
              
                (
                
                  
                    
                      q
                      2
                    
                    ⁢
                    
                      q
                      3
                    
                  
                  -
                  
                    
                      q
                      0
                    
                    ⁢
                    
                      q
                      1
                    
                  
                
                )
              
            
          
        
        
          
            
              2
              ⁢
              
                (
                
                  
                    
                      q
                      1
                    
                    ⁢
                    
                      q
                      3
                    
                  
                  -
                  
                    
                      q
                      0
                    
                    ⁢
                    
                      q
                      2
                    
                  
                
                )
              
            
          
          
            
              2
              ⁢
              
                (
                
                  
                    
                      q
                      2
                    
                    ⁢
                    
                      q
                      3
                    
                  
                  +
                  
                    
                      q
                      0
                    
                    ⁢
                    
                      q
                      1
                    
                  
                
                )
              
            
          
          
            
              
                q
                0
                2
              
              -
              
                q
                1
                2
              
              -
              
                q
                2
                2
              
              +
              
                q
                3
                2
              
            
          
        
      
      ]
    
    .

10. A sensor tag reader and location system for generating the location of one or more sensor tags expressed in a three-dimension global coordinate system from the location of the one or more sensor tags expressed in three-dimensional local coordinate systems of mobile readers that read each tag and for updating the paths of each mobile reader, the system comprising:
a processor; and
memory comprising an inventory and agent control application;
wherein the processor is configured by the inventory and agent control application to:
receive sensor data from one or more mobile reader agents;
receive tag location data that describes the location of one or more sensor tags, each location of a sensor tag expressed in local coordinates of the subspace of the mobile reader agent that read the sensor tag, wherein the tag location data that describes the location of one or more sensor tags is expressed as a quaternion in the form: q=q0+q1i+q2j+q3k, where i, j, and k are imaginary numbers satisfying i2=j2=k2=ijk=−1 with conjugate q2=q0−q1i−q2j−q3k and |q|2=qqc;
convert the tag location data into a three-dimensional global coordinate system that is common to all mobile reader agents; and
update one or more paths of one or more mobile reader agents to increase the coverage of reading tags in the subspace of the mobile reader agent.

11. The system of claim 10 wherein the sensor data comprises information from an accelerometer, a magnetometer, a gyroscope, and the position of an antenna that are on-board a mobile reader agent.

12. The system of claim 10 wherein the one or more mobile reader agents are configured to roam distinct non-overlapping subspaces within a read area.

13. The system of claim 10 wherein the processor is further configured by the inventory and agent control application to receive reference location data that is obtained from at least one anchor node, where the anchor node has a known location in global coordinates.

14. The system of claim 10 wherein control of the mobile reader agent is provided via proportional integral derivative (PID) control.

15. The system of claim 10 wherein the processor being configured to update one or more paths of one or more mobile reader agents to increase the coverage of reading tags in the subspace of the mobile reader agent further comprises the processor being configured to receive obstacle data concerning agents and people in the read area.

16. The system of claim 10 wherein the processor being configured to convert the tag location data into the three-dimensional global coordinate system that is common to all mobile reader agents further comprises the processor being configured to express the sensor data in quaternions and using quaternion algebra to rotate the matrix.

17. The system of claim 10 wherein the processor being configured to update the one or more paths of one or more mobile reader agents to increase the coverage of reading tags in the subspace of the mobile reader agent further comprises the processor being configured to compute a path for a mobile reader agent around obstacles that are expressed in the form: xobsi={xεX|Ai(xi)∩0≠Ø} and xobsij={xεX|Ai(xi)∩Aj(xj)≠Ø} where




  
    x
    obs
  
  =
  
    
      (
      
        
          ⋃
          
            i
            =
            1
          
          m
        
        ⁢
        
          x
          obs
          i
        
      
      )
    
    ⋃
    
      
        (
        
          
            ⋃
            
              
                i
                ≠
                j
              
              
                i
                ,
                j
              
            
          
          ⁢
          
            x
            obs
            ij
          
        
        )
      
      .

18. The system of claim 10 wherein the processor being configured to convert the tag location data into a global coordinate system that is common to all mobile reader agents further comprises the processor being configured to rotate the quaternion using a rotation matrix that is expressed as:




  
    R
    ⁡
    
      (
      
        q
        _
      
      )
    
  
  =
  
    
      [
      
        
          
            
              
                -
                
                  q
                  0
                  2
                
              
              +
              
                q
                1
                2
              
              -
              
                q
                2
                2
              
              -
              
                q
                3
                2
              
            
          
          
            
              2
              ⁢
              
                (
                
                  
                    
                      q
                      1
                    
                    ⁢
                    
                      q
                      2
                    
                  
                  -
                  
                    
                      q
                      0
                    
                    ⁢
                    
                      q
                      3
                    
                  
                
                )
              
            
          
          
            
              2
              ⁢
              
                (
                
                  
                    
                      q
                      1
                    
                    ⁢
                    
                      q
                      3
                    
                  
                  +
                  
                    
                      q
                      0
                    
                    ⁢
                    
                      q
                      2
                    
                  
                
                )
              
            
          
        
        
          
            
              2
              ⁢
              
                (
                
                  
                    
                      q
                      1
                    
                    ⁢
                    
                      q
                      2
                    
                  
                  +
                  
                    
                      q
                      0
                    
                    ⁢
                    
                      q
                      3
                    
                  
                
                )
              
            
          
          
            
              
                q
                0
                2
              
              -
              
                q
                1
                2
              
              +
              
                q
                2
                2
              
              -
              
                q
                3
                2
              
            
          
          
            
              2
              ⁢
              
                (
                
                  
                    
                      q
                      2
                    
                    ⁢
                    
                      q
                      3
                    
                  
                  -
                  
                    
                      q
                      0
                    
                    ⁢
                    
                      q
                      1
                    
                  
                
                )
              
            
          
        
        
          
            
              2
              ⁢
              
                (
                
                  
                    
                      q
                      1
                    
                    ⁢
                    
                      q
                      3
                    
                  
                  -
                  
                    
                      q
                      0
                    
                    ⁢
                    
                      q
                      2
                    
                  
                
                )
              
            
          
          
            
              2
              ⁢
              
                (
                
                  
                    
                      q
                      2
                    
                    ⁢
                    
                      q
                      3
                    
                  
                  +
                  
                    
                      q
                      0
                    
                    ⁢
                    
                      q
                      1
                    
                  
                
                )
              
            
          
          
            
              
                q
                0
                2
              
              -
              
                q
                1
                2
              
              -
              
                q
                2
                2
              
              +
              
                q
                3
                2
              
            
          
        
      
      ]
    
    .