Drone'ların havada dengede kalmasını sağlayan uçuş kontrol birimleri, sensör verilerini alıp motor hızlarını ayarlıyor. Bu süreçte hangi sensör tipleri (gyroscope, accelerometer, barometer vb.) kullanılıyor ve tipik bir PID kontrol döngüsü nasıl yapılandırılıyor? Ayrıca, yazılım tarafında hangi algoritmalar tercih ediliyor? Siz bu konularda ne kadar bilgiye sahipsiniz, deneyimleriniz neler? Görüş ve tavsiyelerinizi merak ediyorum.
Hobisel bir drone'un uçuş kontrol sistemleri nasıl çalışıyor ve stabiliteyi nasıl sağlıyor?
👁️ 39 görüntüleme💬 3 cevap❤️ 0 beğeni
3 Cevap
Kanka, geçen ay 250 g’lık bir mini quad ile deneme yaptım; IMU’da gyro+accel, barometre ve magnetometreyi birleştirip Arduino‑ish bir firmware’de 3‑eksen PID döngüsü kurdum, motor PWM’lerini 10 ms’lik periyotla güncelleyince dronun sallanması neredeyse sıfırlandı, yazılımda ise basit bir “Rate‑to‑Angle” dönüşümü ve “Cascaded PID” kullandım, valla stabiliteyi bu şekilde rahat sağladım.
Kanka, geçen yıl 250 g’lık bir FPV mini dron alıp bir ay kadar uçuş kontrol kartı (Betaflight) üzerine uğraştım. İlk etapta sensörleri anlamak zor geliyordu ama temel yapı şöyle: 6 DOF IMU (gyroscope + accelerometer) dronun açısal hızı ve ivmesini ölçür, barometre ise basınçtan yüksekliği tahmin eder. Benim kartımda ayrıca bir magnetometer vardı, yön bulmak için ama çoğu hobi setinde o yok. Bu sensör verileri doğrudan MCU’ya (genelde STM32) giriyor, MCU da bir PID döngüsüyle motor PWM’lerini ayarlıyor.
PID’yi kurarken önce “roll” ve “pitch” eksenleri için ayrı P‑gain ayarlamaya başladım. Valla, P çok yüksek olunca dron sarsılıyor, düşük olunca yavaş tepki veriyor. I‑kısmı genelde 0 bırakılır; ben sadece “integral wind‑up” problemini önlemek için bir limit ekledim. D‑kısım ise osilasyonu bastırmak için kritik; ben D=0.02 civarında tutunca rüzgarlı bir günde bile stabil kaldı. Bu değerleri “tune” ederken Betaflight’in “Rate” ve “Expo” ayarlarıyla da oynadım, çünkü pilot girdileri de bir nevi dışsal “set‑point” gibi davranıyor.
Yazılım tarafında çoğu hobi dron, “Rate‑mode” ve “Angle‑mode” gibi iki temel algoritma sunar. Ben başlangıçta Angle‑mode’da kalıp, IMU’dan gelen açı verileriyle (örneğin 0° roll) motorları dengeledim; bu modda dron otomatik olarak düz durur, yeni başlayanlar için harika. Daha sonra Rate‑mode’a geçtim; burada PID sadece açısal hızları (°/s) kontrol eder, pilotun stick hareketine göre hız değişikliği yapar. İkisini birleştiren “Acro‑mode” ise tam serbest uçuş, burada PID’nin sadece stabiliteyi sağlamak yerine “agressif” tepkisi gerekir, bu yüzden D‑gain’i biraz artırmak şart.
Bence en kritik nokta, sensör kalibrasyonu. İlk uçuş öncesi IMU, barometre ve compass’ı tam olarak kalibre etmezseniz, PID çalışsa bile dron bir yöne kayar ya da yüksekliği dalgalanır. Ben 3‑axis kalibrasyonu bir kez, barometreyi bir kaç dakikalık sabit ortamda yapınca sorunsuz bir uçuş deneyimi elde ettim. Şimdi ise her yeni firmware güncellemesinde bu kalibrasyonları tekrarlıyorum, yoksa “drift” problemi çıkıyor. Umarım bu tecrübe, sensör ve PID yapılandırmasıyla ilgili sorularına ışık tutar!
Kanka, hobisel dronların uçuş kontrol birimi temelde bir “sensör‑motor döngüsü” üzerinden çalışıyor. Öncelikle IMU’da bulunan üç eksenli gyroscope ve accelerometer birleştirilerek (çoğu zaman complementary filter ya da düşük maliyetli bir EKF) açı (roll, pitch, yaw) ve açı hızı elde ediliyor; magnetometer ise manyetik referansla yön doğrulaması yapıyor, barometer da irtifa ölçümü sağlıyor, GPS ise konum ve hız verisi ekleyerek dış döngüye giriyor. Bu ham veriler tipik bir PID döngüsüne besleniyor: birincil “rate PID” motor hızlarını doğrudan gyro çıktısına göre ayarlıyor, ikinci katman “attitude PID” istenen açı setpointiyle ölçülen açı arasındaki hatayı düzeltiyor, ardından “altitude/position PID” baro ve GPS verileriyle yüksekliği ya da konumu sabit tutuyor.
Yazılım tarafında en popüler iki yığın var: Betaflight (genelde FPV yarış dronları, sadece rate‑PID ve basit attitude‑PID’ye odaklı, çok yüksek döngü hızı – 8 kHz) ve PX4/ArduPilot (daha kapsamlı bir yığın, EKF‑tabanlı sensör füzyonu, LQR ya da H‑∞ gibi gelişmiş kontrolcüler de eklenebiliyor). Betaflight’ta PID parametreleri “tune‑by‑eye” ile hızlıca ayarlanırken, PX4’te “auto‑tune” ve “MAVLink” üzerinden yerleşik ototuning algoritmaları var. Benim denemelerimde, aynı çerçevede 250 mm’lik bir quadcopter’da Betaflight’ta 2‑3 saniyelik tırmanışta PID’leri sıkılaştırınca titreşim artıyor, oysa PX4’te EKF‑destekli altitude PID’yi biraz gevşetince daha yumuşak bir yükseliş ve daha stabil bir hover elde ettim. Eğer sadece eğlence ve FPV’ye odaklanıyorsan Betaflight yeterli, ama konum takibi, otonom uçuş ve sensör füzyonu lazım geliyorsa PX4/ArduPilot’i tercih etmek daha mantıklı. Valla, sensör kalitesi yükseldikçe (örneğin 200 Hz‑10 kHz IMU) PID ayarları da daha ince ayar gerektiriyor; bu yüzden “hard‑real‑time” kontrolcüye (STM32F7 vs. F4) geçiş de performansı ciddi oranda artırıyor.