Med Asbjørn, Christer og Jesper

tirsdag den 15. januar 2008

Projekt, møde 8, 9, 10 og 11

Dette blogindlæg dækker over torsdag og fredag i uge 2 samt mandag og tirsdag i uge 3.
Deltagere: Asbjørn, Christer og Jesper
Tidsforbrug: 4 x 6-7 timer

Et samlet program for disse møder har været
  • Fix af "defekt" farvesensor
  • Optimering af løsningsalgoritmen
  • Samle de forskellige elementer i problemløsningen
  • Finjustering af maskinen
  • Håndtering af mekaniske fejl undervejs
Disse vil vi her gennemgå et for et.

Fix af "defekt" farvesensor
Torsdag havde vi pludselig en fejl på vores ene farvesensor. Vi kunne registrere at den var sat til, men den målte alt som sort. Kabelfejl og fejl i NXT'en blev hurtigt udelukket. Ligeledes opdagede vi at en anden gruppe havde en sensor der ikke kunne måle blå, men rapporterede det som grøn i stedet. Hvis 2 ud af 5 indkøbte sensorer er i stykker, er det en uacceptabel fejlrate. Derfor gik vi igang med at undersøge om det kunne være et konfigurationsproblem. En internetsøgning fortalte os at det skulle være muligt at kalibrere hvid- og sortniveau for hver farvekomponent, men producentens hjemmeside, hitechnic.com, indeholdt ingen information om dette. Den indeholdt til gengæld information om i hvilke registre man kan læse rå 10 bit værdier for de tre farver. Da disse værdier viste sig at være normale i de "defekte" sensorer, lå det klart at problemet lå i sensorens omregning til 8 bit værdier (hvor det er meningen at den skal lave omregningen ud fra hvid- og sortniveau grænser).
Det tætteste vi kom på en løsning i dokumentationen var, at sensoren har et command register på adressen 0x41, men det står kun beskrevet som "reserved for future use". Vejen frem var derfor at prøve sig frem. Register 0x41 er tilsyneladende generelt til styring af tilstand i de forskellige i2c sensorer til NXT'en. På siden om Hitechnics kompas-sensor kunne man læse at den kunne sættes i kalibreringstilstand ved at skrive værdien 0x43 til register 0x41. Dette prøvede vi med farvesensoren og kunne konstatere, at vi nu kunne indstille hvidniveau. Efter at lege lidt med forskellige værdier, kunne vi desuden se at vi ved at skrive værdien 0x42 kunne indstille sortniveau. Disse resultater endte med at vi lavede vores egen farvesensor driver i leJOS, baseret på den (meget skrabede) eksisterende, samt et lille program til at kalibrere med.
Når man indstiller hvidniveau skal sensoren holdes 1.5 cm fra et hvidt stykke papir hvorefter man starter kalibreringen, der er færdig når sensoren blinker. Når man indstiller sortniveau (eller ambient light niveau), skal sensoren holdes så den peger ud i luften. Herefter er fremgangsmåden den samme som for hvidniveau.

Optimering af løsningsalgoritmen
Dette er en fortløbende indsats. Vores algoritme er sådan set funktionel, men selv små ændringer i antallet af træk kan betyde flere minutters forskel i udførselstiden.
[Christer kan evt skrive mere her]

Samle de forskellige elementer i problemløsningen
Vi har indtil nu udviklet og testet de forskellige komponenter hver for sig. Nu er det på tide at samle dem og teste en kubeløsning fra ende til anden. Indledende forsøg har været lovende. Med ganske lidt hjælp undervejs lykkedes det maskinen at scanne og løse en kube. Det tager godt nok 15-20 minutter, men det virker.
Det er planen at en videooptagelse af hele processen skal lægges online. Vores seneste video har efter en uge på youtube.com genereret over 8700 views! Næste alle disse kom i løbet af søndag og mandag. Tilsammen har vores 3 LEGO-videoer i skrivende stund været set lidt over 10000 gange.

Finjustering af maskinen
Vi har stadig problemer med mekanisk slør i maskinen. Enkelte gange twister den ikke helt korrekt, hvorefter kuben låser i det følgende twist og blokerer maskinen.
[Jesper kan evt skrive mere her]

Håndtering af mekaniske fejl undervejs
Som beskrevet i ovenstående afsnit har vi lidt problemer nu og da. Vi har lavet en todelt fejlhåndtering. For det første har vi ændret motorstyringen, så den stopper og kører lidt tilbage hvis den "mærker" at den sidder fast, f.eks. når den twister. Dette kan den observere ved at holde øje med tachocounteren i motoren mens den kører. Hvis en motor pludselig kører meget langsommere end den skal, er det et tegn på at den sidder fast. Så pauser maskinen indtil situationen er udbedret og den sættes igang igen. For det andet har vi benyttet vores sidste sensorindgang til at tilkoble en touch-sensor, som vi har lavet til en stor rød "panik-knap". Når man trykker på denne, stopper maskinen på samme måde som hvis den selv opdager et problem.
I løbet af tirsdag fik vi desuden tilføjet aktiv fejlkorrigering. Hvis den under et twist sidder fast, vender den kuben og forsøger at "tumle" med kuben der hvor den låser, hvorefter den forsøger at twiste igen.

Ingen kommentarer: