Logo Robotika.SK Faculty of Electrical Engineering and Information Technology, Slovak University of Technology  Logo Faculty of Mathematics, Physics and Informatics, Comenius University 

Team name: M-TEAM

About the team: Tím ZŠ v Marhani

Assignment: Tourist coupon

Náš robot pre túto úlohu obsahuje 3 veľké motory a 3 optické snímače. 2 motory slúžia na pohyb robota, tretím motorom kladieme poklad na koniec cesty. 2 optické snímače využívame pri pohybe po čiernej páske, tretí snímač slúži na zisťovanie odbočky. Program je veľmi dlhý, obsahuje 7 vytvorených myblockov. Prvýkrát sme pri programovaní použili polia.

Robot funguje takto:

1. Najprv vytvoríme pole so 7 prvkami - dlzka_jazdy. Pole obsahuje samé nuly. Každý prvok poľa bude dĺžka jednej z ciest.

2. Potom nasleduje myblock chod_na_okraj. Keďže pri štarte je robot vnútri kružnice - myblock chod_na_okraj  urobí to, že robot dôjde na kružnicu a tam sa zrovná. Teda môže štartovať z ľubovoľného miesta v kružnici - po dojazde na kružnicu sa vyrovná tak, že obidvoma optickými snímačami zastane na čiernej. 

3. Potom nasleduje myblock otacka_na_okraji. Tento myblock urobí to, že sa robot pootočí a ostane stáť na kružnici.

4. Ďalej nasleduje slučka, ktorá sa opakuje 7 - krát. Robot ide po kružnici - myblock jazda_po_ciernej a pomocou tretieho optického snímača hľadá odbočku. Keď ju nájde, tak zastaví a spustí sa myblock otocka_na_cestu. Robot odbočí na nájdenú cestu a pokračuje po čiernej ceste. Optické snímače v tejto chvíli blikajú a menia farby - program rýchlo mení ich režim merania. Raz merajú intezitu odrazeného svetla a hneď na to zisťujú čiernu farbu. Robot ide dovtedy až kým obidva snímače nehlásia súčasne čiernu farbu - robot prišiel na koniec cesty vyznačený malým kúskom pásky nalepenej kolmo na cestu. Odčítame otáčky motorov v stupňoch - koľko stupňov urobili od začiatku odbočky. Keďže cesta je kľukatá, tak odčítame otáčky ľavého aj pravého motora a určíme priemer. Tak získame dĺžku cesty. Nameranú dĺžku cesty aj s jej číslom zobrazíme na displeji. Cesty sú číslované od 0, lebo aj prvý prvok v poli má index 0. Odmeranú dĺžku cesty zapíšeme na nulté miesto v poli. 

5. Na konci cesty sa robot obráti a pokračuje na začiatok odbočky. Na to slúži myblock navrat. Nasleduje hľadanie ďalšej odbočky, jej odmeranú dĺžku zapíšeme na ďalšie miesto v poli.

6. Keď odmeriame všetkých sedem ciest, tak robot zaparkuje na kružnici, prehrá zvuk BRAVO a na displeji zobrazí hlášku MERANIE HOTOVE !. Potom na displeji zobrazí dĺžky všetkých ciest s ich číslami - indexami v poli dlzka_jazdy. To len pre kontrolu - aby sme videli, že meranie a hlavne zápis do poľa bol v poriadku. 

7. V ďalšom kroku nasleduje hľadanie druhej najdlhšej cesty. S tým sme sa natrápili najviac. Urobili sme to takto:

- z poľa vyberieme nultý a prvý prvok. Zistíme, ktorý je väčší a ten zapíšeme do premennej max. Menší prvok zapíšeme do premenej maxx. Index väčšieho prvku zapíšeme do premennej imax, index menšieho prvku do premennej imaxx. Teda máme akože najdlhšiu a druhú najdlhšiu cestu aj s ich poradím  - indexom.

- potom nasleduje myblock triedenie. Ten robí to, že postupne vyberá ostatné prvky z poľa a porovnáva ich s premennými max a maxx. Ak je prvok väčší ako max, tak ho nahradí a premennú max posunie do maxx. Ak prvok nie je väčší ako max, tak ho porovná s maxx. Ak je väčší ako maxx, tak ho nahradí. Ak nie, tak sa nedeje nič. Okrem toho sa ešte správne prepisujú aj premenné imax a imaxx. V nich sú indexy - poradia ciest. Triedenie sa spúšťa 5 - krát - aby sa porovnali postupne všetky prvky poľa. Pri triedení používame len porovnavnanie či prvok menší alebo väčší, ak by boli prvky rovnaké, tak by to nefungovalo. Ale nám to nevadí, lebo v zadaní je napísané, že cesty majú rôznu dĺžku.   

- po poslednom triedení máme v premennej max dĺžku najdlhšej cesty, v premennej maxx dĺžku druhej najdlhšej cesty, v premennej imax index najdlhšej cesty, v premennej imaxx dĺžku druhej najdlhšej cesty. Z týchto hodnôt ďalej potrebujeme len premennú imaxx - index (poradie) druhej najdlhšej cesty.

- na displeji zobrazíme index najdlhšej a druhej najdlhšej cesty. Potom zaznie zvuk GOOD JOB.

8. Ako posledný sa spúšťa myblock dorucovanie_pokladu. Používame dve vnorené slučky. To funguje tak, že v slučke beží myblock jazda_po_ciernej. Beží dovtedy, kým bočný optický snímač nenájde čiernu. Vtedy robot vie, že našiel odbočku. Toto hľadanie čiernej sa zopakuje podľa toho, že aká je hodnota v premenej imaxx. Napr. ak je index druhej najdlhšej cesty 3 , tak hľadanie zopakujeme 4 - krát - lebo cesty sú číslované od 0.  Po nájdení správnej odbočky zaznie zvuk DETECTED!, spustí sa myblock odbocka_na_cestu a robot dôjde na koniec cesty. Po zastavení na konci cesty trocha cúvne a tretím motorom položí poklad na koniec cesty. Po položení pokladu robot trocha odstúpi smerom vzad.

VŠETKO :)

Photos:

Videos:

Programs:

Rating:

Ďakujeme za toto elegantné riešenie, zaujímavá konštrukcia, ani by som neveril, že senzory tak blízko osi otáčania umožnia takú plynulú jazdu, ale veď sú tri, to je pravda, nuž, pekné! Tam v rohu to bola ale tesnotka! :)

1. Paráda! Pekné riešenie.

2. Výborné riešenie robot robí všetko presne ako treba.

3. Za úlohu Turistický poukaz získavate 3b. Robot dokáže sám prebehnúť po trase a zmerať ich a nakoniec vyhodnotiť druhú najdlhšiu trasu. Škoda, že vo videu nie sú vidieť namerané hodnoty.

4. Chválim podrobný písomný popis riešenia úlohy (možno by však mohlo byť kratšie alebo heslovitejšie). Tiež sa mi páči spracovanie videa (aj vizuálne zobrazenie 2. najdlhšej cesty), zobrazenie viacerých pokusov a výber hudby.