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

WebotsDönem projesi

Otonom kara aracı

Kamerayla şerit takibi, mesafe sensörüyle engelden kaçınma ve trafik işaretlerini derin öğrenmeyle tanıyan bir araç.

Senaryo

Araç Webots şehir dünyasında bir pisti şeritten çıkmadan tamamlar, önüne çıkan engelde durur ya da yavaşlar, "dur" işaretinde 3 saniye bekler. Davranış bir durum makinesiyle yönetilir: SERIT_TAKIP, ENGEL, DUR_ISARETI, KAYIP.

Kabul ölçütleri

  • Pistte 3 tur boyunca şeritten çıkma yok (yanal sapma |e| < 0,5).
  • Önünde 8 m içinde engel varken çarpışma yok; engel kalkınca 2 sn içinde yeniden hareket.
  • Dur işaretinde durma oranı en az %90 (20 denemede), yanlış durma en çok 1.
  • Durum makinesinin her geçişi birim testle doğrulanmış; CI yeşil.

Simülasyonu kurmak

  1. Webots R2025a kur (Windows, macOS, Linux).
  2. File → Open Sample World → vehicles/city.wbt dünyasını aç; BMW X5 aracını kullan.
  3. Aracın controller alanını <extern> yap ya da kendi Python denetleyicini seç; araca kamera ve ön mesafe sensörü (lidar ya da distance sensor) ekle.
  4. Python ortamına numpy, opencv-python ve torch kur.
  5. Denetleyiciyi modüllere ayır: perception (şerit, işaret), control (PID), behaviour (durum makinesi); her modülün birim testleri depoda.

Başlangıç kodu

Webots Python: şerit takibi için başlangıç denetleyicisi
# Webots vehicle denetleyicisi (BMW X5, city.wbt). Kamera görüntüsünden şerit sapması, PID ile direksiyon.
import numpy as np
from vehicle import Driver

driver = Driver()
step = int(driver.getBasicTimeStep())
cam = driver.getDevice("camera")
cam.enable(step)
W, H = cam.getWidth(), cam.getHeight()

KP, KD = 0.35, 0.08
prev = 0.0
driver.setCruisingSpeed(20)          # km/h

def lane_offset(bgra):
    img = np.frombuffer(bgra, np.uint8).reshape(H, W, 4)
    roi = img[int(H * 0.6):, :, :3]
    yellow = (roi[:, :, 2] > 150) & (roi[:, :, 1] > 120) & (roi[:, :, 0] < 90)   # BGR
    xs = np.nonzero(yellow)[1]
    if xs.size < 30:
        return None
    return (xs.mean() - W / 2) / (W / 2)     # -1 .. +1

while driver.step() != -1:
    e = lane_offset(cam.getImage())
    if e is None:                       # KAYIP durumu: yavaşla, son direksiyonu koru
        driver.setCruisingSpeed(5)
        continue
    driver.setCruisingSpeed(20)
    u = KP * e + KD * (e - prev) / (step / 1000)
    prev = e
    driver.setSteeringAngle(float(np.clip(u, -0.5, 0.5)))   # rad

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
    Araç sürülüyor

    Webots'ta aracı koddan sür; sabit hız ve direksiyon komutları; sensör verileri kaydediliyor.

    Yol planlama ve konum belirleme
  3. 10. hafta
    Şerit takibi

    lane_offset() + PID ile bir tur; sapma grafiği teslim.

    Robotlar için bilgisayarlı görü
  4. 11. hafta
    Ara kontrol: işaret sınıflandırıcı

    Webots'tan toplanan veriyle eğitilmiş işaret ağı (doğrulama doğruluğu, karışıklık matrisi); engel durumu çalışıyor.

    Robotlarda derin öğrenme ve uçta yapay zekâ
  5. 12. hafta
    Mimari: ROS 2 ya da modüller

    Algılama, denetim ve davranış ayrı düğümler (ROS 2) ya da ayrı modüller; arayüzleri belgelendi.

    ROS 2 ve simülasyon
  6. 13. hafta
    Bütünleştirme ve SIL testleri

    Tüm kabul ölçütleri otomatik senaryolarla (Webots --batch) ölçülü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ç