Okullar için Robotik ve Mühendislik · anaokulundan liseye

4. ünite / 10

Uçuş kontrolcüsü, sensörler ve sensör füzyonu

ParçaSimülasyonYazılım

Bu ünitenin sonunda

  • F4, F7 ve H7 uçuş kontrolcülerini görev ihtiyacına göre seçmek
  • Jiroskop sapmasının ve ivmeölçer gürültüsünün açı kestirimini nasıl bozduğunu göstermek
  • Tamamlayıcı süzgeci yazmak ve τ'yu seçmek
  • EKF'nin hangi sensörleri neden birleştirdiğini açıklamak

Ders notları

Uçuş kontrolcüsü bir STM32 mikrodenetleyici, bir IMU, bir barometre ve çoğu zaman SD kart taşır. Betaflight F4'te rahat çalışır; PX4 ve ArduPilot'un EKF'si ve çok sensörlü sistemler için H7 (480 MHz, çift duyarlıklı FPU) önerilir.

Hiçbir sensör tek başına yetmez

  • Jiroskop: açısal hız, kısa vadede temiz. Ama küçük bir sapma (bias) entegre edilince büyür: 2 °/s sapma 20 saniyede 40° hata.
  • İvmeölçer: yerçekimi yönünden eğim verir, uzun vadede doğru. Ama motor titreşimi ve manevra ivmesi onu bozar.
  • Barometre: bağıl irtifa, pervane rüzgârına duyarlı. Pusula: mutlak yön, güç kablolarına duyarlı.

Tamamlayıcı süzgeç

θ ← α (θ + ω dt) + (1 − α) θivme,   α = τ / (τ + dt)

Jiroskop yüksek, ivmeölçer alçak frekansta kullanılır; τ ikisinin el değiştirdiği zaman ölçeğidir. Sabit bir jiroskop sapması b kalıcı hata olarak b · τ bırakır: τ küçülürse sapma hatası azalır ama ivmeölçer gürültüsü içeri sızar. PX4 bunun yerine durumu (yönelim, hız, konum, sensör sapmaları) birlikte kestiren bir genişletilmiş Kalman süzgeci (EKF2) kullanır; mantık aynıdır: her sensöre gürültüsü oranında güven.

Not: askıdaki bir multirotorda ivmeölçer büyük ölçüde itki yönünü ölçer; bu yüzden gerçek kestiriciler ivme büyüklüğü 1 g'den saptığında ivmeölçere güveni azaltır.

Simülasyon

Tamamlayıcı süzgeç: jiroskop + ivmeölçer

Jiroskop kısa vadede temizdir ama sapması (bias) birikir; ivmeölçer uzun vadede doğrudur ama gürültülüdür. Tamamlayıcı süzgeç jiroskobu yüksek, ivmeölçeri alçak frekansta kullanır. τ'yu değiştir ve kalıcı hatanın sapma × τ olduğunu gör.

3B sahne yükleniyor…

Simülasyon görevi

Füzyon simülasyonunda "Yerde sabit" hareketini seç, gürültüleri 0 yap: jiroskop çizgisi 20 s'de kaç dereceye kaydı? Tamamlayıcı süzgecin kalıcı hatası sapma × τ'ya eşit mi? Sonra yatış manevralarına dön ve RMSE'yi en aza indiren τ'yu bul. İvmeölçer gürültüsünü 12°'ye çıkarınca en iyi τ nasıl değişti?

Kod

C++: tamamlayıcı süzgeç (yuvarlanma ve yunuslama)
#include <cmath>

struct Attitude { float roll = 0, pitch = 0; };   // radyan

// gx, gy: jiroskop rad/s; ax, ay, az: ivmeölçer m/s²; dt: s; tau: süzgeç zaman sabiti, s
void complementary(Attitude& a, float gx, float gy, float ax, float ay, float az, float dt, float tau = 0.5f) {
  const float alpha = tau / (tau + dt);              // 250 Hz, τ = 0,5 s → α ≈ 0,992
  const float accRoll = std::atan2(ay, az);
  const float accPitch = std::atan2(-ax, std::sqrt(ay * ay + az * az));
  // ivme büyüklüğü 1 g'den çok farklıysa ivmeölçere güvenme (manevra ya da titreşim)
  const float g = std::sqrt(ax * ax + ay * ay + az * az);
  const float k = std::fabs(g - 9.81f) < 1.5f ? 1.f - alpha : 0.f;
  a.roll  = (1.f - k) * (a.roll + gx * dt) + k * accRoll;
  a.pitch = (1.f - k) * (a.pitch + gy * dt) + k * accPitch;
}
// Not: büyük açılarda ve sapma (yaw) için kuaterniyonlu Mahony/Madgwick ya da EKF kullanılır.

Sık yapılan hatalar

  • IMU'yu I²C ile bağlayıp 1 kHz hız döngüsü beklemek.
  • Uçuş kontrolcüsünü titreşim sönümleyicisiz sabitlemek: ivmeölçer kırpılır (clipping), kestirim bozulur.
  • Pusulayı güç kablolarının yanına koymak ve kalibrasyonu atlamak: drone daire çizerek uçar (toilet bowl).
  • Barometreyi süngerle örtmemek: pervane rüzgârı irtifayı zıplatır.

Yazılım mühendisliği bağlantısı

Sensör füzyonu, kayıt ve yeniden oynatma ile test edilir: aynı kayıt, aynı kestirim.

  • SITL'de ya da uçuşta sensör verisini kaydet (PX4 ULog), süzgeci çevrimdışı yeniden çalıştırıp çıktısını karşılaştır.
  • Rastgele gürültüyü tohumla: bu dersin simülasyonları gibi testler deterministik olmalı, yoksa kırılgan (flaky) olur.

Kendini sına

  1. Tamamlayıcı süzgeçte τ = 0,5 s ve jiroskop sapması 2 °/s ise kalıcı açı hatası yaklaşık nedir?

  2. 250 Hz'de (dt = 4 ms) τ = 0,5 s için α yaklaşık kaçtır?

  3. IMU uçuş kartlarında neden SPI ile bağlanır?

  4. Askıdaki bir quadrotorda ivmeölçer neden tek başına güvenilir eğim vermez?

Bu ünitenin parçaları

3B modelli gerçek Hyvex parçaları:

Esc
  • PanelAna sayfaSayfa
  • ModüllerTüm modüllerSayfa
  • ParçalarParça ansiklopedisiSayfa
  • Mühendislik yoluBüyükler için robotik: 128 parça, 7 seviyeSayfa
  • Robotik dersi (ESOF 323)Üniversite robotik dersi, 14 haftaSayfa
  • Drone dersiBüyükler için: parça, simülasyon, yazılım; 10 üniteSayfa
  • Blok atölyesiSerbest blok programlamaAraç
  • Devre laboratuvarıSanal Arduino ve devreAraç
  • Robot arenasıSanal robot sürüşüAraç
  • OyunlarBloklarla 8 öğretici oyunAraç
  • Mikro Kart atölyesiSanal LED kartı bloklarla programlaAraç
  • Robot atölyesiMikro Kart'ı robota tak, bloklarla görev yapAraç