Çizgi İzleme

İki çizgi sensörüyle bir çizgiyi takip etmenin kontrol mantığını öğren.

DERS PUSULASI

Bu sayfayı ne için kullanacaksın?

Ana fikir

Çizgi izleme, robotun iki kızılötesi sensörle zemindeki koyu bir çizgiyi görüp sol ve sağ motor hızlarını ayarlayarak o çizgi boyunca ilerlemesidir.

Üretilecek kanıt

Malzeme ile ya da tamamen kâğıt üstünde yapabileceğin bir alıştırma. Beyaz bir kartona siyah bantla yumuşak kıvrımlı bir yol çiz. Keskin köşe yerine yay kullan; keskin dönüşleri basit robotlar kaçırır. Aşağıdaki tabloyu doldur: robot her durumda ne yapmalı? Her satır için sol motor ve sağ motor hızını "hızlı / yavaş / dur" olarak yaz. Sol sensör Sağ sensör…

Kontrol tuzağı

Sensör mantığını ters kabul etmek Her modül 1 ve 0 değerlerini aynı vermez. Kimi modül çizgide 1 , kimi 0 verir. Kod yazmadan önce sensörü çizgi üstünde ve beyazda test edip hangi değeri verdiğini not et. Sol/sağ dönüşü karıştırmak Sol sensör çizgiyi görünce sola dönmek ilk anda ters gelir. Robot fiziksel olarak…

Sonraki bağlantı

Robot Kol Mantığı: Eklemli bir robot kolun her ekleminin nasıl kontrol edildiğini ve bir nesneyi tutup bırakma adımlarını inceliyoruz.

Modül kaynakları: Python Tutorial · Arduino Learn

SeviyeBaşlangıç
Yaş10–16
Süre30–45 dk
Ön koşulEngel Algılama
İçerikStandart ders · 1.588 kelime
Son güncelleme

Bir cümlelik özet

Çizgi izleme, robotun iki kızılötesi sensörle zemindeki koyu bir çizgiyi görüp sol ve sağ motor hızlarını ayarlayarak o çizgi boyunca ilerlemesidir.

Neden önemli?

Önceki derslerde robotun önündeki engeli mesafe sensörüyle algılamayı öğrendik. Şimdi robotu bir adım öteye taşıyoruz: robot yalnız durmayacak, kendisine çizilmiş bir yolu takip edecek.

Çizgi izleme, robotik yarışmalarının en klasik görevidir. Ama sadece yarışma için değil; fabrikalarda kutu taşıyan robotlar ve depolarda raf arasında dolaşan araçlar da benzer mantıkla yerdeki işaretleri izler.

Bu ders, bütün modülün özünü bir arada gösterir: algıla – karar ver – uygula döngüsü. Sensör çizgiyi algılar, program bir karar verir, motorlar bu kararı harekete çevirir.

Kızılötesi çizgi sensörü nasıl çalışır?

Işığı yansıtan ve yutan yüzeyler

Kızılötesi (IR) çizgi sensörü, zemine görünmez bir kızılötesi ışık gönderir ve geri yansıyan ışığı ölçer. İşin sırrı yüzeyin rengindedir:

Yani sensör aslında rengi değil, yansıyan ışık miktarını ölçer. Bir el fenerinin beyaz kâğıtta parlak, siyah kadifede sönük görünmesi gibi.

Çoğu çizgi sensörü sonucu basit bir dijital sinyal olarak verir: çizgi üzerindeyse 1, beyaz zemindeyse 0 (bazı modüllerde tam tersi olabilir; kendi modülünü mutlaka test et).

İki sensörle "nerede olduğumuzu" anlamak

Tek sensör çizgiyi görüp göremediğini söyler ama yönü söyleyemez. Bu yüzden robotun ön alt tarafına, çizginin iki yanına gelecek şekilde iki sensör yerleştiririz: biri sol, biri sağ.

İki sensörün dört olası durumu vardır:

İki sensörle "nerede olduğumuzu" anlamak tablosu
Sol sensörSağ sensörAnlamıYapılacak
Çizgi yokÇizgi yokRobot çizginin ortasında, ikisi de beyazdaDüz git
Çizgi varÇizgi yokRobot sağa kaymış, çizgi solda kaldıSola dön
Çizgi yokÇizgi varRobot sola kaymış, çizgi sağda kaldıSağa dön
Çizgi varÇizgi varKavşak veya kalın çizgiÖzel durum

Buradaki mantık ilk bakışta ters gelebilir: sol sensör çizgiyi görüyorsa sola döneriz. Çünkü sol sensör çizgiye değdiyse robot çizgiden sağa doğru kaymış demektir; onu geri ortalamak için sola çekmemiz gerekir.

Dönüşü nasıl yaparız? Motor hızlarını ayarlamak

