Myš sledujúca čiaru - Marián Margeta a Marián Jonis

From RoboWiki
Jump to: navigation, search

Cieľ projektu

Cieľom projketu, je naprorgrampvař robota ktorý na základe troch svetelných senzorov a ultrasonic senzora bude sledovať čiaru a zastane na prekážke.

Popstup

Najprv sme naprogramovali simulator ktorý simuluje robota s danými senzormi. Simulovaný robot má kruhový tvar a pohybuje sa na dvoch kolesách s samostatnými motormi. Násedne sme pomocou evolučného algoritmu opakovane aplikovaného na niekoľko rôznich nastavní prostredia vygenerovali rozhodovací strom ktorý sme následne sputili na skutočného robota a odtestovali.

Simulácia

Najprv sme odsimulovali pohyb robota. Robot je reprezentovaný tromi parametrami : vzdialenosť medzi jeho kolesami, súradnice stredu priamky medzi kolesami a smeru roobota , ktorý reprezentuje uhol voči stredu súradnicoého systému. public void move()

       {
           double oldX = x;
           double oldY = y;
           double oldHhead = heading;
           if (speedL == speedR)
           {
               x = x + speedL * Math.Cos(heading);
               y = y + speedR * Math.Sin(heading);
           }
           else
           {
               double R = ((speedL + speedR) * length) / ((speedR - speedL) * 2);
               double wd = (speedR - speedL) / length;
               x = x + R * Math.Sin(wd + heading) - R * Math.Sin(heading);
               y = y - R * Math.Cos(wd + heading) + R * Math.Cos(heading);
               heading += wd;
               while (heading >= (Math.PI * 2))
               {
                   heading -= (Math.PI * 2);
               }
           }
           colistion = false;
           if (hasColistion())
           {
               colistion = true;
               heading = oldHhead;
               x = oldX;
               y = oldY;
           }
       }

Simulácia generuje výstupy z troch line(L1,L2,L3) senzorov ktoré vracajú true/false hodnotu na základe toho či vidia čiaru. A výstup z jedného utra-zvukového senzora ktorý vracia vzdialenosť k najbližšej prekážke pred robotom v 60 stupňovom uhle. Prekážky majú kruhový tvar. Simulátor umožňuje kreslenie dráhy pre myš a umierňovanie prekážok.

Projekt mouse 1.jpg Projekt mouse 2.jpg Projekt mouse 3.jpg

Generuje rozhodovací strom na základe evolučného algoritmu. Náhodne vygenerujeme 200 rozhodovacích stromov. Genotyp reprezentuje vektor ktorý obsahuje zoznam akcií, vzdialenosť k najbližšej prekážke a dĺžka kroku simulácie.

Projet decision tree.png

Zdojový kód

Zazipovaný zdorojový kód zdrojový kód projektu.

Video