GÖREV KAYDI

GÖREV KAYDI

KAYIT AÇIK

ATILIM UAV · YER KONTROL İSTASYONU

GÖREV KAYDI / DETAY

Arşiv

CANLI · OKUMA MODU

Aviyonik

GPS, RTK ve EKF: Konum Doğruluğunu Anlamak

GPS, RTK ve EKF: Konum Doğruluğunu Anlamak

Sağlık izlemeli EKF çoklu sensör füzyonu blok şeması

ŞEK. 01

KAYIT KÜNYESİ

Kategori

Aviyonik

TARİH

TÜM KAYITLAR

Sahada ilk fark ettiğimiz şey şuydu: aracı Loiter moduna alıp çubukları bıraktığımızda konumunu tutamıyordu. Birkaç metre çapında bir daire çiziyor, bazen de yavaşça tek bir yöne sürükleniyordu. Bu sırada yer istasyonundaki konum tıkır tıkır sabit görünüyordu; yani sürüklenen araç değildi, sürüklenen şey aracın kendisi hakkında inandığı şeydi.

Bunun doğrudan bir görev maliyeti var. Faydalı yükü yaklaşık 20 m'den bırakıyoruz; aracın konum kestirimi 3 m sapıyorsa yük de hedeften 3 m uzağa düşer. Kamera ne kadar iyi olursa olsun, tespit edilen bir hedefin koordinatlarını aracın kendi konumundan türetiyorsanız hata olduğu gibi aktarılır.

Bu yazıda konum zincirinin tamamını takip ediyoruz: uydulardan inen sinyal nerede bozuluyor, RTK bunu nasıl santimetre seviyesine çekiyor ve EKF (Extended Kalman Filter — genişletilmiş Kalman filtresi) neden tek bir sensöre güvenmek yerine bütün bu gürültülü ölçümleri birleştiriyor.

GNSS: dört takımyıldız, tek çözüm

GPS aslında bir marka adı. Genel terim GNSS (Global Navigation Satellite System): ABD'nin GPS'i, Rusya'nın GLONASS'ı, Avrupa'nın Galileo'su ve Çin'in BeiDou'su. Modern bir alıcı bunların birkaçını aynı anda dinler.

Alıcı, her uydudan gelen sinyalin yol süresini ölçer, bunu ışık hızıyla çarpar ve o uyduya olan mesafeyi bulur. Üç mesafe konumu, dördüncüsü ise alıcının saat hatasını çözer; yani en az dört uydu gerekir. Daha fazla takımyıldızı dinlemek görüş alanındaki uydu sayısını artırır ve ağaçların, binaların gökyüzünü kestiği sahalarda çözümü ayakta tutar.

Uydu sayısı tek başına yeterli değil. Uyduların gökyüzüne nasıl dağıldığı da en az o kadar önemli ve HDOP (Horizontal Dilution of Precision) tam olarak bunu ifade eder. Uydular gökyüzüne yayılmışsa HDOP düşük; hepsi tek bir bölgede kümelenmişse yüksektir.

Hata bütçesi: konum neden kayar

Hata kaynağı

Ne yapar

Sahada ne görürsünüz

Nasıl azaltılır

İyonosferik / troposferik gecikme

Sinyalin yol süresini uzatır

Dakikalar içinde yavaş kayma

Çift frekanslı alıcı, SBAS, RTK

Çok yolluluk (multipath)

Sinyal bir binadan veya araçtan sekip geç ulaşır

Birkaç metrelik ani sıçrama

Anteni gövdeden yukarı kaldırın, ground plane kullanın

Uydu geometrisi (yüksek HDOP)

Aynı ölçüm hatasını büyütür

Dar veya kapalı sahada konumun dağılması

Açık gökyüzü, çoklu takımyıldız alıcısı

Uydu saati / yörünge hatası

Mesafe ölçümünü kaydırır

Yavaş, sistematik sapma

RTK / DGPS düzeltmesi

Alıcı gürültüsü

Ölçümü titretir

Yüksek frekanslı titreme

Filtreleme (EKF tam olarak bunu yapar)

Yatay hatayı kabaca kestirmenin standart yolu şu:

σ_horizontal ≈ HDOP × UERE

UERE = User Equivalent Range Error (tek bir uydu için toplam mesafe hatası, metre cinsinden)

Örnek: sahada UERE'yi 2.0 m varsayalım (tipik bir tek frekanslı alıcı için makul bir büyüklük mertebesi; kesin değer alıcıya ve atmosfere göre değişir, üreticinin veri sayfasına bakın).

HDOP

Hesap

Kestirilen σ

1.2

