Difference between revisions of "Acrob robot constructs a map of a maze (Péter Dobsa, Gergely Labanc)"
(→Sledovanie čiary) |
(→Sledovanie čiary) |
||
Line 15: | Line 15: | ||
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> | <code> | ||
+ | |||
if (hodnoty[3] == 0 && hodnoty[4] == 1 && nieJeZakruta()) | if (hodnoty[3] == 0 && hodnoty[4] == 1 && nieJeZakruta()) | ||
{ | { |
Revision as of 20:09, 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