Difference between revisions of "Pohyb robota po čiare a zaznamenávanie vzdialenosti okolitých objektov (Dudík, Kemény)"
m |
|||
(10 intermediate revisions by the same user not shown) | |||
Line 13: | Line 13: | ||
===Opis aplikácie=== | ===Opis aplikácie=== | ||
− | + | Aplikácia sa delí na dve logické časti. V prvej sa vykoná takzvaný SETUP robota, kde sa inicializujú jeho vnútorné premenné. V druhej časti sme definovali samotnú funkcionalitu robota. Základné funkcie, ktoré robot vykonáva sú sledovanie čiary a mapovanie okolitého prostredia. | |
<u>Sledovanie čiary</u> | <u>Sledovanie čiary</u> | ||
− | Aplikácia spracováva dáta, ktoré mu boli sprostredkované | + | Aplikácia spracováva dáta, ktoré mu boli sprostredkované pomocou čiarových senzorov na podvozku robota. Tieto hodnoty si uchováva vo svojich vnútorných premenných a ďalej ich spracováva. Ak sa čiarový senzor nachádza nad tmavým povrchom, reprezentovaným vodiacou čiarou, nasnímané hodnoty sú vysoké. Ak sa sníma bieli povrch na ktorom sa robot pohybuje, tak sú nasnímané hodnoty veľmi nízke. Vďaka týmto veľkým rozdielom sme schopný detegovať jeho pozíciu. Pohyb robota prebieham týmto spôsobom. Ak sa nasnímali nízke hodnoty na pravom senzore aj ľavom tak sa robot pohybuje rovno. Vodiaca čiara sa nachádza medzi senzormi. Ak robot deteguje, že jeden senzor zaznamenal rapídny nárast hodnoty, aplikácia upraví pohyb robota tak aby sa vrátil do pôvodnej dráhy a dostal vodiacu čiaru medzi čiarové senzory. |
<u>Mapovanie prostredia</u> | <u>Mapovanie prostredia</u> | ||
− | Mapovanie prebieha za behu robota. Aplikácia vo vnútri robota vykonáva | + | Mapovanie prebieha za behu robota. Aplikácia vo vnútri robota vykonáva nie len snímanie povrchu ale zaznamenáva aj okolie robota. Okolie je snímané pomocou IR senzora. Jeho výstupy sú spracované špeciálne navrhnutými algoritmami na mapovanie. Algoritmus spracováva vzdialenosť okolitých objektov, ktoré boli zaznamenané ako tok znakov reprezentujúcich vzdialenosti. Pre jednoduchšie spracovanie a následnú vizualizáciu dát sme tieto namerané dáta predelili konštantou. |
Line 27: | Line 27: | ||
<u>Ukážka podmieneného smeru pohybu robota</u><br /><br /> | <u>Ukážka podmieneného smeru pohybu robota</u><br /><br /> | ||
− | Situácia : | + | Situácia : Ľavý čiarový senzor narazil na vodiacu čiaru a je potrebné vykonať korekciu pohybu doľava. |
<pre> | <pre> | ||
Line 50: | Line 50: | ||
</pre> | </pre> | ||
− | zdrojový kód[ | + | zdrojový kód [[Media:Projekt_d_k.zip]] |
− | |||
+ | ===Výstup=== | ||
− | '''Autor:''' | + | <br /> |
+ | |||
+ | video mapovania [http://tinypic.com/r/fthc42/5] | ||
+ | |||
+ | <br /> | ||
+ | |||
+ | <u>Ukážka z výstupného textového okna programu Arduino</u> | ||
+ | |||
+ | [[Image: mapa_pomlcky.png]] | ||
+ | |||
+ | <br /> | ||
+ | |||
+ | <u>Graf z výstupných hodnôt</u> | ||
+ | |||
+ | [[Image: graf_mapa_prekazok.png]] | ||
+ | |||
+ | |||
+ | '''Autor:''' Adam Dudík, Patrik Kemény |
Latest revision as of 10:48, 12 June 2013
Úvod
Našou úlohou bolo naprogramovať Acrob robota tak aby sa hýbal smerom dopredu sledovaním čiary a popritom meral vzdialenosti okolitých objektov. Na sledovanie čiary sme použili dva svetelné čiarové senzory. Na zisťovanie vzdialenosti okolitých objektov sme použili IR senzor. Použili sme iba jeden senzor umiestnený na ľavom boku robota.
Zapojenie
Opis aplikácie
Aplikácia sa delí na dve logické časti. V prvej sa vykoná takzvaný SETUP robota, kde sa inicializujú jeho vnútorné premenné. V druhej časti sme definovali samotnú funkcionalitu robota. Základné funkcie, ktoré robot vykonáva sú sledovanie čiary a mapovanie okolitého prostredia.
Sledovanie čiary
Aplikácia spracováva dáta, ktoré mu boli sprostredkované pomocou čiarových senzorov na podvozku robota. Tieto hodnoty si uchováva vo svojich vnútorných premenných a ďalej ich spracováva. Ak sa čiarový senzor nachádza nad tmavým povrchom, reprezentovaným vodiacou čiarou, nasnímané hodnoty sú vysoké. Ak sa sníma bieli povrch na ktorom sa robot pohybuje, tak sú nasnímané hodnoty veľmi nízke. Vďaka týmto veľkým rozdielom sme schopný detegovať jeho pozíciu. Pohyb robota prebieham týmto spôsobom. Ak sa nasnímali nízke hodnoty na pravom senzore aj ľavom tak sa robot pohybuje rovno. Vodiaca čiara sa nachádza medzi senzormi. Ak robot deteguje, že jeden senzor zaznamenal rapídny nárast hodnoty, aplikácia upraví pohyb robota tak aby sa vrátil do pôvodnej dráhy a dostal vodiacu čiaru medzi čiarové senzory.
Mapovanie prostredia
Mapovanie prebieha za behu robota. Aplikácia vo vnútri robota vykonáva nie len snímanie povrchu ale zaznamenáva aj okolie robota. Okolie je snímané pomocou IR senzora. Jeho výstupy sú spracované špeciálne navrhnutými algoritmami na mapovanie. Algoritmus spracováva vzdialenosť okolitých objektov, ktoré boli zaznamenané ako tok znakov reprezentujúcich vzdialenosti. Pre jednoduchšie spracovanie a následnú vizualizáciu dát sme tieto namerané dáta predelili konštantou.
Zdrojový kód
Ukážka podmieneného smeru pohybu robota
Situácia : Ľavý čiarový senzor narazil na vodiacu čiaru a je potrebné vykonať korekciu pohybu doľava.
if (val_senzor_l > 200) { Lavy_motor.write(90+SLOW); Pravy_motor.write(90+SLOW); delay(800); Lavy_motor.write(90 - SLOW); Pravy_motor.write(90 + SLOW); delay(500); }
Ukážka procesu mapovania
Skreslena_vzdialenost = val_infra_1 / 80; //hodnotu senzora predelim konstantou ktora bola optimalizovana if (Skreslena_vzdialenost < 10) { //vdaka optimalizovanej konstante by hodnota nemala prekrocit desat CelaMapa += String( 10 - Skreslena_vzdialenost, DEC); //zapisem nameranu hodnotu do stringu CelaMapa += String( " "); //pridam medzeru za kazdou hodnotou }
zdrojový kód Media:Projekt_d_k.zip
Výstup
video mapovania [1]
Ukážka z výstupného textového okna programu Arduino
Graf z výstupných hodnôt
Autor: Adam Dudík, Patrik Kemény