fredag den 18. januar 2008

Rettelser til Blog, afsluttende kommentarer

Idag lavede vi rettelser til Blog'en. Dette foregik i CVS: Vejfinder/docs/rapport.html

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

Ingen kommentarer: