lørdag den 5. januar 2008

Arkitektur beskrivelse. Initiel ideudvikling.

Session: Lørdag 05/01-08 kl. 9-15
Deltagere: Elvar, Ebbe, Henrik

Sessionens formål:
1. Beskrivelse af initielle løsningsidéer.
2. Eksperimentere med de forskellige løsningsforslag.


1. Initielle idéer.
Vores første løsningsforslag er som følger:
Vores spilleplade bliver opdelt i 12x6 kvadrater, svarende til inddelingen der fremstår af højde og breddegrads stregerne. (Se forrige indlæg for billede af spillepladen). Hvert kvadrat kan enten beskrives som værende frit, eller at have en specifik forhindring på sig. Vi repræsenterer dette via et byte array.
Til at navigere rundt på spilledepladen vil vi så anvende en pathfinding algoritme. Mulige forslag vil være A* eller Djikstra. For at spare tid vil vi forsøge at finde en færdig implementeret version.

Opbygningen af vores program bliver som følger:
  • Til navigering, laver vi en seperat klasse, der kan holde styr på hvor vi er, og bringe os fra A til B. Denne klasse vil højst sandsynligt anvende TachoNavigator klassen.
  • Vi implementerer hver opgave der skal løses som en tråd. En sådan opgavetråd ved hvor den skal bevæge sig hen for at påbegynde opgaven, og hvor den slutter hvis alt går efter planen. Den ved også hvor lang tid opgaven forventes at tage. En opgavetråd vil returnere true hvis alt går som det skal.
  • Vores main tråd vil implentere en kø af opgaver og sørge for at starte dem i en givet rækkefølge. Den vedligeholder en timer hver gang en opgave startes der svarer til den forventede opgavetid. Hvis enten denne timer udløber, eller hvis tråden returnerer false, vil main tråden tage kontrollen og prøve at navigere hen til et af vores referencepunkter. Herfra ved vi præcist hvor vi står på pladen og vi kan derefter forsøge den samme opgave igen.

Vores referencepunkter bliver valgt som 2-3 steder på spillepladen som er let tilgængelige og genkendelige. Dette vil højst sandsynligt være enten ved en væg eller et hjørne, hvor vi ved med sikkerhed hvor vi er i enten x eller y retningen. Se nedenstående billede.

Det vil være muligt for os at holde styr på hvor vi er i x-retningen ved at registrere hver gang vi kører over en af de brede sorte linjer. Dette håber vi på at kunne gøre pålideligt.
Planen er så at bruge tachocounteren til at holde styr på hvor vi er i y-retningen. Da den kun bruges til dette, vil det give større pålidelighed. Men da vi ved fra tidligere øvelser at denne er betragteligt upræcist, gør vi brug af vores referencepunkter til at resette vores position efter hver opgave.

Dette er indtil videre den overordnede plan, der dog kan nå at ændre sig mange gange efterhånden som vi udfører eksperimenter.

2. Eksperimenter

Eksperiment A:
Formål: At fastlægge afstanden mellem vores breddegrader målt i tacocounter enheder.
Resultater:
Under vores eksperiment opdagede vi et par kritiske fejl i vores design. Vores lyssensor sidder for langt fremme, således at den rammer på nogle forhindringer og derved forhindrer at robotten kan komme over disse. Vi gik derfor i stå da vi blev nød til at redesigne robotten helt forfra. Et kedeligt tilbageskridt, men hellere nu end senere hvor vi har fået kalibreret alle vores variable efter det forkerte design.

Vores redesign bliver klar til i morgen igen hvor vi mødes næste gang.
Vores systemarkitektur bliver samtidigt også klar i morgen og vi skulle kunne begynde at arbejde på navigationsdelen og problemløsningsdelen i parallel.

Næste møde:

06/01-2008 kl 09:00 i Zuse

Ingen kommentarer:

Bidragydere