
ŞEK. 01
KAYIT KÜNYESİ
Kategori
Aviyonik
TARİH
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
Örnek: baz 20 km uzakta. 1 ppm × 20 km = 20 mm, yani σ_RTK ≈ 10 mm + 20 mm = 30 mm (yaklaşık 3 cm)
Ö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:
| 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:
Çö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 |
|---|---|---|
| 3 | EKF3 kullan |
| 3 | Yatay konum: GPS |
| 3 | Yatay hız: GPS |
| 1 | Dikey konum: barometre (varsayılan) |
| 3 | Dikey hız: GPS |
| 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 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 |
|---|---|---|
| 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 |
| Tetiklendiğinde ne olur | 0 = yalnızca bildir, 1 = Land (varsayılan), 2 = AltHold, 3 = Stabilize'da bile Land |
| 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
Uçmadan önce üç sayıyı kontrol edin: uydu sayısı, HDOP (
GPS_HDOP_GOODvarsayılanı 1.4) vefix_type. Üçü de oturmadan otonom moda geçmeyin.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.
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.
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.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.
