@neilberkman/sidereon 0.14.0 → 0.16.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 +24 -6
- package/package.json +1 -1
- package/pkg/sidereon.d.ts +2787 -1506
- package/pkg/sidereon.js +4028 -1337
- package/pkg/sidereon_bg.wasm +0 -0
- package/pkg/sidereon_bg.wasm.d.ts +1192 -1013
- package/pkg-node/sidereon.d.ts +1146 -44
- package/pkg-node/sidereon.js +4087 -1332
- package/pkg-node/sidereon_bg.wasm +0 -0
- package/pkg-node/sidereon_bg.wasm.d.ts +1192 -1013
- package/types/sidereon-extra.d.ts +575 -6
|
@@ -118,11 +118,7 @@ export interface SppBatchOptions {
|
|
|
118
118
|
|
|
119
119
|
/** Serialized observability tier label. Handle getters return the generated
|
|
120
120
|
* `ObservabilityTier` enum; serde-returning APIs use these stable labels. */
|
|
121
|
-
export type ObservabilityTierLabel =
|
|
122
|
-
| "RankDeficient"
|
|
123
|
-
| "ZeroRedundancy"
|
|
124
|
-
| "Weak"
|
|
125
|
-
| "Nominal";
|
|
121
|
+
export type ObservabilityTierLabel = "RankDeficient" | "ZeroRedundancy" | "Weak" | "Nominal";
|
|
126
122
|
|
|
127
123
|
/** Geometry observability and covariance-validation diagnostics.
|
|
128
124
|
* `ZeroRedundancy` marks a full-rank design with no residual degrees of freedom,
|
|
@@ -372,8 +368,129 @@ export interface AcquisitionOptions {
|
|
|
372
368
|
// import { propagateState } from "@neilberkman/sidereon";
|
|
373
369
|
// import type { PropagateStateRequest } from "@neilberkman/sidereon/types";
|
|
374
370
|
|
|
371
|
+
/** Space-weather constants for a drag request. */
|
|
372
|
+
export interface SpaceWeatherConfig {
|
|
373
|
+
f107?: number;
|
|
374
|
+
f107a?: number;
|
|
375
|
+
ap?: number;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
/** Atmospheric drag parameterization. */
|
|
379
|
+
export interface DragConfig {
|
|
380
|
+
bcFactorM2Kg?: number;
|
|
381
|
+
ballisticCoefficientKgM2?: number;
|
|
382
|
+
cd?: number;
|
|
383
|
+
areaM2?: number;
|
|
384
|
+
massKg?: number;
|
|
385
|
+
cutoffAltitudeKm?: number;
|
|
386
|
+
spaceWeather?: SpaceWeatherConfig;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
/** Cannonball solar-radiation-pressure parameters. */
|
|
390
|
+
export interface SolarRadiationPressureConfig {
|
|
391
|
+
cr: number;
|
|
392
|
+
areaToMassM2Kg?: number;
|
|
393
|
+
areaM2?: number;
|
|
394
|
+
massKg?: number;
|
|
395
|
+
pressureNM2?: number;
|
|
396
|
+
auKm?: number;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
/** Zonal harmonic gravity selector. */
|
|
400
|
+
export interface ZonalForceConfig {
|
|
401
|
+
maxDegree?: 2 | 3 | 4 | 5 | 6;
|
|
402
|
+
j2?: boolean;
|
|
403
|
+
j3?: boolean;
|
|
404
|
+
j4?: boolean;
|
|
405
|
+
j5?: boolean;
|
|
406
|
+
j6?: boolean;
|
|
407
|
+
muKm3S2?: number;
|
|
408
|
+
reKm?: number;
|
|
409
|
+
coefficients?: {
|
|
410
|
+
j2?: number;
|
|
411
|
+
j3?: number;
|
|
412
|
+
j4?: number;
|
|
413
|
+
j5?: number;
|
|
414
|
+
j6?: number;
|
|
415
|
+
};
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
/** Embedded EGM96 spherical-harmonic geopotential selector. */
|
|
419
|
+
export interface SphericalHarmonicForceConfig {
|
|
420
|
+
/** Constant set used with the embedded EGM96 coefficient table. Defaults to "earth". */
|
|
421
|
+
model?: "earth" | "egm96" | "EGM96";
|
|
422
|
+
/** Highest active harmonic degree. Defaults to 8 when omitted. */
|
|
423
|
+
maxDegree?: number;
|
|
424
|
+
/** Highest active harmonic order. Defaults to `maxDegree` when omitted. */
|
|
425
|
+
maxOrder?: number;
|
|
426
|
+
/** Alias for `maxDegree`. */
|
|
427
|
+
degree?: number;
|
|
428
|
+
/** Alias for `maxOrder`. */
|
|
429
|
+
order?: number;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
/** Sun/Moon third-body force selector. */
|
|
433
|
+
export interface ThirdBodyForceConfig {
|
|
434
|
+
sun?: boolean;
|
|
435
|
+
moon?: boolean;
|
|
436
|
+
gmSunKm3S2?: number;
|
|
437
|
+
gmMoonKm3S2?: number;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
/** Schwarzschild relativity force selector. */
|
|
441
|
+
export interface RelativityForceConfig {
|
|
442
|
+
muKm3S2?: number;
|
|
443
|
+
cKmS?: number;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
/** Additive numerical force-model composition. */
|
|
447
|
+
export interface CompositeForceModelConfig {
|
|
448
|
+
kind: "composite";
|
|
449
|
+
twoBody?: boolean;
|
|
450
|
+
twoBodyMuKm3S2?: number;
|
|
451
|
+
muKm3S2?: number;
|
|
452
|
+
zonal?: boolean | "none" | "j2" | "j2_j6" | "j2ThroughJ6" | ZonalForceConfig;
|
|
453
|
+
sphericalHarmonic?: boolean | "none" | "earth" | "egm96" | SphericalHarmonicForceConfig;
|
|
454
|
+
/** Alias for `sphericalHarmonic`. */
|
|
455
|
+
geopotential?: boolean | "none" | "earth" | "egm96" | SphericalHarmonicForceConfig;
|
|
456
|
+
thirdBody?: boolean | "none" | "sun" | "moon" | "sun_moon" | "sunMoon" | ThirdBodyForceConfig;
|
|
457
|
+
solarRadiationPressure?: false | "none" | SolarRadiationPressureConfig;
|
|
458
|
+
srp?: false | "none" | SolarRadiationPressureConfig;
|
|
459
|
+
relativity?: boolean | "none" | "schwarzschild" | RelativityForceConfig;
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
/** Canonical Earth Phase A perturbation set. */
|
|
463
|
+
export interface EarthPhaseAForceModelConfig {
|
|
464
|
+
kind: "earth_phase_a" | "earthPhaseA";
|
|
465
|
+
solarRadiationPressure?: false | "none" | SolarRadiationPressureConfig;
|
|
466
|
+
srp?: false | "none" | SolarRadiationPressureConfig;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
/** Canonical Earth Phase B perturbation set with embedded spherical harmonics. */
|
|
470
|
+
export interface EarthPhaseBForceModelConfig {
|
|
471
|
+
kind: "earth_phase_b" | "earthPhaseB";
|
|
472
|
+
/** Highest active harmonic degree. Defaults to 8 when omitted. */
|
|
473
|
+
maxDegree?: number;
|
|
474
|
+
/** Highest active harmonic order. Defaults to `maxDegree` when omitted. */
|
|
475
|
+
maxOrder?: number;
|
|
476
|
+
/** Alias for `maxDegree`. */
|
|
477
|
+
degree?: number;
|
|
478
|
+
/** Alias for `maxOrder`. */
|
|
479
|
+
order?: number;
|
|
480
|
+
solarRadiationPressure?: false | "none" | SolarRadiationPressureConfig;
|
|
481
|
+
srp?: false | "none" | SolarRadiationPressureConfig;
|
|
482
|
+
}
|
|
483
|
+
|
|
375
484
|
/** Numerical state-propagation force model selector. */
|
|
376
|
-
export type ForceModel =
|
|
485
|
+
export type ForceModel =
|
|
486
|
+
| "two_body"
|
|
487
|
+
| "two_body_j2"
|
|
488
|
+
| "composite"
|
|
489
|
+
| "earth_phase_a"
|
|
490
|
+
| "earth_phase_b"
|
|
491
|
+
| CompositeForceModelConfig
|
|
492
|
+
| EarthPhaseAForceModelConfig
|
|
493
|
+
| EarthPhaseBForceModelConfig;
|
|
377
494
|
|
|
378
495
|
/** Numerical state-propagation integrator selector. */
|
|
379
496
|
export type Integrator = "dp54" | "rk4";
|
|
@@ -407,6 +524,306 @@ export interface PropagateStateRequest {
|
|
|
407
524
|
maxSteps?: number;
|
|
408
525
|
/** Gravitational parameter, km^3/s^2. Defaults to Earth's MU_EARTH. */
|
|
409
526
|
muKm3S2?: number;
|
|
527
|
+
/** Atmospheric drag layered on the selected force model. */
|
|
528
|
+
drag?: DragConfig;
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
// --- 0.15 capability payloads ----------------------------------------------
|
|
532
|
+
|
|
533
|
+
/** Sidereal filter template selector. */
|
|
534
|
+
export type SiderealTemplateMethod =
|
|
535
|
+
"mean" | "robustMad" | "robust_mad" | { method: "ewma"; alpha: number };
|
|
536
|
+
|
|
537
|
+
/** Options for `siderealFilter(series, periodS, options)`. */
|
|
538
|
+
export interface SiderealFilterOptions {
|
|
539
|
+
sampleIntervalS?: number;
|
|
540
|
+
priorPeriods?: number;
|
|
541
|
+
minCoverage?: number;
|
|
542
|
+
templateMethod?: SiderealTemplateMethod;
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
/** Result returned by `siderealFilter`. */
|
|
546
|
+
export interface SiderealFilterOutput {
|
|
547
|
+
filtered: number[];
|
|
548
|
+
template: number[];
|
|
549
|
+
coverage: number[];
|
|
550
|
+
underCovered: boolean[];
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
/** One period score returned by `periodicityStrength`. */
|
|
554
|
+
export interface PeriodicityStrength {
|
|
555
|
+
periodS: number;
|
|
556
|
+
strength: number;
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
/** WGS84 geodetic coordinate in radians and metres. */
|
|
560
|
+
export interface GeodeticCoordinate {
|
|
561
|
+
latRad: number;
|
|
562
|
+
lonRad: number;
|
|
563
|
+
heightM?: number;
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
/** One geodetic time-series sample. */
|
|
567
|
+
export interface PositionTimeSeriesSample {
|
|
568
|
+
epochYear: number;
|
|
569
|
+
positionM: [number, number, number];
|
|
570
|
+
covarianceM2?: [[number, number, number], [number, number, number], [number, number, number]];
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
/** Position-series frame selector. */
|
|
574
|
+
export type PositionSeriesFrame =
|
|
575
|
+
"enu" | { kind: "enu" } | { kind: "ecef"; reference: GeodeticCoordinate };
|
|
576
|
+
|
|
577
|
+
/** Station position time series passed to geodetic time-series functions. */
|
|
578
|
+
export interface PositionTimeSeries {
|
|
579
|
+
samples: PositionTimeSeriesSample[];
|
|
580
|
+
frame?: PositionSeriesFrame;
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
/** MIDAS velocity options. */
|
|
584
|
+
export interface MidasOptions {
|
|
585
|
+
dominantPeriodYears?: number;
|
|
586
|
+
periodToleranceYears?: number;
|
|
587
|
+
minPairs?: number;
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
/** One MIDAS component diagnostic. */
|
|
591
|
+
export interface MidasComponentStats {
|
|
592
|
+
pairCount: number;
|
|
593
|
+
retainedPairCount: number;
|
|
594
|
+
slopeSigmaMPerYr: number;
|
|
595
|
+
effectivePairCount: number;
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
/** Result returned by `velocityMidas`. */
|
|
599
|
+
export interface MidasVelocity {
|
|
600
|
+
rateEnuMPerYr: [number, number, number];
|
|
601
|
+
sigmaEnuMPerYr: [number, number, number];
|
|
602
|
+
covarianceEnuM2PerYr2: [
|
|
603
|
+
[number, number, number],
|
|
604
|
+
[number, number, number],
|
|
605
|
+
[number, number, number],
|
|
606
|
+
];
|
|
607
|
+
componentStats: [MidasComponentStats, MidasComponentStats, MidasComponentStats];
|
|
608
|
+
sampleCount: number;
|
|
609
|
+
spanYears: number;
|
|
610
|
+
quality: "nominal" | "shortSpan";
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
/** Trajectory model controls for `fitTrajectory`. */
|
|
614
|
+
export interface TrajectoryModelOptions {
|
|
615
|
+
referenceEpochYear?: number;
|
|
616
|
+
includeAnnual?: boolean;
|
|
617
|
+
includeSemiannual?: boolean;
|
|
618
|
+
offsetEpochsYear?: number[];
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
/** Trajectory fit options. */
|
|
622
|
+
export interface TrajectoryFitOptions {
|
|
623
|
+
loss?: "linear" | "softL1" | "soft_l1" | "huber" | "cauchy" | "arctan";
|
|
624
|
+
fScaleM?: number;
|
|
625
|
+
maxNfev?: number;
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
/** One term in a fitted trajectory model. */
|
|
629
|
+
export interface TrajectoryTerm {
|
|
630
|
+
kind:
|
|
631
|
+
| "position"
|
|
632
|
+
| "velocity"
|
|
633
|
+
| "annualSin"
|
|
634
|
+
| "annualCos"
|
|
635
|
+
| "semiannualSin"
|
|
636
|
+
| "semiannualCos"
|
|
637
|
+
| "offset";
|
|
638
|
+
index?: number;
|
|
639
|
+
epochYear?: number;
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
/** One ENU component in a trajectory fit. */
|
|
643
|
+
export interface TrajectoryComponent {
|
|
644
|
+
positionM: number;
|
|
645
|
+
velocityMPerYr: number;
|
|
646
|
+
annualSinM?: number;
|
|
647
|
+
annualCosM?: number;
|
|
648
|
+
semiannualSinM?: number;
|
|
649
|
+
semiannualCosM?: number;
|
|
650
|
+
offsetsM: number[];
|
|
651
|
+
}
|
|
652
|
+
|
|
653
|
+
/** Result returned by `fitTrajectory`. */
|
|
654
|
+
export interface TrajectoryFit {
|
|
655
|
+
referenceEpochYear: number;
|
|
656
|
+
terms: TrajectoryTerm[];
|
|
657
|
+
components: [TrajectoryComponent, TrajectoryComponent, TrajectoryComponent];
|
|
658
|
+
parameterCovariance: number[][];
|
|
659
|
+
residualRmsEnuM: [number, number, number];
|
|
660
|
+
geometryQuality: GeometryQualityObject;
|
|
661
|
+
status: number;
|
|
662
|
+
nfev: number;
|
|
663
|
+
njev: number;
|
|
664
|
+
cost: number;
|
|
665
|
+
optimality: number;
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
/** Step detection options. */
|
|
669
|
+
export interface StepDetectionOptions {
|
|
670
|
+
windowYears?: number;
|
|
671
|
+
scoreThreshold?: number;
|
|
672
|
+
minOffsetM?: number;
|
|
673
|
+
minSamplesEachSide?: number;
|
|
674
|
+
minSeparationYears?: number;
|
|
675
|
+
midas?: MidasOptions;
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
/** Candidate returned by `detectSteps`. */
|
|
679
|
+
export interface StepCandidate {
|
|
680
|
+
epochYear: number;
|
|
681
|
+
offsetEnuM: [number, number, number];
|
|
682
|
+
score: number;
|
|
683
|
+
beforeCount: number;
|
|
684
|
+
afterCount: number;
|
|
685
|
+
heuristic: "detrendedSlidingMedian";
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
/** Network field request passed to `networkField`. */
|
|
689
|
+
export interface NetworkFieldRequest {
|
|
690
|
+
frame: { origin: GeodeticCoordinate; removeCommonMode?: boolean };
|
|
691
|
+
stations: { id: string; reference: GeodeticCoordinate; series: PositionTimeSeries }[];
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
/** Result returned by `networkField`. */
|
|
695
|
+
export interface NetworkField {
|
|
696
|
+
frame: { origin: Required<GeodeticCoordinate>; removeCommonMode: boolean };
|
|
697
|
+
stations: {
|
|
698
|
+
id: string;
|
|
699
|
+
rateEnuMPerYr: [number, number, number];
|
|
700
|
+
rawRateEnuMPerYr: [number, number, number];
|
|
701
|
+
sigmaEnuMPerYr: [number, number, number];
|
|
702
|
+
localVelocity: MidasVelocity;
|
|
703
|
+
}[];
|
|
704
|
+
commonModeEnuMPerYr: [number, number, number];
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
/** Minimal kinematic solution accepted by `metricsFromKinematicSolution`. */
|
|
708
|
+
export interface KinematicMetricInput {
|
|
709
|
+
positionM: [number, number, number];
|
|
710
|
+
positionCovarianceM2: [
|
|
711
|
+
[number, number, number],
|
|
712
|
+
[number, number, number],
|
|
713
|
+
[number, number, number],
|
|
714
|
+
];
|
|
715
|
+
clockM?: number;
|
|
716
|
+
ztdResidualM?: number;
|
|
717
|
+
usedSats?: string[];
|
|
718
|
+
innovationRmsM?: number;
|
|
719
|
+
}
|
|
720
|
+
|
|
721
|
+
/** Allan-family deviation curve used by `fitPowerLawNoise`. */
|
|
722
|
+
export interface AllanDeviationCurve {
|
|
723
|
+
tauS: number[];
|
|
724
|
+
deviation: number[];
|
|
725
|
+
n: number[];
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
/** Power-law clock-noise fit options. */
|
|
729
|
+
export interface PowerLawNoiseOptions {
|
|
730
|
+
minPointsPerOctave?: number;
|
|
731
|
+
slopeTolerance?: number;
|
|
732
|
+
scatterTolerance?: number;
|
|
733
|
+
basicTauS?: number;
|
|
734
|
+
measurementBandwidthHz?: number;
|
|
735
|
+
}
|
|
736
|
+
|
|
737
|
+
/** Power-law octave decision. */
|
|
738
|
+
export type PowerLawOctaveDominance =
|
|
739
|
+
| {
|
|
740
|
+
kind: "dominant";
|
|
741
|
+
noiseType: "randomWalkFM" | "flickerFM" | "whiteFM" | "flickerPM" | "whitePM";
|
|
742
|
+
}
|
|
743
|
+
| { kind: "ambiguous" }
|
|
744
|
+
| { kind: "flagged"; flag: "underSampled" | "degenerateDeviation" | "missingModifiedAllan" };
|
|
745
|
+
|
|
746
|
+
/** One classified clock-noise tau octave. */
|
|
747
|
+
export interface PowerLawOctave {
|
|
748
|
+
tauStartS: number;
|
|
749
|
+
tauEndS: number;
|
|
750
|
+
pointCount: number;
|
|
751
|
+
adevSlope?: number;
|
|
752
|
+
mdevSlope?: number;
|
|
753
|
+
slopeScatter?: number;
|
|
754
|
+
dominance: PowerLawOctaveDominance;
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
/** One fitted clock-noise coefficient region. */
|
|
758
|
+
export interface PowerLawNoiseRegion {
|
|
759
|
+
noiseType: "randomWalkFM" | "flickerFM" | "whiteFM" | "flickerPM" | "whitePM";
|
|
760
|
+
tauStartS: number;
|
|
761
|
+
tauEndS: number;
|
|
762
|
+
octaveCount: number;
|
|
763
|
+
pointCount: number;
|
|
764
|
+
meanSlope: number;
|
|
765
|
+
coefficient: number;
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
/** Result returned by `fitPowerLawNoise`. */
|
|
769
|
+
export interface PowerLawNoiseFit {
|
|
770
|
+
dominantPerOctave: PowerLawOctave[];
|
|
771
|
+
coefficients: [number, number, number, number, number];
|
|
772
|
+
regions: PowerLawNoiseRegion[];
|
|
773
|
+
}
|
|
774
|
+
|
|
775
|
+
/** Numerical orbit-fit options. */
|
|
776
|
+
export interface OrbitFitOptions {
|
|
777
|
+
forceModel?: ForceModel;
|
|
778
|
+
muKm3S2?: number;
|
|
779
|
+
integrator?: Integrator;
|
|
780
|
+
integratorOptions?: Pick<
|
|
781
|
+
PropagateStateRequest,
|
|
782
|
+
"absTol" | "relTol" | "initialStepS" | "minStepS" | "maxStepS" | "maxSteps"
|
|
783
|
+
>;
|
|
784
|
+
solverOptions?: { gtol?: number; ftol?: number; xtol?: number; maxNfev?: number };
|
|
785
|
+
linearSolve?: "nalgebraLu" | "nalgebra_lu" | "ownedGaussianFirstTie" | "owned_gaussian_first_tie";
|
|
786
|
+
minLedgerSamples?: number;
|
|
787
|
+
drag?: DragConfig;
|
|
788
|
+
}
|
|
789
|
+
|
|
790
|
+
/** Fitted orbit covariance marker. */
|
|
791
|
+
export type OrbitFitCovariance = { kind: "estimated"; matrix: number[][] } | { kind: "unbounded" };
|
|
792
|
+
|
|
793
|
+
/** One satellite solution in an orbit-fit report. */
|
|
794
|
+
export interface OrbitFitSolution {
|
|
795
|
+
satellite: string;
|
|
796
|
+
initialEpochS: number;
|
|
797
|
+
initialPositionKm: [number, number, number];
|
|
798
|
+
initialVelocityKmS: [number, number, number];
|
|
799
|
+
covariance: OrbitFitCovariance;
|
|
800
|
+
geometryQuality: GeometryQualityObject;
|
|
801
|
+
seedRms3dM: number;
|
|
802
|
+
fitRms3dM: number;
|
|
803
|
+
iterations: number;
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
/** One RTN residual ledger entry. */
|
|
807
|
+
export interface OrbitResidualStats {
|
|
808
|
+
radialRmsM: number;
|
|
809
|
+
alongRmsM: number;
|
|
810
|
+
crossRmsM: number;
|
|
811
|
+
rms3dM: number;
|
|
812
|
+
n: number;
|
|
813
|
+
lowSampleCount: boolean;
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
/** Orbit residual ledger returned in an orbit-fit report. */
|
|
817
|
+
export interface OrbitResidualLedger {
|
|
818
|
+
perSatellite: { satellite: string; stats: OrbitResidualStats }[];
|
|
819
|
+
perConstellation: { system: string; stats: OrbitResidualStats }[];
|
|
820
|
+
arcSpan: { timeScale: string; startJ2000S: number; endJ2000S: number; durationS: number };
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
/** Report returned by the SP3, ECEF SP3, and sample-backed orbit-fit entries. */
|
|
824
|
+
export interface OrbitFitReport {
|
|
825
|
+
fits: OrbitFitSolution[];
|
|
826
|
+
ledger: OrbitResidualLedger;
|
|
410
827
|
}
|
|
411
828
|
|
|
412
829
|
// --- Covariance propagation -------------------------------------------------
|
|
@@ -3076,3 +3493,155 @@ export type RtcmMessageInput =
|
|
|
3076
3493
|
| RtcmGpsEphemerisInput
|
|
3077
3494
|
| RtcmGlonassEphemerisInput
|
|
3078
3495
|
| RtcmUnsupportedInput;
|
|
3496
|
+
|
|
3497
|
+
// ---------------------------------------------------------------------------
|
|
3498
|
+
// Classical reliability and SBAS protection-level plain objects
|
|
3499
|
+
// ---------------------------------------------------------------------------
|
|
3500
|
+
|
|
3501
|
+
/** Result returned by `wtestNoncentrality(alpha, power)`. */
|
|
3502
|
+
export interface WtestNoncentrality {
|
|
3503
|
+
/** Two-sided false-alarm probability supplied by the caller. */
|
|
3504
|
+
alpha: number;
|
|
3505
|
+
/** Detection power supplied by the caller. */
|
|
3506
|
+
power: number;
|
|
3507
|
+
/** Missed-detection probability passed to the core calculation. */
|
|
3508
|
+
beta: number;
|
|
3509
|
+
/** Baarda w-test noncentrality distance. */
|
|
3510
|
+
delta0: number;
|
|
3511
|
+
/** Squared noncentrality distance. */
|
|
3512
|
+
lambda0: number;
|
|
3513
|
+
}
|
|
3514
|
+
|
|
3515
|
+
/** One range-observation row accepted by `reliabilityDesign`. */
|
|
3516
|
+
export interface RangeReliabilityRow {
|
|
3517
|
+
/** Observation identifier echoed into the report. */
|
|
3518
|
+
id: string;
|
|
3519
|
+
/** Linearized design row for this range observation. */
|
|
3520
|
+
designRow: number[];
|
|
3521
|
+
/** Externally supplied one-sigma range model, metres. */
|
|
3522
|
+
sigmaM: number;
|
|
3523
|
+
}
|
|
3524
|
+
|
|
3525
|
+
/** Options accepted by `reliabilityDesign` and `reliabilityAraim`. */
|
|
3526
|
+
export interface ReliabilityOptions {
|
|
3527
|
+
/** Two-sided false-alarm probability for the one-dimensional w-test. */
|
|
3528
|
+
alpha?: number;
|
|
3529
|
+
/** Detection power. Mutually exclusive with `beta`. Defaults to 0.80. */
|
|
3530
|
+
power?: number;
|
|
3531
|
+
/** Missed-detection probability. Mutually exclusive with `power`. */
|
|
3532
|
+
beta?: number;
|
|
3533
|
+
/** Optional precomputed noncentrality parameter. */
|
|
3534
|
+
lambda0Override?: number;
|
|
3535
|
+
/** Alias for `lambda0Override`. */
|
|
3536
|
+
lambda0?: number;
|
|
3537
|
+
/** Redundancy floor below which an observation is uncheckable. */
|
|
3538
|
+
minRedundancy?: number;
|
|
3539
|
+
}
|
|
3540
|
+
|
|
3541
|
+
/** Reliability diagnostics for one observation. */
|
|
3542
|
+
export interface ObservationReliability {
|
|
3543
|
+
/** Observation identifier echoed from the input row. */
|
|
3544
|
+
id: string;
|
|
3545
|
+
/** Redundancy number for this observation. */
|
|
3546
|
+
redundancy: number;
|
|
3547
|
+
/** Minimal detectable bias, metres, or `null` when uncheckable. */
|
|
3548
|
+
mdbM: number | null;
|
|
3549
|
+
/** External effect vector, metres, or `null` when unavailable. */
|
|
3550
|
+
externalEnuM: [number, number, number] | null;
|
|
3551
|
+
/** Bias-to-noise ratio in state space, or `null` when uncheckable. */
|
|
3552
|
+
biasToNoise: number | null;
|
|
3553
|
+
/** True when redundancy is below the reporting floor. */
|
|
3554
|
+
uncheckable: boolean;
|
|
3555
|
+
}
|
|
3556
|
+
|
|
3557
|
+
/** Observation carrying the largest finite MDB in a reliability report. */
|
|
3558
|
+
export interface ReliabilityMaxMdb {
|
|
3559
|
+
/** Observation identifier. */
|
|
3560
|
+
id: string;
|
|
3561
|
+
/** Largest finite MDB, metres. */
|
|
3562
|
+
mdbM: number;
|
|
3563
|
+
}
|
|
3564
|
+
|
|
3565
|
+
/** Observation carrying the smallest redundancy number. */
|
|
3566
|
+
export interface ReliabilityMinRedundancy {
|
|
3567
|
+
/** Observation identifier. */
|
|
3568
|
+
id: string;
|
|
3569
|
+
/** Smallest redundancy number. */
|
|
3570
|
+
redundancy: number;
|
|
3571
|
+
}
|
|
3572
|
+
|
|
3573
|
+
/** Aggregate reliability diagnostics for a design. */
|
|
3574
|
+
export interface ReliabilitySummary {
|
|
3575
|
+
/** Number of observations in the design. */
|
|
3576
|
+
nObs: number;
|
|
3577
|
+
/** Number of estimated parameters in the design. */
|
|
3578
|
+
nParams: number;
|
|
3579
|
+
/** Algebraic degrees of freedom, `nObs - nParams`. */
|
|
3580
|
+
dof: number;
|
|
3581
|
+
/** Sum of per-observation redundancy numbers. */
|
|
3582
|
+
sumRedundancy: number;
|
|
3583
|
+
/** Noncentrality parameter used for MDB calculations. */
|
|
3584
|
+
lambda0: number;
|
|
3585
|
+
/** Largest finite MDB, or `null` if no observation is checkable. */
|
|
3586
|
+
maxMdbM: ReliabilityMaxMdb | null;
|
|
3587
|
+
/** Smallest redundancy number and its observation identifier. */
|
|
3588
|
+
minRedundancy: ReliabilityMinRedundancy;
|
|
3589
|
+
/** Count of observations reported as uncheckable. */
|
|
3590
|
+
nUncheckable: number;
|
|
3591
|
+
}
|
|
3592
|
+
|
|
3593
|
+
/** Full reliability design report. */
|
|
3594
|
+
export interface ReliabilityReport {
|
|
3595
|
+
/** Per-observation reliability diagnostics, in input order. */
|
|
3596
|
+
perObservation: ObservationReliability[];
|
|
3597
|
+
/** Aggregate design diagnostics. */
|
|
3598
|
+
summary: ReliabilitySummary;
|
|
3599
|
+
}
|
|
3600
|
+
|
|
3601
|
+
/** One SBAS or ARAIM protection-geometry row. */
|
|
3602
|
+
export interface ProtectionRow {
|
|
3603
|
+
/** Satellite token such as `"G01"`. */
|
|
3604
|
+
id: string;
|
|
3605
|
+
/** ECEF line-of-sight unit vector. */
|
|
3606
|
+
lineOfSight: [number, number, number];
|
|
3607
|
+
/** Optional GNSS system label. Defaults to the system encoded in `id`. */
|
|
3608
|
+
system?: string;
|
|
3609
|
+
/** Satellite elevation angle, radians. */
|
|
3610
|
+
elevationRad: number;
|
|
3611
|
+
}
|
|
3612
|
+
|
|
3613
|
+
/** Receiver coordinates used by SBAS and ARAIM protection geometry. */
|
|
3614
|
+
export interface ProtectionReceiver {
|
|
3615
|
+
/** Geodetic latitude, radians. */
|
|
3616
|
+
latRad: number;
|
|
3617
|
+
/** Geodetic longitude, radians east. */
|
|
3618
|
+
lonRad: number;
|
|
3619
|
+
/** Ellipsoidal height above WGS84, metres. */
|
|
3620
|
+
heightM: number;
|
|
3621
|
+
}
|
|
3622
|
+
|
|
3623
|
+
/** Protection geometry accepted by `sbasProtectionLevels` and `reliabilityAraim`. */
|
|
3624
|
+
export interface ProtectionGeometry {
|
|
3625
|
+
/** Satellite rows in input order. */
|
|
3626
|
+
rows: ProtectionRow[];
|
|
3627
|
+
/** Receiver geodetic coordinates. */
|
|
3628
|
+
receiver: ProtectionReceiver;
|
|
3629
|
+
/** Active receiver clock systems, such as `["G"]`. */
|
|
3630
|
+
clockSystems: string[];
|
|
3631
|
+
}
|
|
3632
|
+
|
|
3633
|
+
/** Plain-object row accepted by `new SbasErrorModel(rows)`. */
|
|
3634
|
+
export interface SbasSisErrorInput {
|
|
3635
|
+
/** Satellite token matching a protection-geometry row. */
|
|
3636
|
+
id: string;
|
|
3637
|
+
/** Total one-sigma range term, metres. Mutually exclusive with components. */
|
|
3638
|
+
sigmaM?: number;
|
|
3639
|
+
/** Fast and long-term correction residual sigma, metres. */
|
|
3640
|
+
sigmaFltM?: number;
|
|
3641
|
+
/** User ionospheric range-error sigma, metres. */
|
|
3642
|
+
sigmaUireM?: number;
|
|
3643
|
+
/** Airborne receiver noise, divergence, and multipath sigma, metres. */
|
|
3644
|
+
sigmaAirM?: number;
|
|
3645
|
+
/** Tropospheric residual sigma, metres. */
|
|
3646
|
+
sigmaTropoM?: number;
|
|
3647
|
+
}
|