mandag den 3. november 2008

Week 7 - Braitenberg vehicles

Deltagere: Asger, Michael og Peter
Varighed: 4 timer.
Målet er at se hvordan Braitenberg køretøjer reagerer ved påvirkninger udefra.

Plan:
  1. Se at køretøj 2a kører mod lyset, hvis den ser lys.
  2. Se at køretøj 2b vil afvige fra en lyskilde.
  3. Gøre koden adaptiv overfor ændringer i omgivelsens lysstyrke.



Robotten:
Da vi skulle bruge en robot trukket ved 2 uafhængige hjul, har vi bygget den "oprindelige" lego robot. Denne har vi udstyret med 2 lyssensorer, som peger fremad. Derudover er robotten udstyret med 2 fremadrettede lydsensorer.





Teori:
Teorien kan findes her.


Forsøg 1:
Det første forsøg vi har lavet med robotten var at forbinde sensorer til motorerne, som i køretøj 2a.
Ideen med dette køretøj er at det vil forsøge at køre mod sensorernes stimuli. Da vi har bruge lys sensorer, valgte testede vi køretøjet ved brug af lyset fra en lighter. Vores test viser at robotten kører mod flammen, hvis den er mindre end 30 cm. fra lighteren, er den længere væk er lyset fra flammen for svagt (I dagslys).

Forsøg 2:
I dette forsøg er højre/venstre sensor forbundet til venstre/højre motor, som på køretøj 2b.
Teorien er at køretøjet vil dreje væk fra den sensor der får et stimuli. Igen har vi brugt en lighter som lyskilde, robotten drejer væk fra ilden, hvilket er meget smart, så den ikke bliver brændt af :)

Forsøg 3:
Formålet med forsøget er at få robotten til at ændre opfattelsen af hvad der er gennemsnitlige lysværdi.

For at gøre det laver vi et løbende gennemsnit.
Lad A være det løbende gennemsnit, v være den nuværende lysværdi og N er antallet af målinger der udregnes over.
Formlen for det løbende gennemsnit er så:
A := v/N + (1 - 1 / N) * A

Denne formel gør at vores gennemsnit vil konvergere mod vores målinger over tid, således at vores robot vil kunne begå sig i et foranderligt miljø.

Robottens gennemsnitlige lysværdi er adaptiv overfor ændringer i lysforholdene. Med de nuværende konstanter der bliver brugt i koden tager det ca. 20 sekunder fra der sker en markant ændring i lysforholdene, til der er en ny stabil gennemsnitlig værdi.

** snip
Vores normalize funktion er ganske simpel.
Den lader kun lys og lyd værdier på over average påvirke jack, da average ses som værende baggrundsstøj.
Den returnerer så lysværdien minus lydværdien og bruger denne som power til motorene. Ideen er at jo mere lys der er jo hurtigere kører jack og jo mere lyd jo langsommere.

Tests:
Succeskriteriet for vores robot er at dens threshold værdier kan ændre sig løbende alt efter dens miljø og at den vil reagerer veldefineret når den ser stærkt lys.

Det første succeskriterie blev opfyldt da vi kunne se vores robots average værdi ændre sig alt afhængig af om vi slukkede eller tændte lyset.
** snip

Ingen kommentarer: