Ana Sayfa · Akademi · Robotik ve Kodlama · Scratch ile Programlama · Proje: Robot Görev Simülasyonu

Proje: Robot Görev Simülasyonu

Algıla-karar-hareket döngüsünü Scratch'te bir robot görev simülasyonuyla uygula.

PROJE PUSULASI

Bu sayfayı ne için kullanacaksın?

Ana fikir

Bu projede ekranda bir robot kuklası yapıyorum; kukla renk ve dokunma algılayarak karar veriyor, engellerden kaçıyor ve hedefe ulaşıyor. Böylece algoritma modülünde öğrendiğimiz "algıla–karar–hareket" döngüsünü Scratch'te canlandırıyoruz.

Üretilecek kanıt

Projeyi kendi fikrinle büyüt. Şunlardan birini dene: İkinci bir duvar rengi ekle (örneğin kırmızı) ve robot kırmızıya değince farklı bir açıyla dönsün. Bir zaman değişkeni ekleyip robotun hedefe kaç saniyede ulaştığını ölç. Robotu ok tuşlarıyla değil de tamamen kendi kararıyla (otomatik) hedefe ulaştırmayı dene; parkuru zorlaştır ve dönüş açısını ayarla.…

Kontrol tuzağı

Bir programı yazmak yarısı, test etmek diğer yarısıdır. Robotu farklı durumlarda dene: # Test Beklenen sonuç 1 Açık yolda başlat Robot düz ilerler 2 Önüne duvar koy Duvara değince geri döner 3 Yeşil hedefe sür "Ulaştım!" der ve durur Bir hata ve düzeltmesi İlk denememde robot duvarların içinden geçip gitti; hiç geri…

Sonraki bağlantı

Python Temelleri modülü: Blokları bırakıp yazılı kodla tanışıyor, aynı algoritma düşüncesini metin tabanlı bir dilde kurmaya başlıyoruz.

Modül kaynakları: Python Tutorial · Arduino Learn

SeviyeBaşlangıç
Yaş10–16
Süre45–75 dk
Ön koşulProje: Basketbol Atış Oyunu
İçerikProje rehberi · 1.722 kelime
Son güncelleme

Bir cümlelik özet

Bu projede ekranda bir robot kuklası yapıyorum; kukla renk ve dokunma algılayarak karar veriyor, engellerden kaçıyor ve hedefe ulaşıyor. Böylece algoritma modülünde öğrendiğimiz "algıla–karar–hareket" döngüsünü Scratch'te canlandırıyoruz.

Neden önemli?

Gerçek bir robot süpürge duvara çarpınca geri kaçar, bir çizgi izleyen robot siyah şeridi görünce yön düzeltir. Bunların hepsi aynı basit fikirle çalışır: algıla, karar ver, hareket et. Sensör bir şey ölçer, program bir koşulla karar verir, motor buna göre hareket eder. Sonra bu döngü baştan tekrarlanır.

Elimizde henüz gerçek bir robot yok, ama Scratch bu döngüyü ekranda birebir taklit edebilir. Kuklanın Algılama blokları sensör yerine geçer, Kontrol blokları karar verir, Hareket blokları da motor gibi kuklayı taşır. Bu proje bir öğretici simülasyondur; gerçek bir cihaz ürettiğimizi iddia etmiyoruz. Amacımız, bir robotun kafasındaki mantığı gözle görülebilir hâle getirmek. Aynı düşünce ileride gerçek bir robotu programladığımızda da işe yarayacak.

Görevi tanımla: algıla–karar–hareket döngüsü

Kod yazmadan önce robotun görevini net cümlelerle yazalım. Belirsiz bir görev, belirsiz bir program üretir.

Görev tanımı

Robot, sahnenin sol altındaki başlangıç noktasından yola çıkar. Yolda siyah duvarlar vardır. Robot bir duvara değerse geri çekilip yön değiştirir; değmiyorsa ileri gider. Amacı sağ üstteki yeşil hedefe ulaşmaktır. Hedefe değince "Ulaştım!" der ve durur.

Döngüyü kategorilere eşleştir

Döngüyü kategorilere eşleştir tablosu
AdımNe yapar?Scratch kategorisi
AlgılaDuvara/hedefe değiyor muyum?Algılama
Karar verDeğiyorsam ne yapmalıyım?Kontrol ("eğer ... ise")
Hareket etİleri git ya da dönHareket
TekrarlaAynı döngüyü sürdürKontrol ("sürekli tekrarla")

