9. ünite / 10 · 4 saat
Basit hücre güvenliği: bölgeler, hız sınırı, insan yakınlığı, acil durdurma
Yazılımda güvenlik katmanları: yasak bölge, elle kipinde hız tavanı, insana yaklaşınca yavaşla ve dur, mandallı acil durdurma. Ve yazılımın neden tek başına yetmediği.
Bu ünitenin sonunda
- Yasak bölge, hız sınırı ve insan yakınlığı kurallarını yazmak
- Hız-ve-mesafe izlemenin mantığını sayılarla açıklamak
- Acil durdurmanın neden mandallı olduğunu ve ne zaman sıfırlanabildiğini söylemek
- Bu dersin modelinin gerçek güvenlik sistemlerinden farkını açıklamak
Ders notları
Önemli: bu bölüm bir öğretim modelidir. Gerçek bir robot hücresinin güvenliği, bir risk değerlendirmesine dayanır, onaylı güvenlik donanımı ve güvenlik denetleyicileri kullanır ve robot güvenliği standartlarına (örneğin ISO 10218 ailesi) uyar. Aşağıdaki sayılar bu dersin sabitleridir; hiçbir gerçek hücreye uygulanmaz.
Katmanlar
- Yasak bölge: kolun hiçbir uzvunun girmemesi gereken kutu. Girerse program
zonehatasıyla durur (zoneslistesi). - Elle kipi: bir kişi hücrede ayarlama yaparken hız tavanı: ölçek 0,25.
- İnsan yakınlığı (hız ve mesafe izleme): insanın dikey ekseni (0 ile 1,8 m) ile kolun en yakın kapsülü arasındaki uzaklık d ölçülür. d ≤ 0,8 m ise hız ölçeği 0,25'e iner (yavaşla); d ≤ 0,4 m ise ölçek 0 olur (dur).
- Acil durdurma: her şeyden önce gelir, ölçek 0.
Acil durdurma neden mandallı
Acil durdurma basılınca kalır: düğmeyi bırakmak kolu çalıştırmaz. Sıfırlama bilinçli bir eylemdir ve yalnızca başka bir durdurma nedeni (insan 0,4 m içinde, kol yasak bölgede) kalmamışsa kabul edilir; yoksa kol sıfırlamayla birlikte yeniden kalkar. Kodda canResetEStop bunu kontrol eder.
Sayıların okunuşu
Yavaşlama ölçeği 0,25 ise TCP hızı 0,5 m/s yerine 0,125 m/s olur; durma mesafesi küçülür. Eşikler seçimdir: 0,8 m ve 0,4 m bu derste sabitlenmiştir. Gerçekte eşikler kolun hızından, durma süresinden ve insanın yaklaşma hızından hesaplanır.
Yazılım neden yetmez
- Güvenlik işlevleri, uygulama yazılımından bağımsız, onaylı donanımda çalışmalıdır: uygulama hata yapınca güvenlik de çökmemeli.
- Bu dersin modeli yalnız konumları bilir; gerçek hücre ışık perdesi, alan tarayıcı ve kapı anahtarı gibi algılayıcılar kullanır.
- Yasak bölge kuralı için gereken kapsül–kutu testi çarpışma testiyle aynıdır (8. ünite).
Simülasyon
Öğretim modeli: sanal kol bu dersin kendi modelidir. Uzuv ölçüleri, eklem sınırları, hız ve ivme değerleri ve güvenlik eşikleri bu sayfadaki kodda tanımlı ders sabitleridir; hiçbir robot üreticisinin ürünü, dili ya da eğitim içeriği değildir ve ders resmî bir üretici eğitimi değildir. Gerçek bir hücrede ölçüler üreticinin belgelerinden, güvenlik değerleri risk değerlendirmesinden gelir.
Hücre güvenliği: insan yakınlığı, bölge, acil durdurma
Kol A ile B arasında gidip gelir. Bir insanı hücre içinde gezdir: 0,8 m içinde kol yavaşlar (ölçek 0,25), 0,4 m içinde durur. Yasak bölgeyi aç, elle kipini aç, acil durdurmaya bas ve sıfırla. Bu bir öğretim modelidir; gerçek hücre güvenliği onaylı donanım ister.
Kendin dene
Güvenlik simülasyonunda insanı hücreye yaklaştır ve durumun "normal", "yavaş", "dur" arasında nasıl geçtiğini ve hız ölçeğini yaz. İnsanı 0,8 m ve 0,4 m eşiklerinin hemen iki yanına getirip ölçeğin sıçradığını gör. Sonra acil durdurmaya bas, insanı uzaklaştır ve sıfırla: ne zaman sıfırlama kabul ediliyor? Son olarak yasak bölgeyi aç ve kolun bölgeye girmeye çalıştığında ne olduğunu oku.
Kod
ArmScript bloklarını ArmScript simülasyonuna yapıştırıp tarayıcında çalıştırabilirsin. Python blokları yalnızca standart kütüphane kullanır; kendi bilgisayarında çalıştır.
SLOW, STOP, SLOW_SCALE = 0.8, 0.4, 0.25 # ders eşikleri (m, oran)
def speed_scale(human_dist, e_stop=False):
if e_stop: return 0.0 # acil durdurma her şeyden önce
if human_dist is None: return 1.0 # hücrede kimse yok
if human_dist <= STOP: return 0.0
if human_dist <= SLOW: return SLOW_SCALE
return 1.0
print([speed_scale(d) for d in (None, 2.0, 0.8, 0.5, 0.4, 0.1)]) # [1.0, 1.0, 0.25, 0.25, 0.0, 0.0]
print(speed_scale(5, e_stop=True)) # 0.0def seg_hits_box(a, b, lo, hi, pad):
t0, t1 = 0.0, 1.0 # doğru parçasının kutu içinde kaldığı [t0, t1] aralığı
for i in range(3):
d = b[i] - a[i]
l, h = lo[i] - pad, hi[i] + pad # kutuyu uzuv yarıçapı kadar şişir
if abs(d) < 1e-12:
if a[i] < l or a[i] > h:
return False
continue
u, v = (l - a[i]) / d, (h - a[i]) / d
if u > v:
u, v = v, u
t0, t1 = max(t0, u), min(t1, v)
if t0 > t1:
return False
return True
print(seg_hits_box((-1, .5, .5), (2, .5, .5), (0, 0, 0), (1, 1, 1), 0)) # True: içinden geçer
print(seg_hits_box((-1, 1.05, .5), (2, 1.05, .5), (0, 0, 0), (1, 1, 1), 0)) # False: yanından geçerSık yapılan hatalar
- Acil durdurmayı "basılı tutulduğu sürece" yapmak: bırakınca kol kalkar; mandallı olmalı.
- Güvenliği yalnızca uygulama kodunda çözmek: gerçek sistemde bağımsız, onaylı güvenlik işlevi gerekir.
- Eşikleri kolun hızından bağımsız seçmek: hızlı bir kol 0,4 m'de durmaya yetişmeyebilir.
- Bu dersin sayılarını gerçek bir hücreye taşımak: bunlar öğretim sabitleridir.
Yazılım mühendisliği bağlantısı
Güvenlik gereksinimleri kabul testiyle yazılır: "insan 0,4 m içindeyken ölçek 0", "acil durdurma sıfırlanana dek kol kalkmaz", "yasak bölgeye giren program durur".
- Her kural için sınır değerinin iki yanını test et (0,8 m'nin hemen içi ve dışı).
- Güvenli durum (dur) varsayılan olsun: bilinmeyen bir durumda kol durur.
Kendini sına
İnsan kola 0,6 m uzaklıktayken hız ölçeği nedir?
İnsan 0,3 m uzaktayken ne olur?
Acil durdurma neden mandallıdır?
Neden yalnız uygulama yazılımıyla güvenlik yetmez?
Bu üniteden sonra bitirme projesinde
- Güvenlik notu: Bir yasak bölge ekleme ve programın ona girmediğini gösterme; sınırların açıkça yazıldığı not.
