Ana Sayfa · Akademi · Robotik ve Kodlama · Robotik Sistemler · Robot Kol Mantığı

Robot Kol Mantığı

Servolarla eklemli bir robot kolun bir nesneyi tutup bırakma mantığını öğren.

DERS PUSULASI

Bu sayfayı ne için kullanacaksın?

Ana fikir

Robot kol, her biri bir açıyla kontrol edilen servolardan oluşur; doğru sırayla açıları değiştirdiğimizde kol bir nesneyi tutup başka bir yere bırakabilir.

Üretilecek kanıt

Bu uygulamayı bir robot kolun olmadan da yapabilirsin; amaç mantığı kurmaktır. Kağıda dört eklem yaz: taban, omuz, dirsek, kıskaç. Masanın soluna bir silgi, sağına boş bir kutu koy. Silgiyi alıp kutuya bırakan adımları sözde kod olarak yaz. En az sekiz adım kullan. Her adımın yanına o anki kıskaç durumunu ("açık" / "kapalı") not et. Bir arkadaşına adımları…

Kontrol tuzağı

Kıskacı yanlış zamanda açmak Nesneyi taşırken kıskacı erken açarsan nesne düşer. Kıskaç, ancak kol bırakma noktasına ve doğru yüksekliğe geldikten sonra açılmalıdır. Hareketler arasında beklememek delay koymazsan komutlar üst üste biner ve servo hedefe varamadan yeni açı gelir. Kol sarsılır. Her anlamlı hareketten…

Sonraki bağlantı

Uzaktan Kontrol: Robotu bir düğme, joystick veya telefonla uzaktan yönetmenin mantığı.

Modül kaynakları: Python Tutorial · Arduino Learn

SeviyeBaşlangıç
Yaş10–16
Süre25–35 dk
Ön koşulÇizgi İzleme
İçerikStandart ders · 1.331 kelime
Son güncelleme

Bir cümlelik özet

Robot kol, her biri bir açıyla kontrol edilen servolardan oluşur; doğru sırayla açıları değiştirdiğimizde kol bir nesneyi tutup başka bir yere bırakabilir.

Neden önemli?

Fabrikalarda kutuları taşıyan, laboratuvarda tüpleri yerleştiren, hatta uzay istasyonunda parça tutan makinelerin çoğu birer robot koldur. Karmaşık gibi görünseler de temel fikir çok tanıdıktır: her eklem bir açıyla döner, hareketler ise doğru sırayla yapılır.

Önceki derslerde robotun algıla–karar ver–uygula döngüsünü öğrendik. Çizgi izleyen robotta sensör okuyor, karar veriyor ve motorları sürüyorduk. Robot kolda ise "uygula" adımı değişiyor: tekerlek yerine servo motorları belirli açılara getiriyoruz. Bu ders, sıralı hareket mantığını kola taşıyor. Sıralamayı bir kez anladığında, "al ve bırak" (pick and place) yapan gerçek bir sistemin nasıl düşündüğünü de anlamış olacaksın.

Servo nedir ve neden açıyla çalışır?

Sıradan bir DC motor sürekli döner; ona "dur" demezsen dönmeye devam eder. Servo motor ise farklıdır: ona bir açı söylersin, o da miline bağlı kolu tam o açıya getirip orada bekler.

Çoğu küçük hobi servosu 0 ile 180 derece arasında hareket eder. 0 derece bir uç, 180 derece diğer uç, 90 derece tam orta demektir. Servonun içinde küçük bir dişli kutusu ve konumu ölçen bir devre vardır; bu sayede "90 dereceye git" dediğinde kendini oraya ayarlar.

Günlük hayattan örnek: kapı kolu

Bir kapı kolunu düşün. Aşağı bastığında belli bir açıya iner, bıraktığında geri döner. Servo da buna benzer; sadece açıyı sen belirlersin ve servo o açıda sabit durur. "Biraz döndür" değil, "35 dereceye getir" dersin. Bu, algoritma dersindeki "açık komut" kuralının aynısıdır: belirsiz değil, kesin.

Günlük hayattan örnek: kolun eklemleri

Kendi kolunu kaldırıp bir bardağı al. Farkında olmadan omuz, dirsek ve bilek açılarını ayrı ayrı ayarladın. Robot kol da tam olarak böyle düşünür. Her eklem bir servodur ve her servonun kendi açısı vardır.