Dikkat et: bu tablo, algoritma modülündeki üç yapı taşının aynısıdır. Sıralama (adımların düzeni), koşul (eğer değiyorsa) ve tekrar (sürekli tekrarla) burada bir robota can veriyor.

Sahneyi ve robotu hazırla

Parkuru çiz

Yeni bir sahne çiz. Fırça aracıyla ekranda siyah çizgilerden birkaç duvar çiz; aralarından geçilecek bir yol bırak. Sağ üst köşeye yeşil dolu bir kare (hedef) koy. Renkler önemli, çünkü robot bu renkleri "görecek".

Robot kuklasını ekle

Kukla kütüphanesinden küçük bir kukla seç (örneğin bir top ya da robot çiz). Boyutunu küçült ki dar yollardan geçebilsin.

Değişkenleri oluştur

Değişkenler kategorisinden iki değişken kur:

Değişkenleri oluştur tablosu
DeğişkenNe tutar?
adim_sayaciRobotun kaç kez ileri gittiği
ulastiHedefe ulaştı mı? (0 ya da 1)

Robotu programla: ana blok dizisi

Şimdi döngüyü kuralım. Aşağıdaki dizi robotun beynidir.

Örnek 1: Temel algıla–karar–hareket

yeşil bayrağa tıklandığında
x: -200 y: -150 konumuna git
90 yönüne dön
adim_sayaci değişkenini 0 yap
ulasti değişkenini 0 yap
sürekli tekrarla
  eğer <renge [siyah] değiyor mu?> ise
    -15 adım git
    30 derece sağa dön
  değilse
    5 adım git
    adim_sayaci değişkenini 1 artır

Bu döngü her karede tek bir soru sorar: "Siyaha değiyor muyum?" Değiyorsa robot 15 adım geri çekilir ve 30 derece döner (karar + hareket). Değmiyorsa 5 adım ileri gider ve sayacı bir artırır. İşte algıla–karar–hareket döngüsü tam olarak budur.

renge [siyah] değiyor mu? bloğu Algılama kategorisinde ve altıgen şeklindedir; cevabı "doğru" ya da "yanlış" olur. Rengi bloğun üzerindeki kareye tıklayıp ekrandaki duvardan damlalıkla seçmelisin.

Örnek 2: Hedefi de algıla ve dur

Robot sonsuza kadar dolaşmasın; hedefe varınca durmasını istiyoruz. Ana döngünün içine ikinci bir "eğer" ekliyoruz:

yeşil bayrağa tıklandığında
x: -200 y: -150 konumuna git
90 yönüne dön
adim_sayaci değişkenini 0 yap
ulasti değişkenini 0 yap
sürekli tekrarla
  eğer <renge [siyah] değiyor mu?> ise
    -15 adım git
    30 derece sağa dön
  değilse
    5 adım git
    adim_sayaci değişkenini 1 artır
  eğer <renge [yeşil] değiyor mu?> ise
    "Ulaştım!" de
    ulasti değişkenini 1 yap
    dur [bu kukla]

Artık robotun iki duyusu var: siyahı görünce kaçar, yeşili görünce durur. dur [bu kukla] bloğu (Kontrol) sürekli tekrarı bitirir. adim_sayaci sonunda robotun hedefe kaç adımda ulaştığını gösterir; farklı yolları karşılaştırmak için güzel bir ölçü.

Test parkuru ve hata ayıklama

Bir programı yazmak yarısı, test etmek diğer yarısıdır. Robotu farklı durumlarda dene:

Test parkuru ve hata ayıklama tablosu
#TestBeklenen sonuç
1Açık yolda başlatRobot düz ilerler
2Önüne duvar koyDuvara değince geri döner
3Yeşil hedefe sür"Ulaştım!" der ve durur

Bir hata ve düzeltmesi

İlk denememde robot duvarların içinden geçip gitti; hiç geri dönmedi. Beklediğim: siyaha değince geri çekilsin. Gerçekte olan: hiçbir şey algılamadı.

Amaç: Robot siyah duvara değince geri dönsün
Sorun: Robot duvarların içinden geçiyor
Kontrol: "renge değiyor mu?" bloğundaki renk gerçek siyahtan biraz farklı
Düzeltme: Renk karesine tıklayıp damlalıkla tam duvardan renk seç

Renk elle ayarlandığında ekrandaki gerçek renge birebir uymayabilir; o zaman blok hiç "doğru" olmaz. Damlalıkla seçince sorun çözüldü.

