@neilberkman/sidereon 0.22.0 → 0.24.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 +55 -12
- package/package.json +1 -1
- package/pkg/sidereon.d.ts +1861 -1678
- package/pkg/sidereon.js +388 -13
- package/pkg/sidereon_bg.wasm +0 -0
- package/pkg/sidereon_bg.wasm.d.ts +1887 -1850
- package/pkg-node/sidereon.d.ts +158 -12
- package/pkg-node/sidereon.js +389 -13
- package/pkg-node/sidereon_bg.wasm +0 -0
- package/pkg-node/sidereon_bg.wasm.d.ts +1887 -1850
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@ checked against IGS products.
|
|
|
15
15
|
## Install
|
|
16
16
|
|
|
17
17
|
```sh
|
|
18
|
-
npm install @neilberkman/sidereon
|
|
18
|
+
npm install @neilberkman/sidereon@0.23
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
The package is dual ESM/CJS and ships prebuilt wasm with bundled TypeScript
|
|
@@ -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,28 @@ 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, RTK (float/fixed), PPP (float/fixed), static PPP
|
|
157
|
+
temporal-correlation covariance with calibrated day-length bounds, optional
|
|
158
|
+
elevation cutoff, optional tropospheric-gradient estimation, DGNSS,
|
|
159
|
+
moving-baseline RTK, DOP, velocity, and a Huber-reweighted SPP driver that
|
|
160
|
+
runs fault detection and exclusion (RAIM/FDE) with iterative reweighting.
|
|
161
|
+
- **Integrity and error bounds:** direct post-solve RAIM fault detection,
|
|
162
|
+
multi-constellation ARAIM protection levels,
|
|
122
163
|
SBAS protection levels (DO-229), per-observation reliability (minimal
|
|
123
164
|
detectable bias, internal/external), observability classification of every
|
|
124
165
|
solution (rank, redundancy, conditioning), and covariance-derived error
|
|
125
166
|
metrics (CEP, R95, SEP, error ellipse) that report wide or flagged bounds
|
|
126
167
|
for weak geometry rather than fabricated confidence.
|
|
127
168
|
- **GNSS corrections and biases:** SBAS message decoding with SBAS-corrected
|
|
128
|
-
solves, RTCM SSR orbit and clock correction streams,
|
|
129
|
-
|
|
169
|
+
solves, RTCM SSR orbit and clock correction streams, RTCM 3 broadcast
|
|
170
|
+
ephemeris decode for GPS (1019), GLONASS (1020), Galileo (1045/1046),
|
|
171
|
+
BeiDou (1042), and QZSS (1044), each real-data validated, Bias-SINEX code
|
|
172
|
+
and phase biases (DCB/OSB).
|
|
130
173
|
- **Timing, estimation, and geodesy:** Allan-family clock stability with
|
|
131
174
|
power-law noise identification (IEEE 1139), scalar Kalman and alpha-beta
|
|
132
|
-
trackers, CFAR detection thresholds, source localization (ToA/TDOA),
|
|
175
|
+
trackers, CFAR detection thresholds, source localization (ToA/TDOA),
|
|
133
176
|
station velocity (MIDAS) with trajectory fitting and step detection,
|
|
134
177
|
repeating-geometry (sidereal) filtering, geodesic direct and inverse
|
|
135
178
|
problems (Karney), an epoch-aware terrestrial frame catalog (ITRF/ETRF
|
|
@@ -158,7 +201,7 @@ The wasm surface mirrors the full breadth of the engine:
|
|
|
158
201
|
- **RF link budget:** free-space path loss, EIRP, C/N0, antenna gain, Doppler
|
|
159
202
|
shift and range rate.
|
|
160
203
|
- **GNSS/INS fusion:** strapdown mechanization with an error-state EKF (UKF
|
|
161
|
-
option), loose and tight coupling,
|
|
204
|
+
option), loose and tight coupling, IGG-III loose updates, an RTS smoother,
|
|
162
205
|
a serializable filter state, and field mode (zero-velocity and
|
|
163
206
|
zero-angular-rate updates, non-holonomic constraints, per-fix-status
|
|
164
207
|
weighting, IMU-to-body mounting matrix), all off by default.
|
|
@@ -179,9 +222,9 @@ computes. Failures surface as the JS exception you would expect (`Error` for
|
|
|
179
222
|
engine rejections such as parse failures, non-converging solves, and SGP4 error
|
|
180
223
|
codes; `TypeError` for malformed input; `RangeError` for out-of-domain numbers).
|
|
181
224
|
Full signatures live in the bundled TypeScript declarations (`sidereon.d.ts`),
|
|
182
|
-
with the plain-object request
|
|
225
|
+
with the plain-object request types in `@neilberkman/sidereon/types`.
|
|
183
226
|
|
|
184
|
-
A few conventions
|
|
227
|
+
A few conventions to know: positions and state arrays cross as
|
|
185
228
|
`Float64Array` (multi-epoch arrays are flat row-major, `3 * epochCount`); SGP4
|
|
186
229
|
epoch grids are `BigInt64Array` of unix microseconds; SP3 query epochs are plain
|
|
187
230
|
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.24.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",
|