Robot iki tekerlekli ve her tekerlekte bir motor olduğunu düşünelim. Dönmek için ayrı bir direksiyon yok; bunun yerine iki tekerleği farklı hızlarda döndürürüz.

Bir kürek teknesini hatırla: sağ küreği daha hızlı çekersen tekne sola döner. Robot da aynen böyle çalışır:

Bu yönteme diferansiyel sürüş denir. Sert dönüşlerde bir tekerleği neredeyse durdurur, hatta geri döndürebiliriz; yumuşak düzeltmelerde ise sadece küçük bir hız farkı yeterlidir.

Sözde kod: temel çizgi izleme

Önce mantığı günlük dile yakın sözde kodla yazalım:

Sürekli tekrarla
  sol = sol sensörü oku
  sağ = sağ sensörü oku

  Eğer sol beyaz ve sağ beyaz ise
    iki motoru da orta hızda ileri sür   (düz git)
  Değilse eğer sol çizgi ve sağ beyaz ise
    sola dön (sol motoru yavaşlat)
  Değilse eğer sol beyaz ve sağ çizgi ise
    sağa dön (sağ motoru yavaşlat)
  Değilse
    kavşak veya kayıp durumunu ele al

Bu sözde kod, hangi programlama diline geçersek geçelim aynı kalır. Şimdi onu Arduino diline çevirelim.

Arduino örneği

Aşağıdaki örnek, iki çizgi sensörü ve bir motor sürücüsü (örneğin L298N) kullanır. Motor hızını PWM ile analogWrite üzerinden veriyoruz:

const int SOL_SENSOR = 2;   // sol IR sensör
const int SAG_SENSOR = 3;   // sağ IR sensör
const int SOL_MOTOR  = 5;   // sol motor hız (PWM)
const int SAG_MOTOR  = 6;   // sağ motor hız (PWM)

const int HIZLI = 160;      // 0-255 arası
const int YAVAS = 60;

void loop() {
  int sol = digitalRead(SOL_SENSOR);  // 1 = çizgi görüldü
  int sag = digitalRead(SAG_SENSOR);

  if (sol == 0 && sag == 0) {              // ikisi de beyaz
    analogWrite(SOL_MOTOR, HIZLI);
    analogWrite(SAG_MOTOR, HIZLI);         // düz git
  } else if (sol == 1 && sag == 0) {       // çizgi solda
    analogWrite(SOL_MOTOR, YAVAS);
    analogWrite(SAG_MOTOR, HIZLI);         // sola dön
  } else if (sol == 0 && sag == 1) {       // çizgi sağda
    analogWrite(SOL_MOTOR, HIZLI);
    analogWrite(SAG_MOTOR, YAVAS);         // sağa dön
  }
}

Not: Bu örnek yalnız hız pinlerini gösterir. Gerçek robotta motorun yönünü belirleyen pinleri de (ileri/geri) setup() içinde ayarlaman gerekir. Sensörlerin 1 mi 0 mı verdiğini kendi modülünde ölçmeden bu değerlere güvenme.

Zor durumlar: kavşak ve kaybolma

Gerçek pistlerde iki özel durum robotu şaşırtır.

Her iki sensör de çizgi görüyorsa

Bu genelde bir kavşak ya da kalın bir işaret çizgisidir. Basit bir robotta karar kolaydır: düz devam et. Daha gelişmiş robotlarda önceden verilmiş bir yön kararını uygulayabiliriz.

Hiçbir sensör çizgi görmüyorsa (kaybolma)

Eğer robot çizgiden tamamen çıkarsa iki sensör de beyaz görür. Yukarıdaki basit kodda bu durum "düz git" ile karışır ve robot kaybolur. Bunu çözmenin bilinen bir yolu, son görülen yönü hatırlamaktır:

Eğer iki sensör de beyazsa
  Eğer çizgiyi en son solda gördüysem
    yerinde sola dönerek çizgiyi ara
  Değilse
    yerinde sağa dönerek çizgiyi ara

Yani robot çizgiyi kaybettiğinde rastgele gitmez; en son hangi yöne kaydığını hatırlar ve o yöne dönerek çizgiyi geri bulmaya çalışır. Bir süre hâlâ bulamazsa güvenlik için motorları durdurmak iyi bir fikirdir.

Motoru neden doğrudan Arduino'ya bağlamıyoruz?

Bu, çizgi izleyen bir robotta en sık sorulan sorulardan biri.

Arduino pinleri çok küçük akım verir (pin başına birkaç miliamper). Bir DC motor ise kalkışta yüzlerce miliamper çeker. Motoru doğrudan pine bağlarsan Arduino'yu bozarsın.

Bu yüzden araya bir motor sürücüsü (örneğin L298N) koyarız. Arduino sürücüye "şu hızda ileri git" diye zayıf bir sinyal gönderir; sürücü de asıl gücü ayrı bir pil paketinden motorlara aktarır.

