Bir cümlelik özet
Bir robotu güvenilir biçimde test etmek için, her seferinde aynı koşulları sunan güvenli bir parkur kurar, testi yazılı bir senaryo hâline getirir ve sonuçları ölçüp not ederiz.
Neden önemli?
Bir robot kodunu yazdın, motorlar dönüyor, sensör bir şeyler okuyor. Peki robot gerçekten *doğru* çalışıyor mu? Bunu ancak onu deneyerek anlayabilirsin. Ama masanın ortasında, kabloların arasında, her seferinde farklı bir yerden başlatarak yapılan denemeler sana pek bir şey öğretmez. Bir sefer çalışır, bir sefer çalışmaz ve nedenini asla bulamazsın.
İşte bu yüzden robotçular ayrı bir test parkuru hazırlar. Test parkuru, robotun davranışını her defasında aynı koşullarda gözlemleyebildiğin, sınırları belli ve güvenli bir alandır. İyi bir parkur iki şey sağlar: tekrarlanabilirlik (aynı testi tekrar tekrar aynı şekilde yapabilmek) ve güvenlik (hareket eden bir robotun sana, çevrene veya kendine zarar vermemesi).
Bu ders, önceki modüllerden tanıdığın fikirleri bir araya getirir. Otonom sistemlerden robotun kendi kararlarını verdiğini biliyorsun; bir sonraki ders olan Arıza Analizi ise robot beklenmedik davrandığında sorunu bulmayı anlatacak. Ama iyi bir arıza analizi ancak iyi bir teste dayanır. Düzgün bir test parkuru olmadan, "robot neden bocaladı?" sorusuna dürüst bir cevap veremeyiz.
Güvenli ve tekrarlanabilir bir test alanı kurmak
Bir robot bir kâğıt üzerindeki kod değildir; hareket eder, döner, bazen beklenmedik yöne fırlar. Bu yüzden testin ilk kuralı, alanı önceden hazırlamaktır.
Alanı temizle ve sınırla
Test alanını düz, engelsiz ve boş bir zeminde kur. Yerde takılabilecek kablo, dağınık parça veya kırılacak eşya bırakma. Robotun alandan çıkıp masadan düşmesini engellemek için alanın kenarlarına düşük bir bariyer (örneğin kitaplar veya köpük çıtalar) koy. Küçük bir robot için bile 1 metreye 1 metrelik boş bir alan çoğu zaman yeterlidir.
Her testi aynı yerden başlat
Tekrarlanabilirliğin sırrı, başlangıç koşullarını sabitlemektir. Robotu her seferinde tam olarak aynı noktadan, aynı yöne bakacak şekilde bırak. Bunu kolaylaştırmak için zemine bir başlangıç çizgisi ve robotun ön tarafını hizalayacağın bir işaret koyabilirsin.
Düşün: Robotu bir kez sol köşeden, bir kez ortadan başlatırsan ve davranış farklı çıkarsa, bunun sebebi kod mu yoksa başlangıç noktası mı? Bilemezsin. Başlangıç sabitse, değişen tek şey senin denediğin ayardır.
Kısa kural: Bir testte aynı anda yalnızca tek bir şeyi değiştir. Hem başlangıç noktasını hem hızı hem de zemini değiştirirsen, sonucun hangisinden kaynaklandığını ayıramazsın.
Parkuru tasarlamak: çizgi ve engel düzeni
Parkurun nasıl olacağı, robotunun ne yapması gerektiğine bağlıdır. İki yaygın örneğe bakalım.
Örnek 1: Çizgi izleyen robot parkuru
Çizgi izleyen bir robot, zemindeki koyu bir şeridi takip eder. Bu robot için parkuru şöyle kurabilirsin:
- Açık renkli düz bir zemine, koyu renkli (örneğin siyah) elektrik bandıyla bir yol yapıştır.
- Bandın genişliği robotun sensör aralığına uygun olmalı; genelde 2–3 santimetre iyi çalışır.
- Zorluğu adım adım artır: önce düz bir çizgi, sonra geniş bir viraj, en son keskin dönüşler ve bir çatal.
Böylece robotun nerede zorlandığını görürsün. Düz çizgide sorunsuz ilerleyip keskin virajda çizgiyi kaybediyorsa, sorunun dönüş davranışında olduğunu anlarsın.
Örnek 2: Engelden kaçan robot arenası
Engelden kaçan bir robot, mesafe sensörüyle önündeki cisimleri algılar ve çarpmadan yön değiştirir. Bunun için:
- Kenarları bariyerle çevrili, kutu şeklinde bir arena kur.
- İçine hafif, sabit engeller (kutular, silindirler) yerleştir. Ağır veya kırılacak cisim kullanma.
- Engelleri her testte aynı yerlere koy. İşin kolaylaşması için engellerin yerini zemine işaretleyebilirsin.
Aynı düzende üst üste testler yaptığında, robotun her seferinde aynı engelde takılıp takılmadığını görürsün. Bu bilgi, bir sonraki dersteki arıza analizinin başlangıç noktasıdır.
Test senaryosu yazmak ve ölçmek
Parkuru kurmak yeterli değildir; testin kendisini de bir algoritma gibi yazılı hâle getirmek gerekir. Buna test senaryosu denir. İyi bir senaryo üç şeyi net söyler: başlangıç koşulu, yapılacak işlem ve beklenen sonuç.
Test senaryosunu tabloyla planlamak
| Test no | Başlangıç durumu | Yapılan işlem | Beklenen sonuç |
|---|---|---|---|
| 1 | Robot başlangıç çizgisinde, düz zemin | Robotu çalıştır | Çizgiyi 10 saniye boyunca kaybetmeden izler |
| 2 | Robot çizginin başında, önde geniş viraj | Robotu çalıştır | Virajı çizgiden çıkmadan döner |
| 3 | Robot arenada, 20 cm önde engel | Robotu çalıştır | 15 cm'de durur, sağa döner, ilerler |
Bu tablo, otonom sistemler dersinden hatırladığın algıla–karar–hareket mantığının test edilebilir hâlidir. "Beklenen sonuç" sütunu olmadan test yapamazsın; çünkü neyin doğru olduğunu önceden bilmezsen, çıkan sonucun doğru mu yanlış mı olduğunu da söyleyemezsin.
Gözlemi ölçüme dönüştürmek
"Robot iyi gitti" bir gözlemdir ama ölçüm değildir. Ölçüm, karşılaştırılabilir bir sayıdır. Örneğin:
- Robot parkuru kaç saniyede tamamladı?
- 5 denemenin kaçında çizgiyi kaybetmeden bitirdi?
- Engelde ortalama kaç santimetre önce durdu?
Robotun kendi ölçümlerini de kullanabilirsin. Arduino'da sensör değerlerini seri porta yazdırarak, robotun o an *ne gördüğünü* gözlemleyebilirsin:
void loop() {
int mesafe = mesafeSensoruOku(); // sensörden gelen değer, cm
Serial.print("Mesafe: ");
Serial.println(mesafe); // bilgisayarda gözlemlemek için
if (mesafe < 15) { // karar eşiği
motorlariDurdur();
saga_don();
} else {
ileri_git();
}
delay(100); // her turda kısa bekleme
}
Seri porttaki sayıları izlerken, robotun engele "15 cm" derken mi yoksa "8 cm" derken mi durduğunu görebilirsin. Bu sayılar, bir sonraki derste sorunun kaynağını bulmanı çok kolaylaştırır.
Mini uygulama
Elinde çizgi izleyen bir robot olduğunu düşün (ya da hayalinde kur). Şu adımları uygula:
- Bir başlangıç çizgisi ve robotun hizalanacağı bir işaret belirle.
- Bandla üç bölümlü bir parkur yap: düz kısım, geniş viraj, keskin viraj.
- Aşağıdaki gibi bir test senaryosu tablosu yaz. En az üç satır olsun ve her satırda beklenen sonuç bulunsun.
| Test | Başlangıç | İşlem | Beklenen sonuç |
| 1 | ... | ... | ... |
- Aynı testi 5 kez tekrarla ve her seferinde tek bir sonucu not et (örneğin: "çizgiyi kaybetti / kaybetmedi").
- 5 denemeden kaçının başarılı olduğunu bir sayı olarak yaz.
Sonunda kendine şunu sor: Hangi bölümde robot en çok zorlandı? Bu bölüm, üzerinde çalışman gereken ilk yerdir.
Sık yapılan hatalar
Her testi farklı koşulda yapmak
Robotu bir kez halıda, bir kez parkede, farklı noktalardan başlatırsan sonuçlar karşılaştırılamaz. Koşulları sabit tut, yalnızca test ettiğin ayarı değiştir.
Beklenen sonucu yazmadan test etmek
"Bakalım ne olacak" bir test değil, bir gözlemdir. Önce ne olmasını beklediğini yaz; ancak o zaman sonucun doğru mu yanlış mı olduğunu söyleyebilirsin.
Tek denemeye güvenmek
Robot bir kez başardı diye "çalışıyor" demek yanıltıcıdır. Hareketli sistemlerde küçük farklar sonucu değiştirir. Aynı testi birkaç kez tekrarla ve kaçında başarılı olduğunu say.
Ölçüm yerine izlenim not etmek
"Güzeldi", "hızlıydı" gibi ifadeler karşılaştırılamaz. Süre, mesafe veya başarı sayısı gibi bir sayı yaz ki bir sonraki denemeyle kıyaslayabilesin.
Güvenlik notu
Hareket eden bir robot; parmağı, saçı veya kabloyu tekerleklerin ve dişlilerin arasına sıkıştırabilir, masadan düşebilir veya bir cisme çarpabilir. Bu yüzden:
- Test alanını önceden temizle ve kenarlarına düşük bir bariyer koy ki robot kenardan düşmesin.
- Parmaklarını, saçını ve gevşek kabloları dönen tekerleklerden ve dişlilerden uzak tut.
- İlk denemeleri her zaman düşük hızda yap; robotun nasıl davrandığını gördükten sonra hızı kademeli artır.
- Motorları asla doğrudan Arduino pininden değil, ayrı bir düşük gerilimli pil takımı ve motor sürücü üzerinden besle; iki devrenin ortak GND'ye (ortak toprak) bağlı olması gerekir.
- Motor, kesici alet veya lehim söz konusuysa bir yetişkinden yardım iste. Robotu asla şebeke (priz) elektriğiyle çalıştırma.
Ders özeti
- Test parkuru, robotun davranışını her seferinde aynı, güvenli koşullarda gözlemlemeni sağlayan sınırlı bir alandır.
- Tekrarlanabilirlik için başlangıç koşullarını sabitle ve bir testte yalnızca tek bir şeyi değiştir.
- Parkurun tasarımı göreve bağlıdır: çizgi izleme için bantlı bir yol, engelden kaçış için sabit engelli bir arena.
- Test senaryosu; başlangıç durumu, yapılan işlem ve beklenen sonucu yazılı olarak içerir.
- İzlenim yerine ölçüm not et (süre, mesafe, başarı sayısı) ki sonuçları karşılaştırabilesin.
Kontrol soruları
- Bir test parkurunun sağlaması gereken iki temel şey nedir?
- "Tekrarlanabilir test" ne demektir ve bunu sağlamak için başlangıçta neyi sabit tutarız?
- Bir test senaryosunda mutlaka bulunması gereken üç bölüm nedir?
- "Robot iyi gitti" bir ölçüm müdür? Bunun yerine hangi tür bilgiyi not etmeliyiz?
- Motorları neden doğrudan Arduino pininden değil de ayrı bir pil ve motor sürücüden besleriz?
Cevaplar
- Tekrarlanabilirlik (aynı testi tekrar tekrar aynı şekilde yapabilmek) ve güvenlik (hareketli robotun kimseye, çevreye veya kendine zarar vermemesi).
- Testi her seferinde aynı koşullarda yapıp aynı sonucu alabilmektir. Bunun için başlangıç noktasını, robotun baktığı yönü ve zemini sabit tutarız; sadece test ettiğimiz ayarı değiştiririz.
- Başlangıç durumu, yapılan işlem ve beklenen sonuç. Beklenen sonuç olmadan, çıkan sonucun doğru mu yanlış mı olduğunu söyleyemeyiz.
- Hayır, "iyi gitti" bir izlenimdir, ölçüm değildir. Bunun yerine karşılaştırılabilir bir sayı not etmeliyiz: tamamlama süresi, durma mesafesi veya 5 denemenin kaçında başarılı olduğu gibi.
- Motorlar, Arduino pininin güvenle verebileceğinden çok daha fazla akım çeker; bu akımı doğrudan pinden çekmek Arduino'ya zarar verir. Motor sürücü, ayrı pilden gelen gücü güvenli biçimde motorlara aktarır, Arduino ise yalnızca kontrol sinyali gönderir. İki devrenin ortak GND'ye bağlanması şarttır.
Kaynak ve doğrulama notu
“Test Parkuru Hazırlama” dersi için doğrulama odağı Güvenli ve tekrarlanabilir bir test alanı kurmak ile Her testi aynı yerden başlat 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
Arıza Analizi: Robot testte beklenmedik davrandığında, sorunun kaynağını adım adım daraltarak bulmak.