gnss-js 1.28.0 → 1.29.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/dist/{chunk-O65WA6CM.js → chunk-5WHKMKIB.js} +37 -20
- package/dist/index.cjs +37 -20
- package/dist/index.js +1 -1
- package/dist/positioning.cjs +37 -20
- package/dist/positioning.js +1 -1
- package/package.json +1 -1
|
@@ -1620,9 +1620,9 @@ function satStateAtEmission(sp3, prn, recvTimeMs, rcv) {
|
|
|
1620
1620
|
var IDX_X = 0;
|
|
1621
1621
|
var IDX_Y = 1;
|
|
1622
1622
|
var IDX_Z = 2;
|
|
1623
|
-
var
|
|
1624
|
-
var
|
|
1625
|
-
var
|
|
1623
|
+
var IDX_ZWD = 3;
|
|
1624
|
+
var NBASE = 4;
|
|
1625
|
+
var CLK_VAR = 1e10;
|
|
1626
1626
|
function solvePpp(epochs, sp3, opts) {
|
|
1627
1627
|
const elevMask = (opts.elevationMaskDeg ?? 10) * Math.PI / 180;
|
|
1628
1628
|
const codeSigma = opts.codeSigma ?? 3;
|
|
@@ -1633,8 +1633,6 @@ function solvePpp(epochs, sp3, opts) {
|
|
|
1633
1633
|
opts.aprioriPos[0],
|
|
1634
1634
|
opts.aprioriPos[1],
|
|
1635
1635
|
opts.aprioriPos[2],
|
|
1636
|
-
0,
|
|
1637
|
-
// receiver clock (m)
|
|
1638
1636
|
0.1
|
|
1639
1637
|
// zenith wet delay (m) a priori
|
|
1640
1638
|
];
|
|
@@ -1645,8 +1643,9 @@ function solvePpp(epochs, sp3, opts) {
|
|
|
1645
1643
|
P[IDX_X][IDX_X] = 100 * 100;
|
|
1646
1644
|
P[IDX_Y][IDX_Y] = 100 * 100;
|
|
1647
1645
|
P[IDX_Z][IDX_Z] = 100 * 100;
|
|
1648
|
-
P[IDX_CLK][IDX_CLK] = 1e10;
|
|
1649
1646
|
P[IDX_ZWD][IDX_ZWD] = 0.5 * 0.5;
|
|
1647
|
+
const clkIdx = /* @__PURE__ */ new Map();
|
|
1648
|
+
const clockSeeded = /* @__PURE__ */ new Set();
|
|
1650
1649
|
const ambIdx = /* @__PURE__ */ new Map();
|
|
1651
1650
|
const lastSeen = /* @__PURE__ */ new Map();
|
|
1652
1651
|
const mwState = /* @__PURE__ */ new Map();
|
|
@@ -1687,8 +1686,18 @@ function solvePpp(epochs, sp3, opts) {
|
|
|
1687
1686
|
if (i === idx) ambIdx.delete(prn);
|
|
1688
1687
|
else if (i > idx) ambIdx.set(prn, i - 1);
|
|
1689
1688
|
}
|
|
1689
|
+
for (const [sys, i] of clkIdx) {
|
|
1690
|
+
if (i > idx) clkIdx.set(sys, i - 1);
|
|
1691
|
+
}
|
|
1692
|
+
};
|
|
1693
|
+
const clockOf = (sys) => {
|
|
1694
|
+
let i = clkIdx.get(sys);
|
|
1695
|
+
if (i === void 0) {
|
|
1696
|
+
i = growState(0, CLK_VAR);
|
|
1697
|
+
clkIdx.set(sys, i);
|
|
1698
|
+
}
|
|
1699
|
+
return i;
|
|
1690
1700
|
};
|
|
1691
|
-
let clockSeeded = false;
|
|
1692
1701
|
const series = [];
|
|
1693
1702
|
const truth = opts.groundTruth;
|
|
1694
1703
|
const t0 = epochs[0]?.timeMs ?? 0;
|
|
@@ -1696,7 +1705,7 @@ function solvePpp(epochs, sp3, opts) {
|
|
|
1696
1705
|
let convergedStreak = 0;
|
|
1697
1706
|
for (let ei = 0; ei < epochs.length; ei++) {
|
|
1698
1707
|
const epoch = epochs[ei];
|
|
1699
|
-
P[
|
|
1708
|
+
for (const ci of clkIdx.values()) P[ci][ci] = CLK_VAR;
|
|
1700
1709
|
P[IDX_ZWD][IDX_ZWD] += ztdQ * (ei > 0 ? 1 : 0);
|
|
1701
1710
|
const rcv = [x[IDX_X], x[IDX_Y], x[IDX_Z]];
|
|
1702
1711
|
const [latDeg, , heightM] = ecefToGeodetic(rcv[0], rcv[1], rcv[2]);
|
|
@@ -1760,21 +1769,29 @@ function solvePpp(epochs, sp3, opts) {
|
|
|
1760
1769
|
});
|
|
1761
1770
|
}
|
|
1762
1771
|
const zwd0 = x[IDX_ZWD];
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1772
|
+
const bySys = /* @__PURE__ */ new Map();
|
|
1773
|
+
for (const v of vis) {
|
|
1774
|
+
const sys = v.prn[0];
|
|
1775
|
+
const r = v.pIf - (v.range - v.satClkM + v.tropoFixed + zwd0 * v.mw);
|
|
1776
|
+
const arr = bySys.get(sys);
|
|
1777
|
+
if (arr) arr.push(r);
|
|
1778
|
+
else bySys.set(sys, [r]);
|
|
1779
|
+
}
|
|
1780
|
+
for (const [sys, res] of bySys) {
|
|
1781
|
+
const ci = clockOf(sys);
|
|
1782
|
+
if (!clockSeeded.has(sys)) {
|
|
1783
|
+
res.sort((a, b) => a - b);
|
|
1784
|
+
x[ci] = res[Math.floor(res.length / 2)];
|
|
1785
|
+
clockSeeded.add(sys);
|
|
1770
1786
|
}
|
|
1771
|
-
P[
|
|
1787
|
+
P[ci][ci] = CLK_VAR;
|
|
1772
1788
|
}
|
|
1773
1789
|
let nSats = 0;
|
|
1774
1790
|
let sumPhaseResSq = 0;
|
|
1775
1791
|
let nPhaseRes = 0;
|
|
1776
1792
|
for (const v of vis) {
|
|
1777
|
-
const
|
|
1793
|
+
const ci = clockOf(v.prn[0]);
|
|
1794
|
+
const common = v.range + x[ci] - v.satClkM + v.tropoFixed + zwd0 * v.mw;
|
|
1778
1795
|
let ai = ambIdx.get(v.prn);
|
|
1779
1796
|
if (ai === void 0 || v.slip) {
|
|
1780
1797
|
const bInit = v.lIf - (common + v.windupM);
|
|
@@ -1799,13 +1816,13 @@ function solvePpp(epochs, sp3, opts) {
|
|
|
1799
1816
|
h[IDX_X] = -v.e[0];
|
|
1800
1817
|
h[IDX_Y] = -v.e[1];
|
|
1801
1818
|
h[IDX_Z] = -v.e[2];
|
|
1802
|
-
h[
|
|
1819
|
+
h[ci] = 1;
|
|
1803
1820
|
h[IDX_ZWD] = v.mw;
|
|
1804
1821
|
const innov = v.pIf - common;
|
|
1805
1822
|
if (Math.abs(innov) < 1e6) ekfUpdateScalar(x, P, h, innov, rCode, 4);
|
|
1806
1823
|
}
|
|
1807
1824
|
{
|
|
1808
|
-
const commonPh = v.range + x[
|
|
1825
|
+
const commonPh = v.range + x[ci] - v.satClkM + v.tropoFixed + x[IDX_ZWD] * v.mw;
|
|
1809
1826
|
const innov = v.lIf - (commonPh + v.windupM + x[ai]);
|
|
1810
1827
|
if (Math.abs(innov) > 0.15) {
|
|
1811
1828
|
x[ai] = v.lIf - (commonPh + v.windupM);
|
|
@@ -1819,7 +1836,7 @@ function solvePpp(epochs, sp3, opts) {
|
|
|
1819
1836
|
h[IDX_X] = -v.e[0];
|
|
1820
1837
|
h[IDX_Y] = -v.e[1];
|
|
1821
1838
|
h[IDX_Z] = -v.e[2];
|
|
1822
|
-
h[
|
|
1839
|
+
h[ci] = 1;
|
|
1823
1840
|
h[IDX_ZWD] = v.mw;
|
|
1824
1841
|
h[ai] = 1;
|
|
1825
1842
|
if (ekfUpdateScalar(x, P, h, innov, rPhase, 4)) {
|
package/dist/index.cjs
CHANGED
|
@@ -12872,9 +12872,9 @@ function satStateAtEmission(sp3, prn, recvTimeMs, rcv) {
|
|
|
12872
12872
|
var IDX_X = 0;
|
|
12873
12873
|
var IDX_Y = 1;
|
|
12874
12874
|
var IDX_Z = 2;
|
|
12875
|
-
var
|
|
12876
|
-
var
|
|
12877
|
-
var
|
|
12875
|
+
var IDX_ZWD = 3;
|
|
12876
|
+
var NBASE = 4;
|
|
12877
|
+
var CLK_VAR = 1e10;
|
|
12878
12878
|
function solvePpp(epochs, sp3, opts) {
|
|
12879
12879
|
const elevMask = (opts.elevationMaskDeg ?? 10) * Math.PI / 180;
|
|
12880
12880
|
const codeSigma = opts.codeSigma ?? 3;
|
|
@@ -12885,8 +12885,6 @@ function solvePpp(epochs, sp3, opts) {
|
|
|
12885
12885
|
opts.aprioriPos[0],
|
|
12886
12886
|
opts.aprioriPos[1],
|
|
12887
12887
|
opts.aprioriPos[2],
|
|
12888
|
-
0,
|
|
12889
|
-
// receiver clock (m)
|
|
12890
12888
|
0.1
|
|
12891
12889
|
// zenith wet delay (m) a priori
|
|
12892
12890
|
];
|
|
@@ -12897,8 +12895,9 @@ function solvePpp(epochs, sp3, opts) {
|
|
|
12897
12895
|
P[IDX_X][IDX_X] = 100 * 100;
|
|
12898
12896
|
P[IDX_Y][IDX_Y] = 100 * 100;
|
|
12899
12897
|
P[IDX_Z][IDX_Z] = 100 * 100;
|
|
12900
|
-
P[IDX_CLK][IDX_CLK] = 1e10;
|
|
12901
12898
|
P[IDX_ZWD][IDX_ZWD] = 0.5 * 0.5;
|
|
12899
|
+
const clkIdx = /* @__PURE__ */ new Map();
|
|
12900
|
+
const clockSeeded = /* @__PURE__ */ new Set();
|
|
12902
12901
|
const ambIdx = /* @__PURE__ */ new Map();
|
|
12903
12902
|
const lastSeen = /* @__PURE__ */ new Map();
|
|
12904
12903
|
const mwState = /* @__PURE__ */ new Map();
|
|
@@ -12939,8 +12938,18 @@ function solvePpp(epochs, sp3, opts) {
|
|
|
12939
12938
|
if (i === idx) ambIdx.delete(prn);
|
|
12940
12939
|
else if (i > idx) ambIdx.set(prn, i - 1);
|
|
12941
12940
|
}
|
|
12941
|
+
for (const [sys, i] of clkIdx) {
|
|
12942
|
+
if (i > idx) clkIdx.set(sys, i - 1);
|
|
12943
|
+
}
|
|
12944
|
+
};
|
|
12945
|
+
const clockOf = (sys) => {
|
|
12946
|
+
let i = clkIdx.get(sys);
|
|
12947
|
+
if (i === void 0) {
|
|
12948
|
+
i = growState(0, CLK_VAR);
|
|
12949
|
+
clkIdx.set(sys, i);
|
|
12950
|
+
}
|
|
12951
|
+
return i;
|
|
12942
12952
|
};
|
|
12943
|
-
let clockSeeded = false;
|
|
12944
12953
|
const series = [];
|
|
12945
12954
|
const truth = opts.groundTruth;
|
|
12946
12955
|
const t0 = epochs[0]?.timeMs ?? 0;
|
|
@@ -12948,7 +12957,7 @@ function solvePpp(epochs, sp3, opts) {
|
|
|
12948
12957
|
let convergedStreak = 0;
|
|
12949
12958
|
for (let ei = 0; ei < epochs.length; ei++) {
|
|
12950
12959
|
const epoch = epochs[ei];
|
|
12951
|
-
P[
|
|
12960
|
+
for (const ci of clkIdx.values()) P[ci][ci] = CLK_VAR;
|
|
12952
12961
|
P[IDX_ZWD][IDX_ZWD] += ztdQ * (ei > 0 ? 1 : 0);
|
|
12953
12962
|
const rcv = [x[IDX_X], x[IDX_Y], x[IDX_Z]];
|
|
12954
12963
|
const [latDeg, , heightM] = ecefToGeodetic(rcv[0], rcv[1], rcv[2]);
|
|
@@ -13012,21 +13021,29 @@ function solvePpp(epochs, sp3, opts) {
|
|
|
13012
13021
|
});
|
|
13013
13022
|
}
|
|
13014
13023
|
const zwd0 = x[IDX_ZWD];
|
|
13015
|
-
|
|
13016
|
-
|
|
13017
|
-
|
|
13018
|
-
|
|
13019
|
-
|
|
13020
|
-
|
|
13021
|
-
|
|
13024
|
+
const bySys = /* @__PURE__ */ new Map();
|
|
13025
|
+
for (const v of vis) {
|
|
13026
|
+
const sys = v.prn[0];
|
|
13027
|
+
const r = v.pIf - (v.range - v.satClkM + v.tropoFixed + zwd0 * v.mw);
|
|
13028
|
+
const arr = bySys.get(sys);
|
|
13029
|
+
if (arr) arr.push(r);
|
|
13030
|
+
else bySys.set(sys, [r]);
|
|
13031
|
+
}
|
|
13032
|
+
for (const [sys, res] of bySys) {
|
|
13033
|
+
const ci = clockOf(sys);
|
|
13034
|
+
if (!clockSeeded.has(sys)) {
|
|
13035
|
+
res.sort((a, b) => a - b);
|
|
13036
|
+
x[ci] = res[Math.floor(res.length / 2)];
|
|
13037
|
+
clockSeeded.add(sys);
|
|
13022
13038
|
}
|
|
13023
|
-
P[
|
|
13039
|
+
P[ci][ci] = CLK_VAR;
|
|
13024
13040
|
}
|
|
13025
13041
|
let nSats = 0;
|
|
13026
13042
|
let sumPhaseResSq = 0;
|
|
13027
13043
|
let nPhaseRes = 0;
|
|
13028
13044
|
for (const v of vis) {
|
|
13029
|
-
const
|
|
13045
|
+
const ci = clockOf(v.prn[0]);
|
|
13046
|
+
const common = v.range + x[ci] - v.satClkM + v.tropoFixed + zwd0 * v.mw;
|
|
13030
13047
|
let ai = ambIdx.get(v.prn);
|
|
13031
13048
|
if (ai === void 0 || v.slip) {
|
|
13032
13049
|
const bInit = v.lIf - (common + v.windupM);
|
|
@@ -13051,13 +13068,13 @@ function solvePpp(epochs, sp3, opts) {
|
|
|
13051
13068
|
h[IDX_X] = -v.e[0];
|
|
13052
13069
|
h[IDX_Y] = -v.e[1];
|
|
13053
13070
|
h[IDX_Z] = -v.e[2];
|
|
13054
|
-
h[
|
|
13071
|
+
h[ci] = 1;
|
|
13055
13072
|
h[IDX_ZWD] = v.mw;
|
|
13056
13073
|
const innov = v.pIf - common;
|
|
13057
13074
|
if (Math.abs(innov) < 1e6) ekfUpdateScalar(x, P, h, innov, rCode, 4);
|
|
13058
13075
|
}
|
|
13059
13076
|
{
|
|
13060
|
-
const commonPh = v.range + x[
|
|
13077
|
+
const commonPh = v.range + x[ci] - v.satClkM + v.tropoFixed + x[IDX_ZWD] * v.mw;
|
|
13061
13078
|
const innov = v.lIf - (commonPh + v.windupM + x[ai]);
|
|
13062
13079
|
if (Math.abs(innov) > 0.15) {
|
|
13063
13080
|
x[ai] = v.lIf - (commonPh + v.windupM);
|
|
@@ -13071,7 +13088,7 @@ function solvePpp(epochs, sp3, opts) {
|
|
|
13071
13088
|
h[IDX_X] = -v.e[0];
|
|
13072
13089
|
h[IDX_Y] = -v.e[1];
|
|
13073
13090
|
h[IDX_Z] = -v.e[2];
|
|
13074
|
-
h[
|
|
13091
|
+
h[ci] = 1;
|
|
13075
13092
|
h[IDX_ZWD] = v.mw;
|
|
13076
13093
|
h[ai] = 1;
|
|
13077
13094
|
if (ekfUpdateScalar(x, P, h, innov, rPhase, 4)) {
|
package/dist/index.js
CHANGED
package/dist/positioning.cjs
CHANGED
|
@@ -2118,9 +2118,9 @@ function satStateAtEmission(sp3, prn, recvTimeMs, rcv) {
|
|
|
2118
2118
|
var IDX_X = 0;
|
|
2119
2119
|
var IDX_Y = 1;
|
|
2120
2120
|
var IDX_Z = 2;
|
|
2121
|
-
var
|
|
2122
|
-
var
|
|
2123
|
-
var
|
|
2121
|
+
var IDX_ZWD = 3;
|
|
2122
|
+
var NBASE = 4;
|
|
2123
|
+
var CLK_VAR = 1e10;
|
|
2124
2124
|
function solvePpp(epochs, sp3, opts) {
|
|
2125
2125
|
const elevMask = (opts.elevationMaskDeg ?? 10) * Math.PI / 180;
|
|
2126
2126
|
const codeSigma = opts.codeSigma ?? 3;
|
|
@@ -2131,8 +2131,6 @@ function solvePpp(epochs, sp3, opts) {
|
|
|
2131
2131
|
opts.aprioriPos[0],
|
|
2132
2132
|
opts.aprioriPos[1],
|
|
2133
2133
|
opts.aprioriPos[2],
|
|
2134
|
-
0,
|
|
2135
|
-
// receiver clock (m)
|
|
2136
2134
|
0.1
|
|
2137
2135
|
// zenith wet delay (m) a priori
|
|
2138
2136
|
];
|
|
@@ -2143,8 +2141,9 @@ function solvePpp(epochs, sp3, opts) {
|
|
|
2143
2141
|
P[IDX_X][IDX_X] = 100 * 100;
|
|
2144
2142
|
P[IDX_Y][IDX_Y] = 100 * 100;
|
|
2145
2143
|
P[IDX_Z][IDX_Z] = 100 * 100;
|
|
2146
|
-
P[IDX_CLK][IDX_CLK] = 1e10;
|
|
2147
2144
|
P[IDX_ZWD][IDX_ZWD] = 0.5 * 0.5;
|
|
2145
|
+
const clkIdx = /* @__PURE__ */ new Map();
|
|
2146
|
+
const clockSeeded = /* @__PURE__ */ new Set();
|
|
2148
2147
|
const ambIdx = /* @__PURE__ */ new Map();
|
|
2149
2148
|
const lastSeen = /* @__PURE__ */ new Map();
|
|
2150
2149
|
const mwState = /* @__PURE__ */ new Map();
|
|
@@ -2185,8 +2184,18 @@ function solvePpp(epochs, sp3, opts) {
|
|
|
2185
2184
|
if (i === idx) ambIdx.delete(prn);
|
|
2186
2185
|
else if (i > idx) ambIdx.set(prn, i - 1);
|
|
2187
2186
|
}
|
|
2187
|
+
for (const [sys, i] of clkIdx) {
|
|
2188
|
+
if (i > idx) clkIdx.set(sys, i - 1);
|
|
2189
|
+
}
|
|
2190
|
+
};
|
|
2191
|
+
const clockOf = (sys) => {
|
|
2192
|
+
let i = clkIdx.get(sys);
|
|
2193
|
+
if (i === void 0) {
|
|
2194
|
+
i = growState(0, CLK_VAR);
|
|
2195
|
+
clkIdx.set(sys, i);
|
|
2196
|
+
}
|
|
2197
|
+
return i;
|
|
2188
2198
|
};
|
|
2189
|
-
let clockSeeded = false;
|
|
2190
2199
|
const series = [];
|
|
2191
2200
|
const truth = opts.groundTruth;
|
|
2192
2201
|
const t0 = epochs[0]?.timeMs ?? 0;
|
|
@@ -2194,7 +2203,7 @@ function solvePpp(epochs, sp3, opts) {
|
|
|
2194
2203
|
let convergedStreak = 0;
|
|
2195
2204
|
for (let ei = 0; ei < epochs.length; ei++) {
|
|
2196
2205
|
const epoch = epochs[ei];
|
|
2197
|
-
P[
|
|
2206
|
+
for (const ci of clkIdx.values()) P[ci][ci] = CLK_VAR;
|
|
2198
2207
|
P[IDX_ZWD][IDX_ZWD] += ztdQ * (ei > 0 ? 1 : 0);
|
|
2199
2208
|
const rcv = [x[IDX_X], x[IDX_Y], x[IDX_Z]];
|
|
2200
2209
|
const [latDeg, , heightM] = ecefToGeodetic(rcv[0], rcv[1], rcv[2]);
|
|
@@ -2258,21 +2267,29 @@ function solvePpp(epochs, sp3, opts) {
|
|
|
2258
2267
|
});
|
|
2259
2268
|
}
|
|
2260
2269
|
const zwd0 = x[IDX_ZWD];
|
|
2261
|
-
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
|
|
2265
|
-
|
|
2266
|
-
|
|
2267
|
-
|
|
2270
|
+
const bySys = /* @__PURE__ */ new Map();
|
|
2271
|
+
for (const v of vis) {
|
|
2272
|
+
const sys = v.prn[0];
|
|
2273
|
+
const r = v.pIf - (v.range - v.satClkM + v.tropoFixed + zwd0 * v.mw);
|
|
2274
|
+
const arr = bySys.get(sys);
|
|
2275
|
+
if (arr) arr.push(r);
|
|
2276
|
+
else bySys.set(sys, [r]);
|
|
2277
|
+
}
|
|
2278
|
+
for (const [sys, res] of bySys) {
|
|
2279
|
+
const ci = clockOf(sys);
|
|
2280
|
+
if (!clockSeeded.has(sys)) {
|
|
2281
|
+
res.sort((a, b) => a - b);
|
|
2282
|
+
x[ci] = res[Math.floor(res.length / 2)];
|
|
2283
|
+
clockSeeded.add(sys);
|
|
2268
2284
|
}
|
|
2269
|
-
P[
|
|
2285
|
+
P[ci][ci] = CLK_VAR;
|
|
2270
2286
|
}
|
|
2271
2287
|
let nSats = 0;
|
|
2272
2288
|
let sumPhaseResSq = 0;
|
|
2273
2289
|
let nPhaseRes = 0;
|
|
2274
2290
|
for (const v of vis) {
|
|
2275
|
-
const
|
|
2291
|
+
const ci = clockOf(v.prn[0]);
|
|
2292
|
+
const common = v.range + x[ci] - v.satClkM + v.tropoFixed + zwd0 * v.mw;
|
|
2276
2293
|
let ai = ambIdx.get(v.prn);
|
|
2277
2294
|
if (ai === void 0 || v.slip) {
|
|
2278
2295
|
const bInit = v.lIf - (common + v.windupM);
|
|
@@ -2297,13 +2314,13 @@ function solvePpp(epochs, sp3, opts) {
|
|
|
2297
2314
|
h[IDX_X] = -v.e[0];
|
|
2298
2315
|
h[IDX_Y] = -v.e[1];
|
|
2299
2316
|
h[IDX_Z] = -v.e[2];
|
|
2300
|
-
h[
|
|
2317
|
+
h[ci] = 1;
|
|
2301
2318
|
h[IDX_ZWD] = v.mw;
|
|
2302
2319
|
const innov = v.pIf - common;
|
|
2303
2320
|
if (Math.abs(innov) < 1e6) ekfUpdateScalar(x, P, h, innov, rCode, 4);
|
|
2304
2321
|
}
|
|
2305
2322
|
{
|
|
2306
|
-
const commonPh = v.range + x[
|
|
2323
|
+
const commonPh = v.range + x[ci] - v.satClkM + v.tropoFixed + x[IDX_ZWD] * v.mw;
|
|
2307
2324
|
const innov = v.lIf - (commonPh + v.windupM + x[ai]);
|
|
2308
2325
|
if (Math.abs(innov) > 0.15) {
|
|
2309
2326
|
x[ai] = v.lIf - (commonPh + v.windupM);
|
|
@@ -2317,7 +2334,7 @@ function solvePpp(epochs, sp3, opts) {
|
|
|
2317
2334
|
h[IDX_X] = -v.e[0];
|
|
2318
2335
|
h[IDX_Y] = -v.e[1];
|
|
2319
2336
|
h[IDX_Z] = -v.e[2];
|
|
2320
|
-
h[
|
|
2337
|
+
h[ci] = 1;
|
|
2321
2338
|
h[IDX_ZWD] = v.mw;
|
|
2322
2339
|
h[ai] = 1;
|
|
2323
2340
|
if (ekfUpdateScalar(x, P, h, innov, rPhase, 4)) {
|
package/dist/positioning.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gnss-js",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.29.0",
|
|
4
4
|
"description": "Comprehensive GNSS library for JavaScript — time scales, coordinates, RINEX parsing, RTCM3 decoding, orbit computation, and signal analysis",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|