Abstract:
The present invention relates generally to methods and apparatuses for estimating and correcting for multipath in GNSS navigation systems. According to some aspects, the invention takes advantage of situations where position and estimated position error are reasonably stable so as to detect when large multipath errors are present with confidence. After detection, the slowly varying biases from multipath or other un-modeled sources can be modeled separately from the navigation state. This makes it possible to keep the measurements in the solution without biasing the navigation state and further ignores the long-term biases for use over short-term periods with minimized pseudorange error when necessary.

Description:
FIELD OF THE INVENTION 
       [0001]    The present invention relates generally to GNSS navigation and more particularly to methods and apparatuses for compensating for multipath in GNSS navigation systems. 
       BACKGROUND OF THE INVENTION 
       [0002]    With the development of radio and space technologies, several satellite-based navigation systems (i.e. satellite positioning system or “SPS”) have already been built and more will be in use in the near future. Those systems with full global coverage are sometimes referred to as Global Navigation Satellite Systems (“GNSS”). SPS receivers, such as, for example, receivers using the Global Positioning System (“GPS”), also known as NAVSTAR, have become commonplace. Other examples of SPS and/or GNSS systems include but are not limited to the United States (“U.S.”) Navy Navigation Satellite System (“NNSS”) (also known as TRANSIT), LORAN, Shoran, Decca, TACAN, NAVSTAR, the Russian counterpart to NAVSTAR known as the Global Navigation Satellite System (“GLONASS”), any future Western European SPS such as the proposed “Galileo” program, or any other existing or future system such as the Chinese “Beidou” or “Compass” system. As an example, the U.S. NAVSTAR GPS system is described in GPS Theory and Practice, Fifth ed., revised edition by Hofmann-Wellenhof, Lichtenegger and Collins, Springer-Verlag Wien NewYork, 2001, which is fully incorporated herein by reference. 
         [0003]    The U.S. GPS system was built and is operated by the United States Department of Defense. The system uses twenty-four or more satellites orbiting the earth at an altitude of about 11,000 miles with a period of about twelve hours. These satellites are placed in six different orbits such that at any time a minimum of six satellites are visible at any location on the surface of the earth except in the polar region. Each satellite transmits a time and position signal referenced to an atomic clock. A typical GPS receiver locks onto this signal and extracts the data contained in it. Using signals from a sufficient number of satellites, a GPS receiver can calculate its position, velocity, altitude, and time. 
         [0004]    In environments where satellite signals are degraded, however, a GPS receiver often encounters problems in locking onto the signals that are needed for the calculation of position, velocity, altitude, and time. In a degraded signal environment, satellite signals can be weak or otherwise difficult for GPS receivers to lock on to. One example of a degraded signal environment is a tunnel through which a car equipped with a GPS receiver is driving. While the GPS receiver is in the tunnel, the satellite signals are completely obstructed and no lock can be acquired. As a result, the GPS receiver cannot accurately calculate its position and other navigational data (such as velocity, altitude, and time) while the car is in the tunnel. In addition, because GPS receivers typically utilize positioning algorithms that use navigational filters that account for the GPS receivers&#39; last-known positions, the GPS receiver&#39;s position calculation when the car emerges from the tunnel can also be less accurate since accurate position calculations were not performed during the time that the car was in the tunnel. 
         [0005]    Degraded signal environments are often encountered in urban areas, such as cities with many tall buildings. A city with many tall buildings can contain “urban canyons”, which are environments where streets cut through dense blocks of structures such as skyscrapers. In urban canyons, satellite signals are frequently not visible or are degraded due to the signals being partially or fully blocked by buildings, for example. Consequently, the problem of inaccurate position calculations by GPS receivers in degraded signal environments is especially acute in urban areas. Other degraded environments include tunnels, garages, and inside buildings. 
         [0006]    Moreover, in difficult signal environments like urban canyons, some direct GPS signals may be blocked by high buildings near the GPS receiver. The reflected signal is called multipath. The pseudoranges affected by the multipath will typically be a summation of the direct (true) pseudorange and some slowly varying biases since the multipath signals have to travel some extra time/distance. 
         [0007]    In conventional receivers, the multipath problem is typically addressed by increasing measurement variance in the navigation filter to handle the multipath bias while leaving the bias in the solution. Although this allows the filter to keep operating, this leads to less accurate navigation solutions. Accordingly, a need remains for an effective method for handling multipath. 
       SUMMARY OF THE INVENTION 
       [0008]    The present invention relates generally to methods and apparatuses for estimating and correcting for multipath in GNSS navigation systems. According to some aspects, the invention takes advantage of situations where position and estimated position error are reasonably stable so as to detect when large multipath errors are present with confidence. After detection, the slowly varying biases from multipath or other un-modeled sources can be modeled separately from the navigation state. This makes it possible to keep the measurements in the solution without biasing the navigation state and further ignores the long-term biases for use over short-term periods with minimized pseudorange error when necessary. 
         [0009]    In accordance with these and other aspects, a method implemented by a receiver according to embodiments of the invention includes measuring, at the receiver, a signal from a satellite to obtain a pseudorange measurement; determining a multipath bias associated with the signal from a multipath model; removing the determined multipath bias from the pseudorange measurement; and updating a navigation state of the receiver using the pseudorange measurement with the multipath bias removed. 
         [0010]    In additional accordance with these and other aspects, a method implemented by a receiver according to embodiments of the invention includes maintaining a navigation state of the receiver using a plurality of satellite signals; determining if sufficient multipath conditions exist in one or more of the satellite signals; and maintaining a model of the multipath in the one or more satellite signals so as to remove effects of the multipath in the maintained navigation state based on the determination. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0011]    These and other aspects and features of the present invention will become apparent to those ordinarily skilled in the art upon review of the following description of specific embodiments of the invention in conjunction with the accompanying figures, wherein: 
           [0012]      FIG. 1  is a block diagram illustrating an example implementation of embodiments of the invention; 
           [0013]      FIG. 2  is a graph illustrating actual pseudorange errors for an SV due to multipath; 
           [0014]      FIG. 3  is a flowchart illustrating an example overall multipath compensation method according to embodiments of the invention; 
           [0015]      FIG. 4  is a flowchart illustrating an example method of determining the existence of multipath according to embodiments of the invention; and 
           [0016]      FIG. 5  is a diagram illustrating experimental results according to implementations of embodiments of the invention. 
       
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
       [0017]    The present invention will now be described in detail with reference to the drawings, which are provided as illustrative examples of the invention so as to enable those skilled in the art to practice the invention. Notably, the figures and examples below are not meant to limit the scope of the present invention to a single embodiment, but other embodiments are possible by way of interchange of some or all of the described or illustrated elements. Moreover, where certain elements of the present invention can be partially or fully implemented using known components, only those portions of such known components that are necessary for an understanding of the present invention will be described, and detailed descriptions of other portions of such known components will be omitted so as not to obscure the invention. Embodiments described as being implemented in software should not be limited thereto, but can include embodiments implemented in hardware, or combinations of software and hardware, and vice-versa, as will be apparent to those skilled in the art, unless otherwise specified herein. In the present specification, an embodiment showing a singular component should not be considered limiting; rather, the invention is intended to encompass other embodiments including a plurality of the same component, and vice-versa, unless explicitly stated otherwise herein. Moreover, applicants do not intend for any term in the specification or claims to be ascribed an uncommon or special meaning unless explicitly set forth as such. Further, the present invention encompasses present and future known equivalents to the known components referred to herein by way of illustration. 
         [0018]      FIG. 1  illustrates an example implementation of embodiments of the invention. As shown in  FIG. 1 , an example GNSS system  100  includes GPS satellites (i.e. SVs)  114 ,  116 ,  118  and  120  that broadcast signals  106 ,  108 ,  110  and  112 , respectively, that are received by receiver  122  in handset  102 , which is located at a user position somewhere relatively near the surface  104  of earth. 
         [0019]    Handset  102  can be a cellular or other type of telephone with built-in GPS functionality (e.g. iPhone, Blackberry, Android smartphone, etc.), or it can be a notebook or tablet computer (e.g. iPad, etc.) with similar built-in positioning functionality, or it can be a personal navigation device (PND, e.g. from Garmin, TomTom, etc.) or any GPS device embedded in tracking applications (e.g. automotive tracking from Trimble, package or fleet management tracking from FedEx, child locator tracking applications etc.). 
         [0020]    Receiver  122  can be implemented using any combination of hardware and/or software, including GPS chipsets such as SiRFstarIII GSD3tw, SiRFstar IV GSD4t or SiRFstar V from SiRF Technology and BCM4750 from Broadcom Corp., as adapted and/or supplemented with the multipath estimation and correction functionality in accordance with the present invention, and described in more detail herein. More particularly, those skilled in the art will be able to understand how to implement the present invention by adapting and/or supplementing such chipsets and/or software with the multipath estimation and correction techniques of the present invention after being taught by the present specification. 
         [0021]    Although not shown in detail in  FIG. 1 , device  102  can include an IMU (Inertial Measurement Unit) comprising an accelerometer and/or a gyroscope and associated functionality for performing inertial navigation (i.e. dead reckoning) using signals from these sensors. In embodiments, there are three orthogonal accelerometers and three orthogonal gyroscopes. These can be implemented in a number of conventional or proprietary ways, including conventional MEMS devices. 
         [0022]    The present inventors recognize that in difficult signal environments like urban canyons, some direct GPS signals may be blocked by high buildings near the GPS receiver. The reflected signal is called multipath. The pseudoranges affected by the multipath will typically be summation of the direct (true) pseudorange and some slowly varying biases since the multipath signals have to travel some extra time/distance. For example,  FIG. 2  is a plot that shows the actual pseudorange errors for SV31 using a truth reference from an inertial measurement unit (IMU). It shows a slowly varying positive pseudorange bias between around 100 m to 220 m, which is due to multipath. 
         [0023]    According to some general aspects, therefore, the present invention provides a method to estimate and correct the slowly varying biases on the pseudorange measurements due to the multipath effect or any other slowly varying unmodeled errors (e.g. atmospheric errors) and therefore to significantly improve the GPS navigation performance. 
         [0024]    An example method for multipath estimation and correction according to the invention will now be described in connection with the flowchart in  FIG. 3 . 
         [0025]    In embodiments such as that shown in  FIG. 3 , the method continuously examines the SV&#39;s that are currently being tracked and which are being used for updating a receiver state (e.g. PVT model or Kalman filter). For example, each time a new set of pseudorange measurements is computed, the multipath estimates are updated. Accordingly, for each SV, in a first step S 302  it is determined if the SV is on the MP list. If not, then processing is performed to check if it should be added to the list in step S 304 . If it should not be added to the list, in step S 306  the pseudorange for the SV is processed as a regular measurement without MP correction. Otherwise, if step S 304  determines that the SV should be added to the MP list, in step S 308  the SV is added to the MP list, and processing for this SV advances to S 314 . 
         [0026]    Returning back to step S 302 , if the SV is already on the MP list, step S 310  determines if the current PR residual is less than MP threshold. Further details of how this step can be performed are described in more detail below. If the PR residual is below the MP threshold, in step S 312  the SV is removed from the MP list in and in step S 306  pseudorange for the SV is processed without MP correction. Otherwise, if step S 310  determines that the PR residual remains greater than the MP threshold, in step S 314  a predicted MP bias is computed, as will be described in more detail below. Next, in step S 316  the PR measurement with MP correction is applied, and a nav state update is completed using this corrected PR measurement, as can be done with conventional nav state processing. It should be noted, however, that this is an improvement on conventional techniques of handling MP, which for example handle MP by increasing the error variance in the nav state model while leaving MP in the nav state model. In step S 318 , the MP states are updated after the nav states are updated, as will be described in more detail below. 
         [0027]    In embodiments such as that above or in alternative embodiments, a MP list is maintained that includes the SV ID and MP estimates for all qualifying SVs. In some embodiments, if the list is full before adding a newly qualifying SV, the SVs with the smallest MP estimates in the list are overwritten, when the new estimate is larger than the smallest. 
         [0028]    An example method of determining whether to determine whether to add a SV to an MP list, such as that performed in step S 304  of  FIG. 3 , will now be described in more detail in connection with the flowchart in  FIG. 4 . 
         [0029]    First, it is determined whether the state dynamic model for the receiver is stable enough to provide a reasonably accurate multipath estimate. In one example embodiment, a state dynamic model (e.g. a conventional PVT model or Kalman filter) includes 3-dimensional position, 3-dimensional velocity, clock bias and clock drift, as well as their associated variances. Accordingly, for example, in a first step S 402 , the current state dynamic model for the receiver is checked, and if the variance of the clock-bias estimate from the model is larger than a threshold, it is determined that MP cannot be estimated with sufficient accuracy. Without limitation, a clock-bias threshold in some example embodiments is about 300 m 2 . Additionally or alternatively, step S 402  can determine if the variance of the overall position state itself is larger than a threshold. Without limitation, a variance threshold in some example embodiments is a position variance of less than 400 m 2 . 
         [0030]    If the state dynamic model is stable, processing continues to a next step S 404 , where it is determined whether the velocity of the receiver is less than a threshold, for example and without limitation 20 meters/sec. This step need not be included in all embodiments, but is preferred in some embodiments because when velocity is too high, multipath estimates become difficult to determine due to the changes in conditions. More particularly, since multipath biases are typically caused by stationary reflectors (e.g. large buildings), when the rate of movement between the stationary reflector and the moving antenna is large, the multipath biases cannot be modeled reliably. 
         [0031]    Next, in step S 406  (which is also an example of how step S 310  can be performed), a pseudorange (PR) residual for the SV&#39;s determined using any known approach. For example, the difference between the estimated pseudorange and the measured pseudorange from the receiver. The estimated pseudorange is determined using the current position of the receiver from the state dynamic model and SV ephemeris information. In this embodiment any signal may be considered for multipath delay. 
         [0032]    In step S 408 , it is determined whether the PR residual (i.e. measured PR minus the estimated PR from above) for the SV is larger than a threshold. It is noted here that the calculated PR residual must be positive in order to be determined to be multipath. In example embodiments, the threshold for beginning MP modeling and correction is when PR residual exceeds 30 meters. The multipath threshold is a function of the position state uncertainty. So, if the position state uncertainty is too large, we can&#39;t reliably estimate the multipath error. 
         [0033]    The present inventors recognize that one must be careful to not transfer position state error into estimated multipath error. According to aspects of the invention, therefore, step S 408  also preferably includes several additional checks to ensure the position state uncertainty is reliable. For example, this embodiment checks how many pseduorange residuals projected into the vertical domain based on the elevation of the satellite are beyond a threshold (for example 25 m in this embodiment). Additionally, a Chi-squares test can be performed on the residuals to make sure that the pseudorange measurements are conforming to an error model (with multipath removed from the residuals). 
         [0034]    It should be noted that the thresholds described above in connection with receiver velocity, pseudorange, etc. are non-limiting examples. Moreover, these thresholds need not be fixed, but may be varied in certain situations or environments. Accordingly, the invention is not limited to the above fixed thresholds, but various alternatives are possible. 
         [0035]    An example method of obtaining an MP bias from a model, such as the model used and updated in steps S 314  and  5318  in  FIG. 3 , will now be described in more detail below. 
         [0036]    In embodiments such as that shown in  FIG. 3 , if no current MP model exists, in step S 314  the initial estimate of the multipath bias is set to the pseudorange residual. The initial standard deviation of the multipath estimate is set to the half of the pseudorange residual. Otherwise, in step S 314  the multipath bias is obtained from a MP model. An example methodology for developing and/or updating a MP model according to the embodiments of the invention is now described. 
         [0037]    In embodiments, the state dynamic model for a SV without multipath correction is given as: 
         [0000]        X ( k+ 1)= F ( k ) X ( k )+ v ( k ), 
         [0000]    where X(k) is the state vector which may include receiver position, velocity, clock bias and clock drift. The position and velocity elements can be in any coordinate system, such as Earth-Centered-Earth-Fixed(ECEF) or North-East-Down(NED). F(k) is the known state transition matrix, and v(k) is the process noise with covariance Q(k). 
         [0038]    In embodiments, when MP is determined to exist, in addition to an existing filter that is maintained and used to estimate the state vector (i.e. to maintain and update the state transition matrix F(k)), a separate filter is maintained to estimate the multipath state simultaneously. In this case, the combined state vector will be determined using the separately maintained state vector X given above and the newly determined multipath state vector Mp. 
         [0039]    To develop a dynamic model of multipath, the present inventors first recognize that the PR measurements for a SV are typically some non-linear functions of the state vector X(k) with the slowly varying biases due primarily to multipath and some additional zero-mean measurement noises. For simplicity, however, after linearization, the measurement equation can be given as: 
         [0000]        Z ( k )= H ( k ) X ( k )+ Mp ( k )+ w ( k ) 
         [0000]    where Z(k) is the measurement vector, H(k) is the dynamic measurement model, w(k) is the zero-mean measurement noise with covariance R(k), and Mp(k) is the multipath state vector. In embodiments, the multipath state vector includes the multipath bias (i.e. pseudorange residual) and bias rate. 
         [0040]    The multipath vector Mp(k)=0 when there is no multipath. Accordingly, using the known values of the measurement vector Z and receiver state X, the dynamic measurement model H(k) can be determined along with the receiver state before multipath is determined. 
         [0041]    After multipath has been determined a new model for it can be initiated. Its own state dynamic model is given by: 
         [0000]        Mp ( k+ 1)= Fp ( k ) Mp ( k )+ vp ( k ) 
         [0000]    Where Fp(k) is the state transition matrix for multipath and vp(k) is the combined state variance. In embodiments, the combined state variance will include the state variance, the multipath state variance, and the cross-covariance between the state and the multipath estimate. 
         [0042]    Combining the prediction for both state and multipath gives: 
         [0000]    
       
         
           
             
               [ 
               
                 
                   
                     
                       X 
                        
                       
                         ( 
                         
                           
                             k 
                             + 
                             1 
                           
                           | 
                           k 
                         
                         ) 
                       
                     
                   
                 
                 
                   
                     
                       
                         M 
                         p 
                       
                        
                       
                         ( 
                         
                           
                             k 
                             + 
                             1 
                           
                           | 
                           k 
                         
                         ) 
                       
                     
                   
                 
               
               ] 
             
             = 
             
               
                 [ 
                 
                   
                     
                       
                         F 
                          
                         
                           ( 
                           k 
                           ) 
                         
                       
                     
                     
                       0 
                     
                   
                   
                     
                       0 
                     
                     
                       
                         
                           F 
                           p 
                         
                          
                         
                           ( 
                           k 
                           ) 
                         
                       
                     
                   
                 
                 ] 
               
               · 
               
                 [ 
                 
                   
                     
                       
                         X 
                          
                         
                           ( 
                           
                             k 
                             | 
                             k 
                           
                           ) 
                         
                       
                     
                   
                   
                     
                       
                         
                           M 
                           p 
                         
                          
                         
                           ( 
                           
                             k 
                             | 
                             k 
                           
                           ) 
                         
                       
                     
                   
                 
                 ] 
               
             
           
         
       
     
         [0043]    The combined receiver state and multipath variance prediction is: 
         [0000]    
       
         
           
             
               [ 
               
                 
                   
                     
                       P 
                        
                       
                         ( 
                         
                           
                             k 
                             + 
                             1 
                           
                           | 
                           k 
                         
                         ) 
                       
                     
                   
                   
                     
                       
                         P 
                         x 
                       
                        
                       
                         ( 
                         
                           
                             k 
                             + 
                             1 
                           
                           | 
                           k 
                         
                         ) 
                       
                     
                   
                 
                 
                   
                     
                       
                         
                           P 
                           x 
                         
                          
                         
                           ( 
                           
                             
                               k 
                               + 
                               1 
                             
                             | 
                             k 
                           
                           ) 
                         
                       
                       T 
                     
                   
                   
                     
                       
                         P 
                         p 
                       
                        
                       
                         ( 
                         
                           
                             k 
                             + 
                             1 
                           
                           | 
                           k 
                         
                         ) 
                       
                     
                   
                 
               
               ] 
             
             = 
             
               
                 
                   
                     
                       [ 
                       
                         
                           
                             
                               F 
                                
                               
                                 ( 
                                 k 
                                 ) 
                               
                             
                           
                           
                             0 
                           
                         
                         
                           
                             0 
                           
                           
                             
                               
                                 F 
                                 p 
                               
                                
                               
                                 ( 
                                 k 
                                 ) 
                               
                             
                           
                         
                       
                       ] 
                     
                      
                     
                       [ 
                       
                         
                           
                             
                               P 
                                
                               
                                 ( 
                                 
                                   k 
                                   | 
                                   k 
                                 
                                 ) 
                               
                             
                           
                           
                             
                               
                                 P 
                                 x 
                               
                                
                               
                                 ( 
                                 
                                   k 
                                   | 
                                   k 
                                 
                                 ) 
                               
                             
                           
                         
                         
                           
                             
                               
                                 
                                   P 
                                   x 
                                 
                                  
                                 
                                   ( 
                                   
                                     k 
                                     | 
                                     k 
                                   
                                   ) 
                                 
                               
                               T 
                             
                           
                           
                             
                               
                                 P 
                                 p 
                               
                                
                               
                                 ( 
                                 
                                   k 
                                   | 
                                   k 
                                 
                                 ) 
                               
                             
                           
                         
                       
                       ] 
                     
                   
                    
                   
                     [ 
                     
                       
                         
                           
                             F 
                              
                             
                               ( 
                               k 
                               ) 
                             
                           
                         
                         
                           0 
                         
                       
                       
                         
                           0 
                         
                         
                           
                             
                               F 
                               p 
                             
                              
                             
                               ( 
                               k 
                               ) 
                             
                           
                         
                       
                     
                     ] 
                   
                 
                 T 
               
               + 
               
                 [ 
                 
                   
                     
                       
                         Q 
                          
                         
                           ( 
                           k 
                           ) 
                         
                       
                     
                     
                       0 
                     
                   
                   
                     
                       0 
                     
                     
                       
                         
                           Q 
                           p 
                         
                          
                         
                           ( 
                           k 
                           ) 
                         
                       
                     
                   
                 
                 ] 
               
             
           
         
       
     
         [0000]    Where P is a variance of the navigation state, Px is a co-variance between navigation state and multipath state, and Pp is a variance of the multipath state, and Qp is the covariance matrix for multipath. 
         [0044]    Re-writing the above measurement equation, the pseudorange residual μ state due to multipath corrected is given by: 
         [0000]      μ( k+ 1)= Z ( k+ 1)− H ( k+ 1) X ( k+ 1 |k )− Mp ( k+ 1 |k )
 
         [0045]    The innovation variance S is given by: 
         [0000]        S ( k+ 1)= H*P ( k+ 1 |k )* H   T   +P   x ( k+ 1 |k ) T   *H   T   +H*P   x ( k+ 1 |k )+ P   p ( k+ 1 |k )+ R ( k+ 1) 
         [0046]    Where R is a known measurement variance coming from a predetermined measurement variance model. So, collecting terms from the above equation gives the gain W, which is expressed by: 
         [0000]    
       
         
           
             
               W 
                
               
                 ( 
                 
                   k 
                   + 
                   1 
                 
                 ) 
               
             
             = 
             
               
                 
                   [ 
                   
                     
                       
                         
                           P 
                            
                           
                             ( 
                             
                               
                                 k 
                                 + 
                                 1 
                               
                               | 
                               k 
                             
                             ) 
                           
                         
                       
                       
                         
                           
                             P 
                             x 
                           
                            
                           
                             ( 
                             
                               
                                 k 
                                 + 
                                 1 
                               
                               | 
                               k 
                             
                             ) 
                           
                         
                       
                     
                     
                       
                         
                           
                             
                               P 
                               x 
                             
                              
                             
                               ( 
                               
                                 
                                   k 
                                   + 
                                   1 
                                 
                                 | 
                                 k 
                               
                               ) 
                             
                           
                           T 
                         
                       
                       
                         
                           
                             P 
                             p 
                           
                            
                           
                             ( 
                             
                               
                                 k 
                                 + 
                                 1 
                               
                               | 
                               k 
                             
                             ) 
                           
                         
                       
                     
                   
                   ] 
                 
                  
                 
                   [ 
                   
                     
                       
                         
                           
                             H 
                              
                             
                               ( 
                               
                                 k 
                                 + 
                                 1 
                               
                               ) 
                             
                           
                           T 
                         
                       
                     
                     
                       
                         I 
                       
                     
                   
                   ] 
                 
               
                
               
                 
                   S 
                    
                   
                     ( 
                     
                       k 
                       + 
                       1 
                     
                     ) 
                   
                 
                 
                   - 
                   1 
                 
               
             
           
         
       
     
         [0047]    Expressing the updated state and multipath estimates using the above terms for the residual and gain from the measurements gives: 
         [0000]    
       
         
           
             
               [ 
               
                 
                   
                     
                       X 
                        
                       
                         ( 
                         
                           
                             k 
                             + 
                             1 
                           
                           | 
                           
                             k 
                             + 
                             1 
                           
                         
                         ) 
                       
                     
                   
                 
                 
                   
                     
                       
                         M 
                         p 
                       
                        
                       
                         ( 
                         
                           
                             k 
                             + 
                             1 
                           
                           | 
                           
                             k 
                             + 
                             1 
                           
                         
                         ) 
                       
                     
                   
                 
               
               ] 
             
             = 
             
               
                 [ 
                 
                   
                     
                       
                         X 
                          
                         
                           ( 
                           
                             
                               k 
                               + 
                               1 
                             
                             | 
                             k 
                           
                           ) 
                         
                       
                     
                   
                   
                     
                       
                         
                           M 
                           p 
                         
                          
                         
                           ( 
                           
                             
                               k 
                               + 
                               1 
                             
                             | 
                             k 
                           
                           ) 
                         
                       
                     
                   
                 
                 ] 
               
               + 
               
                 
                   W 
                    
                   
                     ( 
                     
                       k 
                       + 
                       1 
                     
                     ) 
                   
                 
                  
                 
                   μ 
                    
                   
                     ( 
                     
                       k 
                       + 
                       1 
                     
                     ) 
                   
                 
               
             
           
         
       
     
         [0048]    Similarly, the updated covariance is given by: 
         [0000]    
       
         
           
             
               [ 
               
                 
                   
                     
                       P 
                        
                       
                         ( 
                         
                           
                             k 
                             + 
                             1 
                           
                           | 
                           
                             k 
                             + 
                             1 
                           
                         
                         ) 
                       
                     
                   
                   
                     
                       
                         P 
                         x 
                       
                        
                       
                         ( 
                         
                           
                             k 
                             + 
                             1 
                           
                           | 
                           
                             k 
                             + 
                             1 
                           
                         
                         ) 
                       
                     
                   
                 
                 
                   
                     
                       
                         
                           P 
                           x 
                         
                          
                         
                           ( 
                           
                             
                               k 
                               + 
                               1 
                             
                             | 
                             
                               k 
                               + 
                               1 
                             
                           
                           ) 
                         
                       
                       T 
                     
                   
                   
                     
                       
                         P 
                         p 
                       
                        
                       
                         ( 
                         
                           
                             k 
                             + 
                             1 
                           
                           | 
                           
                             k 
                             + 
                             1 
                           
                         
                         ) 
                       
                     
                   
                 
               
               ] 
             
             = 
             
                 
               
                 
                   [ 
                   
                     
                       
                         
                           P 
                            
                           
                             ( 
                             
                               
                                 k 
                                 + 
                                 1 
                               
                               | 
                               k 
                             
                             ) 
                           
                         
                       
                       
                         
                           
                             P 
                             x 
                           
                            
                           
                             ( 
                             
                               
                                 k 
                                 + 
                                 1 
                               
                               | 
                               k 
                             
                             ) 
                           
                         
                       
                     
                     
                       
                         
                           
                             
                               P 
                               x 
                             
                              
                             
                               ( 
                               
                                 
                                   k 
                                   + 
                                   1 
                                 
                                 | 
                                 k 
                               
                               ) 
                             
                           
                           T 
                         
                       
                       
                         
                           
                             P 
                             p 
                           
                            
                           
                             ( 
                             
                               
                                 k 
                                 + 
                                 1 
                               
                               | 
                               k 
                             
                             ) 
                           
                         
                       
                     
                   
                   ] 
                 
                 - 
                 
                   
                     W 
                      
                     
                       ( 
                       
                         k 
                         + 
                         1 
                       
                       ) 
                     
                   
                    
                   
                     S 
                      
                     
                       ( 
                       
                         k 
                         + 
                         1 
                       
                       ) 
                     
                   
                    
                   
                     
                       W 
                        
                       
                         ( 
                         
                           k 
                           + 
                           1 
                         
                         ) 
                       
                     
                     T 
                   
                 
               
             
           
         
       
     
         [0049]    One may consider a special case where the cross-covariance Px(.) between the state and multipath estimates is zero. Two filters can then be used to improve the computational efficiency, one for the state vector X(.) and the other for multipath state Mp(.). This method can be described as follows. 
         [0050]    The receiver state filter uses the current multipath estimate and its variance to update the receiver state. The receiver state prediction and its variance are, 
         [0000]        X ( k+ 1 |k )= F ( k )* X ( k|k ) and 
         [0000]        P ( k+ 1 |k )= F ( k )* P ( k|k )+ Q ( k ) 
         [0051]    The prediction for the multipath and its variance are, 
         [0000]        Mp ( k+ 1 |k )= Mp ( k|k ) 
         [0000]        P   p ( k+ 1 |k )= Pp ( k|k )+ Qp ( k ) 
         [0000]    The residual is 
         [0000]      μ( k+ 1)= Z ( k+ 1)− H ( k+ 1)* X ( k+ 1 |k )− Mp ( k+ 1 |k )
 
         [0052]    The innovations variance is given by 
         [0000]        S ( k+ 1)= H ( k+ 1)* P ( k+ 1 |k )* H ( k+ 1) T+Pp ( k|k )+ Qp ( k )+ R ( k ) 
         [0053]    The state and variance updates are 
         [0000]        X ( k+ 1 |k+ 1)= X ( k+ 1 |k )+ P ( k+ 1 |k )* H ( k+ 1) T   *S ( k+ 1)-1*μ( k+ 1)
 
         [0000]        P ( k+ 1 |k+ 1)= P ( k+ 1 |k )− P ( k+ 1 |k )* H ( k+ 1) T   *S ( k+ 1)−1 *H ( k+ 1)* P ( k+ 1 |k )
 
         [0054]    Thus for an example multipath filter according to embodiments of the invention, the updated estimates and variance are 
         [0000]        Mp ( k+ 1 |k+ 1)= Mp ( k+ 1 |k )+ Pp ( k+ 1 |k )* S ( k+ 1) −1 *μ( k+ 1);
 
         [0000]        Pp ( k+ 1 |k+ 1)= Pp ( k+ 1 |k )− Pp ( k+ 1 |k )* S ( k+ 1) −1   *Pp ( k+ 1 |k )
 
         [0055]    In additional or alternative embodiments, if a satellite is already on the MP list, the elevation of this SV is high and the signal is strong, the MP estimate can be reduced using a linear decreasing model: 
         [0000]        MP ( k )= MP ( k− 1)− MP _rate+noise
 
         [0056]    Instead of the normal equation of MP(k)=MP(k−1)+noise 
         [0057]      FIG. 5  is a plot illustrating one example implementation of the multipath estimation and correction algorithm according to embodiments of the invention. In this example, the state dynamic estimation is using a constant-velocity model; For the multipath state estimation, Fp(k)=1, Qp(.)=15 m*15 m. 
         [0058]    Although the present invention has been particularly described with reference to the preferred embodiments thereof, it should be readily apparent to those of ordinary skill in the art that changes and modifications in the form and details may be made without departing from the spirit and scope of the invention. It is intended that the appended claims encompass such changes and modifications.