Med Asbjørn, Christer og Jesper

tirsdag den 8. januar 2008

Projekt, møde 7

Deltagere: Asbjørn, Christer og Jesper
Tidsforbrug: 7 timer (9-16)

Målet med dagens session er, at:
  • Fortsætte arbejdet på en løsningsalgoritme
  • Kunne scanne kuben til vores datastruktur
  • Diverse hardwareforbedringer
  • Aftale næste mødetidspunkt
Fortsætte arbejdet på en løsningsalgoritme.
Dette er vores vigtigste punkt på dagsordnen. Det har vist sig vanskeligere end ventet at konstruere en sådan algoritme. Derfor er to af os sat på denne opgave. Vi nærmer os efterhånden en løsningsmetode, men som det ser ud nu, bruger den alt for mange træk. Det har været en god ide at adskille løsningsalgoritmen fra NXT hardwaren. Debugging på en pc med en grafisk repræsentation af kuben (og ikke mindst flere clockcykler og mere ram at tage af) har lettet arbejdet.

[En eller anden: Indsæt screenshot af vores tool]

Kunne scanne kuben til vores datastruktur
Som beskrevet i vores sidste indlæg, virker farveindlæsningen rimelig pålidelig. Derfor har en del af dagens opgave været det videre arbejde med denne indscanning. Problemet er todelt. For det første skal vi have en automatisering indscanning, der hurtigst og/eller enklest muligt fører farvesensorerne forbi samtlige felter på kuben mindst én gang. For det andet skal vi kunne skelne mellem de forskellige RGB-indlæsninger og putte dem i 6 "kasser" der hver svarer til en side på kuben.
Det første delproblem er forholdsvis enkelt. I vores datastruktur CubeRepresentation kan man indsætte felterne enkeltvis. Koordinater i datastrukturen beregnes ud fra hvilken farve det midterste felt på siden der scannes har, samt farven på det midterste felt i siden der ligger opad. Ud fra disse to og et sæt xy-koordinater, indsættes 6 farver pr scanne-pass.
Aller først scanner maskinen det midterste felt på siden. Kuben bliver da roteret 90 grader mod uret og tiltet, hvilket betyder at vi nu kender farven på midterfeltet der peger opad. Herefter scanner vi 4 sider og drejer kuben 90 grader hver gang. Når vi er nået hele vejen rundt, tiltes kuben. Da vi lige har scannet de fire sider, kender vi igen midterfarven opad. Efter at have scannet 4 runder med tilt imellem hver har vi et komplet (og nogle steder ret redundant) billede af kuben indlæst. Vores eksperimenter viser os, at indscanne-fasen af løsningsprocessen tager under 2 minutter, hvilket er meget rimeligt.
Det andet delproblem er konceptuelt enkelt, men der skal flere eksperimenter til før vi kan stole på den aktuelle løsning. I løbet af en indscanning kommer vi i besiddelse af 6 * 9 = 54 RGB-værdier, men algoritmen skal bruge index-værdier fra 0 til 5. Altså skal vi bestemme hvilken farve en RGB-måling passer med. Første version af løsningen benytter en liste af reference-RGB-værdier, der er målt i maskinen. For hver ny måling beregnes afstanden mellem den og hver af reference-værdierne i et 3-dimensionelt RGB rum. Herefter vælges den reference-farve, der er kortest afstand til. Denne metode virker det meste af tiden, men der har vist sig små fejl hist og pist. F.eks. er metoden afhængig af, at lyset ikke ændrer sig for meget mellem måling af referencepunkter og de rigtige målinger. Derfor vil vi ved næste møde afprøve en form for clustering af målepunkterne. Desuden vil vi også indføre et mindre sanity check af målingerne. På den måde kan NXT'en med det samme afgøre om de registrerede farver repræsenterer en lovlig/mulig tilstand af kuben. Hvis det ikke er en sådan tilstand, er der nok fejl i indscanningen og NXT'en kan da forsøge at scanne kuben en gang mere. Mere om det i næste blogindlæg.

Diverse hardwareforbedringer
Griberen har fået en mindre overhaling, da den var for spinkel. Under kørsel (herunder farvemåling) stod den og vippede. Ustabilitet kan have negativ indflydelse på pålidelige farvemålinger. Løsningen har været at spænde motoren bedre fast, samt at stabilisere konstruktionen af armen i enden modsat griberen.

Næste møde
Torsdag

Ingen kommentarer: