Macademia'nın robotik ve mühendislik programı · ücretsiz seviye tespiti ve kişisel öğrenme yolu

Gazebo + PX4 SITLDönem projesi

Otonom drone görevi

PX4 uçuş yazılımıyla simülasyonda kalkış, ara nokta görevi, aşağı bakan kamerayla işaretçi (ArUco) bulup üzerine hassas iniş.

Senaryo

Drone kalkar, dört ara noktadan geçer, iniş bölgesine gelince aşağı bakan kamerayla ArUco işaretçisini arar, görsel servo ile üzerine hizalanıp iner. Bağlantı kesilirse ya da batarya düşerse geri döner (failsafe).

Kabul ölçütleri

  • Görev 5 denemede 5 kez tamamlanıyor; her ara noktaya 1 m içinde varılıyor.
  • İniş noktası işaretçi merkezine 0,3 m'den yakın (5 denemenin ortalaması).
  • Rüzgâr eklenince (Gazebo wind plugin, 3 m/s) görev yine tamamlanıyor.
  • Bağlantı kesilmesi senaryosunda drone 10 sn içinde geri dönüş kipine geçiyor.

Simülasyonu kurmak

  1. Ubuntu 22.04/24.04 (ya da WSL2) üzerinde PX4-Autopilot deposunu klonla ve Tools/setup/ubuntu.sh betiğini çalıştır.
  2. `make px4_sitl gz_x500_mono_cam_down` ile aşağı bakan kameralı x500'ü Gazebo Harmonic'te başlat.
  3. Python ortamına mavsdk, opencv-contrib-python kur; QGroundControl ile aracı izle.
  4. Kamera görüntüsünü ros_gz_bridge (ROS 2 Jazzy) ya da gz-transport Python bağlamasıyla al.
  5. Görev mantığını durum makinesi olarak yaz: KALKIS, ROTA, ARAMA, HIZALAMA, INIS, GERI_DONUS.

Başlangıç kodu

MAVSDK Python: kalkış, ara noktalar, iniş (PX4 SITL)
# PX4 SITL: make px4_sitl gz_x500_mono_cam_down   (Gazebo Harmonic)
import asyncio
from mavsdk import System

WAYPOINTS = [(0.0001, 0.0), (0.0001, 0.0001), (0.0, 0.0001), (0.0, 0.0)]   # ev noktasına göre derece farkı

async def main():
    drone = System()
    await drone.connect(system_address="udpin://0.0.0.0:14540")
    async for s in drone.core.connection_state():
        if s.is_connected:
            break
    async for h in drone.telemetry.health():
        if h.is_global_position_ok and h.is_home_position_ok:
            break
    home = await anext(drone.telemetry.home())
    await drone.action.set_takeoff_altitude(10)
    await drone.action.arm()
    await drone.action.takeoff()
    await asyncio.sleep(8)
    for dlat, dlon in WAYPOINTS:                     # ROTA durumu
        await drone.action.goto_location(home.latitude_deg + dlat, home.longitude_deg + dlon,
                                         home.absolute_altitude_m + 10, 0)
        await asyncio.sleep(10)                      # TODO: mesafe 1 m'nin altına inene kadar bekle
    # TODO: ARAMA ve HIZALAMA: ArUco hatasından offboard hız komutları
    await drone.action.land()

asyncio.run(main())

Ara teslimler

  1. 8. hafta
    Öneri ve gereksinimler

    İki sayfalık öneri: test edilebilir kabul ölçütleri, ilk mimari (durum makinesi ya da ROS 2 grafiği), risk listesi, haftalık plan. Depo açıldı, CI ilk testi çalıştırıyor.

    Ara sınav
  2. 9. hafta
    SITL çalışıyor

    PX4 SITL + Gazebo kuruldu; MAVSDK ile kalkış ve iniş betiği.

    Yol planlama ve konum belirleme
  3. 10. hafta
    İşaretçi tespiti

    Kamera görüntüsünden ArUco pozu; piksel hatası ve tahmini mesafe kaydı.

    Robotlar için bilgisayarlı görü
  4. 11. hafta
    Ara kontrol: ara nokta görevi

    Dört ara noktalı görev ve durum makinesi; kayıt ve harita görüntüsü.

    Robotlarda derin öğrenme ve uçta yapay zekâ
  5. 12. hafta
    Görsel servo

    Offboard kipinde hız komutlarıyla işaretçi üzerine hizalanma; ROS 2 ya da MAVSDK mimarisi belgelendi.

    ROS 2 ve simülasyon
  6. 13. hafta
    Rüzgâr ve failsafe testleri

    Rüzgâr ve bağlantı kesilmesi senaryoları otomatik çalışıyor.

    Hava robotları: uçuş denetimi, otonomi ve sürüler
  7. 14. hafta
    Sunum ve rapor

    10 dakikalık sunum, canlı ya da kayıtlı simülasyon, kabul ölçütlerinin her biri için kanıt (grafik, kayıt, test), final raporu ve depo.

    Proje sunumları
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
  • TestlerimMini testler ve puanlarSayfa
  • 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ç