1.2 × 2.0

2.4 m

2.5

2.5 × 2.0

5.0 m

Her iki durumda uydu sayısı birebir aynı olabilir. Değişen tek şey geometri ve hata iki katına çıktı. ArduPilot bunu bir pre-arm kontrolüne bağlar: GPS_HDOP_GOOD parametresinin varsayılanı 140'tır ve bu değer HDOP × 100 anlamına gelir; yani eşik 1.4'tür (aralık 100–900). Log analizinde ArduPilot belgeleri GPS.HDop değerinin 1.5 altını iyi, 2.0 üstünü sorunlu sayar; GPS.NSats değerinin 12'nin altına düşmesini de bir sıkıntı işareti olarak görür.

RTK: düzeltmeyi sabit bir noktadan almak

Yukarıdaki hataların çoğu (atmosfer, uydu saati, yörünge) bölgeseldir: birbirine yakın iki alıcı aynı hatayı görür. RTK (Real Time Kinematics) tam olarak bunun üzerine kuruludur.

Konumu hassas biçimde bilinen sabit bir baz istasyonu kurarsınız. Baz istasyonu, uydulardan ölçtüğü mesafelerle bilinen konumundan hesapladığı mesafeler arasındaki farkı alır ve bu farkı RTCM formatında bir düzeltme mesajı olarak yayınlar. Araç üzerindeki alıcı (rover) bu düzeltmeyi kendi ölçümlerine uygular. Ortak hatalar birbirini götürür.

Baz istasyonu kendi konumunu survey-in ile belirler: bir süre sabit durur, çok sayıda ölçümün ortalamasını alır ve belirlenen doğruluk eşiğine ulaşana kadar devam eder. ArduPilot tipik bir başlangıç noktası olarak 60 saniyede birkaç metrelik bir eşik verir; hassas işlerde eşiği daraltıp süreyi uzatırsınız.

Düzeltme araca üç yoldan ulaşabilir:

Yöntem

Nasıl çalışır

Ne zaman kullanılır

Yerel baz + yer istasyonu

Baz USB ile bağlı; Mission Planner/QGC düzeltmeyi MAVLink üzerinden aracın telemetrisine enjekte eder

Sahada internet yok, baseline mümkün olan en kısa. Yarışma sahası için varsayılan tercihimiz

NTRIP (internet servisi)

Yer istasyonu bir NTRIP sunucusuna bağlanır ve düzeltmeyi araca iletir

Sahada mobil internet var ve yakında bir referans istasyonu bulunuyor

Doğrudan telsiz linki

Baz, düzeltmeyi kendi telsiziyle araçtaki ikinci bir UART'a gönderir

Yer istasyonunu devreden çıkarmak istediğinizde

NTRIP'te mesafe önemli: ArduPilot belgeleri, düzeltme kaynağından uzaklaştıkça doğruluğun kabaca 10 km başına 1–1.5 cm bozulduğunu belirtiyor. Aynı ilişki alıcı veri sayfalarında da karşımıza çıkıyor; u-blox ZED-F9P için RTK doğruluğu 0.01 m + 1 ppm CEP ve yakınsama süresi 10 saniyenin altı olarak veriliyor (2026 itibarıyla veri sayfası değeri).

σ_RTK ≈ 10 mm + 1 ppm × baseline uzunluğu

  1. Örnek: baz 20 km uzakta. 1 ppm × 20 km = 20 mm, yani σ_RTK ≈ 10 mm + 20 mm = 30 mm (yaklaşık 3 cm)

  2. Örnek: baz sahada, 200 m uzakta. 1 ppm × 200 m = 0.2 mm, yani σ_RTK ≈ 10 mm

Pratikte iki çözüm tipiyle karşılaşırsınız. RTK Float: düzeltme geliyor ama taşıyıcı faz tamsayı belirsizliği henüz çözülmemiş, dolayısıyla doğruluk desimetre seviyesinde. RTK Fixed: belirsizlik çözülmüş, santimetre seviyesi. fix_type alanı bunu size doğrudan söyler; MAVLink GPS_RAW_INT mesajına bakmanız yeterli:

fix_type

Anlam

0

GPS yok

1

Fix yok

2

2D fix

3

3D fix

4

DGPS

5

RTK Float

6

RTK Fixed

Kritik bir manevradan önce fix tipini kodda kontrol edin; companion computer ve MAVLink yazımızdaki pymavlink kalıbını kullanabilirsiniz:

msg = master.recv_match(type='GPS_RAW_INT', blocking=True)
if msg.fix_type < 6:
    print(f"Not RTK Fixed (fix_type={msg.fix_type}) - precision drop aborted")
