WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Satellite positioning system filter    
United States Patent5590043   
Link to this pagehttp://www.wikipatents.com/5590043.html
Inventor(s)McBurney; Paul W. (Santa Clara, CA)
AbstractA method, implementable on a computer, for filtering time-varying location solution coordinates P.sub.x,n, P.sub.y,n, and P.sub.z,n, determined by a Satellite Positioning System (SATPS, usually GPS or GLONASS), which operates in a static mode and a dynamic mode, to reduce large discontinuities and control the rate at which a changing sequence of measurement errors can induce a change in a sequence of location solutions. As an initial step, SATPS location solutions P.sub.x,n, P.sub.y,n, and P.sub.z,n, and SATPS velocity solutions V.sub.x,n, V.sub.y,n, and V.sub.z,n are generated for selected fix times t=t.sub.n with essentially no time lag in these solutions, when recent measurements are available from all satellites in the solution constellation. Sequences of filtered location coordinates {P.sup..LAMBDA..sub.x,n }, {P.sup..LAMBDA..sub.y,n }, and {P.sup..LAMBDA..sub.z,n } are formed, to reduce discontinuities that occur with a changing set of measurement errors caused by one or more of the following perturbing events: (1) change of the satellites in the SATPS solution constellation, (2) change of the location solution from a three-dimensional solution to a two-dimensional solution, (3) change of the location solution from a two-dimensional solution to a three-dimensional solution, (4) change in availability of differential SATPS info, (5) appearance or disappearance of Selective Availability, (6) appearance or disappearance of receiver noise in satellite measurements, (7) appearance or disappearance of multipath signals in satellite measurements, and (8) a significant change in a latency error for any location or velocity coordinate of the solution. Filtered location coordinates P.sup..LAMBDA..sub.x,n, P.sup..LAMBDA..sub.y,n, and P.sup..LAMBDA..sub.z,n are formed as linear combinations, using selected weights, of the unfiltered location solutions P.sub.x,n, P.sub.y,n and P.sub.z,n with predicted location coordinates P.sup..LAMBDA..sub.x,n.sup.-, P.sup..LAMBDA..sub.y,n.sup.- and P.sup..LAMBDA..sub.z,n, using the average velocities (V.sub.x,n +V.sub.x,n-1)/2, (V.sub.y,n +V.sub.y,n-1)/2 and (V.sub.z,n +V.sub.z,n-1)/2 in the time interval t.sub.n-1 .ltoreq.t.ltoreq.t.sub.n between two location fix times t.sub.n.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 5590043
Satellite positioning system filter - US Patent 5590043 Drawing
Satellite positioning system filter
Inventor     McBurney; Paul W. (Santa Clara, CA)
Owner/Assignee     Trimble Navigation Limited (Sunnyvale, CA)
Patent assignment
All assignments
Publication Date     December 31, 1996
Application Number     08/078,512
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     June 17, 1993
US Classification     701/207 342/357.02 342/357.12 342/457 701/213 702/153 702/190
Int'l Classification     G06F 165/00 G01S 005/02
Examiner     Zanelli; Michael
Assistant Examiner    
Attorney/Law Firm     Schipper; John
Address
Parent Case    
Priority Data    
USPTO Field of Search     364/443 364/449 364/572 364/574 364/724.01 364/724.02 342/357 342/450 342/451 342/457
Patent Tags     satellite positioning filter
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5323163
Maki
342/357.15
Jun,1994

[0 after 0 votes]
5296861
Knight

Mar,1994

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


I claim:

1. A method for filtering and using time-varying location coordinates P.sub.x,n, P.sub.y,n and P.sub.z,n, determined by a Satellite Positioning System (SATPS), which operates in a static mode and in a dynamic mode, to determine the location of a mobile user of the SATPS and to reduce large discontinuities and control the rate at which a changing sequence of measurement errors can induce change in a sequence of the user's location solution coordinates, the method comprising the steps of:

(1) Setting an integer n=1 initially, using a location determination system (LDS), having an LDS antenna and an LDS receiver/processor that is connected to the LDS antenna and that includes a computer, to receive a plurality of SATPS signals and to generate initial location coordinate fixes P.sub.x,n, P.sub.y,n, and P.sub.z,n, for n =1, initializing a first selected group of variables, including a weight coefficient or gain factor .alpha..sub.n (0.ltoreq..alpha..sub.n .ltoreq.1.0; initially .alpha..sub.1 =1.0), used for controlling the relative weighting of a new unfiltered location fix at a location fix time t=t.sub.n with a predicted value computed as the previous filtered position at time t.sub.n-1 and projected forward to the present time with the average velocity at time t.sub.n and t.sub.n-1 ; a steady state value .alpha..sub.SS of the gain (0<.alpha..sub.SS <1), used when the difference between the new location fix and predicted location fix, known as the prediction error, is small; a minimum value .alpha..sub.min of the gain (0<.alpha..sub.min <1), used when the prediction error is too high so that clamping of the gain is activated; a value .alpha..sub.exp of the gain (0<.alpha..sub.exp <1), to be used in a partial expansion mode of the system when the predicted location based on the average velocity may not allow an accurate estimate of the present location solution coordinates; a value .alpha..sub.0 (0<.alpha..sub.0 .ltoreq.1), used for the gain upon reset when large gaps in time occur between consecutive fix times t.sub.n, or when the prediction error is too large, or when a large improvement in location accuracy occurs between consecutive location fixes; a counting integer N (.gtoreq.1), used for counting consecutive fixes in a static mode; a selected location error threshold PE.sub.thr ; a maximum allowable location error PE.sub.max ; a maximum allowed time interval length .DELTA.t.sub.max during which no satellite signal measurements are received; a selected initial value of a variable, clamp.sub.-- active(n), which is >0 if clamping is active, <0 if the system is in a partial expansion mode, and =0 in a normal dynamic mode; a selected initial value of a variable, static.sub.-- count(n), used for counting the number of consecutive location fixes with velocity less than a threshold velocity V.sub.h,thr that is required for entry into the static mode; a selected value .beta..sub.cl,n >1, used to control the incremental increase of the variable .alpha..sub.n toward a steady state value .alpha..sub.SS from a state in which clamping is present, where .alpha..sub.SS =a selected positive value r30; and a selected value .beta..sub.SS (0<.beta..sub.SS <1), used to control a second approach of the variable .alpha..sub.n from a reset value .alpha.(reset) toward a steady state value .alpha..sub.SS in a normal dynamic mode of the SATPS, defining initial filtered location coordinates P.sup..LAMBDA..sub.x,1 =P.sub.x,1, P.sup..LAMBDA..sub.y,1 =P.sub.y,1 and P.sup..LAMBDA..sub.z,1 =P.sub.z,1, and proceeding to step (46);

