Robotik Kodlamada Algoritma Nedir? Akış Şemaları ve Örnekler
Robotik kodlama dünyasında donanım parçaları ne kadar pahalı, motorlar ne kadar güçlü veya sensörler ne kadar hassas olursa olsun; sistemin kalbinde doğru kurgulanmış bir algoritma yoksa o robot yalnızca bir hurda yığınından ibarettir.
Tarihte algoritma kavramı; 9. yüzyılda cebirin kurucusu kabul edilen büyük İslam bilgini El-Hârizmî (Al-Khwarizmi) tarafından ortaya atılmış ve günümüz bilişim çağının temeli olmuştur. Robotik bağlamında algoritma; bir robotun belirli bir problemi çözmek veya hedeflenen görevi başarıyla tamamlamak için izlemesi gereken sonlu, açık, net ve adım adım sıralanmış mantıksal işlem basamaklarıdır.
Bu kapsamlı rehberde; robotik düşünce yapısını, akış şeması (flowchart) çizim kurallarını, sözde kod (pseudocode) yazımını, otonom robotların karar mekanizmalarını ve C++ kod eşleşmelerini tüm ayrıntılarıyla inceleyeceğiz.
📐 Bir Robotik Algoritmanın 5 Altın Özelliği
Bir algoritmanın robot mikrodenetleyicisine başarıyla yüklenebilmesi için şu 5 temel kriteri karşılaması gerekir:
🔣 Akış Şeması (Flowchart) Standart Sembolleri
Algoritmalar kod yazmaya başlanmadan önce uluslararası standart şekillerle şematize edilir:
| Geometrik Şekil | Standart Sembol Adı | Robotikteki Anlamı ve Kullanım Alanı |
|---|---|---|
| Oval / Yuvarlak Elips | Başla / Bitir (Terminal) | Robotun enerjisinin açılması (setup) veya programın sonu |
| Paralelkenar | Girdi / Çıktı (I/O) | Sensör verisini okuma (digitalRead) veya ekrana yazı basma |
| Dikdörtgen | İşlem / Eylem (Process) | Matematiksel hesaplama, motorlara voltaj verme, değişken atama |
| Eşkenar Dörtgen (Baklava) | Karar / Şart (Decision) | Eğer (If) sorgusu. İki çıkış oku vardır: EVET (Doğru) veya HAYIR (Yanlış) |
| Altıgen | Döngü (Loop / Preparation) | Sayacın belirli sayıda dönmesi (for döngüsü) |
| Ok Çizgileri | Akış Yönü (Flowlines) | Talimatların hangi sırayla işleneceğini gösteren hatlar |
🤖 3 Somut Otonom Robot Algoritması ve Akış Çözümlemesi
1. Algoritma: Engelden Kaçan Robot Karar Mantığı
#### Problemin Tanımı:
Robot tekerlekleriyle ileri doğru giderken önüne 20 cm'den yakın bir nesne çıkarsa çarpmamalı, güvenli bir yöne dönüp seyrine devam etmelidir.
#### Adım Adım Metin Algoritması:
dur()).#### Arduino C++ Kod Karşılığı:
void loop() {
int mesafe = mesafeOku();
if (mesafe <= 20 && mesafe > 0) {
motorDurdur();
delay(100);
motorGeri(180);
delay(200);
motorSagaDon(200);
delay(400);
} else {
motorIleri(200);
}
}
2. Algoritma: 2 Sensörlü Çizgi İzleyen Robot Mantığı
#### Doğruluk Tablosu (Truth Table):
Robotun altındaki iki kızılötesi sensör: Sol Sensör (S) ve Sağ Sensör (R).
(Beyaz zemin = 0, Siyah çizgi = 1)
| Sol Sensör (S) | Sağ Sensör (R) | Durum Analizi | Robotun Yapacağı Eylem |
|---|---|---|---|
| 0 (Beyaz) | 0 (Beyaz) | Çizgi tam iki sensörün ortasında | Düz İleri Git |
| 1 (Siyah) | 0 (Beyaz) | Robot sağa kaymış, çizgi solda kalmış | Sola Dön (Düzeltme Yap) |
| 0 (Beyaz) | 1 (Siyah) | Robot sola kaymış, çizgi sağda kalmış | Sağa Dön (Düzeltme Yap) |
| 1 (Siyah) | 1 (Siyah) | Bitiş çizgisi veya yatay kavşak | Motorları Durdur (Görev Tamamlandı) |
3. Algoritma: Akıllı Yangın Söndürme Robotu
#### Sözde Kod (Pseudocode):
BAŞLA
AlevSensörPin = Giriş
SuMotoru = Çıkış
DÖNGÜ:
Alev = AlevSensörüOku()
EĞER (Alev == VAR) İSE:
RobotuDurdur()
SuPompasiniBaslat()
BEKLE 3 Saniye
SuPompasiniDurdur()
DEĞİLSE:
OdayiDevriyeGez()
DÖNGÜYÜ_TEKRARLA
BİTİR
⚡ Algoritmadan Koda Geçiş: Sözde Kod (Pseudocode) Nedir?
Bir problemi çözerken doğrudan C++ veya Python sözdizimiyle yazmaya başlamak sık sık mantık hatalarına yol açar. Profesyonel mühendisler önce problemi Sözde Kod (Pseudocode) ile kağıda döker. Sözde kod; ne tam günlük dildir ne de tam programlama dilidir. İkisinin arasında, herhangi bir programlama diline 10 dakikada çevrilebilecek yarı yapılandırılmış bir taslaktır.
Örnek Sözde Kod Kalıpları:
EĞER (koşul) İSE ... DEĞİLSE ... -> if (...) { ... } else { ... }SÜREKLİ TEKRARLA ... -> while (true) { ... }SAYAC = 1'DEN 10'A KADAR ... -> for (int i=1; i<=10; i++) { ... }⚠️ Robotik Algoritmalarda En Sık Yapılan 4 Hata
delay(5000) gibi uzun bekletmeler işlemciyi kör eder. Robot 5 saniye boyunca beklerken sensörleri okuyamaz ve bir duvara veya uçuruma doğru son sürat ilerleyebilir. Profesyonel algoritmalar millis() zamanlayıcısıyla yazılır.Mesafe == 15 cm gibi katı eşitlikler robotik dünyasında neredeyse hiç tutmaz. Sensör gürültüsü yüzünden değer 15.2 cm gelebilir. Her zaman Mesafe <= 15 gibi aralıklı mantıklar kurulmalıdır.❓ Sıkça Sorulan Sorular (SSS)
Kod yazmaya başlamadan önce mutlaka akış şeması çizmek gerekir mi?
Küçük deneylerde (LED yakma vb.) şart değildir. Ancak hareketli bir robot, çoklu sensör veya yarışma aracı tasarlarken kağıt üzerinde akış şeması çizmek; mantık hatalarını kod yazmadan önce görmenizi sağlar ve günlerce sürecek hata ayıklama zamanından tasarruf ettirir.
Algoritma ile Kod arasındaki fark nedir?
Algoritma; bir problemin dilden bağımsız mantıksal çözüm fikridir (Örn: "Hava karanlıksa lambayı yak"). Kod ise bu fikrin C++, Python veya Java gibi belirli bir programlama dilinin sözdizimi kurallarıyla bilgisayara yazılmış halidir.
Algoritmik düşünme becerisi nasıl geliştirilir?
Satranç oynamak, Rubik küp çözmek, labirent bulmacaları çözmek ve Scratch üzerinde adım adım küçük oyunlar geliştirmek algoritmik düşünme reflekslerini inanılmaz derecede hızlandırır.