Eklemli kol: her eklem bir açı

Basit bir robot kolu birkaç eklemden oluşur. Tipik bir eğitim kolunda şu eklemler bulunur:

Kolun ucundaki tutucuya uç işlevci (İngilizcesi "end effector") denir. Bizim örneğimizde bu bir kıskaçtır: açık olduğunda nesneyi bırakır, kapalı olduğunda tutar.

Kolun o anki duruşunu bir açı listesi olarak yazabiliriz. Örneğin:

taban   = 90 derece
omuz    = 60 derece
dirsek  = 120 derece
kıskaç  = açık (0 derece)

Bu dört sayı, kolun uzayda tek bir duruşunu tam olarak tanımlar. Sayıları değiştirdiğimizde kol yeni bir duruşa geçer. İşte robot kolu programlamak, aslında bu açı listelerini doğru sırayla değiştirmektir.

"Al ve bırak" mantığı: hareketleri sıraya dizmek

Bir nesneyi bir noktadan alıp başka bir noktaya bırakmaya al-bırak (pick and place) denir. Bunu tek bir sıçramada yapamayız; küçük ve sıralı adımlara böleriz. Tıpkı algoritma dersindeki gibi: doğru adımlar, doğru sırada.

Bir kalemi soldan alıp sağa bırakmak isteyelim. Mantığı önce sözde kodla yazalım:

Başla
Kıskacı aç
Kolu kalemin üstüne getir (taban ve omuz açılarını ayarla)
Omuzu indir, kıskacı kalemin hizasına getir
Kıskacı kapat        # kalem artık tutuluyor
Omuzu kaldır         # kalemi yukarı al
Tabanı sağa çevir    # kalemi yeni noktaya taşı
Omuzu indir          # bırakma yüksekliğine gel
Kıskacı aç           # kalem serbest kalır
Kolu güvenli duruşa döndür
Bitir

Bu adımların sırası çok önemlidir. Kıskacı kapatmadan omuzu kaldırırsan kalem yerinde kalır. Omuzu indirmeden kıskacı açarsan kalem yüksekten düşer. Sıra bozulursa görev başarısız olur; bu, "doğru sırada olmalı" kuralının robot koldaki karşılığıdır.

Neden her hareketin arasında beklemek gerekir?

Servolar açıya anında ulaşmaz; küçük bir süre gerekir. Kod, bir sonraki komuta geçmeden önce kısa bir süre beklemezse kol hareketi bitmeden yeni komut gelir ve hareket düzensiz olur. Bu yüzden her adımdan sonra küçük bir gecikme koyarız.

Servoyu kodla kontrol etmek

Şimdi mantığı gerçek bir Arduino (C++) örneğine dökelim. Tek bir servoyu 0, 90 ve 180 dereceye götürüp geri getiren küçük bir program:

#include <Servo.h>
Servo omuz;                 // servo nesnesi

void setup() {
  omuz.attach(9);           // servo sinyal ucu 9. pine bağlı
}

void loop() {
  omuz.write(0);            // 0 dereceye git
  delay(700);              // hareketi tamamlaması için bekle
  omuz.write(90);          // ortaya git
  delay(700);
  omuz.write(180);         // diğer uca git
  delay(700);
}

omuz.write(90) komutu servoya "90 dereceye git" der; delay(700) ise "yerine oturması için 700 milisaniye bekle" demektir. Birden fazla servo kullansaydık her biri için ayrı bir Servo nesnesi ve ayrı bir pin tanımlardık.

Servoyu doğrudan Arduino'nun 5V pininden beslemek çoğu zaman yeterli akımı sağlamaz; kol titrer veya Arduino kendini yeniden başlatır. Bu yüzden servolar için ayrı bir pil paketi kullanılır. Arduino ile pil paketinin eksi uçları (GND) birbirine bağlanır; buna ortak toprak denir. Ortak toprak olmadan Arduino'nun gönderdiği sinyal servoya anlamlı gelmez.

Mini uygulama

