Difference between revisions of "Robot constructs a map of a maze - Adam Bilisics"

From RoboWiki
Jump to: navigation, search
(Projekt popis)
 
(Video robotnacky)
 
(16 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
== Úvod ==
 
== Úvod ==
  
Mojím projektom je naprogramovať robotnačku. Táto sa bude pohybovať po priestore rozumným spôsobom, vyhýbať sa prekážkam pomocou senzorov a ukladať si údaje so senzorov do dvojrozmernej mapy a teda vytvárať virtuálnu mapu priestoru.
+
Mojím projektom je naprogramovať robotnačku. Táto sa bude pohybovať po priestore, vyhýbať sa prekážkam pomocou senzorov a ukladať si údaje so senzorov do dvojrozmernej mapy a teda vytvárať virtuálnu mapu priestoru.
  
 
Finálny projekt je v jazyku JAVA a môžete si zdojový kód stiahnuť tu: [http://davinci.fmph.uniba.sk/~bilisics2/robot.rar Robotnacka]
 
Finálny projekt je v jazyku JAVA a môžete si zdojový kód stiahnuť tu: [http://davinci.fmph.uniba.sk/~bilisics2/robot.rar Robotnacka]
  
 +
[[Image:Robotnacka.png]]
  
== Tu môžete vidieť príklad mapy  ==
+
== Tu môžete vidieť príklad ako korytnačka mapuje ==
  
Tento kúsok mapy je len z troch vertikálnych prejdení robotnačkou cez mapu.
+
Ukážka programu ktorý zobrazuje mapu vytvorenú senzormi a simulátor v ktorom sa "skutočná" korytnačka hýbe<br>
[http://davinci.fmph.uniba.sk/~bilisics2/mapa.png Ukážka časti mapy]
+
[[Image:Robotnacka2.png]]<br>
 +
[[Image:Robotnacka3.png]]<br>
 +
[[Image:Robotnacka1.png]]<br>
  
== Algoritmus pohybu a vyhýbania sa objektom ==
+
== Video robotnacky ==
 +
[http://www.youtube.com/watch?v=vf2MgU_dsnk Novšie video robotnačky bez oblúkov]<br>
 +
[http://www.youtube.com/watch?v=WIwQwHXV-ns Nové video robotnačky s oblúkmi] <br>
 +
[http://www.youtube.com/watch?v=FM87j9FqgUI  Video robotnacky]
 +
 
 +
== Počiatočné nastavenia korytnačky a algoritmus pohybu  ==
  
 
'''Pohyb'''
 
'''Pohyb'''
Robota je treba dať do ľavého rohu. Pohyb je jednoduchý. Vypočítal som na koľko robotových krokov dokáže senzor rozpoznať zmenu. Vždy sa teda posúva o túto jednotku. Tiež vieme koľko týchto jednotiek je celá výška mapy, takže počítadlo nám udržuje koľko krát už išiel dopredu robot.
+
Robota je treba dať do ľavého horného rohu a nastaviť ho smerom dole. POZOR ! Je nutné ho však odsadiť od ľavej steny aspoň o kúsok(100). Zvyšok scaneovania si bude držat už potrebný odostup od stien. Pohyb je jednoduchý. Vypočítal som na koľko robotových krokov dokáže senzor rozpoznať zmenu. Vždy sa teda posúva o túto jednotku. Robot sa pohybuje rovno o náhodný počet týchto jednotiek, ale ak by mal naraziť zastaví sa.
Na vrchu mapy/plochy sa otočí doprava, posunie sa o kúsok, znova sa otočí doprava a ide smerom dolu rovnakým spôsobom.
 
 
 
'''Kolízia'''
 
Kolízia alebo vyhýbanie sa prekážkam je uskutočňované nasledovne. Akonáhle je predný senzor na 0, čiže je priamo pred prekážkou, alebo hneď naľavo či napravo od neho senzory zaznamenaju vzdialenosť objektu menej než 3, tak robot cúvne a začína prekážku obchádzať.
 
 
 
'''Obchádzanie'''
 
Po tom čo robot cúvne o 3 jednotky dozadu, otočí sa doprava. Potom sa snaží správne sa "nakalibrovať", aneb nájisť ľavým senzorom či uz je začiatok objektu vedľa neho. Ak nie posunie sa dopredu a znova opakuje. Ak áno, ide dopredu až kým ľavý senzor nezaznamená že už je mimo prekážky. V tento moment sa robot posúva ešte o polku svojej dĺžky v prepočítaných jednotkách, otočí sa doľava a znova zopakuje to čo som predchvíľkou popísal. Nakalibruje, našiel začiatok, ide, ide, našiel koniec, posunie sa ešte o polku svojej dĺžky, zabočí doľava. Medzičasom si však pamätá, koľko krát sa posunul doprava, čiže uz vie koľko krát sa má posunúť doľava aby sa vrátil na pôvodnú dráhu. Potom sa otočí doprava a pokračuje v smere kde skončil.
 
 
 
  
 
== Skenovanie objektov - vytváranie mapy ==
 
== Skenovanie objektov - vytváranie mapy ==
  
Mapa sama o sebe je len dvojrozmerná pole integerov, ktoré je na začiatku vynulované. Akonáhle kontrolujeme či sa môžeme posunúť ďalej, pozrieme všetky senzory(nie len predné) a podľa natočenia robota si do mapy na dané miesto pripočítame +1. Toleranciu som dal 10 jednotiek. Ak senzor zaznamenáva väčšiu vzdialenosť, neukladá nič.
+
Mapa sama o sebe je len dvojrozmerná pole integerov, ktoré je na začiatku vynulované. Akonáhle kontrolujeme či sa môžeme posunúť ďalej, pozrieme všetky senzory(nie len predné) a podľa natočenia robota si do mapy na dané miesto pripočítame +1. Toleranciu som dal 50 jednotiek. Ak senzor zaznamenáva väčšiu vzdialenosť, neukladá nič.

Latest revision as of 15:39, 30 June 2013

Úvod

Mojím projektom je naprogramovať robotnačku. Táto sa bude pohybovať po priestore, vyhýbať sa prekážkam pomocou senzorov a ukladať si údaje so senzorov do dvojrozmernej mapy a teda vytvárať virtuálnu mapu priestoru.

Finálny projekt je v jazyku JAVA a môžete si zdojový kód stiahnuť tu: Robotnacka

Robotnacka.png

Tu môžete vidieť príklad ako korytnačka mapuje

Ukážka programu ktorý zobrazuje mapu vytvorenú senzormi a simulátor v ktorom sa "skutočná" korytnačka hýbe
Robotnacka2.png
Robotnacka3.png
Robotnacka1.png

Video robotnacky

Novšie video robotnačky bez oblúkov
Nové video robotnačky s oblúkmi
Video robotnacky

Počiatočné nastavenia korytnačky a algoritmus pohybu

Pohyb Robota je treba dať do ľavého horného rohu a nastaviť ho smerom dole. POZOR ! Je nutné ho však odsadiť od ľavej steny aspoň o kúsok(100). Zvyšok scaneovania si bude držat už potrebný odostup od stien. Pohyb je jednoduchý. Vypočítal som na koľko robotových krokov dokáže senzor rozpoznať zmenu. Vždy sa teda posúva o túto jednotku. Robot sa pohybuje rovno o náhodný počet týchto jednotiek, ale ak by mal naraziť zastaví sa.

Skenovanie objektov - vytváranie mapy

Mapa sama o sebe je len dvojrozmerná pole integerov, ktoré je na začiatku vynulované. Akonáhle kontrolujeme či sa môžeme posunúť ďalej, pozrieme všetky senzory(nie len predné) a podľa natočenia robota si do mapy na dané miesto pripočítame +1. Toleranciu som dal 50 jednotiek. Ak senzor zaznamenáva väčšiu vzdialenosť, neukladá nič.