Robot sa skladá z:
2 Large motory
2 Ultrasonic senzory, jeden vpredu a jeden napravo. Zobrali sme si inšpiráciu zo zadania Jaskyniar zpred dvoch rokov, ale tentokrát je to vylepšená verzia, kde sledujeme stenu, máme aj gyroskop (kompas?), a aj mapujeme.
1 Ev3 brick navyše, aby sme mohli vidieť postup mapovania v reálnom čase.
Ako robot funguje:
Ako prvé, robot nájde stenu miestnosti, zarovná sa na ňu, nájde vonkajší roh, zarová sa a začne mapovať.
Robot po zarovnaní v rohu vyresetuje otáčky motorov a ide dopredu dokým predný senzor nezaznamená stenu alebo senzor napravo už stenu nezaznamenáva. Podľa toho, ktorý senzor robota zastavil, robot zistí, do ktorej strany sa má otočiť.
Ak ho zastavil predný senzor: Robot zastaví, vypočíta vzdialenosť, ktorú prešiel od posledného rohu z otáčok motorov a momentálnej vzdialenosti od steny, zapíše tento údaj do array, cúvne, aby bol 14cm od steny, otočí sa, zarovná sa o stenu, vyresetuje otáčky a meria ďalej.
Ak má zatočiť doprava: Robot zastaví, pomocou ultrasonického senzoru sa zarovná na roh, z otáčok motorov vypočíta vzdialenosť, ktorú prešiel, pomocou gyroskopu sa otočí o 90°, zaroná sa na roh, posunie sa o niečo dopredu, aby zadná časť bola na rovnakej úrovni ako stena, vyresetuje otáčky a zmeria ďaľšiu stenu.
Namerané udaje zapíše do súboru tak, že najskôr zapíše smer, ktorým išiel a až potom koľko cm nameral, keď išiel tým smerom. (smer vyjadruje číslo od 1 - 4, kde 4 je dole, 3 je doprava, 2 je hore, 1 je doľava, robot vždy začína s hodnotou 4).
Toto opakuje dokým sa súčet dĺžiek stien nameraných v smere hore nerovná (v nejakom rozmedzí) súčtu dĺžok stien nameraných v smere dole, a to isté pre strany namerané v pravom a v ľavom smere.
Robot meria s presnosťou ±5mm.
Kreslenie pôdorysu:
Táto časť je celkom ťažká na vysvetlenie, preto ju opíšem v skratke. Spracovanie dát a vykreslenie pôdorysu funguje v siedmych krokoch:
0. Reading file (iba pri python verzii) - prečíta a zapíše hodnoty zo súboru a dá ich do listu.
1. Rozmery - v tomto kroku robot vypočíta rozmery pôdorysu (šírka, výška)
2. Mierka - tu robot vypočíta mierku, teda koľko centimetrov na pôdoryse pripadne na 1 pixel na obrazovke
3. Výpočet X a Y súradníc - tu pomocou mierky robot vypočíta X a Y súradnice pre jednotlivé rohy v pôdoryse
4. Shift - po 3. kroku sa môže stať, že niektorá X alebo Y súradnica má negatívnu hodnotu, teda tá časť pôdorysu by nebola nakreslená na obrazovku.
5. Line ends - pri odchýlkach v meraní a pri zaokrúhľovaní sa môže stať, že sa prvá čiara a posledná čiara nestretnú v tom istom bode, tak pri tomto kroku predĺžime/skrátime prvú a poslednú čiaru, tak aby sa stretli v tom istom bode.
6. Centering - poposúva pôdorys, aby bol pekne v strede obrazovky.
7. Drawing - poďla X a Y súradníc vypočítaných v krokoch hore nakreslí pôdorys na obrazovku.
Poďla týchto krokov sa riadi aj EV3 program, aj Python program, akurát že v python programe používame knižnicu Turtle, kde súradnice fungujú trochu inak ako pri EV3 (0, 0 je v strede obrazovky, nie v hornom ľavom rohu a keď chceme ísť hore na obrazovke, musíme y súradnicu zväčšiť, nie zmenšiť ako na ev3)
Poznámka: Pri python verzii sa dá nadstaviť aj veľkosť obrázka (vo videu som použil 700x700px). V sekcií Programy nájdete aj súbory z robota.
Problémy:
Ultrasonický senzor merial nepresne na častiach, kde bola nejaká dierka alebo iná textúra (vlákna dreva). Tento problém sme vyriešili tým, že vonkajšie rohy sme prelepili páskou.
1. Perfektná, malá a jednoduchá konštrukcia robota, ktorý obdivuhodne presne zmeral všetky miestnosti. Páči sa mi aj prevedenie experimentov, aj tie miestnosti ste mali super. Veľmi pekne máte spravené aj zobrazenie miestnosti na počítači. 2. Za úlohu Mapovanie získavate 3b. Podarilo sa vám zmapovať až 3 objekty, ktoré ste vykreslili na displeji EV3, ale aj v pythone. Velmi pekná práca. Páči sa mi aj podrobný popis riešenia. 3. Super návrhy pôdorysov. Takto som si predstavovala testovanie. 4. Viem presne, čo znamená takéto niečo odladiť do stavu, ktorý ste predviedli. Je to obrovské množstvo roboty. Váš výsledok je neuveriteľne skvelý a obdivuhodný! Ďakujeme!!!