Difference between revisions of "Acrob robot constructs a map of a maze (Péter Dobsa, Gergely Labanc)"
 (→Sledovanie čiary)  | 
				 (→Sledovanie čiary)  | 
				||
| Line 14: | Line 14: | ||
Z konštrukcie senzoru a hrúbky čiary vyplývalo, že robot je v správnej polohe na čiare, ak senzor s číslom 3 a senzor s číslom 4 nesvietia, ostatné senzory áno. Pri pohybovaní sme pozorovali práve tie svietiace, aby sme mohli robota udržať správne na čiare. Kvôli nepresnostiam na mape alebo v kolieskach smer robota bolo treba stále trochu korigovať. Tento problém rieši tento kus kódu:  | Z konštrukcie senzoru a hrúbky čiary vyplývalo, že robot je v správnej polohe na čiare, ak senzor s číslom 3 a senzor s číslom 4 nesvietia, ostatné senzory áno. Pri pohybovaní sme pozorovali práve tie svietiace, aby sme mohli robota udržať správne na čiare. Kvôli nepresnostiam na mape alebo v kolieskach smer robota bolo treba stále trochu korigovať. Tento problém rieši tento kus kódu:  | ||
| − | + | <code>  | |
| − | + | if (hodnoty[3] == 0 && hodnoty[4] == 1 && nieJeZakruta())  | |
| + |     {  | ||
| + |       --pravyRychlost;  | ||
| + |       ++lavyRychlost;  | ||
| + |       forward();  | ||
| + |     }   | ||
| + |     else if (hodnoty[3] == 1 && hodnoty[4] == 0 && nieJeZakruta())   | ||
| + |     {  | ||
| + |       ++pravyRychlost;  | ||
| + |       --lavyRychlost;  | ||
| + |       forward();  | ||
| + |     }   | ||
| + | </code>  | ||
| + | , kde <code>pravyRychlost</code> a <code>lavyRychlost</code> služia na nastavenie rýchlosti otačania daného koliska, pritom funkcia <code>forward()</code> pomocou týchto premenných vykonáva zmeny, pomocou triedy <code>Servo</code>, čo je súčasťou základných knižníc Arduino knižníc.  | ||
===Zákruty a križovatky===  | ===Zákruty a križovatky===  | ||
| − | Ak robot pri pohybe narazil na výrazné zmeny senzorov, bolo mu jasné, že dostal sa do križovatky, respektýve do zákruty. Museli sme   | + | Ak robot pri pohybe narazil na výrazné zmeny senzorov, bolo mu jasné, že dostal sa do križovatky, respektýve do zákruty. Museli sme rozlíšiť sedem rôznych stavov, a podla toho sa rozhodnúť, čo bude ďalším krokom.  | 
# '''Zákruta tvaru: |_'''  | # '''Zákruta tvaru: |_'''  | ||
Revision as of 19:08, 26 June 2013
Contents
Úvod
Našou úlohou bolo mapovať bludisko pomocou robota Acrob, pričom sa používala on-line komunikácia medzi robotom a počítačom cez bluetooth.
Naše bludisko
Bludisko bolo reprezentované v 2D priestore, a tvorila ho čierna páska na bielom povrchu. Robot mal sledovať práve tú čiaru pomocou infračervených senzorov.
[[File: |none]]
Náš robot
Acrob = Arduino Compatible Robot
Mozog robota tvorila Arduinovská doska, ktorá poháňala dva servomotory ktoré slúžili na pohybovanie robota, spracovala prečítané údaje zo senzorov a preposlala ich počítaču pomocou bluetoothového modulu. Telo robota bolo vyvynuté Slovenskou Technickou Univerzitou. Na prednú dolnú časť bol pripevnený čiarový senzor, ktorý pozostával z ôsmych nezávyslých infračervených senzorov. Na hornú časť bol primontovaný bluetoothový modul.
Sledovanie čiary
Z konštrukcie senzoru a hrúbky čiary vyplývalo, že robot je v správnej polohe na čiare, ak senzor s číslom 3 a senzor s číslom 4 nesvietia, ostatné senzory áno. Pri pohybovaní sme pozorovali práve tie svietiace, aby sme mohli robota udržať správne na čiare. Kvôli nepresnostiam na mape alebo v kolieskach smer robota bolo treba stále trochu korigovať. Tento problém rieši tento kus kódu:
if (hodnoty[3] == 0 && hodnoty[4] == 1 && nieJeZakruta())
   {
     --pravyRychlost;
     ++lavyRychlost;
     forward();
   } 
   else if (hodnoty[3] == 1 && hodnoty[4] == 0 && nieJeZakruta()) 
   {
     ++pravyRychlost;
     --lavyRychlost;
     forward();
   } 
, kde pravyRychlost a lavyRychlost služia na nastavenie rýchlosti otačania daného koliska, pritom funkcia forward() pomocou týchto premenných vykonáva zmeny, pomocou triedy Servo, čo je súčasťou základných knižníc Arduino knižníc.
Zákruty a križovatky
Ak robot pri pohybe narazil na výrazné zmeny senzorov, bolo mu jasné, že dostal sa do križovatky, respektýve do zákruty. Museli sme rozlíšiť sedem rôznych stavov, a podla toho sa rozhodnúť, čo bude ďalším krokom.
- Zákruta tvaru: |_
 - Zákruta tvaru: _|
 - Križovatka tvaru: T
 - Križovatka tvaru: |-
 - Križovatka tvaru: -|
 - Križovatka tvaru: +
 - Slepá ulička