(2) for n.gtoreq.2, using the LDS antenna and the LDS receiver/proceessor to receive a plurality Of SATPS signals and to generate new location coordinate fixes P.sub.x,n, P.sub.y,n, and P.sub.z,n, new velocity coordinate fixes V.sub.x,n, V.sub.y,n, and V.sub.z,n that are independent of any previous fix information received, a new time coordinate t.sub.n for the time of this location fix, and values for variables last .alpha.(n)=.alpha..sub.n-1, last latency=L.sub.n-1, static last fix(n)=1 if the preceding location fix (n-1) was in the static mode and =0 otherwise, last.sub.-- hvel(n)=V.sub.h,n-1, last.sub.-- acc.sub.-- mode(n)=acc.sub.-- mode(n-1), last.sub.-- fix.sub.-- dim(n) =fix.sub.-- dim(n-1), and last.sub.-- .DELTA.t.sub.m (n)=.DELTA.t.sub.m (n-1) for variables computed for the preceding location fix;

(3) computing the horizontal component V.sub.h,n of velocity and the change in horizontal velocity .DELTA.V.sub.h,n =.vertline.V.sub.h,n -V.sub.h,n-1 .vertline. from the data obtained in step (2);

(4) choosing a first set of values of filter variables including: req.sub.-- static.sub.-- count=a selected positive value r13, a selected value of static.sub.-- count required for entry into the static mode; a selected present value of do.sub.-- static(n), which=1 if the static mode is activated, and=0 otherwise; a selected present value of a variable fix.sub.-- dim(n)=2 or 3, according to whether the available SATPS geometry allows a 2-dimensional horizontal solution or a 3-dimensional location solution; a selected present clamping value .alpha..sub.cl,n of the gain, with 0 <.alpha..sub.cl,n <1, to be used when the prediction error is too high; a selected present value for a variable, new.sub.-- clamp(n), which=1 if clamping is activated at the nth fix, and=0 otherwise; a selected present value of a variable new.sub.-- fix.sub.-- set(n), which=1 if a dimension change (2-dimensional to 3-dimensional or 3-dimensional to 2-dimensional) or a satellite constellation change occurred at the nth fix, and=0 otherwise; a selected present value of a variable DSATPS.sub.-- ON(n), which=1 if differential satellite positioning system information is available at the time of the nth fix, and =0 otherwise; a selected present value of a variable SA.sub.-- OFF(n), which=1 if Selective Availability is inactivated at the time of the nth fix, and=0 otherwise; a selected present value for a variable acc.sub.-- mode(n), which is equal to the logical or Boolean sum; {DSATPS.sub.-- ON(n)) OR (SA.sub.-- OFF(n))}; a selected present value of a variable, PDOP(n), representing the predicted dilution-of-precision determined from SATPS signals received from a selected constellation of SATPS satellites; a selected present value of a variable .DELTA.t.sub.m (n)=max {t.sub.n -t.sub.ml, t.sub.n -t.sub.m2, . . . , t.sub.n -t.sub.mM }, where t.sub.mi is the time of the most recent pseudorange measurement made from the i-th satellite that forms part of the satellite solution constellation at time t.sub.n, with t.sub.mi .ltoreq.t.sub.n (i=1, 2, . . . , M); and a selected value of a variable, B2G(n), that determines when the gain .alpha..sub.n is to be reset if a selected condition is true;

(5) determining if acc.sub.-- mode(n)=1 at the nth fix; when acc.sub.-- mode(n)=1, setting the following values for the indicated variables: N.sub.min (n)=r1, N.sub.max (n)=r2, V.sub.h,thr (n)=r3 (m/sec), .DELTA.V.sub.h,thr (n)=r4 (m/sec), .beta..sub.cl,n =r5, and .sigma..sub.meas (n)=r6, .sigma..sub.pos (n)=PDOP(n).times..sigma..sub.meas (n); when acc.sub.-- mode(n)=0, setting the following values for the indicated variables: N.sub.min (n)=r7, N.sub.max (n)=r8, V.sub.h,thr (n)=r9 (m/sec), .DELTA.V.sub.h,thr (n)=r10 (m/sec), .beta..sub.cl,n =r11, .sigma..sub.meas (n)=r12, and .sigma..sub.pos (n)=PDOP(n).times..sigma..sub.meas (n), where r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11 and r12 are selected positive values with r1 .ltoreq.r7, r2.ltoreq.r8, r3.ltoreq.r9, r4.ltoreq.r10, r5.gtoreq.r11>1, and r6--r12;

(6) setting do static(n)=0;

(7) testing if the horizontal velocity is below the static mode threshold by determining if the condition V.sub.h,n <V.sub.h,thr is true; when V.sub.h,n <V.sub.h,thr is true, incrementing static.sub.-- count(n) by 1 and proceeding to step (8); otherwise, continuing to step (8);

