Kavrama Testi: Hangi Açı Hangi Nesne
Aynı el, farklı nesneler (10 dk)
Geçen derste gripperine iki açı verdin: bir butona basınca kapanıyor, bir butona basınca açılıyor. Kapanma açısını kendince ayarladın ve bir cisim tuttun. Ama şimdi sana bir soru:
Gripperini kapatan o tek açı, senin masandaki her nesneyi tutabilir mi? Bir şişe kapağı, bir kalem ve bir topu düşün. Üçü de farklı kalınlıkta. Gripperin belli bir açıda kapanıyor. Sence o açı üçünü de aynı sağlamlıkta tutar mı, yoksa biri için çok mu sıkı, biri için çok mu gevşek olur?
Kısa bir tahmin yap ve yanındaki arkadaşına söyle: Hangi nesneyi tutmak en zor olur? Neden? Cevabını aklında tut; birazdan gerçek nesnelerle sınayacaksın.
Üç nesne, üç açı (20 dk)
Şimdi robotunu çalıştır. Telefonu robotun WiFi ağına bağla, tarayıcıda Driver Station'ı aç, kumandanı tanıt, Init ve Start'a bas. Gripperin butonlarla açılıp kapanıyor olmalı. Bu dersin işi, komut vermek değil; doğru açıyı avlamak.
Önündeki üç nesneyi sırayla dene. Her nesne için şu adımı izle:
- Nesneyi gripperin parmakları arasına yerleştir.
- Kapatma butonuna bas.
- Robotu hafifçe kaldır ya da nesneyi nazikçe çekmeye çalış. Düşüyor mu, kayıyor mu, yoksa sağlam mı duruyor?
Büyük ihtimalle şunu göreceksin: geçen dersteki tek kapanma açısı üç nesnenin hepsine uymuyor. Kalın bir şişe kapağı için parmaklar tam kapanamadan kapağa değer; ince bir kalem için ise parmaklar kalemin etrafında boşta kalır ve kalem kayar.
Çözüm, her nesne için kapanma açısını değiştirip denemek. Kodunda gripperi kapatan satır şudur:
if (js.getA()) servoAci(20.0f); // kapat: bu acidaki 20'yi degistirerek dene
if (js.getB()) servoAci(110.0f); // ac
servoAci(20.0f) satırındaki 20 sayısı, parmakların ne kadar kapandığını belirler. Sayı küçüldükçe parmaklar daha çok kapanır (daha sıkı), büyüdükçe daha az kapanır (daha gevşek). Her nesne için bu sayıyı değiştir, kodu tekrar yükle ve test et. Bulduğun değeri kâğıda not et.
| Nesne | Denediğin kapanma açısı | Sağlam tuttu mu? |
|---|---|---|
| Şişe kapağı | ... | ... |
| Kalem | ... | ... |
| Top | ... | ... |
Top en zorlusu olabilir: yuvarlak olduğu için parmaklar onu sıkıştırdığında yanlara kaçmaya çalışır. Topu tutabilmek için parmakların onu tam sarması, yani belki daha küçük bir açı gerekebilir. Ama dikkat: açıyı gereğinden çok küçültürsen servo, kapanamayacağı bir yere gitmeye zorlanır. Bir sonraki bölümde bu zorlanmayı tanıyacaksın.
Kavrama açısı ve zorlanan servo (7 dk)
Az önce keşfettiğin şeyin bir adı var: her nesnenin kendine göre bir kavrama açısı vardır. Kavrama açısı, parmakların o nesneyi ne düşürecek kadar gevşek ne de ezecek kadar sıkı, tam kavradığı açıdır. Kalın nesne için parmaklar erken durur (büyük açı), ince nesne için daha çok kapanır (küçük açı). Tek bir "doğru açı" yoktur; nesneye göre değişir. Bu yüzden gerçek robot kollarında da tutulacak parçaya göre kavrama ayarı yapılır.
Bir de şunu duymuş olabilirsin: parmaklar bir nesneye tam oturunca ya da açı çok küçük olunca servo inler. Hafif bir vınlama, titreme ya da ısınma. Bu ses tesadüf değil; servonun sana verdiği bir işarettir. Servo, sen söylediğin açıya gitmeye çalışır. Ama nesne ya da parmaklar onu durduruyorsa, servo o açıya ulaşamadan takılır ve gitmek istediği yere gitmek için gücünü artırır. Güç arttıkça çektiği akım artar, motor ısınır ve o inleme sesi çıkar.
Bu, güvenlik açısından önemli. Servoyu uzun süre inler halde bırakma: ısınır, yıpranır ve fazla akım çeker. Kural şudur: servo inliyorsa, açı o nesne için fazla sıkıdır. Açıyı bir iki derece büyüt (parmakları biraz gevşet), inleme kesilene kadar. Amaç, nesneyi tutan ama servoyu zorlamayan açıyı bulmak.
Düşürmeden taşı (15 dk)
Bir nesneyi tutmak yarısı. Asıl iş, onu düşürmeden taşımak. Şimdi sürüşü ve gripperi birlikte kullanacaksın.
Bir görev kur: masanın bir ucuna başlangıç, öbür ucuna hedef koy. Görev şu:
- Nesneyi gripperine ver ve kapatma butonuyla kavra.
- Robotu sürerek masanın öbür ucuna götür.
- Hedefe varınca açma butonuna bas ve nesneyi bırak.
İlk denemende nesne yolda düşerse şaşırma; bu testin amacı da bu. Şu soruyu sor: Neden düştü? Genelde iki sebepten biridir:
- Açı biraz gevşekti: durunca tutuyordu ama robot hareket edince sarsıntı nesneyi kaydırdı. Çözüm: kapanma açısını bir iki derece küçült (biraz daha sıkı), ama servo inlemesin.
- Çok hızlı sürdün: ani kalkış ve duruşlar nesneyi fırlatır. Çözüm: joystick'i yumuşak it, yavaş sür.
Aynı üç nesneyle taşıma testini tekrarla. Not defterine ekle: her nesne için hem tutan hem de taşırken düşürmeyen açıyı bul. Çoğu zaman bunlar aynı değildir; taşıma açısı, duran halde tutma açısından biraz daha sıkıdır çünkü hareket sarsıntı ekler.
Başardığında elinde değerli bir şey olur: kendi robotun için, her nesneye göre çalışan bir kavrama açısı tablosu. Bu, tahmin değil; senin ölçüp bulduğun gerçek değerler.
Ne öğrendin, sorun nasıl bulunur (7 dk)
Kısa bir öz-kontrol. Cevaplarını içinden söyle:
- Kalın bir nesne için kapanma açısını büyütür müsün küçültür müsün?
- Servo inlemeye başladı. Bu ne demek, ne yaparsın?
- Nesne durunca tutuluyor ama robot hareket edince düşüyor. İlk denenecek iki şey nedir?
Gripperle çalışırken sık karşılaşılan üç sorun ve nereden başlayacağın:
| Belirti | Önce şuna bak | Neden |
|---|---|---|
| Servo titriyor, yerinde duramıyor | Besleme | Servo, kartın kendi pininden beslenmemeli; gücünü robotun 5V regülatöründen almalı. Titreme çoğu zaman zayıf besleme işaretidir. |
| Butona basıyorsun ama servo gitmiyor | Sinyal | Turuncu sinyal kablosu GPIO4'te mi, gevşek mi? Kod doğru butonu mu okuyor? Init ve Start yapıldı mı? |
| Servo gidiyor ama nesneyi güçsüz tutuyor, düşürüyor | Açı | Kapanma açısı o nesne için fazla büyük (gevşek). Açıyı küçült; ama servo inleyecek kadar değil. |
Bu üç kelimeyi aklında tut: besleme, sinyal, açı. Bir gripper sorununu neredeyse her zaman bu üçünden biri açıklar. Titriyorsa beslemeye, hiç gitmiyorsa sinyale, tutuyor ama zayıfsa açıya bak.
Günlük hayatta da aynı fikir var. Bir vinç ağır bir konteyneri kaldırırken operatör kavrama kuvvetini yüke göre ayarlar; bir robot kolu fabrikada yumurta ile tuğlayı aynı sıkılıkta tutmaz. Sen de bugün tam bunu yaptın: nesneye göre kavrama.
Erken bitirdiysen (ek görev)
- Üçüncü açı ekle: Şu an iki butonun var (aç ve kapat). Koduna üçüncü bir buton ekle; örneğin
if (js.getX()) servoAci(60.0f);satırıyla "yarı açık" bir konum yap. Böylece büyük ve küçük nesneler için iki ayrı kavrama açın olur, tek bir kapatma yerine. - Kör test: Bir arkadaşın gözlerini kapatsın, sen bir nesne seç. Arkadaşın sadece servo sesini ve gripperin duruşunu dinleyerek "bu açı bu nesne için sıkı mı, gevşek mi?" tahmininde bulunsun. Servonun sana anlattığı dili ne kadar iyi okuyabiliyorsunuz?
- En zor nesne: Masanda kavraması en zor nesneyi bul (çok kaygan, çok yuvarlak ya da çok ince). Onu düşürmeden 30 saniye taşıyabilecek açıyı bulabilir misin?