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

6. ünite / 10 · 4 saat

ArmScript I: kolu programlamanın temelleri

Platformun kendi küçük robot dili: değişken, hedef (joints, pose), hareket komutları, döngü ve koşul. Çalıştır, 3B sahnede izle, hatayı satır numarasından oku.

Bu ünitenin sonunda

  • ArmScript'in veri türlerini ve hedef biçimlerini (joints, pose) ayırt etmek
  • ptp, lin, open, close, wait ve speed komutlarıyla bir hareket dizisi yazmak
  • repeat, while, for ve if ile akışı denetlemek
  • Yorumlayıcının satır numaralı hata iletisini okuyup düzeltmek

Ders notları

ArmScript bu platformun kendi robot kolu dilidir. Sözdizimi ve komutları bu ders için tasarlanmıştır; hiçbir üreticinin robot dilinden alınmadı ve onlarla uyumlu değildir. Gerçek hücrelerde de programlar çoğunlukla bir üretici diliyle yazılır; kavramlar (hedef, hareket türü, hız, tutucu, akış denetimi) aynıdır, bu yüzden buradan öğrendiğin düşünme biçimi taşınır.

Program ve değerler

Program satır satır okunur; # ile başlayan kısım yorumdur. Değerler dört türdendir: sayı, metin ("..."), doğru/yanlış ve hedef. İki hedef biçimi vardır:

  • joints(q1, q2, q3, q4, q5, q6): eklem uzayında hedef, açılar derece.
  • pose(x, y, z) ya da pose(x, y, z, yaw): kartezyen hedef, metre ve derece; tutucu her zaman aşağı bakar, yaw dikey eksen etrafındaki dönüştür.

var a = 3 değişken tanımlar; a = a + 1 atar. Atamadan önce var şarttır, yoksa hata alırsın.

Komutlar

  • ptp hedef eklem uzayında, lin hedef kartezyen doğruyla (4. ünite), plan hedef çarpışmasız yolla (8. ünite) gider.
  • open, close: tutucu (0,4 s). wait s: s saniye bekle. speed y: hız yüzdesi (1 ile 100). print a, b: çıktı. halt: programı bitir.

Akış denetimi

  • repeat n ... end, while koşul ... end, for i = 1 to 5 [step 2] ... end
  • if koşul ... else ... end; koşullar doğru/yanlış olmak zorundadır (and, or, not, karşılaştırmalar). Bir sayıyı koşul olarak kullanırsan "tür hatası" alırsın; sessizce doğru sayılmaz.

Hata iletileri

Yorumlayıcı hatayı satır numarasıyla verir: Satır 3: hedef erişilemiyor, Satır 2: çarpışma. Hata anına kadar yürüyen hareket sahnede kalır; böylece kolun nerede durduğunu görebilirsin.

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

ArmScript simülasyonunda "ilk program"ı çalıştır ve konsoldaki iki satırı oku. Sonra programın sonuna "lin pose(0.5, -0.2, 0.3)" ekle ve çalıştır. Ardından "hata: erişim dışı hedef" örneğini seç, hatayı oku ve hedefi erişilebilir bir değere çek. Son olarak bir "repeat 3" döngüsüyle iki nokta arasında üç kez git-gel yazıp toplam süreyi konsoldan 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.

ArmScript: ilk program: eklem ve kartezyen hedef
# ArmScript ilk program
speed 40            # hız yüzdesi
ptp joints(0, 30, 60, 0, 90, 0)   # eklem uzayı: açılar derece
print "bekleme duruşu", here()    # TCP'nin konumu
ptp pose(0.5, 0.2, 0.3)           # kartezyen hedef, tutucu aşağı bakar
print "hedefe vardı", here()
ArmScript: hata: erişim dışı hedef
# YANLIŞ: erişim alanının dışında hedef
ptp pose(1.2, 0.0, 0.2)      # kol 0,9 m'den uzağa uzanamaz

Sık yapılan hatalar

  • Eklem açısını radyan yazmak: joints() derece alır, 90 yerine 1,57 yazarsan kol neredeyse hiç dönmez.
  • var yazmadan değişkene atamak: "tanımlı değil" hatası alırsın; bu yazım yanlışlarını yakalamak için bilinçli bir kuraldır.
  • Koşul yerine sayı yazmak: "while 1" geçersizdir, "while true" ya da bir karşılaştırma yaz.
  • pose() hedefinde tutucunun hep aşağı baktığını unutmak: yatay bir tutuş için bu dil yetmez, bunun sınırını bil.

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

Küçük bir dil bile üç şey ister: açık bir dilbilgisi, anlaşılır hata iletileri ve sınırlar. ArmScript'te dilbilgisi sözcükleme ve ayrıştırma adımlarına ayrılmıştır; hata iletisi hep satır numarası taşır.

  • Dilin her hata kodu için bir test yazıldı: satır numarası ve iki dilde ileti.
  • Dil küçük tutuldu: her yeni özellik, yalıtım ve test yükünü artırır.

Kendini sına

  1. joints(0, 90, 0, 0, 0, 0) hedefindeki açılar hangi birimdedir?

  2. pose(0.5, 0.2, 0.3) hedefinde tutucu nasıl yönelir?

  3. "var" yazmadan x = 5 yazarsan ne olur?

  4. while 1 koşulu neden hata verir?

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ç