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

Tarayıcı + PX4 SITL + GazeboBitirme

Bitirme projesi: otonom görev ve hassas iniş

Önce tarayıcıda, sonra PX4 SITL + Gazebo'da: kalkış, dört ara nokta, aşağı bakan kamerayla ArUco işaretçisi üzerine hassas iniş; bağlantı kaybı, düşük batarya ve rüzgâr senaryoları.

Senaryo

Drone 10 m'ye kalkar, dört ara noktadan geçer, iniş bölgesinde ArUco işaretçisini arar, görsel servo ile hizalanıp iner. Görev bir durum makinesiyle yönetilir: KALKIS, ROTA, ARAMA, HIZALAMA, INIS, GERI_DONUS. Bağlantı kesilirse ya da batarya kritik eşiğe inerse drone eve döner; işaretçi 20 s içinde bulunmazsa GPS'le iner.

Gereksinimler (test edilebilir)

  • G1: Görev 5 denemenin 5'inde tamamlanır; her ara noktaya kestirime göre 1 m içinde varılır.
  • G2: İniş noktası işaretçi merkezine 0,3 m'den yakındır (5 denemenin ortalaması).
  • G3: 3 m/s rüzgârda görev yine tamamlanır.
  • G4: Telemetri kesilirse drone 10 s içinde Return kipine geçer.
  • G5: Batarya kalan oranı kritik eşiğin altına inerse görev bırakılır ve eve dönülür.
  • G6: İşaretçi 20 s içinde bulunamazsa GPS'le güvenli iniş yapılır.

Mimari

  • Algılama düğümü: kamera görüntüsü → ArUco pozu (solvePnP) → /landing_target.
  • Görev düğümü: saf geçiş fonksiyonlu durum makinesi; olaylar telemetriden ve algılamadan gelir.
  • Denetim düğümü: ROTA'da MAVSDK görevi ya da offboard konum hedefi, HIZALAMA'da hız komutu.
  • Arayüzler: ROS 2 konuları (px4_msgs) ya da MAVSDK; mesaj sözleşmeleri belgelenir.
  • Parametreler (kazançlar, eşikler, failsafe) tek bir YAML dosyasında, sürüm denetiminde.

Doğrulama: birim testinden SIL'e

  • Birim: durum makinesinin her geçişi, karıştırıcı, PID ve basamak yanıtı ölçütleri (bu dersin testleri gibi).
  • Tarayıcı: görev simülasyonunda GPS ve kamera inişinin karşılaştırması; rüzgâr ve GPS hatası taraması.
  • SIL: HEADLESS=1 ile Gazebo'da otomatik görev; ULog'dan G1–G6 ölçülür.
  • Senaryolar kod olarak: rüzgâr eklentisi, telemetri kesme, batarya eşiğini düşürme.
  • CI: birim testleri her itmede, SIL testleri gecelik.

Başlangıç kodu

Python: bitirme projesi görev durum makinesi (failsafe geçişleriyle)
from enum import Enum, auto

class S(Enum):
    TAKEOFF = auto(); ROUTE = auto(); SEARCH = auto(); ALIGN = auto(); LAND = auto(); RETURN = auto(); DONE = auto()

def next_state(s, ev):
    """Saf geçiş fonksiyonu: birim testle her geçiş doğrulanır. ev: o adımın olayları (dict)"""
    if ev.get("link_lost") or ev.get("battery") == "CRITICAL":     # failsafe her durumdan önce gelir
        return S.RETURN if s not in (S.LAND, S.DONE) else s
    if s is S.TAKEOFF and ev.get("alt_reached"):
        return S.ROUTE
    if s is S.ROUTE and ev.get("last_wp_reached"):
        return S.SEARCH
    if s is S.SEARCH:
        if ev.get("marker_seen"):
            return S.ALIGN
        if ev.get("search_timeout"):                                # işaretçi yoksa GPS'le in
            return S.LAND
    if s is S.ALIGN:
        if not ev.get("marker_seen"):
            return S.SEARCH
        if ev.get("aligned"):
            return S.LAND
    if s in (S.LAND, S.RETURN) and ev.get("landed"):
        return S.DONE
    return s

assert next_state(S.ROUTE, {"link_lost": True}) is S.RETURN
assert next_state(S.SEARCH, {"marker_seen": True}) is S.ALIGN
assert next_state(S.ALIGN, {}) is S.SEARCH
assert next_state(S.LAND, {"battery": "CRITICAL"}) is S.LAND   # inişi bölme

Teslimler

  1. 3. üniteden sonra
    Öneri ve gereksinimler

    İki sayfa: G1–G6'yı kendi cümlelerinle test edilebilir yaz, parça listesi ve itki/ağırlık, uçuş süresi hesabı (simülasyonlardan), risk ve tehlike listesi. Depo açıldı, CI ilk testi çalıştırıyor.

    Güç: LiPo, PDB/BEC ve uçuş süresi
  2. 6. üniteden sonra
    Denetim ve kestirim

    PID ve tamamlayıcı süzgeç kodun birim testli; basamak yanıtı ölçütleri için eşik testleri; ayar raporu (simülasyon ekran görüntüleriyle).

    PID II: kaskad yönelim denetimi, gürültü ve süzgeçler
  3. 8. üniteden sonra
    Ara kontrol: görev

    Mimari belgesi (düğümler, konular, durum makinesi); MAVSDK ya da offboard ile SITL'de dört ara noktalı görev; kayıt ve harita görüntüsü.

    PX4 mimarisi, uçuş kipleri, MAVLink ve MAVSDK
  4. 9. üniteden sonra
    Hassas iniş

    ArUco algılama düğümü ve görsel servo; iniş hatası 5 denemede ölçüldü (G2).

    ROS 2 + PX4, SITL ve görüyle hassas iniş
  5. 10. üniteden sonra
    SIL testleri, sunum ve rapor

    Rüzgâr, telemetri kesilmesi ve batarya senaryoları otomatik; G1–G6 için kanıt tablosu; 10 dakikalık sunum ve canlı ya da kayıtlı demo; final raporu ve depo.

    Güvenlik, failsafe, mevzuat ve bitirme projesi
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ç