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

Bölüm 7 · Görüntü işleme · Ders 31

Tehlikeli bölge ihlali ve KKD

Işın atma ile çokgen içi testi: robot hücresine kim, nasıl girdi?

Veri. Bir endüstriyel robot hücresi 12 m × 8 m. Ortadaki robot kolunun çalışma alanı, 11 köşeli bir çokgenle işaretlendi (altta konveyör için içe girinti var). Tavan kamerası 30 saniye boyunca saniyede 10 kez her işçinin kutusunu (±5 cm) ve kask/yelek sınıflandırıcısının kararını veriyor (kararların %6'sı hatalı). İşçilerden biri kasksız, biri yeleksiz, biri ikisi de olmadan dolaşıyor.

tehlike bölgesi: kolun çalışma alanı, 11 köşebölge × 1,00 · 4 kişi · 30 s
1 / 156
bolge.pypython
  1. import numpy as np
  2. rng = np.random.default_rng(5)
  3. Z = np.array([[3.4, 2.4], [6.4, 1.6], [8.8, 2.6], [9, 4.8], # tehlike bölgesi (m)
  4. [8.6, 6.6], [7.6, 6.6], [7.3, 5.3], [6.7, 5.3], # altta konveyör girintisi
  5. [6.4, 6.6], [4.2, 6.4], [3, 4.4]])
  6. def inside(x, y, P): # ışın atma
  7. c = False
  8. for (x1, y1), (x2, y2) in zip(P, np.roll(P, -1, 0)): # her kenar
  9. if (y1 > y) != (y2 > y): # kenar ışının hizasında mı?
  10. xs = x1 + (y - y1) * (x2 - x1) / (y2 - y1) # kesişimin x'i
  11. if xs > x: c = not c # sağdaysa say
  12. return c # tek sayı = içeride
  13. print(inside(6, 4, Z), inside(1, 1, Z), inside(7, 6.2, Z)) # merkez, köşe, girinti
  14. start = np.array([[1.0, 5], [11, 6], [11, 2]]) # ayak noktaları
  15. goal = np.array([[5.5, 3.6], [7.5, 4.5], [8.5, 2.2]])
  16. msg, was = ['ALARM', 'UYARI', 'ALARM'], [False] * 3 # KKD yok → alarm
  17. for t in np.arange(0, 6, 0.1):
  18. foot = start + min(t / 4, 1) * (goal - start) # hedefe yürü
  19. foot += rng.normal(0, 0.05, foot.shape) # kutu gürültüsü
  20. for k, (x, y) in enumerate(foot):
  21. now = inside(x, y, Z)
  22. if now and not was[k]: # yeni giriş
  23. print(round(t, 1), k, msg[k])
  24. was[k] = now

Sahnedeki her sayı, aynı algoritmanın tarayıcında yapılan gerçek çalıştırmasından gelir (sabit tohum, her seferinde aynı sonuç). Python kodunu kendi bilgisayarında çalıştırırsan rastgele başlangıçlar farklı olacağı için sayılar biraz değişebilir.

Bu dersin kodu verisini kendi içinde üretir; indirilecek dosya yok. Kodu yine de aşağıda tarayıcında çalıştırabilirsin.

Kodu tarayıcıda çalıştırPython · NumPy · matplotlib · Pyodide

Python ve NumPy bu sayfada, tarayıcında çalışır (Pyodide). Kodu değiştirip yeniden çalıştırabilirsin; dersin veri setleri çalışma klasöründe hazır. Kod matplotlib kullanırsa grafikler çıktının altında görünür, yazdığı dosyalar (ör. egitim_gecmisi.csv) indirilebilir.

bolge.pypython

Çıktı

Çıktı burada görünecek.

Nasıl çalışır

  1. Kişinin yeri kutunun ortası değil, ayak noktasıdır (alt kenarın ortası): yere değen nokta budur.
  2. Işın atma: ayak noktasından sağa yatay bir ışın gönder, çokgenin kaç kenarını kestiğini say. Tek sayı içeride, çift sayı dışarıda. İçbükey çokgende de çalışır.
  3. Titreşim yüzünden sınırda gidip gelmesin diye giriş, iki ardışık karede aynı sonuçla onaylanır. KKD kararı son 5 karenin çoğunluk oyudur.
  4. KKD'li giriş uyarıdır ve robot yavaşlar; kask ya da yelek eksikse alarm çalar ve robot durur.
  5. Şunu dene: bölgeyi 1,3 kat büyüt; çevrede dolaşan işçiler de bölgeye girer. Kişi sayısını 6'ya çıkar; daha çok alarm görürsün.

Neden önemli

Endüstriyel robot hücrelerinde, şantiyelerde ve depolarda kamera tabanlı güvenlik bölgeleri ışık perdelerinin ve çitlerin yerini alıyor; iş birlikçi robotlar insan yaklaşınca hızını düşürür (ISO/TS 15066). Aynı nokta-çokgen testi haritalarda konum sorgusunda, drone coğrafi çitlerinde (geofence) ve otonom araçlarda şerit içinde olup olmamayı anlamada kullanılır.

ESOF 323, 11. hafta: robotlarda derin öğrenme →
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ç