(8) determining if static mode was active in the last fix by determining if {(static.sub.-- last.sub.-- fix(n)=1) AND (.DELTA.V.sub.h,n <.DELTA.V.sub.h,thr)} is true; when this condition is satisfied, setting do.sub.-- static(n)=1, setting clamp.sub.-- active(n)=0, and proceeding to step (13); otherwise, continuing to step (9);

(9) determining if static mode was active in the last fix; if {static last fix(n)=1) AND (.DELTA.V.sub.h,n <.DELTA.V.sub.h,thr)} is true, setting static count(n) =0; if {(static last fix(n)=1) AND (.DELTA.V.sub.h,n .gtoreq..DELTA.V.sub.h,thr)} is true, or if {static last fix(n).noteq.1) AND (static count(n)=req static count)} is true, setting do static(n)=1 and setting clamp active(n)=0; if {static last fix(n).noteq.1) AND (static count(n).noteq.req static count)} is true, continuing to step (10);

(10) determining if do.sub.-- static(n)=1; when this condition is satisfied, setting last.sub.-- hvel(n+1)=V.sub.h,n, setting V.sub.x,n =V.sub.y,n =V.sub.z,n =0, replacing N by max(N, N.sub.min) and proceeding to step (12); otherwise proceeding to step (11);

(11) determining if static.sub.-- last.sub.-- fix(n)=1; when this condition is not satisfied, proceeding to step (12); otherwise, setting new.sub.-- clamp(n)=1, setting end.sub.-- static.sub.-- count(n)=a selected positive integer r14, where end.sub.-- static.sub.-- count(n) is a countdown integer used for exiting from the static mode, and continuing to step (12);

(12) setting .DELTA.t.sub.n =t.sub.n-1 ;

(13) determining if do.sub.-- static(n)=1; when this condition is satisfied, setting P.sup..LAMBDA..sub.x,n.sup.- =P.sup..LAMBDA..sub.x,n-1, P.sup..LAMBDA..sub.y,n.sup.- =P.sup..LAMBDA..sub.y,n-1 and P.sup..LAMBDA..sub.z,n.sup.- =P.sup..LAMBDA..sub.z,n-1 ; Otherwise, setting P.sup..LAMBDA..sub.x,n.sup.- =P.sup..LAMBDA..sub.x,n-1 +(V.sub.x,n +V.sub.x,n-1) .DELTA.t.sub.n /2, setting P.sup..LAMBDA..sub.y,n.sup.- =P.sup..LAMBDA..sub.y,n-1 +(V.sub.y,n +V.sub.y,n-1).DELTA.t.sub.n /2 and setting P.sup..LAMBDA..sub.z,n.sup.- =P.sup..LAMBDA..sub.z,n-1 +(V.sub.z,n +V.sub.z,n-1) .DELTA.T.sub.n /2;

(14) computing PE.sub.n =max {.vertline.P.sub.x,n -P.sup..LAMBDA..sub.x,n.sup.- .vertline., .vertline.P.sub.y,n -P.sup..LAMBDA..sub.y,n.sup.- .vertline., .vertline.P.sub.z,n -P.sup..LAMBDA..sub.z,n.sup.- .vertline.};

(15) computing .delta.V.sub.n =max {.vertline.V.sub.x,n -V.sub.x,n-1 .vertline., .vertline.V.sub.y,n -V.sub.y,n-1 .vertline., .vertline.V.sub.z,n -V.sub.z,n-1 .vertline.};

(16) computing .DELTA.t.sub.L (n)=max {.DELTA.t.sub.n, .DELTA.t.sub.m (n), .DELTA.t.sub.m (n-1) };

(17) determining if .DELTA.t.sub.n .gtoreq..DELTA.t.sub.max, where .DELTA.t.sub.max =a selected positive value r28; when this condition is satisfied, proceeding to step (25); otherwise, continuing to step (18);

(18) determining if PE.sub.n .gtoreq.PE.sub.max ; when this condition is satisfied, proceeding to step (25); otherwise, continuing to step (19);

(19) determining if {(fix.sub.-- dim(n)=3) AND (first.sub.-- 3D.sub.-- fix(n)=1)} is true; when this condition is satisfied, proceeding to step (25); otherwise, continuing to step (20);

(20) determining if B2G(n).noteq.1; when this condition is satisfied, proceeding to step (24); otherwise, continuing to step (21);

(21) determining if {(first.sub.-- DSATPS.sub.-- fix(n)=1) AND (acc.sub.-- mode(n-1)=1)} is true; when this condition is satisfied, proceeding to step (25); otherwise, continuing to step (22);

(22) determining if {(PDOP(n)<r15 PDOP(n-1)) AND (fix.sub.-- dim(n)=fix.sub.-- dim(n-1)) AND (PDOP(n-1).gtoreq.r16)} is true, where r15 and r16 are selected positive values; when this condition is satisfied, proceeding to step (25); otherwise, continuing to step (23);

(23) determining if {(PE.sub.n .gtoreq.r17 .sigma..sub.pos (n)) AND (fix.sub.-- dim(n)=3) AND (fix.sub.-- dim(n-1)=2)} is true, where r17 is a selected positive value; when this condition is satisfied, continuing to step (25); otherwise, continuing to step (24);

(24) setting reset.sub.-- filter(n)=0 and proceeding to step (26);

(25) setting reset.sub.-- filter(n)=1, and setting the gain .alpha..sub.n equal to the value .alpha..sub.0 ;

(26) determining if {(clamp.sub.-- active(n)>0) AND (.alpha..sub.SS PE.sub.n <PE.sub.thr /r18) AND (end.sub.-- static.sub.-- count(n)=0)} is true, where r18 is a selected positive value; when this condition is satisfied, setting clamp.sub.-- active(n)=0; otherwise, continuing to step (27);