İkinci bir sık hata da şu: robot duvarın önünde titreyip takılıyor. Bunun nedeni geri çekilme veya dönüş açısının çok küçük olmasıdır. -15 adım git ve 30 derece dön değerlerini biraz büyütmek robotu köşeden kurtarır.

Sonraki adım: gerçek robota geçiş

Bu simülasyondaki mantık gerçek robotlarda da aynıdır. İleride gerçek bir robotta renge değiyor mu? bloğunun yerini bir çizgi sensörü ya da bir mesafe sensörü alır; adım git bloğunun yerini de bir motor komutu. Karar veren "eğer ... ise" kısmı ise neredeyse hiç değişmez. Yani bugün ekranda kurduğun bu beyin, yarın gerçek bir robotun beynine çok benziyor.

Mini uygulama

Projeyi kendi fikrinle büyüt. Şunlardan birini dene:

  1. İkinci bir duvar rengi ekle (örneğin kırmızı) ve robot kırmızıya değince farklı bir açıyla dönsün.
  2. Bir zaman değişkeni ekleyip robotun hedefe kaç saniyede ulaştığını ölç.
  3. Robotu ok tuşlarıyla değil de tamamen kendi kararıyla (otomatik) hedefe ulaştırmayı dene; parkuru zorlaştır ve dönüş açısını ayarla.

Yaptığın değişikliği tek cümleyle yaz: robot artık ne yapıyor ve neyi daha iyi yapıyor?

Projeyi güçlendirme planı

Proje: Robot Görev Simülasyonu için yalnız çalışan bir gösterim hazırlamak yeterli değildir. İyi bir proje; hedefi, kullanıcıyı, sınırları, test koşullarını ve başarısız denemeleri de görünür kılar. Bu genişletme çalışmasında iki kuklanın mesajlarla sırayla konuştuğu animasyon bağlamını kullanarak çalışan bir Scratch sahnesi, blok düzeni ve test listesi oluştur. Dersin hedefi “Algıla-karar-hareket döngüsünü Scratch'te bir robot görev simülasyonuyla uygula” olsa da proje sayfasında ölçülmemiş bir sonucu kesin başarı gibi yazma.

1. Proje özeti ve kapsam

Önce üç cümle yaz: Çözmek istediğin sorun nedir, bu sorun kimin için önemlidir ve ilk sürüm özellikle neyi yapmayacaktır? Kapsam dışını belirtmek projeyi küçültmez; tamamlanabilir hâle getirir. Görevi tanımla: algıla–karar–hareket döngüsü ile Döngüyü kategorilere eşleştir arasındaki ilişkiyi projenin temel varsayımı olarak yaz ve bu varsayımı hangi testin doğrulayacağını belirt.

2. Kabul ölçütleri

“Proje: Robot Görev Simülasyonu” için kabul ölçütlerini “çalışıyor” gibi belirsiz sözcüklerle bırakma. Süre, mesafe, doğru deneme sayısı, ekran genişliği veya kullanıcı adımı gibi gözlenebilir bir ölçü seç. Ölçüm mümkün değilse en azından üç ardışık denemede aynı davranışın görülüp görülmediğini kaydet.

3. Test matrisi

3. Test matrisi tablosu
TestKoşulBeklenenGerçek sonuçSonraki karar
NormalStandart giriş ve tam bağlantıTemel görev tamamlanırTest sırasında doldurKoru veya küçük iyileştirme yap
SınırEn düşük ya da en yüksek kabul edilen değerSistem kararlı kalırTest sırasında doldurEşiği veya kuralı gözden geçir
HataEksik, yanlış ya da beklenmeyen girişGüvenli ve anlaşılır tepkiTest sırasında doldurHata yönetimi ekle
TekrarAynı koşulda en az üç denemeBenzer sonuçlarTest sırasında doldurTutarsızlığın kaynağını araştır

4. Sürüm günlüğü

“Proje: Robot Görev Simülasyonu” projesinin her sürümü için tarih, değiştirdiğin tek ana karar, değişikliğin nedeni ve test sonucu yaz. İlk sürümün çalışmaması başarısızlık değildir; Görevi tanımla: algıla–karar–hareket döngüsü veya Döngüyü kategorilere eşleştir ile ilgili hangi varsayımın yeniden düşünülmesi gerektiğini gösteren veridir. Görsel kullanırken kişisel bilgi ve özel arka plan ayrıntılarını paylaşma.

