İçeriğe geç

Menü

Berk Akademi
Birebir ders başvurusu Ücretsiz ön görüşme Ana Sayfa

Çizgi İzleyen Robot Mantığı Nasıl Kurulur? Sensör ve Motor Kararı

cizgi-izleyen-robot-mantigi-nasil-kurulur-sensor-ve-motor-karari
Bu yazıda neler var?
  1. Sensör bilgisi motor kararına nasıl dönüşür?
  2. 0 ve 1 değerleri sensörde ne anlama gelir?
  3. İki sensör için dört durumlu karar tablosu nasıl kurulur?
  4. Kalibrasyon ve motor komutları kodda nasıl uygulanır?
  5. Saha testinde çizgi kaybı ve kesişim nasıl ayrılır?
  6. Sık Sorulan Sorular

Çizgi izleyen robot mantığı, sensörlerin çizgiye göre konumunu okuyup bu bilgiyi motorların hız ve yön kararına dönüştürme düzenidir. Robot, sensörlerden gelen bilgiyi önce anlamlı bir duruma çevirir, ardından çizgiyi yeniden merkeze almak için motorlardan birini yavaşlatır, diğerini hızlandırır veya yön değiştirir. Uygulanabilir sıra, karar kuralını kurmak, sensörleri kalibre etmek ve robotu gerçek zeminde test etmektir.

Sensör bilgisi motor kararına nasıl dönüşür?

İki sensörlü düzende biri robotun sol tarafını, diğeri sağ tarafını temsil eder. Ham sensör değerleri motorlara doğrudan verilmez. Önce bu değerler “çizgi solda”, “çizgi sağda” veya “özel olarak ele alınması gereken durum” gibi anlamlı durumlara çevrilir. Sol sensör çizgiyi, sağ sensör zemini görüyorsa temel hedef robotu sola yaklaştırmaktır. Tersi durumda sağa düzeltme yapılır. Bu düzeltme, bir motoru yavaşlatıp diğerini hızlandırmakla veya uygun yönde dönme komutu vermekle sağlanabilir.

Motorların fiziksel yönü ve sensörlerin robot üzerindeki konumu değişebildiği için bu karar hazır bir ezber olarak kullanılmamalıdır. Sensörlerin sol ve sağ yerleşimi, motorların ileri kabul ettiği yön ve sensörlerin çizgiye olan uzaklığı birlikte kontrol edilmelidir. Her iki sensörün aynı ham değeri vermesi de otomatik olarak “düz git” anlamına gelmez. Bu durumun yorumu, sensör aralığına ve çizginin zemindeki görünümüne göre sonraki karar tablosunda belirlenir.

Çizgi izleyen robotun temel algoritması, sensör konumunu motor düzeltmesine dönüştüren bir karar tablosudur.

Bu yaklaşım üç aşamada ilerler. Karar aşamasında sensör okumaları anlamlı durumlara çevrilir. Kalibrasyon aşamasında çizgi ve zemin üzerindeki gerçek okumalar karşılaştırılır, gerekiyorsa mantıksal eşleşmeler veya eşik değerleri düzenlenir. Saha testi aşamasında motor komutlarının gerçek zeminde beklenen yöne tepki verip vermediği incelenir. Böylece sorun, yalnızca motorların çalışıp çalışmadığıyla değil, sensör bilgisinin doğru karara dönüşüp dönüşmediğiyle değerlendirilir.

Algoritmik durumları küçük ve açık koşullara ayırmak, motor kararını takip etmeyi kolaylaştırır. Bu düşünme biçimini farklı problem durumları üzerinde denemek için Algoritmik Düşünme Testi kullanılabilir. Buradaki amaç yalnızca doğru sonucu bulmak değil, bir durumun hangi koşulla sonraki karara bağlandığını görünür hâle getirmektir.

0 ve 1 değerleri sensörde ne anlama gelir?

0 ve 1 değerleri sensörde ne anlama gelir?

Dijital sensör okumasındaki 0 ve 1, sensörün mikrodenetleyiciye ilettiği iki ham mantıksal durumdur. Bunlardan biri otomatik olarak siyah çizgi, diğeri beyaz zemin anlamına gelmez. Sensörün çıkışı aktif düşük ise algılanan koşul düşük seviye, yani 0 ile gösterilebilir. Aktif yüksek davranışta ise aynı koşul yüksek seviye, yani 1 ile ifade edilir. “Aktif” değer, çizgi algılama koşuluna hangi mantık seviyesinin karşılık geldiğini anlatır; çizginin rengini tek başına belirlemez.