Bu uygulamayı bir robot kolun olmadan da yapabilirsin; amaç mantığı kurmaktır.

  1. Kağıda dört eklem yaz: taban, omuz, dirsek, kıskaç.
  2. Masanın soluna bir silgi, sağına boş bir kutu koy.
  3. Silgiyi alıp kutuya bırakan adımları sözde kod olarak yaz. En az sekiz adım kullan.
  4. Her adımın yanına o anki kıskaç durumunu ("açık" / "kapalı") not et.
  5. Bir arkadaşına adımları yüksek sesle okut; sen de eline geçmiş gibi hareketi taklit et. Bir adım eksikse silgi düşecek veya kutuya girmeyecektir.

İpucu: "Kıskacı kapat" komutunun, "omuzu kaldır" komutundan önce geldiğinden emin ol. Bir robot kolun varsa, önce tek servoyu yukarıdaki Arduino koduyla test et, sonra hareketleri tek tek ekle.

Sık yapılan hatalar

Kıskacı yanlış zamanda açmak

Nesneyi taşırken kıskacı erken açarsan nesne düşer. Kıskaç, ancak kol bırakma noktasına ve doğru yüksekliğe geldikten sonra açılmalıdır.

Hareketler arasında beklememek

delay koymazsan komutlar üst üste biner ve servo hedefe varamadan yeni açı gelir. Kol sarsılır. Her anlamlı hareketten sonra kısa bir bekleme ekle.

Servoyu Arduino'dan beslemeye çalışmak

Birden fazla servoyu Arduino'nun kendi pininden beslemek genelde yetersizdir. Ayrı pil paketi kullan ve ortak toprağı bağla.

Açı sınırını aşmak

Çoğu hobi servosu yalnız 0–180 derece arası çalışır. write(200) gibi bir değer vermek servoyu zorlar veya dişlileri yıpratır. Açıları bu aralıkta tut.

Ortak toprağı unutmak

Arduino ve pil paketinin GND uçlarını birbirine bağlamazsan servo düzgün çalışmaz veya hiç hareket etmez.

Güvenlik notu

Hareket eden bir robot kol güvenli görünse de dikkat ister. Eklemler ve dişliler parmak, saç ve kablo sıkıştırabilir.

Ders özeti

Kontrol soruları

  1. Servo motor ile sıradan bir DC motor arasındaki temel fark nedir?
  2. Bir robot kolun duruşunu neyle tanımlarız?
  3. "Al ve bırak" görevinde kıskaç ne zaman kapatılmalıdır: nesneyi kaldırmadan önce mi, sonra mı?
  4. Servolar arasında neden delay (bekleme) koyarız?
  5. Servoları neden Arduino yerine ayrı bir pil paketinden besleriz ve "ortak toprak" ne demektir?

Cevaplar

  1. Sıradan DC motor sürekli döner; servo ise kendisine söylenen belirli bir açıya gider ve orada durur.
  2. Her eklemin açısını içeren bir açı listesiyle (örneğin taban 90, omuz 60, dirsek 120, kıskaç açık) tanımlarız.
  3. Nesneyi kaldırmadan önce; yani kıskaç kapanıp nesne tutulduktan sonra kol yukarı alınır. Erken açılırsa nesne düşer.
  4. Servo hedef açıya anında varmaz; delay olmadan yeni komut hareket bitmeden gelir ve kol sarsılır.
  5. Çünkü Arduino'nun pini birden fazla servoya yeterli akım veremez; ayrı pil paketi kullanılır. Ortak toprak, Arduino ile pil paketinin eksi (GND) uçlarının birbirine bağlanmasıdır; sinyalin servoya doğru ulaşması için gereklidir.

Kaynak ve doğrulama notu

“Robot Kol Mantığı” dersi için doğrulama odağı Servo nedir ve neden açıyla çalışır? ile Günlük hayattan örnek: kolun eklemleri arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Robot davranışı yalnız kodla açıklanamaz; mekanik yapı, güç sistemi, sensör konumu ve zemin koşulları birlikte değerlendirilmelidir. Test sonuçları aynı parkurda birkaç tekrar yapılarak kaydedilmelidir.

Sonraki ders

Uzaktan Kontrol: Robotu bir düğme, joystick veya telefonla uzaktan yönetmenin mantığı.

Quiz’i BaşlatRobotik Sistemler bölümüne dön
SORU HAVUZU

Bu dersi 10 soruyla pekiştir

Bu ders için 20 soruluk bir havuz hazırlandı. Her başlangıçta 10 soru ve seçenekler yeniden karıştırılır.