fix(gps): adapt Doppler bandwidth from board validation

This commit is contained in:
2026-07-26 03:15:52 +03:00
parent 23650be635
commit 156cfc8b77
24 changed files with 592 additions and 49 deletions
+22
View File
@@ -57,6 +57,28 @@ This keeps quality policy and the small navigation pre-filter in software
while the deterministic PI loop, fixed-point rate state and physical edge
generation remain in hardware.
In a conventional absolute-pseudorange model, receiver clock bias and
receiver clock drift are the level and slope of the same physical clock:
`b_r = c*delta_t_r` and `bdot_r = c*d(delta_t_r)/dt`. The position-WLS bias
in this project is different: subtracting the common capture time and adding
`STARTOFFSET` makes it a reference-satellite-relative datum, approximately
`c*STARTOFFSET - reference_range`, rather than a pure receiver oscillator
offset.
The Doppler WLS still solves a fourth, common receiver clock/frequency-drift
state. The PPS pre-filter does not use that state directly as the derivative
of the position-WLS datum. Instead, it predicts that datum with:
```text
position_datum_drift =
-reference_geometric_range_rate
+ c * reference_satellite_clock_drift
```
The geometric term uses the Doppler-WLS receiver velocity plus the selected
reference satellite position and velocity. The PPS RTL sees only the
resulting timestamped reference and loop configuration.
The APB register offsets live in `pps_pkg.sv`. Multiword input fields are
shadow registers and must be followed by one `COMMIT` write. A new mailbox
must not be written while `STATUS.COMMIT_BUSY` is set.
+27
View File
@@ -89,6 +89,33 @@ observation = measured_range_rate
H = [-u_x, -u_y, -u_z, 1]
```
Buradaki dorduncu state, tum uydu Doppler observation'larina ortak giren
receiver clock/frequency drift'idir. Klasik mutlak-pseudorange modelinde
receiver zaman hatasi `delta_t_r(t)` icin:
```text
clock_bias_m = c * delta_t_r(t)
clock_drift_mps = c * d(delta_t_r(t))/dt
clock_bias_m(t+dt) ~= clock_bias_m(t) + clock_drift_mps * dt
```
`clock_drift_mps`, receiver local oscillator frequency error'inin range-rate
birimindeki ortak etkisidir. `0.1 ppm`, yaklasik `29.98 m/s`'ye karsilik
gelir. Bu ortak state olmadan oscillator hatasi receiver hareketinin bir
parcasi sanilirdi.
Bu projedeki position WLS bias'i ise mutlak receiver clock bias'i degildir.
Ortak capture zamani cikarildigi ve `STARTOFFSET` eklendigi icin
referans-uyduya bagli goreli bir datum cozer. Bu nedenle Doppler WLS
`clock_drift_mps` state'i, position WLS `clock_bias_m` degerinin turevi olarak
dogrudan baglanmaz.
Iki WLS ayri observation ve normal equation kullanir; fakat Doppler WLS tam
bagimsiz degildir. Uydu LOS vektorlerini kurmak icin position WLS'den gelen
guncel receiver ECEF konumunu, ephemeristen gelen uydu ECEF konum/hiz ve clock
drift'ini kullanir. Satellite clock drift bilinen duzeltmedir; WLS'nin
dorduncu bilinmeyeni receiver clock drift'idir.
WLS en az dort gecerli uydu ister; ECEF velocity, 3x3 covariance, receiver
clock drift ve residual RMS uretir. Fusion adapter velocity/covariance'i ENU'ya
dondurur ve ayri velocity NIS kapisi ile 15-state ESKF'ye verir.