gnss-js 2.10.1 → 2.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -1
- package/dist/analysis.cjs +24 -25
- package/dist/analysis.js +2 -2
- package/dist/{clk-DGVBGRzA.d.cts → bias-sinex-OGMw9xEZ.d.cts} +66 -1
- package/dist/{clk-DGVBGRzA.d.ts → bias-sinex-OGMw9xEZ.d.ts} +66 -1
- package/dist/binex.d.cts +1 -1
- package/dist/binex.d.ts +1 -1
- package/dist/{chunk-56HM5B6T.js → chunk-2DJ4XENO.js} +177 -9
- package/dist/{chunk-GH7MYXON.js → chunk-2KQMCJ5Z.js} +7 -5
- package/dist/chunk-E3Y6YKQM.js +65 -0
- package/dist/{chunk-3U5AX7PY.js → chunk-FEABDV5P.js} +24 -25
- package/dist/{chunk-WQX354KD.js → chunk-H3AKFD25.js} +1 -1
- package/dist/{chunk-YUW33VXK.js → chunk-HUXQABJI.js} +2 -0
- package/dist/{chunk-74IVYOQV.js → chunk-HWHD5E6V.js} +128 -78
- package/dist/{chunk-KUSUN7DP.js → chunk-MFCPYUEI.js} +1 -1
- package/dist/{chunk-3KSDL3CO.js → chunk-NIJ6WFQJ.js} +6 -321
- package/dist/chunk-NL2ORX75.js +319 -0
- package/dist/{chunk-K3GLUWZI.js → chunk-RWFJEVLJ.js} +590 -296
- package/dist/{chunk-SEYH4BEN.js → chunk-SZP4TLYR.js} +2 -2
- package/dist/chunk-TWGZTRBL.js +323 -0
- package/dist/index.cjs +1315 -460
- package/dist/index.d.cts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +20 -12
- package/dist/{nav-DImXUdbp.d.cts → nav-COp0Vmlw.d.cts} +83 -2
- package/dist/{nav-DImXUdbp.d.ts → nav-COp0Vmlw.d.ts} +83 -2
- package/dist/{nav-BYmYoh9A.d.cts → nav-CvZXmumD.d.cts} +1 -1
- package/dist/{nav-CN8rxL4h.d.ts → nav-D2DFlVpa.d.ts} +1 -1
- package/dist/novatel.d.cts +1 -1
- package/dist/novatel.d.ts +1 -1
- package/dist/novatel.js +3 -3
- package/dist/orbit.d.cts +2 -2
- package/dist/orbit.d.ts +2 -2
- package/dist/osnma.cjs +1336 -0
- package/dist/osnma.d.cts +273 -0
- package/dist/osnma.d.ts +273 -0
- package/dist/osnma.js +1216 -0
- package/dist/positioning.cjs +585 -291
- package/dist/positioning.d.cts +116 -6
- package/dist/positioning.d.ts +116 -6
- package/dist/positioning.js +3 -3
- package/dist/rinex.cjs +210 -36
- package/dist/rinex.d.cts +10 -55
- package/dist/rinex.d.ts +10 -55
- package/dist/rinex.js +6 -3
- package/dist/sbf.cjs +420 -24
- package/dist/sbf.d.cts +46 -5
- package/dist/sbf.d.ts +46 -5
- package/dist/sbf.js +12 -6
- package/dist/trimble.d.cts +1 -1
- package/dist/trimble.d.ts +1 -1
- package/dist/ubx.d.cts +1 -1
- package/dist/ubx.d.ts +1 -1
- package/dist/ubx.js +5 -4
- package/package.json +6 -1
package/dist/positioning.d.cts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { E as Ephemeris } from './nav-
|
|
1
|
+
import { E as Ephemeris } from './nav-COp0Vmlw.cjs';
|
|
2
2
|
import { DopValues } from './orbit.cjs';
|
|
3
|
-
import { I as IonexGrid, C as ClkFile, S as Sp3File } from './
|
|
3
|
+
import { I as IonexGrid, C as ClkFile, S as SatOsbTable, b as Sp3File } from './bias-sinex-OGMw9xEZ.cjs';
|
|
4
4
|
import { AntexFile } from './antex.cjs';
|
|
5
5
|
import { a as ObsEpoch } from './msm-DWtoTvx2.cjs';
|
|
6
6
|
import { a as HasOrbitCorrection, b as HasClockCorrection } from './has-BaXnQarR.cjs';
|
|
7
7
|
import './ephemeris-BAnBLLB9.cjs';
|
|
8
8
|
import './ecef-CF0uAysr.cjs';
|
|
9
|
-
import './nav-
|
|
9
|
+
import './nav-CvZXmumD.cjs';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Klobuchar broadcast ionospheric model (IS-GPS-200, 20.3.3.5.2.5).
|
|
@@ -690,6 +690,14 @@ interface LambdaResult {
|
|
|
690
690
|
* typically cap it (RTKLIB uses 999.9) before thresholding.
|
|
691
691
|
*/
|
|
692
692
|
ratio: number;
|
|
693
|
+
/**
|
|
694
|
+
* Bootstrapped success rate of the decorrelated ambiguities,
|
|
695
|
+
* Π (2Φ(1/(2σᵢ)) − 1) over the conditional standard deviations σᵢ —
|
|
696
|
+
* a lower bound on the probability that the integer solution is right
|
|
697
|
+
* (Teunissen 1998). Unlike the ratio, it depends only on the model's
|
|
698
|
+
* precision, so it refuses fixes the float solution can't yet support.
|
|
699
|
+
*/
|
|
700
|
+
successRate: number;
|
|
693
701
|
}
|
|
694
702
|
/**
|
|
695
703
|
* LAMBDA/MLAMBDA integer least-squares estimation (RTKLIB `lambda`):
|
|
@@ -1068,6 +1076,11 @@ interface PppSatObs {
|
|
|
1068
1076
|
* up satellite code (OSB) biases from an SSR/HAS source; optional. */
|
|
1069
1077
|
code1?: string;
|
|
1070
1078
|
code2?: string;
|
|
1079
|
+
/** RINEX-3 tracking codes of the two *carriers* (e.g. '1C','2W'), for
|
|
1080
|
+
* satellite phase-bias (OSB) lookup when they differ from the code's
|
|
1081
|
+
* (GPS: C1W code with L1C phase). Default: `code1` / `code2`. */
|
|
1082
|
+
phase1?: string;
|
|
1083
|
+
phase2?: string;
|
|
1071
1084
|
/** True if a cycle slip is flagged on either band (LLI or detected). */
|
|
1072
1085
|
slip: boolean;
|
|
1073
1086
|
}
|
|
@@ -1110,6 +1123,37 @@ interface PppOptions {
|
|
|
1110
1123
|
* instead of the SP3 5-minute clocks — the dominant PPP accuracy term.
|
|
1111
1124
|
* Satellites/epochs absent from the CLK fall back to the SP3 clock. */
|
|
1112
1125
|
clk?: ClkFile;
|
|
1126
|
+
/** Satellite observable-specific biases (code + phase OSB) consistent with
|
|
1127
|
+
* the orbit/clock product — e.g. the CNES "ABS" biases that accompany GFZ
|
|
1128
|
+
* rapid products. With phase OSBs the float ambiguities keep their integer
|
|
1129
|
+
* nature (between satellites), which is what PPP-AR (`fixPppPosition`)
|
|
1130
|
+
* needs. Used with an Sp3File; a custom source supplies its own biases. */
|
|
1131
|
+
osb?: SatOsbTable;
|
|
1132
|
+
/**
|
|
1133
|
+
* Integer ambiguity resolution (PPP-AR). Needs satellite phase biases
|
|
1134
|
+
* (`osb`, or a source with `phaseBias`) — without them the ambiguities
|
|
1135
|
+
* aren't integers and this is ignored. Every `everyS` seconds the
|
|
1136
|
+
* converged ambiguities are resolved (wide-lane by rounding, narrow-lane
|
|
1137
|
+
* by LAMBDA, between satellites of a constellation) and, if the fix is
|
|
1138
|
+
* accepted, the epoch gets an ambiguity-fixed position next to the float
|
|
1139
|
+
* one. `true` uses the defaults.
|
|
1140
|
+
*/
|
|
1141
|
+
ar?: boolean | {
|
|
1142
|
+
/** LAMBDA ratio test threshold. Default 3. */
|
|
1143
|
+
ratio?: number;
|
|
1144
|
+
/** Max wide-lane fractional part (cycles). Default 0.15. */
|
|
1145
|
+
wlThreshold?: number;
|
|
1146
|
+
/** Min arc age before an ambiguity is a candidate (s). Default 600. */
|
|
1147
|
+
minArcS?: number;
|
|
1148
|
+
/** Attempt interval (s). Default 120. */
|
|
1149
|
+
everyS?: number;
|
|
1150
|
+
/** Min bootstrapped success rate. Default 0.999. */
|
|
1151
|
+
successRate?: number;
|
|
1152
|
+
/** Min between-satellite ambiguities in a fix. Default 5. */
|
|
1153
|
+
minFixed?: number;
|
|
1154
|
+
/** Max χ²/dof of the float ambiguities vs the integers. Default 20. */
|
|
1155
|
+
maxChi2?: number;
|
|
1156
|
+
};
|
|
1113
1157
|
}
|
|
1114
1158
|
interface PppEpochResult {
|
|
1115
1159
|
timeMs: number;
|
|
@@ -1125,6 +1169,10 @@ interface PppEpochResult {
|
|
|
1125
1169
|
ztdHydrostatic: number;
|
|
1126
1170
|
/** RMS of post-fit phase residuals this epoch (m). */
|
|
1127
1171
|
phaseResRms: number;
|
|
1172
|
+
/** PPP-AR: between-satellite ambiguities fixed (0 = float only). */
|
|
1173
|
+
nFixed: number;
|
|
1174
|
+
/** PPP-AR: the ambiguity-fixed position, when the latest attempt fixed. */
|
|
1175
|
+
fixedPosition: [number, number, number] | null;
|
|
1128
1176
|
}
|
|
1129
1177
|
interface PppSolution {
|
|
1130
1178
|
/** Final estimated ECEF position (m). */
|
|
@@ -1144,6 +1192,17 @@ interface PppSolution {
|
|
|
1144
1192
|
convergenceSec: number | null;
|
|
1145
1193
|
/** Final 3D error vs ground truth (m), if given. */
|
|
1146
1194
|
finalError3d: number | null;
|
|
1195
|
+
/** PPP-AR summary, when `ar` was requested with a phase-bias product. */
|
|
1196
|
+
ar?: {
|
|
1197
|
+
/** Seconds from the first epoch to the first accepted fix (null: none). */
|
|
1198
|
+
firstFixSec: number | null;
|
|
1199
|
+
/** Ambiguities fixed at the end (0: the session ends float). */
|
|
1200
|
+
nFixedEnd: number;
|
|
1201
|
+
/** The ambiguity-fixed position at the end, or null. */
|
|
1202
|
+
position: [number, number, number] | null;
|
|
1203
|
+
/** Share of epochs with at least one ambiguity fixed. */
|
|
1204
|
+
fixedEpochShare: number;
|
|
1205
|
+
};
|
|
1147
1206
|
/** Per-arc converged float ambiguities — one per continuous satellite
|
|
1148
1207
|
* tracking arc — the raw material for ambiguity resolution (PPP-AR). */
|
|
1149
1208
|
arcs: PppArc[];
|
|
@@ -1212,6 +1271,10 @@ interface PppEphemerisSource {
|
|
|
1212
1271
|
* corrected code is `observed − codeBias`. SP3/CLK sources omit this (the
|
|
1213
1272
|
* float ambiguity + broadcast clock reference absorb it). */
|
|
1214
1273
|
codeBias?(prn: string, signalCode: string, tEmitMs: number): number | null;
|
|
1274
|
+
/** Optional satellite *phase* bias (m) for a carrier tracking code
|
|
1275
|
+
* ('1C','2W'…): the corrected carrier is `observed − phaseBias`. Only
|
|
1276
|
+
* integer-clock products (for PPP-AR) provide these. */
|
|
1277
|
+
phaseBias?(prn: string, signalCode: string, tEmitMs: number): number | null;
|
|
1215
1278
|
}
|
|
1216
1279
|
/** Default source: SP3 orbits + clocks, with optional high-rate CLK. Velocity
|
|
1217
1280
|
* is a central finite difference (±0.5 s); the clock prefers the high-rate CLK
|
|
@@ -1219,7 +1282,10 @@ interface PppEphemerisSource {
|
|
|
1219
1282
|
declare class Sp3EphemerisSource implements PppEphemerisSource {
|
|
1220
1283
|
private readonly sp3;
|
|
1221
1284
|
private readonly clk?;
|
|
1222
|
-
|
|
1285
|
+
private readonly osb?;
|
|
1286
|
+
constructor(sp3: Sp3File, clk?: ClkFile | undefined, osb?: SatOsbTable | undefined);
|
|
1287
|
+
codeBias?: PppEphemerisSource['codeBias'];
|
|
1288
|
+
phaseBias?: PppEphemerisSource['phaseBias'];
|
|
1223
1289
|
satState(prn: string, tEmitMs: number): SatSample | null;
|
|
1224
1290
|
}
|
|
1225
1291
|
/**
|
|
@@ -1248,6 +1314,16 @@ declare class PppEngine {
|
|
|
1248
1314
|
private arcs;
|
|
1249
1315
|
private arcSnap;
|
|
1250
1316
|
private mwState;
|
|
1317
|
+
/** Previous epoch's phase terms per satellite, for the time-differenced
|
|
1318
|
+
* (clock-free) cycle-slip test. */
|
|
1319
|
+
private tdPrev;
|
|
1320
|
+
/** Consecutive gated-out phase updates per satellite. */
|
|
1321
|
+
private phaseRejects;
|
|
1322
|
+
/** PPP-AR: the latest accepted fix (null: float). */
|
|
1323
|
+
private lastFix;
|
|
1324
|
+
private lastArMs;
|
|
1325
|
+
private firstFixMs;
|
|
1326
|
+
private fixedEpochs;
|
|
1251
1327
|
private series;
|
|
1252
1328
|
private ei;
|
|
1253
1329
|
private t0;
|
|
@@ -1265,6 +1341,16 @@ declare class PppEngine {
|
|
|
1265
1341
|
private clockOf;
|
|
1266
1342
|
/** Process one epoch, carrying the filter forward; returns its result. */
|
|
1267
1343
|
process(epoch: PppEpoch): PppEpochResult;
|
|
1344
|
+
/**
|
|
1345
|
+
* PPP-AR. Every `everyS`, resolve the converged ambiguities of the
|
|
1346
|
+
* satellites in view (between satellites of one constellation) and, when
|
|
1347
|
+
* the fix passes the ratio, success-rate and χ² tests, condition the
|
|
1348
|
+
* float position on it ({@link fixPppPosition}). The float filter itself
|
|
1349
|
+
* is never constrained — a wrong fix can't contaminate later epochs, and
|
|
1350
|
+
* the next attempt starts clean. Between attempts the last fix carries
|
|
1351
|
+
* over (static) or is dropped (kinematic).
|
|
1352
|
+
*/
|
|
1353
|
+
private tryFix;
|
|
1268
1354
|
/** Finalise the session: capture the AR state, flush open arcs, assemble. */
|
|
1269
1355
|
solution(): PppSolution;
|
|
1270
1356
|
}
|
|
@@ -1371,6 +1457,18 @@ interface ArOptions {
|
|
|
1371
1457
|
wlThreshold?: number;
|
|
1372
1458
|
/** Min LAMBDA ratio to accept the narrow-lane fix. Default 3. */
|
|
1373
1459
|
ratioThreshold?: number;
|
|
1460
|
+
/** Partial fixing: when the full set fails the ratio test, drop the
|
|
1461
|
+
* lowest-elevation satellite and retry while more than this many
|
|
1462
|
+
* between-satellite ambiguities remain. Default 4. */
|
|
1463
|
+
minPartial?: number;
|
|
1464
|
+
/** Min bootstrapped success rate (0–1) to accept a fix, besides the
|
|
1465
|
+
* ratio test. Default 0 (ratio test only). */
|
|
1466
|
+
minSuccessRate?: number;
|
|
1467
|
+
/** `fixPppPosition`: min between-satellite ambiguities to accept. Default 1. */
|
|
1468
|
+
minFixed?: number;
|
|
1469
|
+
/** `fixPppPosition`: max χ²/dof of the float ambiguities against the fixed
|
|
1470
|
+
* integers (a wrong fix sits many σ away). Default Infinity. */
|
|
1471
|
+
maxChi2?: number;
|
|
1374
1472
|
}
|
|
1375
1473
|
interface ArFixedSat {
|
|
1376
1474
|
prn: string;
|
|
@@ -1378,15 +1476,22 @@ interface ArFixedSat {
|
|
|
1378
1476
|
n1: number;
|
|
1379
1477
|
/** Fixed IF ambiguity (m). */
|
|
1380
1478
|
aIF: number;
|
|
1479
|
+
/** PRN of this satellite's single-difference reference (itself for a
|
|
1480
|
+
* reference satellite). */
|
|
1481
|
+
ref: string;
|
|
1381
1482
|
}
|
|
1382
1483
|
interface ArResult {
|
|
1383
1484
|
/** Whether the narrow-lane fix passed the ratio test. */
|
|
1384
1485
|
fixed: boolean;
|
|
1385
1486
|
/** LAMBDA ratio statistic (second-best / best). */
|
|
1386
1487
|
ratio: number;
|
|
1387
|
-
/** Reference PRN whose absolute N1 stays
|
|
1488
|
+
/** Reference PRN of the first constellation (whose absolute N1 stays
|
|
1489
|
+
* float); see `refPrns` for all. */
|
|
1388
1490
|
refPrn: string | null;
|
|
1389
|
-
/**
|
|
1491
|
+
/** One reference per constellation — differences are taken within a
|
|
1492
|
+
* constellation, where the receiver phase bias is common. */
|
|
1493
|
+
refPrns: string[];
|
|
1494
|
+
/** Satellites in the fix (references included, with a float-rounded N1). */
|
|
1390
1495
|
sats: ArFixedSat[];
|
|
1391
1496
|
/** PRNs whose wide-lane did not round confidently (excluded). */
|
|
1392
1497
|
rejectedWl: string[];
|
|
@@ -1397,6 +1502,11 @@ interface ArResult {
|
|
|
1397
1502
|
* `sats`. Returns the fixed narrow-lane / wide-lane integers and the ratio
|
|
1398
1503
|
* test result. A `fixed: false` result means the data did not support a
|
|
1399
1504
|
* confident fix (keep the float solution).
|
|
1505
|
+
*
|
|
1506
|
+
* Everything is differenced between satellites of the same constellation
|
|
1507
|
+
* (one reference each, the highest), which removes the receiver's
|
|
1508
|
+
* wide-lane and narrow-lane phase biases — those differ per constellation
|
|
1509
|
+
* and per receiver, so an undifferenced ambiguity is never an integer.
|
|
1400
1510
|
*/
|
|
1401
1511
|
declare function resolvePppAmbiguities(sats: ArSat[], Qaif: Float64Array, opts?: ArOptions): ArResult;
|
|
1402
1512
|
interface FixedPositionResult {
|
package/dist/positioning.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { E as Ephemeris } from './nav-
|
|
1
|
+
import { E as Ephemeris } from './nav-COp0Vmlw.js';
|
|
2
2
|
import { DopValues } from './orbit.js';
|
|
3
|
-
import { I as IonexGrid, C as ClkFile, S as Sp3File } from './
|
|
3
|
+
import { I as IonexGrid, C as ClkFile, S as SatOsbTable, b as Sp3File } from './bias-sinex-OGMw9xEZ.js';
|
|
4
4
|
import { AntexFile } from './antex.js';
|
|
5
5
|
import { a as ObsEpoch } from './msm-CcQJV3PC.js';
|
|
6
6
|
import { a as HasOrbitCorrection, b as HasClockCorrection } from './has-BaXnQarR.js';
|
|
7
7
|
import './ephemeris-BAnBLLB9.js';
|
|
8
8
|
import './ecef-CF0uAysr.js';
|
|
9
|
-
import './nav-
|
|
9
|
+
import './nav-D2DFlVpa.js';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Klobuchar broadcast ionospheric model (IS-GPS-200, 20.3.3.5.2.5).
|
|
@@ -690,6 +690,14 @@ interface LambdaResult {
|
|
|
690
690
|
* typically cap it (RTKLIB uses 999.9) before thresholding.
|
|
691
691
|
*/
|
|
692
692
|
ratio: number;
|
|
693
|
+
/**
|
|
694
|
+
* Bootstrapped success rate of the decorrelated ambiguities,
|
|
695
|
+
* Π (2Φ(1/(2σᵢ)) − 1) over the conditional standard deviations σᵢ —
|
|
696
|
+
* a lower bound on the probability that the integer solution is right
|
|
697
|
+
* (Teunissen 1998). Unlike the ratio, it depends only on the model's
|
|
698
|
+
* precision, so it refuses fixes the float solution can't yet support.
|
|
699
|
+
*/
|
|
700
|
+
successRate: number;
|
|
693
701
|
}
|
|
694
702
|
/**
|
|
695
703
|
* LAMBDA/MLAMBDA integer least-squares estimation (RTKLIB `lambda`):
|
|
@@ -1068,6 +1076,11 @@ interface PppSatObs {
|
|
|
1068
1076
|
* up satellite code (OSB) biases from an SSR/HAS source; optional. */
|
|
1069
1077
|
code1?: string;
|
|
1070
1078
|
code2?: string;
|
|
1079
|
+
/** RINEX-3 tracking codes of the two *carriers* (e.g. '1C','2W'), for
|
|
1080
|
+
* satellite phase-bias (OSB) lookup when they differ from the code's
|
|
1081
|
+
* (GPS: C1W code with L1C phase). Default: `code1` / `code2`. */
|
|
1082
|
+
phase1?: string;
|
|
1083
|
+
phase2?: string;
|
|
1071
1084
|
/** True if a cycle slip is flagged on either band (LLI or detected). */
|
|
1072
1085
|
slip: boolean;
|
|
1073
1086
|
}
|
|
@@ -1110,6 +1123,37 @@ interface PppOptions {
|
|
|
1110
1123
|
* instead of the SP3 5-minute clocks — the dominant PPP accuracy term.
|
|
1111
1124
|
* Satellites/epochs absent from the CLK fall back to the SP3 clock. */
|
|
1112
1125
|
clk?: ClkFile;
|
|
1126
|
+
/** Satellite observable-specific biases (code + phase OSB) consistent with
|
|
1127
|
+
* the orbit/clock product — e.g. the CNES "ABS" biases that accompany GFZ
|
|
1128
|
+
* rapid products. With phase OSBs the float ambiguities keep their integer
|
|
1129
|
+
* nature (between satellites), which is what PPP-AR (`fixPppPosition`)
|
|
1130
|
+
* needs. Used with an Sp3File; a custom source supplies its own biases. */
|
|
1131
|
+
osb?: SatOsbTable;
|
|
1132
|
+
/**
|
|
1133
|
+
* Integer ambiguity resolution (PPP-AR). Needs satellite phase biases
|
|
1134
|
+
* (`osb`, or a source with `phaseBias`) — without them the ambiguities
|
|
1135
|
+
* aren't integers and this is ignored. Every `everyS` seconds the
|
|
1136
|
+
* converged ambiguities are resolved (wide-lane by rounding, narrow-lane
|
|
1137
|
+
* by LAMBDA, between satellites of a constellation) and, if the fix is
|
|
1138
|
+
* accepted, the epoch gets an ambiguity-fixed position next to the float
|
|
1139
|
+
* one. `true` uses the defaults.
|
|
1140
|
+
*/
|
|
1141
|
+
ar?: boolean | {
|
|
1142
|
+
/** LAMBDA ratio test threshold. Default 3. */
|
|
1143
|
+
ratio?: number;
|
|
1144
|
+
/** Max wide-lane fractional part (cycles). Default 0.15. */
|
|
1145
|
+
wlThreshold?: number;
|
|
1146
|
+
/** Min arc age before an ambiguity is a candidate (s). Default 600. */
|
|
1147
|
+
minArcS?: number;
|
|
1148
|
+
/** Attempt interval (s). Default 120. */
|
|
1149
|
+
everyS?: number;
|
|
1150
|
+
/** Min bootstrapped success rate. Default 0.999. */
|
|
1151
|
+
successRate?: number;
|
|
1152
|
+
/** Min between-satellite ambiguities in a fix. Default 5. */
|
|
1153
|
+
minFixed?: number;
|
|
1154
|
+
/** Max χ²/dof of the float ambiguities vs the integers. Default 20. */
|
|
1155
|
+
maxChi2?: number;
|
|
1156
|
+
};
|
|
1113
1157
|
}
|
|
1114
1158
|
interface PppEpochResult {
|
|
1115
1159
|
timeMs: number;
|
|
@@ -1125,6 +1169,10 @@ interface PppEpochResult {
|
|
|
1125
1169
|
ztdHydrostatic: number;
|
|
1126
1170
|
/** RMS of post-fit phase residuals this epoch (m). */
|
|
1127
1171
|
phaseResRms: number;
|
|
1172
|
+
/** PPP-AR: between-satellite ambiguities fixed (0 = float only). */
|
|
1173
|
+
nFixed: number;
|
|
1174
|
+
/** PPP-AR: the ambiguity-fixed position, when the latest attempt fixed. */
|
|
1175
|
+
fixedPosition: [number, number, number] | null;
|
|
1128
1176
|
}
|
|
1129
1177
|
interface PppSolution {
|
|
1130
1178
|
/** Final estimated ECEF position (m). */
|
|
@@ -1144,6 +1192,17 @@ interface PppSolution {
|
|
|
1144
1192
|
convergenceSec: number | null;
|
|
1145
1193
|
/** Final 3D error vs ground truth (m), if given. */
|
|
1146
1194
|
finalError3d: number | null;
|
|
1195
|
+
/** PPP-AR summary, when `ar` was requested with a phase-bias product. */
|
|
1196
|
+
ar?: {
|
|
1197
|
+
/** Seconds from the first epoch to the first accepted fix (null: none). */
|
|
1198
|
+
firstFixSec: number | null;
|
|
1199
|
+
/** Ambiguities fixed at the end (0: the session ends float). */
|
|
1200
|
+
nFixedEnd: number;
|
|
1201
|
+
/** The ambiguity-fixed position at the end, or null. */
|
|
1202
|
+
position: [number, number, number] | null;
|
|
1203
|
+
/** Share of epochs with at least one ambiguity fixed. */
|
|
1204
|
+
fixedEpochShare: number;
|
|
1205
|
+
};
|
|
1147
1206
|
/** Per-arc converged float ambiguities — one per continuous satellite
|
|
1148
1207
|
* tracking arc — the raw material for ambiguity resolution (PPP-AR). */
|
|
1149
1208
|
arcs: PppArc[];
|
|
@@ -1212,6 +1271,10 @@ interface PppEphemerisSource {
|
|
|
1212
1271
|
* corrected code is `observed − codeBias`. SP3/CLK sources omit this (the
|
|
1213
1272
|
* float ambiguity + broadcast clock reference absorb it). */
|
|
1214
1273
|
codeBias?(prn: string, signalCode: string, tEmitMs: number): number | null;
|
|
1274
|
+
/** Optional satellite *phase* bias (m) for a carrier tracking code
|
|
1275
|
+
* ('1C','2W'…): the corrected carrier is `observed − phaseBias`. Only
|
|
1276
|
+
* integer-clock products (for PPP-AR) provide these. */
|
|
1277
|
+
phaseBias?(prn: string, signalCode: string, tEmitMs: number): number | null;
|
|
1215
1278
|
}
|
|
1216
1279
|
/** Default source: SP3 orbits + clocks, with optional high-rate CLK. Velocity
|
|
1217
1280
|
* is a central finite difference (±0.5 s); the clock prefers the high-rate CLK
|
|
@@ -1219,7 +1282,10 @@ interface PppEphemerisSource {
|
|
|
1219
1282
|
declare class Sp3EphemerisSource implements PppEphemerisSource {
|
|
1220
1283
|
private readonly sp3;
|
|
1221
1284
|
private readonly clk?;
|
|
1222
|
-
|
|
1285
|
+
private readonly osb?;
|
|
1286
|
+
constructor(sp3: Sp3File, clk?: ClkFile | undefined, osb?: SatOsbTable | undefined);
|
|
1287
|
+
codeBias?: PppEphemerisSource['codeBias'];
|
|
1288
|
+
phaseBias?: PppEphemerisSource['phaseBias'];
|
|
1223
1289
|
satState(prn: string, tEmitMs: number): SatSample | null;
|
|
1224
1290
|
}
|
|
1225
1291
|
/**
|
|
@@ -1248,6 +1314,16 @@ declare class PppEngine {
|
|
|
1248
1314
|
private arcs;
|
|
1249
1315
|
private arcSnap;
|
|
1250
1316
|
private mwState;
|
|
1317
|
+
/** Previous epoch's phase terms per satellite, for the time-differenced
|
|
1318
|
+
* (clock-free) cycle-slip test. */
|
|
1319
|
+
private tdPrev;
|
|
1320
|
+
/** Consecutive gated-out phase updates per satellite. */
|
|
1321
|
+
private phaseRejects;
|
|
1322
|
+
/** PPP-AR: the latest accepted fix (null: float). */
|
|
1323
|
+
private lastFix;
|
|
1324
|
+
private lastArMs;
|
|
1325
|
+
private firstFixMs;
|
|
1326
|
+
private fixedEpochs;
|
|
1251
1327
|
private series;
|
|
1252
1328
|
private ei;
|
|
1253
1329
|
private t0;
|
|
@@ -1265,6 +1341,16 @@ declare class PppEngine {
|
|
|
1265
1341
|
private clockOf;
|
|
1266
1342
|
/** Process one epoch, carrying the filter forward; returns its result. */
|
|
1267
1343
|
process(epoch: PppEpoch): PppEpochResult;
|
|
1344
|
+
/**
|
|
1345
|
+
* PPP-AR. Every `everyS`, resolve the converged ambiguities of the
|
|
1346
|
+
* satellites in view (between satellites of one constellation) and, when
|
|
1347
|
+
* the fix passes the ratio, success-rate and χ² tests, condition the
|
|
1348
|
+
* float position on it ({@link fixPppPosition}). The float filter itself
|
|
1349
|
+
* is never constrained — a wrong fix can't contaminate later epochs, and
|
|
1350
|
+
* the next attempt starts clean. Between attempts the last fix carries
|
|
1351
|
+
* over (static) or is dropped (kinematic).
|
|
1352
|
+
*/
|
|
1353
|
+
private tryFix;
|
|
1268
1354
|
/** Finalise the session: capture the AR state, flush open arcs, assemble. */
|
|
1269
1355
|
solution(): PppSolution;
|
|
1270
1356
|
}
|
|
@@ -1371,6 +1457,18 @@ interface ArOptions {
|
|
|
1371
1457
|
wlThreshold?: number;
|
|
1372
1458
|
/** Min LAMBDA ratio to accept the narrow-lane fix. Default 3. */
|
|
1373
1459
|
ratioThreshold?: number;
|
|
1460
|
+
/** Partial fixing: when the full set fails the ratio test, drop the
|
|
1461
|
+
* lowest-elevation satellite and retry while more than this many
|
|
1462
|
+
* between-satellite ambiguities remain. Default 4. */
|
|
1463
|
+
minPartial?: number;
|
|
1464
|
+
/** Min bootstrapped success rate (0–1) to accept a fix, besides the
|
|
1465
|
+
* ratio test. Default 0 (ratio test only). */
|
|
1466
|
+
minSuccessRate?: number;
|
|
1467
|
+
/** `fixPppPosition`: min between-satellite ambiguities to accept. Default 1. */
|
|
1468
|
+
minFixed?: number;
|
|
1469
|
+
/** `fixPppPosition`: max χ²/dof of the float ambiguities against the fixed
|
|
1470
|
+
* integers (a wrong fix sits many σ away). Default Infinity. */
|
|
1471
|
+
maxChi2?: number;
|
|
1374
1472
|
}
|
|
1375
1473
|
interface ArFixedSat {
|
|
1376
1474
|
prn: string;
|
|
@@ -1378,15 +1476,22 @@ interface ArFixedSat {
|
|
|
1378
1476
|
n1: number;
|
|
1379
1477
|
/** Fixed IF ambiguity (m). */
|
|
1380
1478
|
aIF: number;
|
|
1479
|
+
/** PRN of this satellite's single-difference reference (itself for a
|
|
1480
|
+
* reference satellite). */
|
|
1481
|
+
ref: string;
|
|
1381
1482
|
}
|
|
1382
1483
|
interface ArResult {
|
|
1383
1484
|
/** Whether the narrow-lane fix passed the ratio test. */
|
|
1384
1485
|
fixed: boolean;
|
|
1385
1486
|
/** LAMBDA ratio statistic (second-best / best). */
|
|
1386
1487
|
ratio: number;
|
|
1387
|
-
/** Reference PRN whose absolute N1 stays
|
|
1488
|
+
/** Reference PRN of the first constellation (whose absolute N1 stays
|
|
1489
|
+
* float); see `refPrns` for all. */
|
|
1388
1490
|
refPrn: string | null;
|
|
1389
|
-
/**
|
|
1491
|
+
/** One reference per constellation — differences are taken within a
|
|
1492
|
+
* constellation, where the receiver phase bias is common. */
|
|
1493
|
+
refPrns: string[];
|
|
1494
|
+
/** Satellites in the fix (references included, with a float-rounded N1). */
|
|
1390
1495
|
sats: ArFixedSat[];
|
|
1391
1496
|
/** PRNs whose wide-lane did not round confidently (excluded). */
|
|
1392
1497
|
rejectedWl: string[];
|
|
@@ -1397,6 +1502,11 @@ interface ArResult {
|
|
|
1397
1502
|
* `sats`. Returns the fixed narrow-lane / wide-lane integers and the ratio
|
|
1398
1503
|
* test result. A `fixed: false` result means the data did not support a
|
|
1399
1504
|
* confident fix (keep the float solution).
|
|
1505
|
+
*
|
|
1506
|
+
* Everything is differenced between satellites of the same constellation
|
|
1507
|
+
* (one reference each, the highest), which removes the receiver's
|
|
1508
|
+
* wide-lane and narrow-lane phase biases — those differ per constellation
|
|
1509
|
+
* and per receiver, so an undifferenced ambiguity is never an integer.
|
|
1400
1510
|
*/
|
|
1401
1511
|
declare function resolvePppAmbiguities(sats: ArSat[], Qaif: Float64Array, opts?: ArOptions): ArResult;
|
|
1402
1512
|
interface FixedPositionResult {
|
package/dist/positioning.js
CHANGED
|
@@ -41,8 +41,8 @@ import {
|
|
|
41
41
|
sunEcef,
|
|
42
42
|
toRtkEpoch,
|
|
43
43
|
wlWavelength
|
|
44
|
-
} from "./chunk-
|
|
45
|
-
import "./chunk-
|
|
44
|
+
} from "./chunk-RWFJEVLJ.js";
|
|
45
|
+
import "./chunk-H3AKFD25.js";
|
|
46
46
|
import "./chunk-7T5DLVZL.js";
|
|
47
47
|
import "./chunk-HVXYFUCB.js";
|
|
48
48
|
import "./chunk-CVCTRIWU.js";
|
|
@@ -50,7 +50,7 @@ import "./chunk-37QNKGTC.js";
|
|
|
50
50
|
import "./chunk-LEEU5OIO.js";
|
|
51
51
|
import "./chunk-6FAL6P4G.js";
|
|
52
52
|
import "./chunk-GPEP67TG.js";
|
|
53
|
-
import "./chunk-
|
|
53
|
+
import "./chunk-HUXQABJI.js";
|
|
54
54
|
import "./chunk-V2D5KUKH.js";
|
|
55
55
|
import "./chunk-FIEWO4J4.js";
|
|
56
56
|
export {
|