5. Sunum ve öz değerlendirme

“Proje: Robot Görev Simülasyonu” projesini iki dakikada anlatacak şekilde hazırlan: sorun, çözüm yaklaşımı, iki kuklanın mesajlarla sırayla konuştuğu animasyon için en önemli test sonucu ve bir sonraki adım. “Tamamlandı” demek yerine hangi kısmın doğrulandığını ve hangi kısmın hâlâ geliştirilmesi gerektiğini açıkla.

Sık yapılan hatalar

"eğer" bloğunu sürekli tekrarla dışına koymak

Robotun sürekli çevresine bakması gerekir. "eğer" bloğunu sürekli tekrarla dışına koyarsan program tek bir kez kontrol eder ve unutur. Kontrolün her karede tekrarlanması için "eğer" mutlaka döngünün içinde olmalı.

Yanlış rengi seçmek

renge ... değiyor mu? bloğunda rengi mutlaka damlalıkla ekrandaki gerçek duvardan seç. Gözünle benzettiğin bir rengi elle ayarlarsan blok hiç "doğru" olmayabilir ve robot engelleri görmez.

Başlangıç konumunu sıfırlamamak

Yeşil bayrağa basınca robotu konuma git bloğuyla başlangıç noktasına döndürmezsen, robot bir önceki denemenin kaldığı yerden başlar. Her testin adil olması için başta konumu ve değişkenleri sıfırla.

Döngüyü durduracak koşulu unutmak

Yalnızca "duvara değince dön" yazıp hedefi kontrol etmezsen robot sonsuza kadar dolaşır. Hedefe değince dur [bu kukla] diyen ikinci koşulu eklemeyi unutma.

Güvenlik notu

Bu proje tamamen ekran üzerinde çalışır, fiziksel bir tehlike yoktur. Yine de iki şeye dikkat et: ekran başında 20 dakikada bir kalkıp gözlerini dinlendir. Scratch sitesinde projeni paylaşırken ad, soyad, okul veya adres gibi kişisel bilgileri yazma; paylaşımlarını herkes görebilir. Bu simülasyonu ileride gerçek bir robota taşırsan pil, motor, kesici alet veya sıcak yüzey içeren her adım bir yetişkin gözetiminde yapılmalı; şebeke elektriğiyle çalışılmaz.

Ders özeti

Kontrol soruları

  1. Robotun temel çalışma döngüsündeki üç adım nedir?
  2. Scratch'te sensörün görevini hangi blok kategorisi üstlenir?
  3. renge [siyah] değiyor mu? bloğunda rengi doğru seçmenin yolu nedir?
  4. "eğer" bloğunu neden sürekli tekrarla bloğunun içine koyarız?
  5. Bu simülasyonu gerçek bir robota taşırsak renge değiyor mu? bloğunun yerini ne alır?

Cevaplar

  1. Algıla, karar ver, hareket et. Robot çevresini ölçer, bir koşulla karar verir, sonra buna göre hareket eder ve döngü baştan tekrarlanır.
  2. Algılama kategorisi. renge değiyor mu?, ... değiyor mu? gibi altıgen bloklar programın gözü kulağı gibidir.
  3. Bloğun üzerindeki renk karesine tıklayıp damlalıkla ekrandaki gerçek duvardan tam o rengi seçerek. Renk elle ayarlanırsa ekrandaki renge uymayabilir.
  4. "eğer" tek başına koşulu bir kez kontrol edip unutur. sürekli tekrarla içinde olduğunda program her karede yeniden bakar; böylece robot çevresini sürekli algılar.
  5. Bir sensör (örneğin çizgi ya da mesafe sensörü). Hareket bloklarının yerini de motorlar alır; karar veren "eğer ... ise" kısmı ise neredeyse aynı kalır.

Kaynak ve doğrulama notu

“Proje: Robot Görev Simülasyonu” dersi için doğrulama odağı Görevi tanımla: algıla–karar–hareket döngüsü ile Döngüyü kategorilere eşleştir arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Blok adları Scratch’in güncel temel kategorileriyle uyumlu tutulmuştur. Proje davranışı; başlangıç, normal oyun, hata ve yeniden başlatma durumlarında ayrı ayrı denenmelidir.

Sonraki ders

Python Temelleri modülü: Blokları bırakıp yazılı kodla tanışıyor, aynı algoritma düşüncesini metin tabanlı bir dilde kurmaya başlıyoruz.

Quiz’i BaşlatScratch ile Programlama 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.