|
Claims  |
|
|
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. |
|
|
|
|
Claims  |
|