msg = master.recv_match(type='GPS_RAW_INT', blocking=True)
if msg.fix_type < 6:
    print(f"Not RTK Fixed (fix_type={msg.fix_type}) - precision drop aborted")

Çözüm

Tipik yatay doğruluk

Ne zaman yeterli

Standart GNSS

3–5 m

Waypoint uçuşu, geniş arama desenleri

SBAS ile

~1 m

Genel otonom görevler

RTK Float

desimetre seviyesi

Geçiş durumu; Fixed'i bekleyin

RTK Fixed

santimetre seviyesi

Hassas iniş, dar hedefe bırakma, haritalama

Sayılar ArduPilot RTK belgelerinden. Bizim görevimizde yaklaşık 20 m'den bırakıyoruz ve sapmanın büyük kısmı bırakma dinamiğinden geliyor; RTK burada konum belirsizliğini denklemden çıkarıyor ama rüzgârı ve serbest düşüş saçılmasını çıkarmıyor. RTK'yı "hata sıfırlanıyor" diye değil, "hata bütçesindeki bir kalem kapanıyor" diye düşünün.

EKF: tek bir sensöre güvenmemek

En iyi GPS bile 5–10 Hz'de veri üretir, tünel veya köprü altında kesilir ve ani sıçramalar yapabilir. Buna karşılık bir IMU (atalet ölçüm birimi) kilohertz mertebesinde veri verir ama entegrasyon hatası zamanla birikir. Barometre irtifayı hızlı ölçer, rüzgârdan ve kabin basıncından etkilenir. Pusula yön verir, akım taşıyan kablolamadan etkilenir.

EKF bunların hepsini birleştirir. ArduPilot'un kendi tarifiyle filtre; jiroskop, ivmeölçer, pusula, GPS, hava hızı ve barometrik basınç ölçümlerinden konumu, hızı ve açısal yönelimi kestirir. Kazanç sadece "ortalama almak" değildir: filtre her ölçüm için bir beklenti üretir, gerçekte gelen ölçümle arasındaki farkı (innovation) hesaplar ve çok fazla sapan ölçümü reddeder. Yani açıkça bozuk ölçümleri eleyebilir.

EKF3'te hangi büyüklüğü hangi sensörün besleyeceği açıkça parametrelendirilir:

Parametre

Değer

Anlam

AHRS_EKF_TYPE

3

EKF3 kullan

EK3_SRC1_POSXY

3

Yatay konum: GPS

EK3_SRC1_VELXY

3

Yatay hız: GPS

EK3_SRC1_POSZ

1

Dikey konum: barometre (varsayılan)

EK3_SRC1_VELZ

3

Dikey hız: GPS

EK3_SRC1_YAW

1

Yön: pusula

Üç ayrı kaynak seti (SRC1/SRC2/SRC3) tanımlanabilir ve aralarında bir RC yardımcı anahtarıyla ya da MAVLink komutuyla geçiş yapabilirsiniz; bu mekanizma GPS'in olduğu ve GPS'in olmadığı ortamlar arasında geçiş için tasarlanmıştır. Üstelik birden fazla IMU varsa EKF paralel "lane"lerde çalışır; her çekirdek farklı bir IMU'yu işler ve tutarlılık açısından en sağlıklı olan çıkışı sürer.



EKF sensör füzyonu ve failsafe zinciri

EKF sağlık uyarıları ve failsafe

EKF kendi güvenini, 0 (güvenilir) ile 1.0 (güvenilmez) arasında bir varyans değeri olarak raporlar. ArduPilot Copter'da pusula, konum ve hız varyanslarından herhangi ikisi FS_EKF_THRESH eşiğini 1 saniye boyunca aşarsa EKF failsafe devreye girer.

Parametre

Ne anlama gelir

Notlar

FS_EKF_THRESH

Failsafe eşiği

0.8–1.0 yönünde yükseltmek yanlış tetiklemeleri azaltır ama sapmanın büyümesine izin verir; 0.6 yönünde düşürmek daha erken tetikler. 0, failsafe'i devre dışı bırakır

FS_EKF_ACTION

Tetiklendiğinde ne olur

0 = yalnızca bildir, 1 = Land (varsayılan), 2 = AltHold, 3 = Stabilize'da bile Land

EK3_GLITCH_RAD

GPS ile filtrenin kestirimi arasındaki azami yarıçap

Aşılırsa konum/hız durumları GPS'e sıfırlanır. Büyütmek daha büyük glitch'leri yok sayar ama IMU ve pusula hatalarının daha da birikmesine izin verir