Çıkış türünü de ayırt etmek gerekir. Dijital çıkış iki ayrık mantık durumu sunarken analog çıkış bir ölçüm değeri veya değer aralığı sunabilir. Analog okumayı çizgide ya da çizgi dışında şeklinde kullanmak için gözlenen değerler arasında bir eşik belirlenir. Arduino dokümantasyonunda dijital okuma ve analog okuma ayrı işlevlerle ele alınır; bu ayrım, ham değeri önce anlamlandırıp sonra motor kararına aktarmayı gerektirir.

Çizgideki ve zemindeki değer nasıl doğrulanır?

Kalibrasyonun ilk adımında sol sensörü çizginin üzerine getirip gördüğü ham değeri not et. Ardından aynı sensörü çizgi dışındaki zemine al ve ikinci değeri kaydet. Aynı işlemi sağ sensör için de tekrarla. Böylece her sensör için iki gözlem elde edilir: çizgideki değer ve çizgi dışındaki değer. Analog çıkışta tek bir sayı yerine bu iki konumdaki değer aralıklarını not etmek daha açıklayıcıdır.

Örneğin her iki sensör çizgi üzerindeyken 0, zemin üzerindeyken 1 veriyorsa, normalleştirilmiş durumda çizgiyi 1, çizgi dışını 0 kabul edebilirsin. Çizgide 1, zeminde 0 görülüyorsa bu eşleşme zaten aynı anlam düzenindedir. Sonraki karar tablosunda ham değerleri değil, leftOnLine ve rightOnLine gibi çizgi durumunu açıkça anlatan değişkenleri kullanmak daha anlaşılır olur.

Sensörlerin sol ve sağ yerleşimi değişirse veya sensörler çizgiye farklı yönden bakarsa, çizgide ve zeminde elde edilen eşleşmeleri yeniden kontrol et. Önceki yerleşime ait 0 ve 1 yorumunu yeni düzene otomatik olarak taşımak, doğru sensör bilgisinin yanlış motor kararına dönüşmesine yol açabilir.

İki sensör için dört durumlu karar tablosu nasıl kurulur?

İki sensör için dört durumlu karar tablosu nasıl kurulur?

Karar tablosu, sensör okumasını motor komutuna çevirir. Önce değeri normalize et: 1 çizgi algılandı, 0 çizgi algılanmadı. Aşağıdaki başlangıç modeli, sensörlerin soldan sağa yerleştiğini ve 1,1 durumunun düz ilerleme olduğunu kabul eder.

Sol sensör Sağ sensör Normalize edilmiş durum Motor kararı Beklenen davranış
1 1 İkisi çizgide Sol ve sağ motor temel hızda Düz ilerleme
1 0 Yalnız sol çizgide Sol motoru azalt, sağ motoru artır Sola düzeltme
0 1 Yalnız sağ çizgide Sol motoru artır, sağ motoru azalt Sağa düzeltme
0 0 Hiçbiri çizgide değil İki motoru durdur Çizgi kaybı

İki sensör çizgide: İki sensör de çizgiyi gördüğünde motorlara eşit temel komut verilir. Bu, parkurun normal ve düz devam ettiği varsayılan okumadır.

Yalnız sol sensör çizgide: Sol motor azaltılıp sağ motor artırılırsa robot sola doğru yönelir. Amaç, çizgiyi yeniden iki sensörün arasındaki hedef konuma taşımaktır.

Yalnız sağ sensör çizgide: Bu kez sağ motor azaltılır, sol motor artırılır ve robot sağa doğru düzeltilir. Motorların fiziksel yönü ters bağlıysa bu eşlemenin sahada yeniden kontrol edilmesi gerekir.

Hiçbiri çizgide değil: Temel tabloda bu durum çizgi kaybıdır ve başlangıç kararı durmadır. Parkur sürekliliği biliniyor, ayrıca son düzeltme yönü tutuluyorsa robotun o yöne doğru kısa süreli arama yapması koşullu bir seçenek olabilir. Süre ve yön saha testinde belirlenir.

İki sensörün aynı anda çizgi görmesi bazı kesişimlerde de mümkündür. Bu nedenle 1,1 kararı varsayılan parkur okumasıdır, kesişim için ayrıca bir parkur kuralı gerekir. 0,0 durumunu kendiliğinden kesişim diye adlandırma. Sensörlerin sağ ve sol yerleşimi değişirse tabloyu yeniden kontrol et. Bu koşul mantığını dilden bağımsız pekiştirmek için Algoritmik Düşünme Testi kullanılabilir.

Kalibrasyon ve motor komutları kodda nasıl uygulanır?

Analog çıkışta sensörü önce zemin, sonra çizgi üzerinde gözlemle. İki okuma grubunun arasına başlangıç eşik değerini koy ve gerçek yüzeyde yeniden kontrol et. Dijital çıkışta sensörü zemin ve çizgi üzerinde ayrı ayrı okuyarak hangi durumda HIGH, hangi durumda LOW geldiğini doğrula. Aktiflik tersse yazılım ayarını değiştir.

