feat(fusion): fuse Doppler velocity in ESKF
This commit is contained in:
@@ -19,14 +19,17 @@ gps_system.c
|
||||
-> timestamped IMU queue -> navigation_fusion prediction
|
||||
-> 20 ms tracking mailbox -> C/N0 + Doppler/range-rate
|
||||
-> GPS events -> coherent position/velocity WLS -> gps_nav_solution_t
|
||||
-> valid GPS position -> fusion_gps_measurement_t -> navigation_fusion update
|
||||
-> valid GPS position + Doppler velocity -> fusion_gps_measurement_t
|
||||
-> same-epoch navigation_fusion position/velocity update
|
||||
-> navigation_fusion_output_t -> corrected lat/lon publish
|
||||
```
|
||||
|
||||
Doppler WLS'nin ECEF velocity, speed ve residual sonucu
|
||||
`fusion_gps_measurement_t` icine aktarilir ve UART'ta yayinlanir. Mevcut
|
||||
`navigation_fusion` update'i henuz bu velocity alanlarini state correction
|
||||
olarak kullanmaz; ESKF'ye giren aktif GPS olcumu position'dir.
|
||||
Doppler WLS'nin ECEF velocity, covariance, speed ve residual sonucu
|
||||
`fusion_gps_measurement_t` icine aktarilir. GPS adapter velocity ile
|
||||
covariance'i ECEF'ten ENU'ya dondurur; position ve velocity ayni capture
|
||||
epoch'unda ESKF'ye uygulanir, sonra daha yeni IMU history replay edilir.
|
||||
Position ve velocity'nin ayri NIS kapilari/sayaclari vardir; bir velocity
|
||||
outlier'i ayni epoch'taki gecerli position update'ini geri almaz.
|
||||
|
||||
Kaynak ve public header agaci ayni modul sinirlarini izler:
|
||||
|
||||
@@ -791,9 +794,21 @@ weight = 1 / sigma_rate^2
|
||||
|
||||
En az dort uydu gerekir. Dort uyduda velocity residual serbestlik derecesi
|
||||
yoktur; bes uydu ve dusuk PDOP'ta bile zayif geometri velocity gurultusunu
|
||||
buyutebilir. Sonuc `velocity_valid`, ECEF velocity, `speed_mps` ve
|
||||
`velocity_residual_rms_mps` alanlarinda yayinlanir, fakat henuz ESKF update'ine
|
||||
fusion edilmez.
|
||||
buyutebilir. WLS, `inverse(H'WH)` matrisinden ECEF velocity covariance uretir.
|
||||
`N>4` ise weighted post-fit reduced chi-square yalniz covariance'i buyutebilir;
|
||||
tek bir sessiz epoch formal belirsizligi kucultemez. Sonuc `velocity_valid`,
|
||||
ECEF velocity/covariance, `speed_mps` ve `velocity_residual_rms_mps`
|
||||
alanlarinda yayinlanir.
|
||||
|
||||
Fusion adapter covariance'i `R_ecef_to_enu * P * R^T` ile ENU'ya dondurur.
|
||||
2026-07-25 sabit kart verisinde zayif geometriyle gorulen
|
||||
`p95=6.020 m/s` speed hatasi nedeniyle default alt sinirlar yatay eksenlerde
|
||||
`2.0 m/s`, dikey eksende `3.0 m/s`'dir. Bunlar IIR ile korelasyonlu ard arda
|
||||
epoch'larin ESKF'yi asiri guvenle cekmesini onler; formal covariance daha
|
||||
buyukse aynen korunur. Velocity innovation 3-DOF `%99.9`
|
||||
`NIS=16.266` kapisindan gecer. Kabul/red sayilari ve son velocity NIS'i
|
||||
`[FUSION]` UART status satirinda `velocity=accepted/rejected` ve `vel_nis`
|
||||
olarak yayinlanir.
|
||||
|
||||
- Konum cozumu URA/elevation/CN0 agirlikli WLS kullanir; raporlanan DOP degerleri ise bu normalize relative weight'lerden uretilmez. GDOP/PDOP/TDOP agirliksiz geometri matrisinden, HDOP/VDOP de ayni covariance ECEF'ten lokal ENU eksenlerine donduruldukten sonra hesaplanir. Boylece loglanan degerler klasik geometrik DOP anlamini korur.
|
||||
- Troposfer correction her satellite icin bagimsiz hesaplanir ve dort satellite ile de aktiftir. Ilk konumsuz iteration sabit baslangic correction'i kullanir; receiver konumu olustuktan sonra elevation ve metre cinsinden receiver height modele verilir. Model kilometre bekledigi icin height donusumu yapilir ve dusuk elevation'da gecerli olabilen 5 m uzeri delay degerleri artik keyfi olarak sifirlanmaz.
|
||||
@@ -1071,8 +1086,11 @@ make -C hardware/external/gps/rtl/trck_src/tb test
|
||||
```
|
||||
|
||||
`run` ve `sanitize`, C/N0 estimator'i, Q7 Doppler/range-rate donusumu,
|
||||
coherent mailbox read'i, weighted velocity WLS ve satellite velocity/clock
|
||||
drift hesaplarini kapsar. RTL Questa/vlog-vsim testi prompt akumulasyonu,
|
||||
coherent mailbox read'i, weighted velocity WLS/covariance ve satellite
|
||||
velocity/clock drift hesaplarini kapsar. Fusion regression'i ayrica
|
||||
ECEF->ENU velocity/covariance rotasyonunu, velocity NIS kabul/redini ve ayni
|
||||
epoch position+velocity delayed replay esdegerligini kapsar. RTL
|
||||
Questa/vlog-vsim testi prompt akumulasyonu,
|
||||
20 ms hold, synchronizer settle, atomik APB capture ve interrupt yolunu
|
||||
kapsar.
|
||||
|
||||
@@ -1110,8 +1128,12 @@ Kart ve GPS anteni sabitken canli tracking mailbox olcumlerinde:
|
||||
C/N0 ve Doppler verisi fiziksel olarak makul, IIR velocity gurultusunu
|
||||
azaltiyor ve C/N0 weighting ornek epoch'ta sonucu iyilestiriyor. Buna ragmen
|
||||
position WLS'deki pseudorange/code-phase hata ve zayif geometriyi tek basina
|
||||
duzeltmiyor. Doppler velocity de henuz ESKF state update'inde kullanilmadigi
|
||||
icin `imu_corrected` cikisina dogrudan faydasi yoktur.
|
||||
duzeltmiyor. Doppler velocity artik ESKF state update'ine baglidir; formal
|
||||
covariance, kart verisine dayali floor ve ayri NIS gate ile asiri guven
|
||||
sinirlanir. Bu yeni software'in gercek kartta `vel_nis` ve
|
||||
`velocity=accepted/rejected` sayaclariyla saha A/B sonucu henuz olculmedi;
|
||||
yukaridaki board istatistikleri ESKF entegrasyonundan onceki ham velocity
|
||||
dogrulamasidir.
|
||||
|
||||
### 2026-07-08 ACQ Debug Notu
|
||||
|
||||
|
||||
Reference in New Issue
Block a user