Tetiklendiğinde Mission Planner HUD'ında "EKF variance" yazısı belirir, kartın LED'i kırmızı-sarı veya mavi-sarı yanıp söner ve sesli uyarı alırsınız. Logda ERR mesajlarını filtreleyin: kod 16 EKF Check (Bad Variance), kod 17 EKF Failsafe demektir.

Güvenlik notu: Rahatsız edici bir alarmdan kurtulmak için FS_EKF_THRESH değerini körü körüne yükseltmek ya da 0 yapmak, konum kestirimi bozuk bir aracın otonom modda uçmaya devam etmesine izin vermek demektir; flyaway riski tam olarak budur. Önce nedeni bulun. Failsafe davranışını da önce SITL/Gazebo ortamında deneyin, sahada değil.

Sık yapılan hatalar

Pusulayı güç kablosunun yanına koymak. ESC'lere giden kablolar onlarca amper taşır ve bu akımla orantılı bir manyetik alan üretir. Gaz verdikçe yönünüz kayıyorsa suçlu budur. Çözüm: pusulayı GPS modülüyle birlikte direğin üstüne taşıyın, güç kablolarını burgulu çift olarak çekin ve pusuladan uzak tutun. Logda tlog'daki mag_field değerini gaz komutuna karşı çizdirin: ArduPilot belgeleri tipik aralık olarak 120–550 verir (çoğunlukla 330 civarı); %30'un altındaki dalgalanma kabul edilebilir, %60'ı aşan sıçramalar ise ciddi girişim demektir.

Metal tezgâhta kalibrasyon yapmak. Pusula kalibrasyonu sırasında yakınlarda bilgisayar, telefon, metal tezgâh veya güç kaynağı bulunmamalı; cebinizdeki elektronik dahil. Kalibrasyon bir türlü oturmuyorsa COMPASS_OFFS_MAX (varsayılan 850) 2000–3000'e yükseltilebilir ama bu genellikle asıl sorunu gizlemekten öteye gitmez.

Uçuştan önce HDOP'a hiç bakmamak. Arming kontrolünü geçmek konumun iyi olduğu anlamına gelmez. Kalkıştan önce uydu sayısının ve HDOP'un oturmasını bekleyin; değerler ilk 30-60 saniye boyunca iyileşmeye devam eder.

RTK Float'ı Fixed sanmak. Yer istasyonunda "RTK" görmek yeterli değil; fix_type değerinin 6 olması gerekir. Float üzerinden hassas bırakma planlamayın.

Titreşimi bir konum sorunu olarak görememek. Yüksek titreşim ivmeölçeri doyurur, EKF'in dikey hız ve konum kestirimleri bozulur ve GPS kusursuzken bile "EKF variance" alırsınız. Glitch avına çıkmadan önce logdaki VIBE değerlerine bakın.

Tek GPS'e mahkûm kalmak. İki alıcıyla GPS_AUTO_SWITCH=1 (hangisi daha iyi doğruluk bildiriyorsa onu seç) veya =2 (ikisini harmanla) kullanabilirsiniz. Pusula girişimi kronikse moving baseline kurulumuyla yönü GPS'ten türetebilirsiniz: iki anten arasında en az 30 cm, GPS_AUTO_CONFIG uygun şekilde ayarlı ve EK3_SRC1_YAW=2 (GPS) ya da 3 (pusula yedekli GPS).

Pratik özet

  1. Uçmadan önce üç sayıyı kontrol edin: uydu sayısı, HDOP (GPS_HDOP_GOOD varsayılanı 1.4) ve fix_type. Üçü de oturmadan otonom moda geçmeyin.

  2. Anteni yükseltin, pusulayı akımdan uzaklaştırın. Konum doğruluğundaki en ucuz kazanç montaj geometrisinden gelir; RTK'ya uzanmadan önce bunu yapın.

  3. RTK'yı hedefe göre seçin. Waypoint uçuşu standart GNSS ile gayet iyi gider; santimetre isteyen işlerde (hassas iniş, dar hedefe bırakma) RTK Fixed'i bekleyin ve baseline'ı kısa tutun.

  4. EKF kaynaklarını bilinçli ayarlayın. EK3_SRC1_* setini görev senaryonuza göre yapılandırın ve şunu doğrulayın: AHRS_EKF_TYPE=3.

  5. Failsafe'i kapatmayın; nedeni bulun. "EKF variance" uyarısı genellikle titreşimi, pusula girişimini veya multipath'i işaret eder. Eşiği yükseltmek semptomu susturur, riski büyütür.

©2026 ATILIM UAV TEAM

©2026 ATILIM UAV TEAM