Redigering
Varighed fredag d. 18: 9 timer, Deltagere: Rolf, Janus
Varighed lørdag d. 19: 7 timer, Deltagere: Rolf, Janus
Varighed torsdag d. 24: 2 timer, Deltagere: Janus
Afsluttende kommentar
Fremlæggelsen
Til fremlæggelsen startede vi naturligvis med det vi havde skrevet vi ikke
burde gøre, nemlig at bruge den sidste kalibrering af lyset fra ca. en halv times tid inden
vi fremlagde. Dette resulterede selvfølgelig i at robotten ikke så farverne på
vejen korekt, og at den derfor fandt et t-kryds som et fuldt kryds. Efter en
hurtig rekalibrering virkede det hele dog efter hensigten.
Da robotten nåede til
det kryds, der var i vejnettet, og begyndte sin autokalibrering, var det tydeligt
at der var lidt mere at arbejde med her. Robotten korrigerer nemlig kun ca. 0.5cm
for hver gang den har målt sin vinkel på en akse. Som vi også
sagde under fremlæggelsen ville vi gerne have regnet den eksakte afvigelse ud
således at vi bare kunne justere robotten
præcist det stykke, som den var ved siden af. Dette havde vi dog ikke nået. Ellers
forløb hele fremlæggelsen efter planen, robotten fandt det kort vi
havde lavet. Selve manøvreringen på det fundne kort virkede også som det skulle
og robotten kørte glad og veltilfreds rundt på kortet.
Ideer / Udvidelser
Havde tiden været til det, var der flere ting, som vi synes kunne være interresante
at undersøge. Vi ville gerne have set om det ville have været muligt at lave endnu
mere præcis navigation, hvis vi havde haft en NXT compass sensor. Yderligere kunne det
være interessant om det havde været
nemmere at detektere vejen, hvis vi havde brugt farvesensorer istedet for lyssensorer.
Vi ville også gerne have undersøgt muligheden for at sætte flere NXT'er sammen via Bluetooth
og på den måde finde
kortet hurtigere ved at lade flere robotter samarbejde.
Ideelt set ville meget gerne have prøvet
med nogle større kort, men der var desværre ikke flere vejmoduler end de vi nu engang
havde. Der er ingen tvivl om at vi sagtens ville kunne bruge mere tid på et
så spændende projekt, og at der er masser af sjove ting, der endnu kunne udforskes,
laves og testes.
Overordnet konklusion
Vi gik ind i projektet med et håb om at kunne lave en robot, der fandt alle de kort vi kunne smide efter den. Det var også vigtigt for os at den kunne finde de orginale lego vej moduler istedet for blot "hjemmelavet vej" med hvidt papir og sort tape. Et andet vigtigt kriterie for os var at robotten bagefter kunne køre rundt på kortet ved hjælp af shortest paths. Kigger vi på robotten/projektet som det var til fremlæggelsen, må vi sige at vi har nået vores mål med projektet. Der er ingen problemer med at finde de kort vi har bygget, og alt lige fra Bluetooth-kommunikation til TachoNavigator virkede.
Af problemer under projekt arbejdet kan nævnes: Kalibrering af TachoNavigator,
kalibrering af lys sensorer, batteri niveauet og små unøjagtigheder i TachoNavigator.
Selve kalibreringen af TachoNavigator kom vi til sidst til livs på ved at bruge den
nye kalibreringstest, som vi nævner i Blog9. Efter at afstanden imellem hjulene
er sat så præcist som muligt, var det kun små unøjagtigheder der var tilbage. Disse små
unøjagtigheder, som langsomt hobede sig op, blev så igen rettet ved vores autokalibreringsalgoritme.
Det endte med at TachoNavigator var ganske brugbar til at navigere
rundt efter på trods af at den fra starten så ud til at være meget unøjagtig.
Hvad angår lyssensorerne, var deres nøjagtighed afhængig af kalibreringen
og hvordan lyset i rummet var. Hvis man blot har dette i baghovedet, og heletiden
rekalibrerer når lyset ændrer sig, er det ikke noget større problem.
Omkring batteriet
fandt vi på den hårde måde ud af at tacho-sensorerne ikke virker optimalt ved lave
spændinger, og man derfor skal sørge for at lade batteriet op ofte. Igen er det bare
et spørgsmål om at være opmærksom på dette, men det gav alligevel
lidt kvaler indtil vi havde identificeret problemet.
Selve vejfindingsprogrammet til NXT'en havde vi delt op i behaviours, hvilket viste
sig at være en rigtig god ide. Nederst havde vi LineFollower, som bare forsøger at
følge højrekanten af vejen. Herpå ligger så GridBuilder, som holder øje med hvilken
vej robotten bevæger sig på og opbygger kortet. Når det var nødvendigt kunne GridBuilder
bare tage over ved at supresse LineFollower. Ovenpå igen har vi MapFollower, som kan
køre mellem 2 punkter på kortet via en shortest path. Når en "del" af kortet er
fundet bliver GridBuilder og LineFollower supressed, robotten kører til et endnu ukendt
område og "fortsætter herfra". Eftersom vores robot er blevet ganske god til
at finde kortene, må det siges at denne opbygning har været en success.
Til bluetooth
kommunikationen havde vi en thread, som kører i baggrunden på NXTen og som
giver mulighed for at "logge" på robotten. Netop det at alt dette foregår i en isoleret
thread betyder at ligemeget hvilken behavior, der er aktiv, og ligemeget hvad
robotten er igang med, er det muligt at kommunikere med den. Også dette er vi
blevet meget tilfredse med - det har været en stor hjælp med debugging at kunne
se noget mere output end bare NXTens LCD display. F.eks. har vores UI en
"freemem"-indikator, så vi hele tiden kan se hvor meget hukommelse NXTen har tilbage.
Dette brugte
vi til at sørge for at ingen af vores metoder havde memleaks.
Selve UI'en er vi er tilfredse med, da den giver et rigtigt godt indblik i hvordan robotten virker; og så har det som nævnt været en stor hjælp mht. debugging at at have adgang til masser af information fra NXTen. Det at kunne se det færdige kort på skærmen er utroligt tilfredsstillende.
Alt i alt er det et utroligt vellykket projekt, og vi er kommet godt rundt om alle
de forhindringer, som vi er stødt imod undervejs. Vi har nået de mål, som vi satte
i starten af projektet - og det er vi glade for.
Det har også været sjovt at kombinere
lego-bygning, programmering og algoritmedesign i et enkelt fag og se resultaterne
af arbejdet udfolde sig
i den fysiske verden.
Relevante informationer
- Kildekode (http://daimi.au.dk/~gof/lejos/MJR-Source.zip)
- Bloggen som rapport (http://daimi.au.dk/~gof/lejos/blog.html)
- Bloggen som blog (http://mjrnxtblog.blogspot.com)