Zemin üzerine çizilmiş bir çizgiyi otonom olarak takip eden robotlardır. Zemin ve çizgi zıt renklerdedir. Genellikle siyah zemin üzerine beyaz çizgi veya beyaz zemin üzerine siyah çizgi çekilir.
Çizgi izleyen robot yapacaklar için faydalı olabileceğini düşündüğüm bir belge hazırladım. Bu belgede size fikir verebilecek, kendi tecrübelerimden derlenen detayları bulabilirsiniz. Bu sayfada da robotu yaparken dikk at etmeniz gereken basamaklara adım adım değineceğim.
Hangi yarışmalara katılacağınız gerçekten büyük önem taşıyor. Yapacağınız robotun tasarımı katılacağınız yarışmanın kurallarına göre değişecektir. O yüzden robotunuzu tasarlamaya başlamadan önce hangi yarışmaya katılacağınızı belirlemelisiniz.
Katılmak istediğiniz yarışmayı belirledikten sonra o yarışmanın kurallarının dikkatli bir şekilde incelenmesi gerekir. Çünkü yapacağınız tasarım ve malzeme seçimleri o yarışmanın kuralları dahilinde olmalıdır. Örn: http://robot.meb.gov.tr/
Çizgi izleyen tasarımında dikkat edilecek en önemli nokta motorlar ile sensörler arasındaki mesafe ve lastikten lastiğe genişlik mesafesidir. F1 araçlarının genişlikleri ile boyları arasındaki oran, yol ile araç arasındaki oran baz alınabilir. Bkz: http://www.formula1.com/inside_f1/rules_and_regulations/technical_regulations/8695/
Malzeme seçimi yaparken özellikle gövde için olabildiğince hafif malzeme seçilmelidir. Malzemeler aşağıdaki ana başlıklar halinde belirlenebilir:
- Gövde
- Motorlar
- Regülatör Devresi
- Motor Sürücü
- Sensörler
- Mikrodenetleyici
- Gövdenin hafif olması amacıyla 3mmlik dekota malzeme.
- Motorlar - 1500 / 2000 rpm
- LM2576 regülatör
- TB6612 Motor sürücü
- QTR-8A Zemin Sensörü
- Pic18F4550 mikrodenetleyici
Malzemeler belirlendikten sonra elektronik kart tasarımı aşaması gelmektedir. Eğer elektronikten pek anlamıyorsanız veya detaylı devre tasarımı sizin için zaman kaybettirecekse baby orangutan kartı ideal bir seçim olacaktır. Bu kart üzerinde regületör, motor sürücü ve mikrodenetleyici bulunmaktadır.
Eğer pic mikrodenetleyici kullanmışsanız ccs c compiler ile yazdığınız kodları derleyebilirsiniz. Buradan demo indirip ücretsiz deneyebilirsiniz. Ccs c compiler ücretli bir programdır. Ancak bu programı satın almak istemiyorsanız microchip firmasının kendi derleyicilerini de kullanabilirsiniz. Bunun için öncelik microchip mplab ide x indirmeniz gerekmektedir. Bu programı indirdikten sonra assembly dili ile kod yazabilirsiniz. Assembly bilmiyorsanız veya C dili ile kod yazmak istiyorsanız bunun için bir derleyici kurmanız gerekmektedir. Kullanacağınız pic mimarisine göre derleyici seçimi yapmalısınız. Örneğin 8-bit bir pic kullanıyorsanız MPLAB® XC8 Compiler 16-bit pic kullanıyorsanız MPLAB® XC16 Compiler kullanmalısınız. Bu aşamada faydalı olabileceğini düşündüğüm linki de paylaşıyorum.
PID, kapalı çevrim döngülerde ölçülen değer ile olması gereken değer arasındaki farkı ölçümleyerek geri bildirim mekanizmasıyla bu veriyi tekrar kullanan denetleme yöntemidir. PID yi oluşturan 3 ana başlık vardır, bunlar;
P: Proportional (Oransal) - O ana ait hatadır.
I: Integral (İntegral) - Geçmişe ait hatalar toplamıdır.
D: Derivative (Türev) - Gelecekte tahmin edilen hatadır.
Robotunuzun konumunun hesaplanması şu şekilde olabilir. Diyelim ki beyaz zemin üzerine siyah renkle çizgi çekilmiş bir yol kullanıyorsunuz ve siyah rengi algılayan 5 sensör kullanarak çizgi izleyen robot tasarladınız. Robotunuzun düz bir şekilde gitmesi için ortadaki sensörün (üçüncü) siyah çizgiyi algılamış olması gerekmektedir.
Yani,
0x1 (1.sensör görmüyor)
0x2 (2.sensör görmüyor)
1x3 (3.sensör görüyor)
0x4 (4.sensör görmüyor)
0x5 (5.sensör görmüyor)
Sensör değerleriniz = 0+0+3+0+0
Toplamda gören sensör sayısı = 0+0+1+0+0
İşleminiz ==> 3 / 1 = 3 olacağından, o anki konumunuzu bulmuş oldunuz. İdeal noktanız da 3 olduğu için 3-3 'ten hatanızın 0 olduğunu buldunuz.
Aynı işlemi ortadaki 3 sensörün de gördüğünü varsayarak yapalım:
1x2 (2.sensör görüyor)
1x3 (3.sensör görüyor)
1x4 (4.sensör görüyor)
0x5 (5.sensör görmüyor)
Sensör değerleriniz = 0+2+3+4+0
Toplamda gören sensör sayısı = 0+1+1+1+0
İşleminiz ==> 9/3=3 olacağından, o anki konumunuzu bulmuş oldunuz. Dikkat ederseniz yine hatanız 0 çıktı. Yani robotunuz olması gereken yerde.
Aynı örnek üzerinden gidecek olursak, sensörlerinizin ideal noktası (3), ölçüm anındaki noktadan uzaklaştıkça sizin oransal olarak hızınızı yavaşlatmanız gerekir. Yani 5 sensörlü robotunuz için toplamda 9 adet ara değer vardır. Bunlar;
1. Sensörün görme durumu (Yukarıdaki hesaplamaya göre sonuç 1 çıkar)
1. ve 2. sensörün görme durumu (Yukarıdaki hesaplamaya göre 1.5 çıkar)
2. Sensörün görme durumu (Yukarıdaki hesaplamaya göre sonuç 2 çıkar)
2. ve 3. sensörün görme durumu (Yukarıdaki hesaplamaya göre 2.5 çıkar)
3. Sensörün görme durumu (Yukarıdaki hesaplamaya göre sonuç 3 çıkar)
3. ve 4. sensörün görme durumu (Yukarıdaki hesaplamaya göre 3.5 çıkar)
4. Sensörün görme durumu (Yukarıdaki hesaplamaya göre sonuç 4 çıkar)
4. ve 5. sensörün görme durumu (Yukarıdaki hesaplamaya göre 4.5 çıkar)
5. Sensörün görme durumu (Yukarıdaki hesaplamaya göre sonuç 5 çıkar)
Bu verilere göre diyelimki motor hızınız ideal konumdayken %100 olduğunu varsayarsak, 3. ve 4. sensörün görme durumunda sağ motor hızının %25 azalması gerekmektedir. 5. Sensörünüz tek başına görüyorken sağ motor tamamen durmuş duruma gelir. Peki biz bu hesaplamayı mikrodenetleyicimize anlatmak için ne yapmalıyız? 5 adet sensör için hesap (9-1) / 2 kadardır. %100 /4 ten %25 değerini buldunuz. Oran bu şekilde belirlenir. Yani 5 farklı hız oranınız vardır; %0, %25, %50, %75, %100. 9 farklı sensör durumlarına göre açıklayacak olursak,
1 1ve2 2 2ve3 3 3ve4 4 4ve5 5
%0, %100, %25,%100, %50,%100, %75,%100, %100,%100, %100,%75, %100,%50, %100,%25, %100,%0 şeklindedir.
D değeri aslında türevsel bir değerdir. Yani eğimden ibarettir. Eğer hata değişimi yoksa, yani zamanla sizin hatanız değişmiyorsa eğiminiz sabit olacağından D değeriniz 0 olur. Örneğin t0 anında robot konumu 3 ise (3.sensör görüyorsa), t1 anında da robot konumu 3 ise (3. sensör görüyorsa) eğim 0'dır. Yani yol dümdüz ilerliyordur ve robot hızını değiştirmeye gerek yoktur. Ancak t2 anında robot konumu 3.5 ise (3. ve 4.sensörler görüyorsa), eğim değişeceğinden hızınızın da değişmesi gerekir. t2-t0 kadar geçen süre içerisinde hatanız değişmiştir. Bu demek olur ki t3 anında (yani t2+(t2-t0)) yeni konumunuz 4 olabilir. Bu öngörüye dayanarak hızınızı P+D kadar değiştirmelisiniz. t2-t0 anı kadar %100, %P+D hız uygularsanız robot hatası 0 a inecektir. Eğer eğim fazlaysa (ani bir değişim varsa) bu D değerinizin daha yüksek çıkacağı anlamına gelir.
I değerinin hesaplanma nedeni aslında geçmiş hataların toplamını bulmaktır. Ancak yapılan denemelerde I eklendiğinde (PID) robotun daha verimsiz çalıştığı görülmüştür. Bu yüzden yazılıma I değeri dahil edilmemiştir. Mostem robotu PD olarak çalışmaktadır.