İHA ve Aviyonik··8 dk okuma
Uçuş Kontrolcüsü Seçimi: Pixhawk Ailesi, ArduPilot vs PX4
Kart listesinde kaybolmadan uçuş kontrolcüsü seçmek: Pixhawk standardı ne vaat ediyor, ArduPilot ile PX4 arasındaki fark gerçekte nerede başlıyor?
SUAS 2026 aracını kurarken verdiğimiz ilk kalıcı karar uçuş kontrolcüsüydü. Karar verilecek şey basit görünüyor: bir kart seç, firmware yükle, uç. Sonra ArduPilot’un desteklediği kart listesini açıyorsunuz, onlarca isim çıkıyor, hepsi “Pixhawk uyumlu” diyor, fiyatlar birkaç katı fark ediyor ve forumda birileri “PX4’e geçin” diye yazıyor. Nereden tutacağınız belli değil.
Bu yazıda o karmaşayı ikiye ayırıyoruz: donanım seçimi (hangi kart) ve flight stack seçimi (ArduPilot mı PX4 mü). Bunlar birbirine bağlı sanılıyor ama Pixhawk standardına uyan kartların çoğunda iki firmware de çalışıyor — yani ikisini ayrı ayrı, farklı kriterlerle karar verebilirsiniz.
Aşağıdaki her sayıyı ArduPilot ve PX4 resmî dokümantasyonundan doğruladık. Doğrulayamadığımız yerlerde “üreticinin veri sayfasına bakın” yazdık; kaynak listesi yazının sonunda.
Uçuş kontrolcüsü aslında ne yapıyor?
Uçuş kontrolcüsünün (FC — flight controller) dört işi var ve bu dört iş donanım kriterlerini doğrudan belirliyor.
Sensör füzyonu. IMU (inertial measurement unit — ivmeölçer + jiroskop), barometre, pusula ve GPS’ten gelen ham veriyi EKF (Extended Kalman Filter — genişletilmiş Kalman filtresi) tek bir durum tahminine indirger: konum, hız, yönelim. Sensörler birbiriyle çelişince EKF hangisine ne kadar güveneceğine karar verir. Yedekli sensör bu yüzden önemli.
Stabilizasyon. Yönelim hatasını motor komutuna çeviren iç döngü. Kart üzerindeki gürültü doğrudan bu döngüye girer — titreşim bölümünün sebebi bu.
Navigasyon. Waypoint’ler arası rota, hız profili, iniş/kalkış mantığı.
Failsafe. Bir şey bozulduğunda ne yapılacağı. ArduCopter’ın failsafe kapsamı şunları içeriyor:
| Failsafe | Ne zaman tetiklenir |
|---|---|
| Radio | Kumanda sinyali kesilir |
| Battery | Batarya gerilimi/kapasitesi eşiğin altına düşer |
| GCS | Yer istasyonu bağlantısı kopar |
| EKF | Durum tahmini güvenilmez hale gelir |
| Vibration | Titreşim tolere edilemez seviyeye çıkar |
| Dead Reckoning | Konum referansı olmadan tahmin sürüyor |
| Terrain Data | Arazi takibinde veri kaybolur |
| Crash Check / Parachute | Çarpma algılanır / paraşüt tetiklenir |
Not: Radio, Battery, GCS veya Terrain failsafe bir mod değişikliğine yol açtıysa araç, pilot manuel olarak mod değiştirene kadar o modda kalır.
Pixhawk bir ürün değil, açık bir standart
“Pixhawk” tek bir kart değil; Dronecode Foundation altında yayımlanan açık donanım standartları ailesi. Standart, FMU (flight management unit) sürümü, konnektör pinout’u ve son nesilde Pixhawk Autopilot Bus (PAB) ile taban kartı–FMU ayrımını tanımlıyor. Pratikteki karşılığı: farklı üreticilerin kartları aynı kabloyla, aynı firmware’le çalışıyor.
| FMU sürümü | Örnek kartlar | Konum |
|---|---|---|
| FMUv3 | Hex Cube Black, mRo Pixhawk | Eski nesil, hâlâ sahada |
| FMUv4 | mRo Pixracer | Küçük/hafif |
| FMUv5 | Holybro Pixhawk 4 | Yaygın orta segment |
| FMUv5X | Holybro Pixhawk 5X | Modüler tasarıma geçiş |
| FMUv6C | Holybro Pixhawk 6C / 6C Mini, Pix32 v6 | Maliyet odaklı |
| FMUv6X | Holybro Pixhawk 6X, CUAV Pixhawk V6X, RaccoonLab FMUv6X | Yedeklilik odaklı üst segment |
| FMUv6X-RT | NXP MR-VMU-RT1176, Pixhawk 6X-RT | i.MX RT tabanlı varyant |
Aradaki farkı somutlaştıralım. Pixhawk 6C: STM32H743 (Cortex-M7, 480 MHz, 2 MB flash, 1 MB RAM), iki IMU (ICM-42688-P + BMI055), tek barometre (MS5611), 16 PWM çıkışı, 84,8 × 44 × 12,4 mm, 59,3 g. Pixhawk 6X: STM32H753, üç IMU (Rev 8’de 3× ICM-45686), çift barometre (ICP20100 + BMP388), ayrı titreşim izolasyon sistemi, ısıtıcı dirençlerle sıcaklık kontrollü IMU kartı, 16 PWM, 8 seri port, 2 CAN. Fiyat farkının karşılığı esas olarak yedeklilik ve sensör kararlılığı.
Donanım seçim kriterleri
ArduPilot’un kendi seçim rehberi şu başlıkları sayıyor: sensör yedekliliği, servo/motor çıkış sayısı, UART sayısı, harici veri yolları (I2C, CAN), analog G/Ç, entegre özellikler, titreşim izolasyonu ve IMU ısıtıcı, fiziksel boyut, maliyet. Bunların üçü otonom görevde ayırt edici:
1. Flash boyutu. ArduPilot firmware’i bazı konfigürasyonlarda 1 MB’ı aşıyor; 1 MB flash’lı kartlar için özellikleri kırpılmış bir build üretiliyor. Hangi özelliklerin çıkarıldığı karta göre değişiyor ve kesin liste, firmware klasöründeki features.txt dosyasında. F4 tabanlı kartlar Lua script çalıştıramıyor. Otonom görev planlıyorsanız 2 MB flash’lı H7 sınıfı bir kartla başlayın; sonradan “bu özellik neden yok” diye uğraşmayın.
2. UART bütçesi. En sık yapılan planlama hatası burada. Basit bir sayım yapın:
Gerekli UART = telemetri + GPS + companion + gimbal/kamera + ESC-telemetri + 1 yedek
Bizim araç:
telemetri radyosu ............ 1
GPS/pusula ................... 1
Jetson Orin NX (MAVLink) ..... 1
SIYI A8 mini kontrol ......... 1
yedek ........................ 1
--------------------------------
toplam ....................... 5
Bu sayı kartın seri port sayısını aşıyorsa ya kart değiştirirsiniz ya da CAN’a taşırsınız — ikisini de kablolamayı yapmadan önce bilmek daha ucuz.
3. Titreşim izolasyonu ve SD log. Dahili izolasyon ve IMU ısıtıcı, tuning süresini kısaltan özellikler. SD kart ise pazarlık konusu değil: log yoksa hata ayıklama yoktur, üstelik Lua script’leri de SD karttan yükleniyor.
ArduPilot mı, PX4 mü?
| Kriter | ArduPilot | PX4 |
|---|---|---|
| Lisans | GPLv3 — dağıttığınız değişiklikler için kaynak kodu sunma ve atıf yükümlülüğü | BSD 3-clause — kapalı kaynak türev ürüne izin verir |
| Araç tipi | Copter, Plane, Rover, Sub, Blimp, Antenna Tracker | Copter, Plane, VTOL, Rover, Airship, Autogyro, Spacecraft, UUV |
| Mimari | HAL üzerinde kooperatif zamanlayıcı, zamanlanmış görevler | uORB publish/subscribe veri yolu üzerinde modüler yapı |
| Script | Yerleşik Lua scripting | Yerleşik Lua eşdeğeri yok; modül yazımı C++ tarafında |
| Yaygın GCS | Mission Planner (Windows), QGroundControl | QGroundControl (Windows/macOS/Linux/iOS/Android) |
| Parametre derinliği | Çok geniş; ayar yüzeyi büyük | Daha dar ve görece daha kararlı varsayılanlar |
ArduPilot’u seçin eğer: parametre üzerinden derin ayar yapacaksanız, Lua ile araç üstünde mantık koşturacaksanız, Mission Planner’ın log analizi ve tuning araçlarını kullanacaksanız, GPLv3 yükümlülüğü sizin için sorun değilse (yarışma takımı için genelde değil).
PX4’ü seçin eğer: firmware’i kapalı kaynak bir ürüne gömüp ticarileştirecekseniz, uORB tabanlı modüler mimaride C++ modülü yazacaksanız, ROS 2 ile uXRCE-DDS köprüsü üzerinden sıkı entegre çalışacaksanız veya kurum içi standardınız QGroundControl ise.
Biz ArduPilot’ta karar kıldık: Lua scripting, Mission Planner’ın log/tuning araçları ve airdrop için ihtiyacımız olan servo mantığı bu tarafta daha az kod yazdırdı. Bu bir üstünlük iddiası değil, bizim iş yüküne göre bir tercih.
Otonom görev için gerçekten fark yaratan üç özellik
GUIDED modu. Companion computer’ın araca komut verdiği mod. Konum hedefi, hız ve ivme komutları, SET_ATTITUDE_TARGET ile yönelim hedefi kabul ediyor; DO_CHANGE_SPEED ile uçuş sırasında hız değiştirilebiliyor. GUIDED_NoGPS varyantı yalnızca yönelim hedefi alıyor. Bizim tespit→hizalanma→bırakma zincirimiz bu modun üstünde çalışıyor; detayı companion computer ve MAVLink rehberimizde.
Lua scripting. SCR_ENABLE = 1 ile açılıyor, script’ler SD kartta APM/scripts klasörüne konuyor. Donanım gereksinimi: en az 2 MB flash, en az 80 KB RAM ve SD kart. SCR_HEAP_SIZE varsayılanı işlemciye göre 43 KB–204,8 KB arasında değişiyor; birçok hazır applet 300 KB’ın üzerini istiyor, yani heap’i elle büyütmeniz gerekebilir.
Companion bağlantısı. Jetson Orin NX’i takarken üç parametre yeter:
SERIAL2_PROTOCOL = 2 # MAVLink2
SERIAL2_BAUD = 921 # 921600 baud
SCR_ENABLE = 1 # Lua (kullanacaksanız)
SCR_HEAP_SIZE = 307200 # applet'ler için 300 KB üzeri
Bunları uçmadan önce SITL’de doğrulayın — kurulumu SITL + Gazebo yazımızda anlattık. Jetson tarafı için kurulum rehberi ayrı yazıda.
Titreşim: kart seçiminin ölçülebilir sonucu
Kart seçiminin uçuş kalitesine etkisini görebileceğiniz tek nesnel yer log’daki VIBE değerleri.
| VIBE X/Y/Z | Yorum |
|---|---|
| < 30 m/s² | Normalde kabul edilebilir |
| 30–60 m/s² | Sorun çıkarabilir |
| > 60 m/s² | Konum/irtifa tutmada neredeyse her zaman sorun |
CLIP0/1/2 sayaçları ivmeölçerin 16 G sınırına dayandığı anları sayar. İdeali sıfır; sert inişlerde oluşan 100’ün altındaki değerler genelde tolere edilebilir. Log boyunca düzenli artan bir sayaç ciddi titreşim problemidir.
Titreşimi filtreyle bastırmanın yolu harmonik notch filtresi. Throttle tabanlı kurulum:
f_hover [Hz] = motor_devri_hover [RPM] / 60
INS_HNTCH_MODE = 1 # throttle tabanlı
INS_HNTCH_ENABLE = 1
INS_HNTCH_FREQ = f_hover
INS_HNTCH_BW = f_hover / 2
INS_HNTCH_REF = hover_thrust # hover'daki throttle oranı
# Dinamik uçuşta gürültü hover frekansının altına iniyorsa:
INS_HNTCH_REF = hover_thrust * (min_freq / f_hover)^2
Örnek hesap. Hover’da motor devri 4200 RPM, hover throttle 0,35 ölçüldü:
f_hover = 4200 / 60 = 70 Hz
INS_HNTCH_FREQ = 70
INS_HNTCH_BW = 70 / 2 = 35 Hz
INS_HNTCH_REF = 0.35
Post-filter FFT'de en düşük motor gürültüsü 55 Hz çıktıysa:
INS_HNTCH_REF = 0.35 * (55/70)^2 = 0.35 * 0.617 = 0.216
f_hover değerini tahminle değil, ham IMU log’undan (FFT ile) okuyun.

