ŞEK. 01
KAYIT KÜNYESİ
Kategori
Aviyonik
TARİH
Sahadaki ilk günümüzü hâlâ hatırlıyoruz. Uçak tezgâhın üzerinde duruyor, pervaneler sökülü; kumandadan arm komutu veriyoruz ve hiçbir şey olmuyor. Motorlar sessiz, LED turuncu yanıp sönüyor, kumandada hiçbir geri bildirim yok. Elimizdeki tek bilgi: "çalışmıyor."
Dizüstü bilgisayarı açtık, telemetri modülünü USB'ye taktık ve ekranın alt köşesinde tek bir satır belirdi: PreArm: Compass not calibrated. Beş saniyelik bir düzeltme. Ama bizi o beş saniyeye getiren şey uçak değil, yerdeki yazılımdı.
Yer kontrol istasyonu (GCS), aracı planlamak, izlemek ve yapılandırmak için yerde çalıştırdığımız yazılımdır. Uçuş kontrolcüsünün (FC) beynine açılan penceredir. Bu yazıda bir GCS'in gerçekte ne yaptığını, Mission Planner ile QGroundControl arasındaki farkları, MAVLink'in bu ilişkideki rolünü ve log analizinin neden pazarlığa kapalı olduğunu ele alıyoruz.
Bir GCS gerçekte ne yapar?
GCS'i "haritaya waypoint bırakmaya yarayan araç" saymak yaygın bir hata. Görev planlama, listedeki maddelerden yalnızca biri:
İşlev | Ne anlama gelir | Ne zaman kullanılır |
|---|---|---|
Görev planlama | Waypoint, geofence ve rally point tanımlayıp bunları araca yüklemek | Uçuştan önce |
Parametre yapılandırma | FC üzerindeki yüzlerce parametreyi okumak ve yazmak | Kurulum, tuning |
Kalibrasyon | Pusula, ivmeölçer, RC, ESC, batarya | İlk kurulumda ve her saha değişiminde |
Firmware yükleme | ArduPilot/PX4'ü bootloader üzerinden FC'ye yazmak | Kart ilk kez çalıştırıldığında ve sürüm yükseltmelerinde |
Telemetri izleme | HUD, konum, batarya, GPS, uyarı mesajları | Uçuş sırasında |
Log indirme ve analiz | Uçuş sonrası veriyi çekip grafiğe dökmek | Her uçuştan sonra |
SITL/HIL bağlantısı | Simüle edilmiş bir araca gerçekmiş gibi bağlanmak | Geliştirme |
ArduPilot belgeleri Mission Planner'ın işlevlerini şu başlıklar altında sıralıyor: firmware yükleme, kurulum ve tuning, otonom görev planlama, log indirme ve analiz, bir PC uçuş simülatörüyle hardware-in-the-loop (HIL) simülasyon. QGroundControl ise benzer biçimde beş alana ayrılıyor: Plan, Setup, Fly, Analyze ve gelişmiş araçlar.
SUAS 2026 iş akışımızda GCS, simülasyon ile saha arasında paylaşılan tek arayüz. Simüle araca SITL + Gazebo kurulumumuzda bağlandığımız yazılım, sahada gerçek Pixhawk'a bağlandığımız yazılımla aynı. Bu da "simülasyonda çalışıyordu" ile "sahada çalışmadı" arasındaki mesafeyi epeyce kapatıyor.
MAVLink: GCS ile FC'nin ortak dili
GCS ile uçuş kontrolcüsü birbiriyle MAVLink (Micro Air Vehicle Link) üzerinden konuşur. Resmî tanımıyla MAVLink, dronelarla ve drone bileşenleri arasında haberleşmek için tasarlanmış "çok hafif" bir mesajlaşma protokolüdür. Dar bant genişlikli, gürültülü kanallar için optimize edilmiştir.
Hafif olmak neden önemli? Çünkü çerçeveleme (framing) yükü doğrudan telemetri bütçenizden yiyor. Resmî belgelere göre MAVLink 1 paket başına 8 bayt, MAVLink 2 ise 12 bayt ek yük getiriyor (aradaki fark buna değer: MAVLink 2 daha güvenli ve daha genişletilebilir).
Telemetri linkinizin kaç mesaj taşıyabileceğini kabaca şöyle hesaplarsınız:
Seri porttan geçen efektif bayt hızı (8N1 çerçeveleme: bayt başına 10 bit):
byte_rate = baud / 10Tek bir MAVLink 2 mesajının toplam boyutu:
message_size = payload_bytes + 12Teorik üst sınır:
message_rate = byte_rate / message_size
Örnek: klasik 57600 baud'luk bir telemetri modülü ve ATTITUDE mesajı (28 baytlık payload) ile:
byte_rate= 57600 / 10 = 5760 bayt/s
message_size= 28 + 12 = 40 bayt
message_rate= 5760 / 40 = 144 mesaj/s (teorik tavan)
Bu bir tavan, bir vaat değil. Gerçekte tek bir akış değil, aynı anda onlarcasını gönderiyorsunuz (ATTITUDE, GLOBAL_POSITION_INT, SYS_STATUS, RC_CHANNELS...). Üstelik SiK sınıfı modüllerde hava veri hızı, seri port baud'undan bağımsız bir parametredir ve hata düzeltmenin kendi ek yükü vardır; gerçek verim için modülünüzün datasheet'ine bakın. Pratikte bütçeyi ArduPilot'ta elle yönetiyoruz: her akışın Hz cinsinden hızını SRn_* parametreleriyle kısıyoruz.
Linkin kendisi de parametrelerle tanımlanır:
Parametre | Ne anlama gelir |
|---|---|
| MAVLink1 |
| MAVLink2 (bunu tercih edin) |
| Port hızı; telemetri modüllerinde tipik olarak 57600 |
Aynı protokol companion computer tarafında da geçerli: Jetson'dan FC'ye giden hat da MAVLink konuşuyor. Bunu companion computer ve MAVLink rehberimizde ayrıntılı olarak yazmıştık.
Mission Planner vs. QGroundControl
İkisi de açık kaynak (GPLv3) ve ikisi de ArduPilot ile çalışıyor. Fark felsefi.
Mission Planner | QGroundControl | |
|---|---|---|
Platform | Windows (ArduPilot'un GCS karşılaştırma sayfası, Mono altında macOS'ta da çalıştırılabildiğini belirtiyor) | Windows 10 (1809+)/11, macOS 13+, Ubuntu 22.04/24.04, Android 9+ (2026 itibarıyla) |
Otopilot | ArduPilot odaklı | PX4 ve ArduPilot |
Arayüz | Yoğun ve sekmeli; her şey aynı anda görünür | Sade; sizi adım adım yönlendirir |
Parametre erişimi | Full Parameter List / Tree üzerinden ham erişim | Parametre arama ve düzenleme; daha filtrelenmiş bir sunum |
Log analizi | Dataflash indirme ve yerleşik grafik/analiz araçları | Analyze görünümü: Log Viewer (.bin ve .tlog), Download Logs, MAVLink Inspector |
Tablet / saha kullanımı | Zayıf | Android desteği |
Öğrenme eğrisi | Dik | Yumuşak |
Ne zaman Mission Planner? ArduPilot kullanıyorsanız, parametrelerin derinine ineceksiniz, bir tuning döngüsündeyseniz ve tezgâhta bir Windows makineniz varsa. SUAS 2026 için birincil istasyonumuz Mission Planner; sebebi ham parametre erişimi ve ArduPilot belgelerinin büyük bölümünün doğrudan Mission Planner ekranları üzerinden yazılmış olması.
Ne zaman QGroundControl? Takımda macOS veya Linux kullanan varsa, PX4 ile de çalışıyorsanız, sahada tabletten operasyon yapacaksanız ya da ilk kurulumu takıma yeni katılmış birine devrediyorsanız. Arayüzü çok daha az korkutucu.
İkisini birlikte kullanmakta da sakınca yok; parametreler GCS'te değil FC'de duruyor. Bir programda değiştirdiğiniz ayar diğerinde de görünür.
Log analizi: tlog vs. dataflash
Bir GCS'in en az kullanılan ve en değerli tarafı burası. İki tür log var ve ikisi aynı şey değil:
Telemetri logu (.tlog) | Dataflash logu (.bin) | |
|---|---|---|
Nerede oluşur | Yerde; GCS kaydeder | Havada, FC'nin SD kartında |
İçerik | Linkten geçen MAVLink mesajları | FC'nin iç durumu; çok daha ayrıntılı |
Hız | Telemetri bant genişliğiyle sınırlı | Aracın kendi döngü hızına yakın |
Link koparsa | Kaybolur | Etkilenmez |
Ne işe yarar | "Operatör ne gördü, ne komut verdi" | "Araç gerçekte ne yaptı" |
Kaza sonrası kök neden analizi neredeyse her zaman dataflash logundan çıkar. Tlog ise hikâyenin operatör tarafını anlatır: hangi komut hangi anda gitti, link ne zaman koptu.
Loglamayı yöneten ArduPilot parametreleri:
Parametre | Neyi kontrol eder |
|---|---|
| 0=kapalı, 1=SD kart, 2=MAVLink akışı, 4=kart üstü dataflash |
| Hangi kalemlerin loglanacağı |
| Arm'ı beklemeden, güç verildiği andan itibaren logla |
| Disarm sonrası yeni bir log dosyası başlat |
LOG_DISARMED, arm olamayan bir aracı teşhis ederken hayat kurtarır; çünkü varsayılan davranış logu ilk arm'da başlatır ve hiç arm olmayan bir uçuş geriye hiçbir kayıt bırakmaz. Not: bu parametreye 3 vermek, aracın hiç arm durumuna geçmediği logları da siler; ne yaptığınızı bilerek kullanın.
Kuralımız basit: her uçuştan sonra dataflash logunu indirin, uçuş iyi geçmiş olsa bile. SD kartlar dolar, log numaraları çakışır ve iki hafta sonra "o uçuşta bir tuhaflık vardı" dediğinizde veri çoktan gitmiş olur.
Alternatifler
APM Planner 2.0: Windows, macOS ve Linux'ta çalışan, GPLv3 lisanslı, daha hafif bir masaüstü seçenek. Mission Planner kadar derine inmiyor ama Linux'ta yerel olarak çalışması bir avantaj.
MAVProxy: komut satırı tabanlı bir GCS. Linux'ta çalışıyor ve Python ile genişletilebiliyor; ArduPilot belgeleri onu özellikle "kod yazan geliştiriciler" için öneriyor. Asıl gücü MAVLink trafiğini çoğaltabilmesi: tek bir seri porta gelen akışı birden fazla istemciye dağıtıyor.
Bu --out kalıbı bizim için kritik: aynı MAVLink akışını hem Mission Planner'a hem de kendi Python betiğimize aynı anda böyle veriyoruz. Jetson kurulum rehberimizde anlattığımız companion computer'da da işleri böyle yürütüyoruz.
Sık yapılan hatalar
Yedeklemeden parametrelerle oynamak. Herhangi bir şeyi değiştirmeden önce parametreleri bir dosyaya kaydedin. Tuning sırasında hangi değeri değiştirdiğinizi unutmak, her şeye sıfırdan başlamak demek.
Aynı seri porta iki cihaz asmak. Telemetri modülü ile companion computer aynı
SERIALn'i paylaşamaz. Ayrı port, ayrıSERIALn_PROTOCOL, ayrı baud.Baud uyuşmazlığını "bozuk kablo" sanmak. GCS bağlanmıyorsa önce baud hızını kontrol edin; modül çiftinin iki ucu da birbiriyle aynı olmalı.
Telemetri akış hızlarını sonuna kadar açmak.
SRn_*değerlerini yükseltmek HUD'u akıcı gösterir ama linki doyurur ve kritik anda komutunuz sırada beklemeye başlar.Pusulayı kapalı mekânda kalibre etmek. Metal tezgâh, güç kaynağı ve dizüstü bilgisayar manyetik alanı bozar ve sonucu mahveder. Bunu dışarıda, aracı ellerinizde döndürerek yapın.
Kalibrasyon ve motor testlerini pervaneler takılıyken yapmak. ESC kalibrasyonu ve GCS motor testi motorları gerçekten döndürür. Pervaneleri sökün. Dönen bir pervane parmak koparır; bu abartı değil, sahada oluyor. Aynı doğrultuda, LiPo bağlıyken FC'nin USB'sine takarken güç sıralamasına dikkat edin.
Sahada firmware güncellemek. Yeni bir sürüm bazı parametreleri sıfırlayabilir ya da yeniden adlandırabilir. Güncellemeler tezgâhta yapılır, ardından tam bir yer testi gelir.
Pratik özet
Tek bir GCS seçin ve tüm takımı onda akıcı hale getirin. ArduPilot kullanıyor ve derin parametre erişimi istiyorsanız Mission Planner; çapraz platform veya tablet desteği gerekiyorsa QGroundControl.
Şunu kullanın:
SERIALn_PROTOCOL = 2(MAVLink 2); telemetri bütçenizi deSRn_*akış hızlarıyla bilinçli biçimde yönetin.Her uçuştan sonra dataflash logunu indirin: tlog size operatörü, .bin ise aracı anlatır; kök neden neredeyse her zaman .bin'dedir.
Parametrelerinizi yedekleyin ve her yapılandırma değişikliğini tarihiyle birlikte kaydedin.
Her motor/ESC testinde pervaneleri sökün. GCS'ten verilen bir komut gerçek bir motoru döndürür.