(27) determining if {(clamp.sub.-- active(n)<0) AND (PE.sub.n .gtoreq.r19 last.sub.-- latency)} is true, where r19 is a selected positive value; when this condition is satisfied, setting clamp.sub.-- active(n)=0; otherwise, continuing to step (28);

(28) determining if PE.sub.n .gtoreq.PE.sub.thr ; if the condition is not met, proceeding to step (45); otherwise, continuing to step (29);

(29) computing a latency variable L.sub.n =.delta.V.sub.n .DELTA.t.sub.L (n)/2, to estimate the maximum location error that has occurred due to presence of non-zero acceleration;

(30) replacing the latency L.sub.n by min(L.sub.n, r20), where r20 is a selected positive value;

(31) determining if PE.sub.n <r21 L.sub.n, where r21 is a selected positive value; when this condition is not satisfied, proceeding to step (33); otherwise, continuing to step (32);

(32) determining if {{(acc.sub.-- mode(n)=0) AND (L.sub.n .gtoreq.r22)} OR {acc.sub.-- mode(n)=1 AND L.sub.n .gtoreq.r23 }}is true; when this condition is satisfied, setting clamp.sub.-- active(n)=-r24, setting last.sub.-- latency=L.sub.n, and proceeding to step (35), where r22, r23 and r24 are selected positive values; otherwise, continuing to step (33);

(33) determining if .alpha..sub.n PE.sub.n <PE.sub.thr ; when this condition is not satisfied, continuing to step (35); otherwise, continuing to step (34);

(34) determining if (clamp.sub.-- active(n)=0) OR {(new.sub.-- fix.sub.-- set(n)=1) AND (clamp.sub.-- active(n)>0)} is true; when this condition is satisfied, setting new.sub.-- clamp(n)=1; otherwise, continuing to step (35);

(35) determining if reset.sub.-- filter(n)=1; when this condition is not satisfied, continuing to step (36); otherwise, setting .alpha.=.alpha..sub.0, setting clamp.sub.-- active(n)=0, setting end.sub.-- static.sub.-- count(n)=0, setting N=N.sub.min, and proceeding to step (45);

(36) determining if new.sub.-- clamp(n)=1; when this condition is not satisfied, proceeding to step (40); otherwise, continuing to step (37);

(37) determining if do.sub.-- static(n)=1; when this condition is not satisfied, proceeding to step (39); otherwise, continuing to step (38);

(38) setting N=[r25 PE.sub.n ].sub.int, where r25 is a selected positive value, replacing N by min(N, N.sub.max), setting .alpha..sub.n =1/N, setting clamp.sub.-- active(n)=0, and proceeding to step (45);

(39) setting .alpha..sub.cl,n =K.sub.n /PE.sub.n, setting .alpha..sub.n =max(.alpha..sub.cl,n, .alpha..sub.min), where .alpha..sub.min is a selected small positive value r29, setting clamp.sub.-- active (n)=R.sub.n, where K.sub.n and R.sub.n are selected positive numbers that may depend on n, and proceeding to step (45);

(40) determining if clamp.sub.-- active(n)>0; when this condition is not satisfied, proceeding to step (43); otherwise, continuing to step (41);

(41) setting .alpha..sub.n =J.sub.n, replacing .alpha..sub.n by max(.alpha..sub.n-1, .alpha..sub.SS), and setting clamp.sub.-- active(n)=clamp.sub.-- active(n)-1, where J.sub.n is a selected positive number that depends upon n;

(42) determining if end.sub.-- static.sub.-- count(n)>0; when this condition is satisfied, setting end.sub.-- static.sub.-- count(n)=end.sub.-- static.sub.-- count(n)-1 and proceeding to step (45); otherwise, continuing to step (43);

(43) determining if clamp.sub.-- active(n)<0; when this condition is not satisfied, continuing to step (44); otherwise, setting .alpha..sub.n =.alpha..sub.exp, where .alpha..sub.exp is a selected positive value r31, setting clamp.sub.-- active(n)=clamp.sub.-- active(n)+1, and proceeding to step (45);

(44) determining if do.sub.-- static(n)=1; when this condition is satisfied, setting N=N+1, replacing N by min(N, N.sub.max), setting .alpha..sub.n =1/N, and continuing to step (45); otherwise, setting .alpha..sub.n =.beta..sub.SS .alpha..sub.n-1, where .beta..sub.SS is a selected positive value r32, replacing .alpha..sub.n by max(.alpha..sub.n, .alpha..sub.SS), and continuing to step (45);

(45) computing filtered location coordinates P.sup..LAMBDA..sub.x,n, P.sup..LAMBDA..sub.y,n and P.sup..LAMBDA..sub.z,n by the relations

P.sup..LAMBDA..sub.x,n =.alpha..sub.n P.sub.x,n +(1-.alpha..sub.n)P.sup..LAMBDA..sub.x,n.sup.-,

P.sup..LAMBDA..sub.y,n =.alpha..sub.n P.sub.y,n +(1-.alpha..sub.n)P.sup..LAMBDA..sub.y,n.sup.-,

P.sup..LAMBDA..sub.z,n =.alpha..sub.n P.sub.z,n +(1-.alpha..sub.n)P.sup..LAMBDA..sub.z,n.sup.- ;

(46) setting last .alpha.=.alpha..sub.n, last latency=L.sub.n, last PDOP =PDOP(n), last.sub.-- hvel(n+1)=V.sub.h,n, last.sub.-- acc.sub.-- mode(n+1)=acc.sub.-- mode(n), last.sub.-- fix.sub.-- dim(n+1)=fix.sub.-- dim(n) and last.sub.-- .DELTA.t.sub.m (n+1)=.DELTA.t.sub.m (n);

(47) replacing integer n by n+1;

(48) returning to step (2) at least once: and

