Kanca
Aşağıdaki sahnede manipülabilite tam sıfıra indiğinde, sayı matematiksel olarak kusursuz davranır — düzgün, öngörülebilir, sıfıra yumuşakça yaklaşır. Şimdi gerçek bir motorun aynı anda ne yaptığını hayal et: matematik "bu yönde sonsuz hız gerekir" derken, motor sürücüsü akım limitine çarpıp durur, ya da mekanik boşluk (backlash) yüzünden titrer. İkisi de aynı konfigürasyondan bahsediyor ama ikisi de aynı şeyi "görmüyor".
Nasıl hesaplandı?Çizgiler ve elips, eklem hızlarından uç hıza nasıl gidildiğini gösteriyor.
Renkli çizgiler: her eklemin birim hızının uç noktada ürettiği hız yönü (Jacobian sütunları). Gri elips: tüm birim eklem hızı kombinasyonlarının süpürdüğü uç hız alanı (manipülabilite elipsi) — elips daralıp çizgiye dönüştüğünde tekillik yaklaşıyor demektir.
manipülabilite = √det(J·Jᵀ) — computeJacobian içindeki manipulabilityOf fonksiyonunun ürettiği sayı, yukarıdaki “Manipülabilite” satırında gösterilen değerin ta kendisi.
Bağlantı yalnız bu sahnenin durumunu taşır; hesap veya ad içermez.
Ne oldu
Sim-to-real farkı (sim-to-real gap), pekiştirmeli öğrenme ve robotik literatüründe sıkça geçen bir terim: bir modelin veya politikanın simülasyonda gösterdiği performansın, gerçek donanıma aktarıldığında düşmesi. 2020 tarihli bir derleme makale bu farkı şöyle özetliyor: "The gap between the simulated and real worlds degrades the performance of the policies once the models are transferred into real robots" — yani simülasyon ile gerçek dünya arasındaki fark, modelin gerçek robota aktarılınca performansını düşürüyor.
Bu farkın tipik kaynakları arasında şunlar sayılır: gerçek dünyadaki sürtünme ve temas dinamiğinin simülasyonda tam modellenememesi, gerçek sensörlerin (kamera, enkoder) gürültülü ölçüm üretmesine karşılık simülasyonun genelde "temiz" veri vermesi, ve gerçek aktüatörlerin (motor + sürücü) tepki gecikmesinin, simülasyondaki anlık eklem güncellemesinden farklı olması.
Bu platformdaki küçük bir örnek: JacobianViz sahnesindeki
manipülabilite hesabı (|det(J)| = |a1·a2·sin(θ2)|, bkz.
b-universite-tekillik) saf geometrik bir modeldir — DH parametrelerinden
başka hiçbir şey bilmez. Sürtünme yok, motor akım limiti yok, mekanik
boşluk yok, titreşim yok. Model sana NEREDE tehlikeli olduğunu (θ2 = 0°
veya 180°) kusursuz doğrulukla söyler, ama gerçek donanımın o bölgeye
YAKLAŞIRKEN tam olarak NASIL davranacağını söylemez — bu, sim-to-real
farkının küçük ama somut bir örneği.
Gerçek dünyada
Bu yüzden endüstriyel robot kontrolörleri tekillik bölgelerine yaklaşırken
sadece matematiksel manipülabilite eşiğine değil, gerçek eklem hız/ivme
limitlerine de bakar ve gerekirse hareketi yavaşlatır veya durdurur
(bkz. b-universite-tekillik "Gerçek dünyada"). Pekiştirmeli öğrenmeyle
eğitilmiş bir robot kontrol politikası da aynı sorunu yaşar: simülasyonda
mükemmel çalışan bir politika, gerçek robotta sürtünme ve sensör gürültüsü
yüzünden başarısız olabilir — literatürdeki "domain randomization" (eğitim
sırasında simülasyon parametrelerini kasten rastgele değiştirme) gibi
yöntemler tam olarak bu farkı kapatmak için geliştirilmiştir.
Dene
JacobianViz sahnesinde eklem 2'yi 0°'ye yaklaştır ama TAM sıfıra
getirme — örneğin 2°'de dur. Manipülabilite değerinin çok küçük ama sıfır
OLMADIĞINI, sahnenin bunu hâlâ "çözülebilir" bir durum olarak gösterdiğini
gözlemle. Gerçek bir robotta bu dar bölgede motor sürücüsünün akım
limitine çarpması ya da titreşmesi, bu ekrandaki hiçbir sayıda görünmeyen
bir davranıştır.
Kaynak kodu: computeJacobian
Sonraki
Bu farkın var olduğunu kabul ederek, sıradaki ders bu simülasyonun yine de neden faydalı bir doğrulama adımı olduğunu — çevrim dışı bir programın gerçek robota yüklenmeden önce nasıl kontrol edildiğini — ele alıyor.