Deltagere: Elvar, Ebbe, Henrik
Sessionens formål:
1. Færdiggøre redesign af robot.
2. Implementere systemarkitektur.
3. Implementere repræsentation spillepladen.
4. Implementere pathfinding algoritme.
1. Redesign af robot
Vores redesign af vores robot er færdigt, og den står nu som det ses på nedenstående billede:

Det har skabt større stabilitet at ligge NXT enheden ned. Dette har gjort at vores kran sidder bedre fast, og er nemmere at drive. Samtidigt er vores lyssensor kommet helt ind imellem hjulene, således at den nu kan køre over alle forhindringer.
2. Systemarkitektur
hele vores systemarkitektur er nu på plads, inkl vores main event loop. Vi har implementeret vores egen MarsNavigator, som extender TachoNavigator med metoder til at køre imellem grid-celler, og derved abstrahere tacho-counters osv. væk. Navigatoren bruger PathFinder klassen til at finde ruter igennem vores miljø. Vi beskriver PathFinder senere.
Det eneste vi mangler at implementere er sådan set metoden der pålideligt kan bringe robotten fra en celle (kvadrat man får når longitude og lattitude stregerne skærer hinanden) til en anden celle.
Vi planlægger, som beskrevet tidligere, at bruge de brede sorte længedegrads streger til at finde ud af i hvilken 'kolonne' vi befinder os i henad x-aksen. Dette betyder at vi ikke bruger tacho-counteren til dette, hvilket skule give os større præcision. Vi har så 2 referencepunkter på pladen i y=0 rækken (se tidligere tegning af spillepladen) hvor vi kan resette vores tachocouner. Vi håber at dette kan give os en rimelig præcision i både x og y aksens retning.
Til at finde ud af hvornår vi kører hen over en af de bredde sorte streger, har vi lavet en MarsSensor klasse, der har metoder specifikt til dette.
Vi løb ind i en teknisk begrænsning da vi implementerede vores MarsNavigator. Det viser sig at Runnable interfacet fra Java, ikke er tilgængeligt i Lejos. Derfor kan vi ikke lave denne som en tråd, som vi egentlig kunne have tænkt os. Vi har derfor måtte arbejde udenom dette problem.
Den komplette kode for vores robot er her.
3. Repræsentation af spillepladen
Vi har valgt at repræsentere spillepladen som et 2-dimensionelt array af Node's. En Node er indtil videre bare en x,y koordinat, men på denne måde har vi mulighed for at tilføre mere funktionalitet til disse senere. De kvadrater hvor der er forhindringer på, og hvor vi derfor ikke kan køre hen, bliver sat til null.
4. Implementere pathfinding algoritme.
Vores pathfinding algoritme finder den korteste sti fra en grid-cell til en anden og returnerer denne sti i form af en list af Node's. Grundet den relativt lille spilleplade har det været muligt at implementere denne algoritme som en rekursiv dybde-først-søgning. Denne er delvist inspireret af Djikstra, der dog bruger en bredde-først-søgning. Vi beregner derved alle mulige stier til vores destination, men ved hver returning fra et rekusrsivt kald, bliver de længste ruter sorteret fra.
Vi har lavet et simpelt PathTest program, der tester denne pathfinder. Dette kan også findes blandt vores anden kode.
Ingen kommentarer:
Send en kommentar