(49) causing the LDS receiver/processor to assist the mobile SATPS user in navigating from a first selected location to a second selected location by replacing the location coordinates (P.sub.x,n, P.sub.y,n, P.sub.z,n) by the filtered location coordinates (P.sup..LAMBDA..sub.x,n, P.sup..LAMBDA..sub.y,n, P.sup..LAMBDA..sub.z,n) and by displaying these filtered location coordinates for at least one mobile user location other than the first and second selected locations.

2. The method of claim 1, further comprising the steps of:

choosing said number K.sub.n in step (39) to be=PE.sub.thr /r26, where r26=a positive number satisfying 1.ltoreq.r26.ltoreq.100;

choosing said number R.sub.n in step (39) to be=[A.sub.n +B.sub.n ].sub.int, where A.sub.n =1n {PE.sub.thr / (r27.alpha..sub.SS PE.sub.n)}/1n{1-.alpha..sub.SS } and B.sub.n =1n{.alpha..sub.SS /.alpha..sub.n }/1n{.beta..sub.cl }, where r27=a selected positive value; and

choosing said number J.sub.n in step (41) to be=.beta..sub.cl .alpha..sub.n-1.

3. The method of claim 2, further comprising the step of: choosing said value r26=8 and choosing said value r27=2.

4. The method of claim 1, further comprising the steps of:

choosing said number K.sub.n in Step (39) to be=.DELTA.P.sub.n /O, where O is a selected positive number and .DELTA.P.sub.n =max {.vertline.(V.sub.x,n +V.sub.x,n-1 .vertline..DELTA.t.sub.n /2, .vertline.(V.sub.y,n +V.sub.y,n-1 .vertline..DELTA.t.sub.n /2, .vertline.(V.sub.z,n +V.sub.z,n-1 .vertline..DELTA.t.sub.n /2};

choosing said number R.sub.n in step (39) to be=N.sub.relief, where N.sub.relief =a selected positive valuesatisfying N.sub.relief .gtoreq.10; and

choosing said number J.sub.n in step (41) to be=.DELTA.P.sub.n /(O PE.sub.n).

5. The method of claim 1, further comprising the steps of choosing said selected constants rk (k=1, 2, . . . , 26 and 29-32) to be the following values and ranges of values:

r1=1,

r2=100,

r3=0.1

r4=0.2,

r5=1.5,

r6=2-8,

r7=1000,

r8=10.sup.6,

r9=1.1,

r10=0.5,

r11=1.125,

r12=16-32,

r13=2,

r14=20-60,

r15=2,

r16=6,

r17=6,

r18=2,

r19=2,

r20=30,

r21=2,

r22=8,

r23=16,

r24=4-12,

r25=16,

r26=1-100,

r29=0.001,

r30=0.0625,

r31=0.2,

r32=0.5.

6. A method for filtering and using time-varying location coordinates P.sub.x,n, P.sub.y,n and P.sub.z,n, determined by a Satellite Positioning System (SATPS), which operates in a static mode and in a dynamic mode, to determine the location of a mobile user of the SATPS and to reduce large discontinuities and control the rate at which a changing sequence of measurement errors can induce change in a sequence of the user's location coordinates, the method comprising the steps of:

(1) causing a location determination system (LDS), having an LDS antenna and an LDS receiver/processor that is connected to the LDS antenna and that includes a computer, to receive SATPS signals from a plurality of SATPS satellites and to generate SATPS unfiltered location coordinate solutions P.sub.x,n, P.sub.y,n and P.sub.z,n, and SATPS velocity coordinate solutions V.sub.x,n, V.sub.y,n, and V.sub.z,n for a sequence of at least three selected location fix times t=t.sub.n , where t.sub.n-1 <t.sub.n (n=2.3, . . . ), with substantially no time lag in these solutions, for a mobile SATPS user, when recent measurements are available from all satellites in a selected solution constellation;

(2) setting the integer n=1 and causing the LDS receiver/processor to define predicted location coordinates

P.sup..LAMBDA..sub.x,1 -=P.sub.x,1,

P.sup..LAMBDA..sub.y,1 -=P.sub.y,1,

P.sup..LAMBDA..sub.z,1 -=p.sub.Z,1,

(3) for n.gtoreq.2, causing the receiver/processor to form predicted location coordinates P.sup..LAMBDA..sub.x,n.sup.-, P.sup..LAMBDA..sub.y,n.sup.-, and P.sup..LAMBDA..sub.z,n.sup.- that are defined by the relations

P.sup..LAMBDA..sub.x,n.sup.- =P.sup..LAMBDA..sub.x,n-1 +(V.sub.x,n +V.sub.x,n-1) .DELTA.t.sub.n /2,

P.sup..LAMBDA..sub.y,n.sup.- =P.sup..LAMBDA..sub.y,n-1 +(V.sub.y,n +V.sub.y,n-1) .DELTA.t.sub.n /2,

P.sup..LAMBDA..sub.z,n.sup.- =P.sup..LAMBDA..sub.z,n-1 +(V.sub.z,n +V.sub.z,n-1) .DELTA.t.sub.n /2,

.DELTA.t.sub.n =t.sub.n -t.sub.n-1 ;

(4) causing the receiver/processor to form filtered location coordinates P.sup..LAMBDA..sub.x,n, P.sup..LAMBDA..sub.y,n and p.sup..LAMBDA..sub.z,n that are defined by the relations

P.sup..LAMBDA..sub.x,n =.alpha..sub.n P.sub.x,n +(1-.alpha..sub.n) P.sup..LAMBDA..sub.x,n.sup.-,

P.sup..LAMBDA..sub.y,n =.alpha..sub.n P.sub.y,n +(1-.alpha..sub.n) P.sup..LAMBDA..sub.y,n.sup.-,

P.sup..LAMBDA..sub.z,n =.alpha..sub.n P.sub.z,n +(1-.alpha..sub.n) P.sup..LAMBDA..sub.z,n.sup.-,

where .alpha..sub.n is a selected weight coefficient that satisfies the constraint 0<.alpha..sub.n .ltoreq.1;

(5) selecting the weight coefficients .alpha..sub.n to reduce discontinuities that occur with a changing set of measurement errors caused by at least one of the following perturbing events; (i) change of the satellites in the solution constellation, (ii) change of the location coordinate solution from a three-dimensional solution to a two-dimensional solution, (iii) change of the location coordinate solution from a two-dimensional solution to a three-dimensional solution, (iv) change in availability of differential SATPS information, (v) appearance or disappearance of Selective Availability, (vi) appearance or disappearance of receiver noise in satellite measurements used in the location coordinate solution. (vii) appearance or disappearance of multipath signals on satellite measurements used at the SATPS receiver, and (viii) a significant change in a latency error for any location coordinate or velocity coordinate of the solution: and

(6) replacing the integer n by the integer n+1 and repeating steps (3), (4) and (5) aat least once;

(7) causing the receiver/processor to assist the mobile SATPS user in navigating from a first selected locatign to a second selected location by replacing the location coordinates (P.sub.x,n, P.sub.y,n, P.sub.z,n) by the filtered location coordinates (P.sup..LAMBDA..sub.x,n, P.sup..LAMBDA..sub.y,n, P.sup..LAMBDA..sub.z,n) and by displaying these filtered location coordinates for at least one mobile user location other than the first and second selected locations.

7. The method of claim 6, further comprising the step of allowing said selected weight coefficients .alpha..sub.n to vary with said fix time t.sub.n.

8. The method of claim 7, comprising the step of choosing said weight coefficients 1-.alpha..sub.n for said predicted location coordinates P.sub.x,n.sup.-, P.sub.y,n.sup.-, and P.sub.z,n.sup.- to be larger than said weight coefficients .alpha..sub.n for said location coordinate solutions P.sub.x,n, P.sub.y,n and P.sub.z,n in said linear combinations, when said respective predicted location coordinates P.sub.x,n.sup.-, P.sub.y,n.sup.-, and P.sub.z,n.sup.- differ from said respective unfiltered location coordinate solutions P.sub.x,n, P.sub.y,n and P.sub.z,n by more than a selected threshold amount.

9. The method of claim 7, further comprising the step of allowing said linear combinations to converge to steady state location coordinate solutions when said weight coefficients .alpha..sub.n approach steady state values.

10. The method of claim 9, wherein said filter weights .alpha..sub.n have steady state values in the dynamic mode and steady state values in the static mode, the method further comprising the step of choosing said weight coefficients .alpha..sub.n so that said filtered location coordinates approach said respective SATPS location coordinate solutions, and thereby become increasingly accurate, the longer said SATPS remains in a steady state mode.

11. The method of claim 7, further comprising the step of allowing at least one of said filtered location coordinate sequences to migrate at a low, controllable rate from a first location coordinate sequence, corresponding to a first set of SATPS location coordinate solutions P.sub.x,n.sup.(1), P.sub.y,n.sup.(1), and P.sub.z,n.sup.(1), to a second location coordinate sequence, corresponding to a second set of SATPS location coordinate solutions P.sub.x,n.sup.(2), P.sub.y,n.sup.(2), and P.sub.z,n.sup.(2).

12. The method of claim 11, further comprising the step of delaying said migration of said at least one filtered location coordinate sequence from said first location coordinate sequence to said second location coordinate sequence for a selected hold-off time interval, in order to minimize net migration of said filtered location coordinate sequence to said second location coordinate sequence when said SATPS-determined location coordinate solutions move briefly to said second set of SATPS location coordinate solutions and then return to said first set of SATPS location coordinate solutions.

13. The method of claim 12, further comprising the step of allowing migration of said at least one filtered location coordinate sequence from said first location coordinate sequence to said second location coordinate sequence in a controlled and gradual manner, in order to move toward a steady-state location solution at said second location sequence if said SATPS location coordinate solutions remain in said second set of SATPS location sequence.

14. The method of claim 7, further comprising the step of allowing said weights to vary with said location fix time t.sub.n as a function of a present prediction error, which is defined as the difference between said unfiltered location coordinate solutions and said respective predicted location coordinates.

15. The method of claim 7, further comprising the step of setting said SATPS velocity coordinate solutions V.sub.x,n, V.sub.y,n, and V.sub.z,n equal to zero whenever said SATPS is in a static mode.

16. The method of claim 7, further comprising the step of assigning the SATPS to a static mode whenever the magnitudes of said SATPS velocity coordinate solutions V.sub.x,n, V.sub.y,n, and V.sub.z,n, are smaller than a selected velocity threshold for a selected number of consecutive location fix times t=t.sub.n.

17. The method of claim 16, further comprising the step of allowing said SATPS to remain in a static mode, even if one or more of the present SATPS velocity solution values exceeds said velocity threshold, if said SATPS was in the static mode at the preceding location fix time t=t.sub.n-1, and the time rate of change of said velocity coordinate solutions between the preceding location fix time t=t.sub.n-1, and the present location fix time t=t.sub.n is smaller than a selected velocity time-rate-of-change threshold.

18. The method of claim 7, further comprising the step of assigning the SATPS to a static mode whenever the magnitude of a horizontal velocity V.sub.h,n, formed from said SATPS velocity solutions V.sub.x,n, V.sub.y,n, and V.sub.z,n, is smaller than a selected velocity threshold for a selected number of consecutive location fix times t=t.sub.n.

19. The method of claim 18, further comprising the step of allowing said SATPS to remain in a static mode, even if said horizontal velocity magnitude V.sub.h,n exceeds said selected velocity threshold, if said SATPS was in the static mode at the preceding location fix time t=t.sub.n-1, and the time rate of change of said horizontal component V.sub.h,n between the preceding location fix time t=t.sub.n-1, and the present location fix time t=t.sub.n is smaller than a selected velocity time-rate-of-change threshold.

20. The method of claim 6, wherein said weight coefficient .alpha..sub.n has a steady state value .alpha..sub.SS in a dynamic mode, the method further comprising the steps of:

reducing the value of said weight coefficient .alpha..sub.n to a selected positive initial static mode value .alpha..sub.min,1 <.alpha..sub.SS at time t=t.sub.n0, whenever said SATPS makes a transition at this time from the dynamic mode to a static mode; and

allowing said weight coefficient .alpha..sub.n to decrease monotonically toward a value .alpha..sub.min,2 <.alpha..sub.min,1 for subsequent location fix times t=t.sub.r (r>n0), to reduce any allowed changes in said filtered location coordinates while the system is in the static mode.

21. The method of claim 6, wherein said weight coefficient .alpha..sub.n has a steady state value .alpha..sub.SS in a dynamic mode, the method further comprising the steps of:

setting the value of said weight coefficient .alpha..sub.n equal to a selected value .alpha..sub.clamp <.alpha..sub.SS at time t=t.sub.n0 whenever said SATPS makes a transition at this time from a static mode to a dynamic mode; and

holding the value of said weight coefficient .alpha..sub.n at the value .alpha..sub.clamp for subsequent fix times t=t.sub.r (r>n0) for a selected time interval, then allowing said weight coefficient .alpha..sub.n to increase toward the value .alpha..sub.SS, to limit any change in said filtered location coordinates that does not arise from a non-zero velocity of said system.

22. The method of claim 6, further comprising the step of choosing said weight coefficients .alpha..sub.n so that (1-.alpha..sub.n).apprxeq.1 for said predicted location coordinates P.sup..LAMBDA..sub.x,n.sup.-, P.sup..LAMBDA..sub.y,n.sup.- and P.sup..LAMBDA..sub.z,n.sup.-, when at least one of the location difference magnitudes .vertline.P.sup..LAMBDA..sub.x,n.sup.- -P.sub.x,n .vertline., .vertline.P.sup..LAMBDA..sub.y,n.sup.- -P.sub.y,n .vertline. and .vertline.P.sup..LAMBDA..sub.z,n.sup.- -P.sub.z,n .vertline. exceeds a selected threshold difference amount, to limit any changes in said filtered location coordinates when at least one of these location difference magnitudes is larger than the threshold difference amount.

23. The method of claim 21, further comprising the steps of:

determining a latency error in said SATPS location coordinate solutions and said velocity coordinate solutions; and

increasing said weight coefficient .alpha..sub.n to a value .alpha..sub.exp >.alpha..sub.SS for a selected time interval, to reduce the latency error in said SATPS location coordinate solutions at a greater rate than would occur if said weight coefficient .alpha..sub.n were set equal to said steady state value .alpha..sub.SS.
 Description Submit all comments and votes
 


FIELD OF THE INVENTION

This invention relates to adaptive filters for use in a satellite positioning system.

BACKGROUND OF THE INVENTION

A Satellite Positioning System (SATPS), which includes a Global Positioning System (GPS) and a Global Orbiting Navigational Satellite System (GLONASS) as particular implementations, uses signals received from three or more SATPS satellites to determine either two or three location coordinates of the SATPS antenna receiving these signals and also the receiver time offset from the system time, based upon tracking a particular digital code and/or frequency that is unique for each such satellite, plus the known location of each such SATPS satellite as a function of time in its particular orbit. One implementation of the SATPS, GPS, is discussed by Tom Logsdon in The NAVSTAR Global Positioning System, Van Nostrand Reinhold, 1992, pp. 1-90, incorporated by reference herein. Particular aspects of GPS and GLONASS are discussed in detail below.

Within an SATPS, two methods are available for computing the location solution for an SATPS antenna, based upon SATPS-derived pseudorange and Doppler shift measurements. The first method is characterized as a snapshot or least squares solution in which independent location and velocity solutions are computed, using only present measurements (valid at the present measurement epoch or "snapshot" time of solution). In this case, the location and velocity solutions in one epoch are independent of these solutions during any other epoch.

In almost all receivers using snapshot solutions, some filtering of the pseudorange measurements with Doppler is performed. Doppler measurements are typically at least 10-20 times less noisy than pseudorange measurements. However, even with measurement smoothing, the dynamic errors between solutions are still independent when concurrent measurements are obtained for each satellite used in the solution at each epoch. If a satellite is briefly obscured, most receivers will re-use a previous pseudorange in the solution by propagating the last measurement forward in time with the Doppler measurement for a brief time before a new satellite solution set is chosen. During this time, accelerations will induce correlated errors in consecutive snapshot solutions. However, most of the time, the snapshot solution sequence can be modelled as an independent sequence of position estimates.

In an alternative approach, elaborate filtering, such as Kalman filtering, is used to assimilate measurement information and to update the location and/or velocity solutions, based in part on solutions determined at preceding measurement times. This filtering system contains a model of the measurement errors and a model of the nominal dynamical motion that the SATPS signal receiver will experience. These models are used to adjust the amount of uncertainty that accumulates between measurement times when the solution is updated. The size of these uncertainties determines the size of the gain factors used to blend the new measurements with the previous filtered solutions, in order to generate new filtered solutions.

The Kalman filter approach produces a filtered solution with a time constant which is based upon the nominal vehicle motion and measurement error models. By contrast, the snapshot approach makes no assumptions about the vehicle dynamics and produces an unfiltered solution. These two approaches produce different behaviors at equivalent times for non-steady state situations caused by satellite constellation switches or by other dynamical changes.

The Kalman filter modelling process requires that the parameters to be estimated can be modelled as random variables with driving functions that are in the form of a linear system driven by white noise. It is not possible to explicitly model acceleration induced position and velocity errors with such a model because acceleration produces a deterministic change in the position and velocity. Most filters that try to model acceleration induced errors incorporate some nominal acceleration-like model to produce a desired amount of uncertainty between fixes.

When larger-than-expected residuals occur between the observed and predicted measurements due to unmodeled dynamics or measurement errors, some filters adapt their error models by increasing the dynamic or measurement uncertainty. which increases the gain and decreases the time lag in the solution. Some filters are not adaptive, in which case the filter solution may lag the true dynamics for a short time after the acceleration occurs if the error model is too small for the dynamics at hand. Alternatively, the filter model may assume the presence of worst case dynamics for the particular application. In this instance, the gains would always be large enough to assimilate large, acceleration-driven residuals, and the time lag would be minimized, but the solution would be overly noisy when the dynamics were more benign. Thus, the filtered solution does not explicitly prevent step-like jumps when unmodeled measurements errors are experienced because the filtered solution must keep the gains on the measurements large enough to react to sudden changes in the vehicle motion.

The so-called snapshot approach is insensitive to system dynamics, because the solution is based solely upon current measurements, and the solution has no lag during dynamics if current measurements are maintained for each satellite in the solution. However, snapshot solutions experience jumps in position when the set of measurement errors associated with the satellites used in the solution changes. The position jumps with the snapshot solution are usually worse than with the Kalman filter solution because the measurements are weighted more heavily in the snapshot solution than in the filtered solution.

Systems modelled by either of these approaches will experience sudden jumps in the SATPS-determined location solution when the particular satellites used for the solution (the "solution constellation" of satellites) changes. This is commonly caused by a temporary blockage of one or more of the SATPS signals received from the satellites in the solution constellation. After a short hold-off to minimize the frequency of constellation switching (during which old measurements may be temporarily re-used), the receiver will pick a new set of satellites from tile available satellites for the location solution, and as a result, a different position offset may occur. If the blocked satellites become visible again, the receiver mnay choose the previous solution set again resulting in a jump back to the previous offset. When a solution constellation changes, a jump in indicated location coordinates occurs because a different set of errors is used in the new solution.

A description of the types of errors associated with each measurement is appropriate to understand how the location jumps occur. Ideally, the system would measure the range from the receiver to the satellite with no error, and any combination of satellites with reasonable geometry would generate the same exact solution. In reality, each satellite has a somewhat different set of associated errors, and different constellations of satellites will produce different location errors, according to the size of the measurement errors and the how each satellite is weighted in the solution according to the relative geometry of the satellites, which changes for each set of satellites.

With a conventional SATPS, the total measurement error for a particular satellite will have a number of contributions. The receiver and antenna will experience some receiver noise and multipath signal errors. Inaccuracies in the satellite position and clock models, and time-of-flight errors due to propagation through the ionosphere and troposphere produce additional errors. The ionosphere and troposphere propagation errors can be reduced with careful modelling of such effects. However, the inaccuracy of these models increases markedly as the particular satellite approaches the horizon and the associated air mass for signal propagation increases. The error contributed by ionospheric propagation delay can be as large as 30 meters, and the ionospheric model generally removes about 50 percent of the error. The error contributed by tropospheric propagation delay is much smaller and more accurately modelled.

The U.S. Department of Defense ("DoD") has added an additional error source to GPS known as Selective Availability (SA). This error dithers the transmitted GPS signal to produce a sinusoidal-like range error with an amplitude of up to 50 meters and a period of roughly 100-300 seconds. The effect of SA on range and range-rate is coherent, so the effect on the Doppler measurement is the derivative of the effect on the pseudorange (this makes the error almost impossible to remove with a single antenna system). In a stand-alone GPS receiver, SA is the largest error source. SA errors may also be induced by corrupting the parameters sent by the satellite and used to compute the satellite location and clock state. The U.S. DoD maintains that SA induced horizontal position errors will be less than 100 meters 95 percent of the time, when good satellite geometry is available. However, position errors on the order of 500 meters have been observed when the satellite geometry is higher than normal. Thus, SA can induce very large jumps between positions with good and poor geometry.

Where differential SATPS ("DSATPS") information is available, most of the satellite errors and the propagation errors can be removed or substantially reduced before the location solutions are computed. However, the inaccuracy of a DSATPS solution may increase to 25 meters and beyond as the distance between a reference receiver and a mobile receiver increases above approximately 100 kilometers. The receiver noise errors and multipath signal errors are not reduced using DSATPS solutions. Thus, even with DSATPS, some measurement errors will remain which can induce position jumps when the solution constellation changes.

Some workers in signal processing have developed techniques that use rate of change of a variable or similar techniques to vary the approach used for subsequent processing of signals received. U.S. Pat. No. 4,776,035, issued to Duggan, discloses a satellite signal lockup detection system that senses the onset of, and avoids, power saturation in a satellite signal channel due to perceived signal fading. This signal fading could occur because of the presence of rain or other weather variables that attenuate such signals. The rate of change of power output from an Earth station that communicates with the satellite is continuously monitored to determine approach to a power "avalanche" condition that can ultimately lead to lockup. When this rate of change exceeds a selected threshold value, Lhe system places an upper limit on signal power that is close to, but below, the power required for initiation of avalanche.

An adaptive signal modification system for discriminating between high level and low level signals is disclosed by Nakamura in U.S. Pat. No. 4,939,750. An input signal is summed with a compensation signal that is adaptively determined from the inverse of a running average of preceding input signals.

Begin, in U.S. Pat. No. 4,995,019, discloses a time period measurement system with adaptive averaging of the measurements. The time period measured is expressed as an integral number of units of constant length .DELTA.t.sub.u plus a fractional part f.DELTA.t.sub.u of that unit with 0.ltoreq.f<1. The fractional part is faltered adapfively to provide an average value of the fraction number f that depends upon the presently measured fraction number and previously measured fraction numbers.

Chung discloses a system for determining