Motor tarafında temel hız başlangıç komutudur. Düz ilerlemede iki motor eşit değer alır, düzeltmede ise iki değer arasındaki fark kullanılır. Bu örnekte pozitif komut ileri, sıfır durma, sürücü destekliyorsa negatif komut geri yön olarak yorumlanır. Kablolama ve motor sürücüsü düzeni nedeniyle sol ve sağ düzeltmeyi sahada doğrulamak gerekir.

Belirli bir kart ve pin dizilimi seçilmediği için pin sabitleri örnektir. pinMode ile giriş hazırlanır, digitalRead ile değer okunur ve Serial çağrıları kararları seri porta yazdırır. Hedef kartındaki pin ve seri port eşleşmesini kendi kurulumuna göre yapmalısın.

const int LEFT_SENSOR_PIN = 2;
const int RIGHT_SENSOR_PIN = 3;

const bool SENSOR_ACTIVE_HIGH = true;
const int BASE_SPEED = 120;
const int CORRECTION = 35;

int readLineSensor(int pin) {
  int raw = digitalRead(pin);
  int detected = (raw == HIGH) ? 1 : 0;

  return SENSOR_ACTIVE_HIGH ? detected : 1 - detected;
}

void setMotorCommand(int leftCommand, int rightCommand) {
  Serial.print("Sol: ");
  Serial.print(leftCommand);
  Serial.print(" | Sag: ");
  Serial.println(rightCommand);
}

void setup() {
  pinMode(LEFT_SENSOR_PIN, INPUT);
  pinMode(RIGHT_SENSOR_PIN, INPUT);
  Serial.begin(9600);
}

void loop() {
  int left = readLineSensor(LEFT_SENSOR_PIN);
  int right = readLineSensor(RIGHT_SENSOR_PIN);

  if (left == 1 && right == 1) {
    setMotorCommand(BASE_SPEED, BASE_SPEED);
  } else if (left == 1 && right == 0) {
    setMotorCommand(BASE_SPEED - CORRECTION, BASE_SPEED + CORRECTION);
  } else if (left == 0 && right == 1) {
    setMotorCommand(BASE_SPEED + CORRECTION, BASE_SPEED - CORRECTION);
  } else {
    setMotorCommand(0, 0);
  }

  delay(100);
}

Beklenen çıktı: 1,1 için Sol: 120 | Sag: 120, 1,0 için Sol: 85 | Sag: 155, 0,1 için Sol: 155 | Sag: 85, 0,0 için Sol: 0 | Sag: 0. Bu kod gerçek motor pinlerini sürmez, yalnızca kararları seri porta yazdırır.

İlk saha testinde seri çıktıyı robotun fiziksel yönüyle karşılaştır. Sol düzeltme robotu sağa götürüyorsa sensör yönünü, motor kablolarını veya komut eşlemesini yeniden değerlendir. Kod içindeki hızlar örnektir ve belirli bir performans vaadi taşımaz.

Saha testinde çizgi kaybı ve kesişim nasıl ayrılır?

Saha testini tek akışta yürüt: önce ham sensör değerlerini gözlemle, sonra aktiflik yönünü belirle, dört karar satırını elle doğrula ve en son motor tepkilerini parkurun farklı bölümlerinde dene.

  1. Ham değerleri izle: Robotu çizgisiz zemine, yalnızca sol sensörün çizgiyi gördüğü konuma, yalnızca sağ sensörün çizgiyi gördüğü konuma ve iki sensörün birlikte çizgiyi gördüğü konuma yerleştir. 0 ve 1 değerlerinin bu kurulumda çizgiye mi, zemine mi karşılık geldiğini not et.
  2. Karar tablosunu doğrula: Dört satırın her birinde kodun beklenen yön kararını verdiğini kontrol et. Sensör değerleri doğru görünse bile sol ve sağ sensör eşleşmesi ters olabilir.
  3. Motor tepkisini ayarla: Temel motor hızını düşük ve kontrollü bir düzeyde başlat. Dönüşlerde kullanılan düzeltmeyi küçük tutarak robotun çizgiden ne kadar uzaklaştığını gözle. Kart ve motor sürücüsünün komutlara verdiği gerçek tepkiyi kendi düzeneğinde kontrol et.
  4. Parkuru bölümlere ayır: Düz bölüm, sol dönüş, sağ dönüş ve çizgi kaybını ayrı ayrı dene. Bu sırayı karar mantığı üzerine çalışırken Algoritmik Düşünme Testi gibi koşulları ayırmaya dayalı alıştırmalarla da pekiştirebilirsin.

Çizgi kaybında robotu durdurmak, temel ve güvenli bir davranıştır. Arama davranışı ancak parkurun kesintisiz olduğu biliniyor, robot son düzeltme yönünü tutuyor ve aramaya bir süre sınırı konuyorsa değerlendirilebilir. Aksi durumda robot, çizgiyi bulamadığı hâlde hareket etmeye devam edebilir.