Sık düşülen tuzaklar
Ucuz klon kartlar. ArduPilot dokümantasyonu klonlar için nötr bir ifade kullanıyor: birçoğu yeterli olabilir, ancak firmware’in bir kart için sağlanıyor olması onay anlamına gelmiyor. Riskin toplandığı yer sensörler ve güç devresi: sahte/düşük binning IMU, zayıf regülatör, kalitesiz konnektör. Bunlar bench’te değil, havada belli oluyor. Yarışma aracında ekonomi yapılacak yer FC değil.
Titreşimi tuning’le çözmeye çalışmak. Notch filtresi mekanik problemi maskeler, çözmez. Önce pervane balansı, motor yatağı, gövde rezonansı ve FC montajı. Sonra filtre.
Pusula kalibrasyonu. Metal masa, telefon, laptop, güç kaynağı yakınında kalibrasyon yapmayın. Kalibrasyon tekrar tekrar başarısız oluyorsa COMPASS_OFFS_MAX değerini 850’den 2000–3000’e çıkarmayı ve Mission Planner’daki “Fitness” ayarını gevşetmeyi deneyin; harici pusulaya güveniyorsanız tutarsız dahili pusulaları devre dışı bırakabilirsiniz. Kalibrasyon sonrası kartı yeniden başlatın.
1 MB flash sürprizi. Kartı aldıktan sonra “terrain following yok” demek geç. Satın almadan önce o kartın features.txt dosyasına bakın veya Custom Firmware Build Server’dan istediğiniz özellik setiyle build alınabildiğini doğrulayın.
Güvenlik. Motor/ESC testlerini pervaneleri sökerek yapın — mod testi, failsafe testi, yön kontrolü dahil. LiPo bağlıyken kart üstünde kablo değiştirmeyin; bataryayı her zaman önce sökün. Güç modülünün akım/gerilim sınırlarını üreticinin veri sayfasından doğrulayın, batarya failsafe’ini ayarlamadan otonom uçmayın. Yüksek akım hattında gevşek bir konnektör hem yangın hem de uçuşta güç kesintisi riskidir.
Pratik özet
- Donanımı ve firmware’i ayrı ayrı seçin. Pixhawk standardına uyan kartların çoğunda iki flight stack de çalışır; kararı geri almak firmware tarafında ucuz, donanım tarafında pahalıdır.
- 2 MB flash’lı H7 sınıfı bir kartla başlayın. Lua, terrain, tam özellik seti bunu gerektiriyor; F4 kartlar Lua çalıştıramıyor.
- UART bütçesini kablolamadan önce yazın. Telemetri + GPS + companion + gimbal + 1 yedek — çıkan sayı kartın portlarını aşıyorsa kartı değil planı değiştirmek geç kalır.
- Lisansa göre karar verin, “hangisi daha iyi” tartışmasına göre değil. Kapalı kaynak ürün hedefiniz varsa PX4 (BSD), açık kaynak yarışma aracıysanız ArduPilot’un GPLv3’ü sorun değil.
- İlk uçuştan sonra ilk baktığınız şey VIBE ve CLIP olsun. 30 m/s² altı hedefleyin, CLIP sayacı büyüyorsa tuning’e geçmeden mekaniği düzeltin.
- pixhawk
- ardupilot
- px4
- ucus-kontrolcusu
- otonom-ucus