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

10. ünite / 10 · 4 saat

Bitirme hazırlığı: paletleme hücresi

Bütün parçaları birleştir: ArmScript ile engelli bir hücrede parçaları alıp bir palet düzenine yerleştiren, ölçülen ve test edilen bir program.

Bu ünitenin sonunda

  • Bir hücre görevini ölçülebilir gereksinimlere çevirmek
  • Programı yordamlara bölüp plan, lin ve tutucu komutlarını birleştirmek
  • Bir programı sayılarla (süre, parça, düşürme, plan sayısı) doğrulamak
  • Sonuçları rapor ve sunuma dökmek

Ders notları

Bu ünitede yeni konu yoktur: ilk dokuz üniteyi bir paletleme görevinde birleştirirsin. Görev: duvarlı hücrede alma bölgesindeki üç parçayı al, duvarın üstünden ya da çevresinden taşı ve bırakma bölgesinde bir palet düzenine yerleştir.

Başlangıç programı

Bitirme örneği (simülasyonda "bitirme" seçeneği) tasi(x, y, px, py) yordamıyla bir parçayı alır ve palet noktasına koyar: plan ile yaklaşma noktasına, lin ile dikey iniş ve kalkış, close ve open ile tut ve bırak. Bir for döngüsü üç parçayı sırayla işler; palet noktaları 0,5 + 0,09·(i % 2) ve 0,28 + 0,09·floor(i / 2) ile 2x2 düzenin hücrelerinden üçünü verir.

Ölçümler

Programı çalıştırınca şunlar ölçülür: tutulan ve bırakılan parça sayısı (3 ve 3), düşürme (0), plan komutu sayısı (6), toplam benzetim süresi (yaklaşık 24 s) ve çıktı satırı ("parts moved: 3"). Bu sayılar bitirme projesinin kabul ölçütleridir.

Genişletme fikirleri

  • Palet düzenini 3x3'e çıkar, ama hücrede yalnız üç parça olduğundan parça sayısını da artırman gerekir.
  • Süreyi kısalt: plan yerine duvar olmayan yarıda ptp, speed ayarı.
  • Bir yasak bölge ekle ve programın ona girmediğini göster.
  • Her adımda holding() denetle ve başarısızlıkta halt et.

Rapor

Raporun bölümleri: gereksinimler, mimari (yordamlar, hareket türü seçimi), ölçümler (yukarıdaki sayılar), sınırlar (çarpışma modeli yaklaşıktır, güvenlik öğretim modelidir) ve sonraki adım. Sunumda programı canlı çalıştır ve bir hatayı bilerek üretip iletisini göster.

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.

ArmScript: yaz, çalıştır, 3B sahnede izle

Platformun kendi robot dili. Örnek seç ya da kendi programını yaz, Çalıştır'a bas: yorumlayıcı programı tarayıcıda, sınırlı adımla koşturur, konsola çıktıyı ve hatayı satır numarasıyla yazar, sonucu 3B sahnede oynatır. Sunucuda hiçbir şey çalışmaz.

Kendin dene

Simülasyonda "bitirme" örneğini çalıştır ve okuma kutusundaki sayıları kaydet: parça, düşürme, plan, süre. Sonra bir parçayı gerçekten düşür (bırakma yüksekliğini artır) ve düşürme sayısının değiştiğini kaydet. Son olarak programı değiştir: palet düzeninde üçüncü parçayı farklı bir noktaya koy ve çarpışma ya da erişim hatasına yol açan bir değer bul; iletisini rapora ekle.

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.

ArmScript: paletleme: üç parçayı 2x2 düzene yerleştirmek
# bitirme: paletleme, 2x2 düzen, duvar aşılarak
proc tasi(x, y, px, py)
  open
  plan pose(x, y, 0.25)
  lin pose(x, y, 0.03)
  close
  lin pose(x, y, 0.25)
  plan pose(px, py, 0.25)
  lin pose(px, py, 0.03)
  open
  lin pose(px, py, 0.25)
end
var n = 0
for i = 1 to 3
  call tasi(item_x(i), item_y(i), 0.5 + 0.09 * (i % 2), 0.28 + 0.09 * floor(i / 2))
  n = n + 1
end
print "taşınan parça sayısı:", n
ArmScript: duvarın üstünden taşımak için plan
# A ile B arasında duvar var: yük taşırken plan kullan
var ust_a = pose(0.55, -0.32, 0.25)
var al_a = pose(0.55, -0.32, 0.03)
var ust_b = pose(0.55, 0.32, 0.25)
var koy_b = pose(0.55, 0.32, 0.03)
open
plan ust_a         # çarpışmasız yol iste
lin al_a
close
lin ust_a
plan ust_b         # duvarın üstünden ya da çevresinden
lin koy_b
open
lin ust_b
print "bitti, parça B'de"

Sık yapılan hatalar

  • Hepsini tek parça yazmak: yordamlara böl, her yordamı ayrı dene.
  • plan komutunu her harekete koymak: dikey inişte lin, serbest uçuşta plan ya da ptp, yolun önemi neye göre seçilir.
  • Ölçüm almadan "çalışıyor" demek: süre, parça ve düşürme sayısını her değişiklikten sonra kaydet.
  • Sınırları raporlamamak: çarpışma modeli yaklaşık, güvenlik öğretim modelidir; bunu açıkça yaz.

Yazılım mühendisliği bağlantısı

Bitirme projesi bir kabul testi setidir: gereksinim, ölçüm, eşik. Bu dersin kodunda aynı yapı testlerde vardır: bitirme programı için "üç parça, altı plan, çarpışmasız kareler, üç farklı palet hücresi".

  • Programı değiştirdiğinde ölçümleri yeniden al: eski sayılara güvenme.
  • Hata iletisi de bir çıktıdır: sunumda bilerek bir hata üretip iletisini göstermek programı anlattığını kanıtlar.

Kendini sına

  1. Bitirme programında plan komutu neden kullanılır?

  2. Dikey iniş ve kalkışlar için hangi komut seçilir?

  3. Bitirme örneği bittiğinde okunan beklenen sayılar hangileridir?

  4. Raporda hangisi mutlaka belirtilmelidir?

Bu üniteden sonra bitirme projesinde

  • Rapor ve sunum: Gereksinimler, mimari, ölçümler (parça, düşürme, plan, süre), sınırlar; canlı çalıştırma ve bilerek üretilmiş bir hata.

Macademia'da ilgili

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ç