Karar
Sen bir kavşakta ne yaparsın? Sadece "düz git" değil, yolun durumuna göre karar verirsin. Robot bunu nasıl yapar?
Bir robot depo içinde hareket ediyor. Önünde duvar var mı? Sağda geçit var mı? Yükü almış mı almamış mı? Bataryası düşük mü? Her durum farklı bir karar gerektiriyor.
Bu kararları "eğer-ise" zincirleri yerine "durum makinesi" denen bir yapıyla programlamak çok daha temiz. Robot aynı anda sadece bir durumda olur (arıyor, taşıyor, şarj oluyor...) ve bir koşul sağlanınca bir sonraki duruma geçer.
Robotlar kural-tabanlı karar alma ile çalışır: sensör verilerini okur, önceden yazılmış koşulları kontrol eder ve uygun eylemi seçer. Basit robotlar "if-else" zinciri kullanır. Daha karmaşıkları "sonlu durum makinesi" (FSM) kullanır — robot aynı anda sadece bir "durumda" (state) olur ve koşullar sağlandığında durumlar arası geçiş yapar.
🤖 Durum Makinesi — Depo Robotu:
[ARANIYOR] → önde yük var mı? → Evet → [YÜKLÜYOR]
[YÜKLÜYOR] → yük alındı mı? → Evet → [TAŞIYOR]
[TAŞIYOR] → hedefe ulaştı mı? → Evet → [BIRAKÜYOR]
[BIRAKUYOR] → bırakıldı mı? → Evet → batarya < 20%? → Evet → [ŞARJ]
→ Hayır → [ARANIYOR]Trafik ışığı da bir durum makinesi! Kırmızı → Yeşil → Sarı → Kırmızı... Her durum belirli bir süre sonra değişir. Araba ise "trafik ışığı kırmızı mı? → dur, yeşil mi? → git" kuralıyla çalışır.
Sabah okula gidene kadar ne yapıyorsun? Adımları yaz: uyan → alarm çaldı mı? → evet → kalk → kahvaltı hazır mı? → evet → ye → ... Bu da bir durum makinesi!
Bir labirent çözen robot için durum makinesini çiz. Durumlar: ilerle, sol kontrol et, sağ kontrol et, geri dön. Geçiş koşulları ne olmalı?
Durum makinesi (FSM) nedir?