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

WebotsDönem projesi

Görsel kılavuzlu robot kol

Kamerayla masadaki renkli küpleri bulan, ters kinematikle uzanıp kavrayan ve renklerine göre kutulara ayıran bir kol.

Senaryo

Kol masanın üstündeki kameradan üç renkte küp görür, her küpün konumunu piksel → dünya dönüşümüyle hesaplar, ters kinematikle küpün üstüne iner, kavrar ve rengine uygun kutuya bırakır. Görev akışı: TARA, SEC, YAKLAS, KAVRA, TASI, BIRAK.

Kabul ölçütleri

  • 10 küpten en az 9'u doğru kutuya bırakılıyor.
  • Kavrama konum hatası 1 cm'den küçük (homografi + IK).
  • Erişilemeyen bir hedef verildiğinde kol çarpmadan "erişilemez" durumuna geçiyor.
  • Bir küp düşerse kol yeniden TARA durumuna dönüyor.

Simülasyonu kurmak

  1. Webots R2025a kur; File → Open Sample World → robots/abb/irb/inverse_kinematics.wbt örneğini incele (ikpy ile ters kinematik).
  2. Python ortamına ikpy, numpy ve opencv-python kur.
  3. Dünyaya masa, üç renkte küp, üç kutu ve tepeden bakan bir kamera ekle; kola bir kavrayıcı (gripper) ekle.
  4. Kamerayı kalibre et: masanın dört köşesinin piksel ve dünya koordinatından bir homografi hesapla.
  5. Görev mantığını durum makinesi, yörüngeyi ayrı bir modül olarak yaz; IK ve homografi için birim testler.

Başlangıç kodu

Webots Python: ikpy ile hedefe uzanma
# Webots denetleyicisi: kolun URDF'inden ikpy zinciri kur, hedef noktaya ters kinematikle uzan.
import tempfile
import ikpy.chain
from controller import Supervisor

robot = Supervisor()
step = int(robot.getBasicTimeStep())

with tempfile.NamedTemporaryFile(suffix=".urdf", delete=False) as f:
    f.write(robot.getUrdf().encode("utf-8"))
chain = ikpy.chain.Chain.from_urdf_file(f.name, active_links_mask=[False, True, True, True, True, True, True, False])

motors = []
for link in chain.links:
    if "motor" in link.name.lower() or "joint" in link.name.lower():
        m = robot.getDevice(link.name)
        if m:
            m.getPositionSensor().enable(step)
            motors.append(m)

def reach(x, y, z):
    q0 = [0] + [m.getPositionSensor().getValue() for m in motors] + [0]
    q = chain.inverse_kinematics([x, y, z], initial_position=q0)
    for i, m in enumerate(motors):
        m.setPosition(q[i + 1])

while robot.step(step) != -1:
    reach(0.6, 0.2, 0.4)        # TODO: homografiden gelen küp konumu

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
    Kol hareket ediyor

    Eklem açılarıyla kolu sür; ileri kinematiği Webots konumuyla karşılaştır.

    Yol planlama ve konum belirleme
  3. 10. hafta
    Küp tespiti ve homografi

    Renk ayırma + homografiyle küplerin dünya konumu; hata tablosu.

    Robotlar için bilgisayarlı görü
  4. 11. hafta
    Ara kontrol: al-bırak

    Tek bir küp için tam al-bırak döngüsü; IK birim testleri.

    Robotlarda derin öğrenme ve uçta yapay zekâ
  5. 12. hafta
    Mimari ve hata durumları

    Durum makinesi, erişilemez hedef ve düşen küp durumları; ROS 2 ya da modül mimarisi.

    ROS 2 ve simülasyon
  6. 13. hafta
    Bütünleştirme ve ölçüm

    10 küplük otomatik deneme; başarı oranı ve konum hatası grafiği.

    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ç