İki önemli kural:

Mini uygulama

Malzeme ile ya da tamamen kâğıt üstünde yapabileceğin bir alıştırma.

  1. Beyaz bir kartona siyah bantla yumuşak kıvrımlı bir yol çiz. Keskin köşe yerine yay kullan; keskin dönüşleri basit robotlar kaçırır.
  2. Aşağıdaki tabloyu doldur: robot her durumda ne yapmalı? Her satır için sol motor ve sağ motor hızını "hızlı / yavaş / dur" olarak yaz.
Mini uygulama tablosu
Sol sensörSağ sensörSol motorSağ motor
beyazbeyaz??
çizgibeyaz??
beyazçizgi??
çizgiçizgi??
  1. Robotun bir an için çizgiden çıktığını hayal et. Yukarıdaki "son yönü hatırla" mantığını üç adımlık bir sözde kodla kendi cümlelerinle yaz.
  2. Robotun sürekli sağa sola sallanarak (zigzag yaparak) ilerlediğini gözlemledin diyelim. Hangi değeri değiştirerek bu sallanmayı azaltabilirsin? (İpucu: HIZLI ile YAVAS arasındaki farka bak.)

Sık yapılan hatalar

Sensör mantığını ters kabul etmek

Her modül 1 ve 0 değerlerini aynı vermez. Kimi modül çizgide 1, kimi 0 verir. Kod yazmadan önce sensörü çizgi üstünde ve beyazda test edip hangi değeri verdiğini not et.

Sol/sağ dönüşü karıştırmak

Sol sensör çizgiyi görünce sola dönmek ilk anda ters gelir. Robot fiziksel olarak dönene kadar hangi yönün doğru olduğunu düşün; gerekirse robotu elinle iterek test et.

Kayıp durumunu unutmak

Sadece üç durumu (düz, sağ, sol) kodlayıp "iki sensör de beyaz" halini "düz git" saymak, robot çizgiden çıkınca onu kaybettirir. Kayıp durumunu ayrıca ele al.

Hızı en yüksek yapmak

Robotu tam hızda çalıştırmak heyecanlı görünür ama hızlı robot dönüşü kaçırır ve çizgiden fırlar. Önce düşük hızda dene, çalıştıktan sonra hızı azar azar artır.

Motoru ayrı güçle beslememek

Motorları Arduino'nun 5V pininden beslemeye çalışmak en sık görülen elektronik hatasıdır. Motorlar ayrı pil paketinden beslenmeli, topraklar ortak olmalı.

Güvenlik notu

Ders özeti

Kontrol soruları

  1. Kızılötesi çizgi sensörü siyah çizgi üzerinde neden "az ışık" ölçer?
  2. Sol sensör çizgiyi, sağ sensör beyazı görüyorsa robot hangi yöne dönmeli ve neden?
  3. "Diferansiyel sürüş" ile robot direksiyon olmadan nasıl döner?
  4. İki sensör de beyaz gördüğünde robotun çizgiyi kaybetmemesi için hangi bilgiyi hatırlaması gerekir?
  5. DC motoru neden doğrudan Arduino pinine bağlamak yerine motor sürücüsü ve ayrı pil kullanırız?

Cevaplar

  1. Çünkü koyu yüzeyler kızılötesi ışığın çoğunu yutar; sensöre geri yansıyan ışık az olur ve sensör bunu "çizgi üzerindeyim" olarak yorumlar.
  2. Sola dönmeli. Sol sensör çizgiye değdiyse robot çizgiden sağa kaymış demektir; sola dönerek çizgiyi tekrar ortalar.
  3. İki tekerleği farklı hızlarda döndürerek. Bir taraf yavaşlayıp diğeri hızlı dönünce robot yavaş dönen tekerlek yönüne kıvrılır; ayrı bir direksiyon gerekmez.
  4. Çizgiyi en son hangi tarafta (sol/sağ) gördüğünü. Bu yönü hatırlayıp o tarafa dönerek çizgiyi geri arar.
  5. Arduino pinleri motorun çektiği akımı karşılayamaz ve zarar görür. Motor sürücüsü zayıf kontrol sinyalini alıp gücü ayrı pil paketinden aktarır; ortak toprak sayesinde iki devre aynı sıfır noktasında anlaşır.

Kaynak ve doğrulama notu

“Çizgi İzleme” dersi için doğrulama odağı Kızılötesi çizgi sensörü nasıl çalışır? ile İki sensörle "nerede olduğumuzu" anlamak 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

Robot Kol Mantığı: Eklemli bir robot kolun her ekleminin nasıl kontrol edildiğini ve bir nesneyi tutup bırakma adımlarını inceliyoruz.

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.