İki sensörün aynı anda çizgiyi görmesi otomatik olarak düz ilerleme anlamına gelmez. Bu durum kesişimi, geniş bir çizgiyi veya sensörlerin çizgiye göre farklı bir konumda bulunmasını gösterebilir. İki sensörlü karar tablosu, kesişimde hangi yöne gidileceğini tek başına belirlemeyebilir.

Sensörlerin yeri ya da yönü değişirse sol ve sağ eşleşmesini, 0 ve 1 yorumunu, dört satırlı tabloyu ve dönüş düzeltmelerini yeniden kontrol et.

Sık Sorulan Sorular

Sensör 0 verdiğinde robot çizgiyi mi görüyor, zemini mi?

Bu, sensör modülünün aktiflik yönüne ve kullandığın yüzeye bağlıdır. 0 değerini otomatik olarak çizgi veya zemin diye yorumlama; ham değeri gözlemleyerek kendi kurulumunda belirle.

İki sensör de çizgiyi gördüğünde robot her zaman düz gitmeli mi?

Hayır. İki sensörün birlikte aktif olması kesişim veya geniş çizgi anlamına gelebilir. Bu nedenle düz ilerleme kararı, yalnızca sensör değerine değil, parkurun tasarımına ve izlenecek rotaya göre verilmelidir.

Çizgi kaybolunca robot durmalı mı, arama yapmalı mı?

Durmak, başlangıç için güvenli temel davranıştır. Arama davranışı kullanılacaksa son düzeltme yönü tutulmalı, parkurun sürekliliği bilinmeli ve arama süresi sınırlandırılmalıdır.

Sensörlerin yerini değiştirince karar tablosu yeniden yazılmalı mı?

Evet. Sensörlerin yeri veya yönü değiştiğinde sol ve sağ eşleşmesi, 0 ve 1 değerlerinin anlamı ve motor düzeltmeleri yeniden test edilmelidir.

Çizgi izleyen robotta güvenilir karar, sensörleri okumakla değil, kalibrasyon, karar tablosu ve saha testini birlikte yürütmekle şekillenir.

Bu içerik aradığın cevabı verdi mi?
Yanıtın, hangi yazıları geliştirmemiz gerektiğini anlamamıza yardımcı olur.
Bu içeriğin üretilmesinde yapay zeka araçlarından destek alınmıştır.

Bu konudan sonra ne okuyabilirsin?

Tüm yazılar

İlgili Eğitimler

Berk Keskin, yazılım geliştirici ve eğitmen
Yazar

Berk Keskin Kimdir?

Yazılıma 12 yaşında başladı; İzmir Ekonomi Üniversitesi'ni bölüm birincisi ve yüksek şeref öğrencisi olarak tamamladı. Bugün yalnızca eğitim vermekle kalmıyor, sektörde aktif olarak yazılım projeleri geliştiriyor ve gerçek dünya deneyimini birebir derslerine taşıyor. Ezberden uzak, mühendislik zihniyetini merkeze alan sürdürülebilir öğrenme sistemleri tasarlayarak sorgulayan, üreten ve problem çözebilen yeni nesil yazılımcılar yetiştiriyor.

Sektörel Deneyim & Projeler

  • Ticarify Entegrasyon Yazılım logosu CEO Ticarify Entegrasyon YazılımPazaryerleri ve e-ticaret sitelerine otomatik e-fatura kesimi, sipariş ve kargo takibi hizmetleri sunan e-Dönüşüm platformunun API mimarisini ve yazılım ekibini yönetmektedir.
  • Benim Düğünüm logosu CEO Benim DüğünümDijital etkinlik ve anı paylaşım platformu.
  • Siberdizayn logosu Yazılım Ekibi Lideri SiberdizaynYüksek anlık oyuncu trafiğine sahip oyun kontrol panelleri ve sunucu altyapıları geliştiren yazılım ekibine liderlik etmektedir.
  • MEDYOGRAFYA 360° Dijital Çözümler logosu Dijital Strateji Lideri MEDYOGRAFYA 360° Dijital ÇözümlerŞirketlerin dijital çözümlerde uzun vadede nasıl ilerlemesi gerektiği ve dijital dönüşüm süreçlerinin yönetilmesine destek olmaktadır.
  • İzmir Ekonomi Üniversitesi logosu Danışma Kurulu Üyesi İzmir Ekonomi ÜniversitesiMezun olduğu üniversitesinde, Bilgisayar Programcılığı bölümünün akademik müfredatını güncel sektör ihtiyaçlarına göre şekillendirmek adına Danışma Kurulu'nda görev almaktadır.
WhatsApp Hemen Ara