4. ünite / 10 · 4 saat
Eklem uzayı ve kartezyen hareket: PTP ve LIN
İki nokta arasında iki yol: eklemleri eşzamanlı döndürmek (PTP) ya da TCP'yi doğru çizgide götürmek (LIN). Yamuk hız profili, süre ve başarısızlık hâlleri.
Bu ünitenin sonunda
- Yamuk hız profilinin süresini mesafe, hız ve ivmeden hesaplamak
- PTP'nin neden eşzamanlı olduğunu ve TCP izinin eğri olduğunu göstermek
- LIN'in neden düz çizgi verdiğini ve neden başarısız olabileceğini açıklamak
- Bir görev için PTP ya da LIN seçmek
Ders notları
Kolu bir noktadan diğerine götürmenin iki temel yolu vardır.
PTP: eklem uzayında hareket
Eklemler başlangıç açılarından hedef açılara eşzamanlı döner: en yavaş kalan eklem süreyi belirler, hepsi aynı anda varır. Hesap ucuzdur, ters kinematik gerekmez ve eklem sınırları içinde kalmak garantidir. Bedeli: TCP'nin izi bir eğridir. Hücredeki A ve B noktalarının üstünde (z = 0,25 m, 0,64 m arayla) PTP, TCP'yi düz çizgiden en çok yaklaşık 8,6 cm saptırır ve yol 0,671 m olur; hareket yaklaşık 0,86 s sürer.
LIN: kartezyen düz çizgi
TCP, iki nokta arasında düz çizgide ve yönelimi düzgün dönerek gider. Her 40 ms'de çizgi üzerindeki ara duruş için ters kinematik çözülür. Aynı A–B hareketi 1,53 s sürer, çünkü kartezyen hız sınırı 0,5 m/s'dir. Bedeli: başarısız olabilir. Çizgi erişim alanının dışına çıkarsa ya da bilek merkezini taban ekseninden geçirirse kol yapılandırma değiştirmek zorunda kalır (iki örnek arasında 20°'den fazla sıçrama); kod bunu lin-flip ya da unreachable hatasıyla bildirir.
Yamuk hız profili
Hareket hızlan, sabit hızla ilerle, yavaşla biçimindedir. Mesafe d, en büyük hız v, ivme a ise: d ≥ v²/a için süre T = d/v + v/a; kısa mesafede tavana varılmaz ve süre T = 2·√(d/a) olur (üçgen profil). Bu dersin sınırları: eklem hızları 2,0; 2,0; 2,5; 3,5; 3,5; 5,0 rad/s, eklem ivmesi 6 rad/s²; TCP 0,5 m/s ve 2 m/s²; dönme 2 rad/s. speed komutu hepsini yüzde olarak ölçekler.
Hangisini ne zaman?
- Boşta serbest uçuş (engel yok): PTP, hızlı ve güvenli.
- Parçaya dikey iniş, yapıştırma, kaynak, kesme: LIN, çünkü yol önemlidir.
- Engelli hücrede serbest uçuş: ikisi de çarpışabilir; 8. ünitedeki planlayıcı.
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.
PTP ve LIN: iki yol, iki iz
A ve B bölgelerinin üstündeki iki duruş arasında eklem uzayı hareketi (PTP, mavi iz) ile kartezyen doğru (LIN, yeşil iz) birlikte çizilir. Süre, TCP yol uzunluğu ve doğrudan en büyük sapma okunur. Hız yüzdesini değiştir; oynat ve kolu iki yolda gör.
Kendin dene
Hareket simülasyonunda A ve B üstündeki iki duruşu seç. PTP ve LIN izlerini birlikte çiz; okuma kutusundaki süre, yol uzunluğu ve doğrudan sapmayı yaz. Hangisi daha hızlı, hangisi daha kısa? Sonra hızı %100'den %25'e düşür: süreler nasıl değişiyor? Son olarak bilek merkezinin taban ekseninden geçeceği iki nokta seç ve LIN'in neden başarısız 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.
import math
def trapezoid(d, v, a):
if d <= 0: return 0.0
if d <= v * v / a: # hız tavana varamadan yavaşlar: üçgen
return 2 * math.sqrt(d / a)
return d / v + v / a # hızlan + sabit + yavaşla
VMAX, AMAX = [2.0, 2.0, 2.5, 3.5, 3.5, 5.0], 6
def ptp_time(q0, q1):
ts = [trapezoid(abs(b - a), VMAX[i], AMAX) for i, (a, b) in enumerate(zip(q0, q1))]
return max(ts) # en yavaş eklem süreyi belirler, hepsi aynı anda varır
print(trapezoid(2, 1, 4), round(trapezoid(0.1, 1, 4), 3)) # 2.25 0.316# A noktasından parça al, B noktasına bırak
var ust_a = pose(0.55, -0.32, 0.25) # A'nın üstü
var al_a = pose(0.55, -0.32, 0.03) # parçanın tutulacağı yer
var ust_b = pose(0.55, 0.32, 0.25)
var koy_b = pose(0.55, 0.32, 0.03)
open
ptp ust_a # serbest uçuş: eklem uzayı
lin al_a # dikey iniş: doğru çizgi
close
lin ust_a
ptp ust_b
lin koy_b
open
lin ust_b
print "tutuyor mu:", holding()Sık yapılan hatalar
- PTP'nin TCP'yi düz götürdüğünü sanmak: iz bir eğridir; dar yerlerde bu çarpışma demektir.
- Her harekete LIN kullanmak: yol önemli olmayan yerde LIN daha yavaştır ve tekilliğe takılabilir.
- Hız yüzdesinin süreyi ters orantılı değiştirdiğini sanmak: ivme sınırı da ölçeklendiği için %25 hızda süre dört katına değil, örnekteki PTP hareketinde yaklaşık 2,8 katına çıkar; ölç.
- Kısa hareketlerde tavan hıza çıkılacağını varsaymak: kısa mesafede profil üçgendir.
Yazılım mühendisliği bağlantısı
Hareket planı bir veridir: bir süre ve zamandan duruşa bir işlev. Onu hesaplayan kodla onu yürüten kodu ayır.
- Bu derste hareket (
motion.ts) saf işlevdir; simülasyon yalnızca zamana göre okur. Böylece aynı hareket testte de çizimde de aynıdır. - Fiziksel sınırları (hız, ivme) testlerde doğrula: sonlu farkla hesaplanan hiçbir eklem hızı sınırı aşmamalı.
Kendini sına
PTP hareketinde TCP'nin izi neden eğridir?
d = 2 m, v = 1 m/s, a = 4 m/s² için yamuk profilin süresi nedir?
LIN hareketi ne zaman başarısız olur?
Parçanın üstüne dikey inerken hangi komut uygundur?