@neilberkman/sidereon 0.23.0 → 0.25.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 +62 -13
- package/package.json +1 -1
- package/pkg/sidereon.d.ts +2291 -1628
- package/pkg/sidereon.js +265 -3
- package/pkg/sidereon_bg.wasm +0 -0
- package/pkg/sidereon_bg.wasm.d.ts +1748 -1733
- package/pkg-node/sidereon.d.ts +721 -73
- package/pkg-node/sidereon.js +274 -3
- package/pkg-node/sidereon_bg.wasm +0 -0
- package/pkg-node/sidereon_bg.wasm.d.ts +1748 -1733
package/README.md
CHANGED
|
@@ -99,9 +99,45 @@ console.log(solution.rxClockS); // receiver clock bias, seconds
|
|
|
99
99
|
```
|
|
100
100
|
|
|
101
101
|
`solveRtkFloat` / `solveRtkFixed` and `solvePppFloat` / `solvePppFixed` follow
|
|
102
|
-
the same
|
|
102
|
+
the same pattern: an options object in, a result object with `Float64Array`
|
|
103
103
|
positions and scalar attributes out.
|
|
104
104
|
|
|
105
|
+
## Example: post-solve integrity
|
|
106
|
+
|
|
107
|
+
Use `raim` on per-satellite post-fit residuals after a solve. The direct result
|
|
108
|
+
has `faultDetected`, `testStatistic`, `threshold`, `worstSat`,
|
|
109
|
+
`reducedChiSquare`, `normalizedResiduals`, `rmsM`, and `dof`. RAIM residual
|
|
110
|
+
tests must use per-satellite residual variances; unit weights on metre-scale
|
|
111
|
+
residuals make `faultDetected` saturate near 100%. The JS API takes
|
|
112
|
+
inverse-variance weights, so compute them from your variance model.
|
|
113
|
+
|
|
114
|
+
```js
|
|
115
|
+
import { RaimWeights, raim } from "@neilberkman/sidereon";
|
|
116
|
+
|
|
117
|
+
const usedSats = ["G01", "G02", "G03", "G04", "G05", "G06"];
|
|
118
|
+
const residualsM = [0.2, -0.1, 0.3, 0.2, 9.0, -0.2];
|
|
119
|
+
const elevationDeg = [72, 42, 35, 64, 50, 28];
|
|
120
|
+
const sigma0M = 0.8;
|
|
121
|
+
const weights = Float64Array.from(
|
|
122
|
+
elevationDeg.map((el) => {
|
|
123
|
+
const sinEl = Math.max(Math.sin((el * Math.PI) / 180), 0.2);
|
|
124
|
+
const varianceM2 = (sigma0M / sinEl) ** 2;
|
|
125
|
+
return 1 / varianceM2;
|
|
126
|
+
}),
|
|
127
|
+
);
|
|
128
|
+
const integrity = raim(
|
|
129
|
+
{ usedSats, residualsM },
|
|
130
|
+
{ pFa: 1e-3, weights: RaimWeights.bySatellite(usedSats, weights) },
|
|
131
|
+
);
|
|
132
|
+
|
|
133
|
+
console.log(integrity.faultDetected, integrity.testStatistic, integrity.worstSat);
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Use `araim(geometry, ism, allocation)` for protection levels from line-of-sight
|
|
137
|
+
geometry and an integrity support message. `araimLpv200Allocation()` provides the
|
|
138
|
+
default LPV-200 budget. The direct result has `hplM`, `vplM`, `sigmaAccHM`, and
|
|
139
|
+
`sigmaAccVM`, plus the detailed monitor fields.
|
|
140
|
+
|
|
105
141
|
## Capabilities
|
|
106
142
|
|
|
107
143
|
The wasm surface mirrors the full breadth of the engine:
|
|
@@ -115,21 +151,32 @@ The wasm surface mirrors the full breadth of the engine:
|
|
|
115
151
|
batch least-squares orbit fitting against precise ephemerides (including
|
|
116
152
|
terrestrial-frame SP3 through the Earth-orientation chain) with a
|
|
117
153
|
per-satellite residual ledger.
|
|
118
|
-
- **GNSS positioning:** SPP,
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
154
|
+
- **GNSS positioning:** SPP, public `solveStatic` multi-epoch static
|
|
155
|
+
positioning with covariance, leave-one-out redundancy diagnostics, and
|
|
156
|
+
robust weighting, RINEX observation to SPP helpers
|
|
157
|
+
(`sppInputsFromRinexObs` and `solveSppFromRinexObs`), RTK (float/fixed,
|
|
158
|
+
sequential/static arcs, wide-lane fixed), PPP (float/fixed, including
|
|
159
|
+
SPP-seeded auto-init), static PPP temporal-correlation covariance with
|
|
160
|
+
calibrated day-length bounds, optional elevation cutoff, optional
|
|
161
|
+
tropospheric-gradient estimation, DGNSS, moving-baseline RTK, DOP, velocity,
|
|
162
|
+
RAIM over existing SPP solutions, broadcast-ephemeris FDE, and a
|
|
163
|
+
Huber-reweighted SPP driver that runs fault detection and exclusion
|
|
164
|
+
(RAIM/FDE) with iterative reweighting.
|
|
165
|
+
- **Integrity and error bounds:** direct post-solve RAIM fault detection,
|
|
166
|
+
multi-constellation ARAIM protection levels,
|
|
122
167
|
SBAS protection levels (DO-229), per-observation reliability (minimal
|
|
123
168
|
detectable bias, internal/external), observability classification of every
|
|
124
169
|
solution (rank, redundancy, conditioning), and covariance-derived error
|
|
125
170
|
metrics (CEP, R95, SEP, error ellipse) that report wide or flagged bounds
|
|
126
171
|
for weak geometry rather than fabricated confidence.
|
|
127
172
|
- **GNSS corrections and biases:** SBAS message decoding with SBAS-corrected
|
|
128
|
-
solves, RTCM SSR orbit and clock correction streams,
|
|
129
|
-
|
|
173
|
+
solves, RTCM SSR orbit and clock correction streams, RTCM 3 broadcast
|
|
174
|
+
ephemeris decode for GPS (1019), GLONASS (1020), Galileo (1045/1046),
|
|
175
|
+
BeiDou (1042), and QZSS (1044), each real-data validated, Bias-SINEX code
|
|
176
|
+
and phase biases (DCB/OSB).
|
|
130
177
|
- **Timing, estimation, and geodesy:** Allan-family clock stability with
|
|
131
178
|
power-law noise identification (IEEE 1139), scalar Kalman and alpha-beta
|
|
132
|
-
trackers, CFAR detection thresholds, source localization (ToA/TDOA),
|
|
179
|
+
trackers, CFAR detection thresholds, source localization (ToA/TDOA),
|
|
133
180
|
station velocity (MIDAS) with trajectory fitting and step detection,
|
|
134
181
|
repeating-geometry (sidereal) filtering, geodesic direct and inverse
|
|
135
182
|
problems (Karney), an epoch-aware terrestrial frame catalog (ITRF/ETRF
|
|
@@ -154,11 +201,12 @@ The wasm surface mirrors the full breadth of the engine:
|
|
|
154
201
|
conjunctions and oppositions, Sun/Moon/planet meridian transits.
|
|
155
202
|
- **Atmosphere and Earth models:** Klobuchar and NeQuick-G ionosphere, IONEX
|
|
156
203
|
slant delay, troposphere models, geoid undulation (EGM96), solid Earth and
|
|
157
|
-
pole tides, ocean tide loading, DTED terrain elevation lookup
|
|
204
|
+
pole tides, ocean tide loading, DTED terrain elevation lookup with batch
|
|
205
|
+
queries, and memory-mappable terrain stores.
|
|
158
206
|
- **RF link budget:** free-space path loss, EIRP, C/N0, antenna gain, Doppler
|
|
159
207
|
shift and range rate.
|
|
160
208
|
- **GNSS/INS fusion:** strapdown mechanization with an error-state EKF (UKF
|
|
161
|
-
option), loose and tight coupling,
|
|
209
|
+
option), loose and tight coupling, IGG-III loose updates, an RTS smoother,
|
|
162
210
|
a serializable filter state, and field mode (zero-velocity and
|
|
163
211
|
zero-angular-rate updates, non-holonomic constraints, per-fix-status
|
|
164
212
|
weighting, IMU-to-body mounting matrix), all off by default.
|
|
@@ -169,7 +217,7 @@ The wasm surface mirrors the full breadth of the engine:
|
|
|
169
217
|
same scenario and seed.
|
|
170
218
|
- **Signal analysis:** closed-form BPSK/BOC spectra, spectral separation
|
|
171
219
|
coefficients, DLL jitter, and multipath error envelopes against published
|
|
172
|
-
constants.
|
|
220
|
+
constants, plus GPS C/A correlation helpers.
|
|
173
221
|
- **Format parsing and serialization:** TLE/OMM, CCSDS (OEM/OPM/CDM/TDM),
|
|
174
222
|
RINEX observation/navigation/clock, CRINEX (Hatanaka), SP3, IONEX, ANTEX,
|
|
175
223
|
Bias-SINEX, RTCM.
|
|
@@ -179,9 +227,10 @@ computes. Failures surface as the JS exception you would expect (`Error` for
|
|
|
179
227
|
engine rejections such as parse failures, non-converging solves, and SGP4 error
|
|
180
228
|
codes; `TypeError` for malformed input; `RangeError` for out-of-domain numbers).
|
|
181
229
|
Full signatures live in the bundled TypeScript declarations (`sidereon.d.ts`),
|
|
182
|
-
with the plain-object request
|
|
230
|
+
with the plain-object request types in `@neilberkman/sidereon/types`, including
|
|
231
|
+
typed ARAIM, RTK/PPP, fusion, signal-analysis, and terrain protocols.
|
|
183
232
|
|
|
184
|
-
A few conventions
|
|
233
|
+
A few conventions to know: positions and state arrays cross as
|
|
185
234
|
`Float64Array` (multi-epoch arrays are flat row-major, `3 * epochCount`); SGP4
|
|
186
235
|
epoch grids are `BigInt64Array` of unix microseconds; SP3 query epochs are plain
|
|
187
236
|
numbers in seconds since J2000.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neilberkman/sidereon",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.25.0",
|
|
4
4
|
"description": "WebAssembly / JavaScript interface over the sidereon GNSS + astrodynamics engine: SP3 loading and multi-product merge, SPP / RTK (float + fixed) / PPP (float + fixed) positioning, IONEX slant delay, SGP4 and numerical orbit propagation, RINEX observation/navigation/clock parsing, CRINEX (Hatanaka) decoding, observable-domain math (carrier combinations, cycle slips, Hatch smoothing, weighting, velocity, GPS C/A signal), and the astro domain (scale-tagged time, frame transforms, Sun/Moon ephemerides, eclipse / body angles, DOP, passes / visibility, conjunction + collision probability, CDM / OMM / ANTEX parsing, RF link budget)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|