tirsdag den 8. januar 2008

Bevægelse

Session: Tirsdag 08/01-08 kl. 9-16

Deltagere: Elvar, Ebbe, Henrik

Sessionens formål:
1. Designe en bevægelses metode.
2. Test bevægelse på Mars pladen.
3. Garbage collection i nxt enheden.

1:Designe en bevægelses metode.
Vi besluttede os for, som vi havde beskrevet igår, at benytte metoden i tacho counteren, som kunne flytte robotten baseret på centimeter. Det vil sige at vi skulle tilføje et centimeter tal til vores koordinater, som beskriver hvor centrum af firkanten (koordinaten) befinder sig på Mars pladen. Vi besluttede os for at koordinat systemets (0,0) punkt skulle befinde sig nederst i venstre hjørne af Mars pladen. Nederste venstre hjørne er i forhold til billede 2 fra blog indlæg den 5. januar.

Vi konstaterede igår at vores path finding algoritme virker som den skal både på windows, men også på nxt enheden. Dermed er det eneste vi skal sørge for idag, at robotten bevæger sig det korrekte antal centimeter for at komme fra koordinat til koordinat.
De tests vi foretog i denne sammenhæng var først at lave en simpel sti bestående af et start og et slut punkt, som var naboer i koordinat systemet. Denne simple test lykkedes, men som sagt er den simpel.

Vi målte os frem til at der var 21, 3cm fra midten til midten af en koordinat i Y-aksen og 21,8cm i X-aksen. Derudover skulle vi ligge et lille offset til X-aksen da vi gerne ville have vore lys sensor til, at være over de tykke sorte linie, da vi her bruger ly sensoren.
Lys sensoren bruges til at korrigerer for eventuelle småfejl i tacho counteren. Hver gang vi regner med at støde ind i en tyk sort linie, så stopper vi lidt før, hvorefter vi aktiverer lys sensoren og rykker 1 centimeter af gangen indtil lys sensoren har fundet sort. Vi resetter nu tacho counteren til den koordinat vi står i.

2. Test bevægelse på Mars pladen.
De mere komplicerede tests vi lavede her var, at bygge og følge en længere sti fra start til slut. Vi valgte at lave en sti af længde 8, det vil sige at robotten skulle besøge 7 koordinater før den nåede sit mål. Dertil prøvede vi en sti af længde 4 i den modsatte retning (robotten skulle i begge tilfælde dreje en eller flere gange før den nåede sit mål. Stierne er illustreret i de følgende to billeder.

I denne figur ses den første sti som sort linie.


I denne figur ses den anden sti som sort linie


Grunden til at vi skulle bevæge os i begge retninger er at der er forskel på hvor langt vi skal bevæge os i den negative X- og den positive X retninger før vi begynder at lede efter den tykt optrukne sorte linie. Grunden til dette er at robottens center er lokaliseret i kanten af en sort linie, det vil sige ikke i centrum af en koordinat. Vi observerede visse afvigelser, men i bund og grund kom robotten fra start punktet til slut punktet uden alt for stor afvigelse fra den planlagte rute.
Vi blev enige om at i reelle omgivelser, det vil sige ikke simulerede omgivelser på en computer, så er det umuligt at lave noget som altid er 100% præcist. I begge tilfælde var resultatet acceptabelt, men med små og varierende afvigelser.

3. Garbage collection i nxt enheden.
Vi løb i dag ind i store problemer da vi skulle teste path finderen med flere forskellige ruter, det vil sige at vi brugte path finder algoritmen mere end en enkelt gang på nxt enheden. Problemet var simpelthen at nxt enheden løb tør for hukommelse Nxt enheden har ialt 64kb RAM, så det er ikke meget vi har at arbejde med.
Grunden til at vi løber tør for hukommelse stammer fra den måde vi udregner stier i koordinat systemet op. I udregnelsen opbygger flere arrays vi bruger til mellemregninger, og det hukkomelse, som bliver brugt til disse arrays bliver ikke frigivet når algoritmen er færdig.
Vi forsøgte først at løse problemet ved at genbruge hukommelse, men da dette gav os yderligere problemer med null pointer exception, valgte vi istedet at kigge på en meget ny udgivelse at nxt softwaren, som indbefatter garbage collection. Dette var imidlertidigt ikke noget vi nåede at blive færdig med idag, da vi først fandt problemet meget sent. Vi vil arbejde videre med dette problem imorgen.

Ingen kommentarer:

Bidragydere