Med Asbjørn, Christer og Jesper

fredag den 30. november 2007

Oplæg til projekt

Tidsforbrug: 3 timer.
Deltagere: Asbjørn og Christer
(Jesper er på Island i denne uge)

Disse er opstillet i prioriteret rækkefølge. Vi vil helst arbejde med den øverste (rubiks kube løseren). Fælles for dem alle er, at de benytter en eller flere farvesensorer (NXT Color Sensor). Den findes ikke i det udleverede NXT sæt og skal derfor først indkøbes hos LEGO.
Som første del vil vi undersøge egenskaberne ved en sådan sensor. Vi kan se i lejOS APIen at den er understøttet og at man kan få en RGB-værdi ud. Indkøb af en eller flere af disse sensorer mener vi kan retfærdiggøres af, at vi undersøger og beskriver egenskaberne set i forhold til den ordinære lyssensor. Først efter en sådan undersøgelse vil vi tage den i anvendelse. Så vil farvesensorerne eventuelt kunne anvendes i senere udgaver af kurset.

  1. Robot der med en farvesensorer indscanner siderne på en rubiks kube og ud fra denne måling løser den.
  2. Robot der på et gulv med legoklodser søger rundt og "spiser" klodser med en bestemt farve.
  3. Robotter der kører rundt mellem hinanden og kan skelne mellem ven og fjende baseret på hinandens farver.

Projekt 1 - Robot der løser en rubiks kube. (Primært valg)
Hardware/software platfom:
Vi skal bruge en NXT, 3 motorer og 2 stk NXT Color Sensor. Motorer, sensorer og software vil blive beskrevet i de følgende afsnit.

Motorer:
Den mekaniske del skal kunne:
  1. Rotere terningen (1 motor) ved at terningen hviler i en slæde der går 1/3 op på den
  2. Holde terningen fast mens den nederste 1/3 roterer (1 motor), samt at skubbe terningen på plads når den roteres om en anden akse (se næste punkt)
  3. Rotere terningen i en dimension mere (1 motor).


Med disse tre funktioner kan vi rotere og manipulere terningen som vi vil, da alle handlinger kan reduceres til en serie af disse.

Sensorer:
Før man kan løse en rubiks kube, skal man kende farverne på alle felterne. Dette kan løses på to måder:
  1. Vi kan taste kubens farver ind på forhånd.
  2. Robotten kan undersøge det selv med farvesensorer.
Da det mest er i kursets ånd med selvstændighed, vil den anden mulighed være at foretrække. Vi har hos LEGO fundet en farvesensor (NXT Color Sensor), der vil kunne bruges til dette formål.
Angående dette projekt er vi kommet frem til at 2 sensorer vil kunne gøre det uden at vi skal montere flere motorer. Med de eksisterende motorer vil vi kunne skubbe disse hen over siderne på kuben og "scanne" to rækker felter ad gangen. Ved at rotere kuben kan vi således komme hele vejen omkring. Med kun én enkelt sensor skal vi bruge en del ekstra mekanik for at kunne have komplet dækning, da vi ikke umiddelbart kan nå både centrum og hjørnerne på en side på denne måde uden ekstra mobilitet.
Sensorerne er markeret med "S" på billedet.

Software:
Vi skal dels kunne:
  • Løse en rubiks kube algoritmisk. Dette er et velkendt problem, som sagtens kan implementeres i lejOS java.
  • Styre motorerne, så de manipulerer kuben som ønsket.
  • Scanne overfladerne på kuben og omsætte resultatet til et kort over den. Ud fra dette kort og de to ovenstående punkter, kan vi løse kuben.
Største udfordring:
I dette projekt vil den største udfordring være at scanne overfladen på kuben. Her vil vi komme til at arbejde med en ny type sensor og mekanik der er stabilt nok til denne anvendelse. En ekstra udfordring ville være at understøtte kuber med et på forhånd ukendt farveskema. Her vil programmet være nødt til at tage alle målingerne (6 sider á 9 målinger) og forsøge at placere dem i 6 clusters i et tredimensionelt RGB-rum. Hvis dette kan lykkes, kan man udlede hvilke felter der skal ende op på samme side af kuben.

Hvad vi regner med at nå frem til:
En mekanisme der automatisk undersøger siderne på en rubiks kube og derefter mekanisk manipulerer den til en løsning.

Opdeling i delmål:
  1. Test af NXT Color Sensor.
  2. Manupulation af kuben med motorer
  3. Indscanning af kube
  4. Selvstændig løsning af rubiks kube i NXT'en.
  5. Skelne imellem farver der ikke er fastlagt ved compiletime.

De alternative projekter:

Projekt 2 - Køre på et gulv med legoklodser hvor robotten søger rundt og "spiser" klodser med en bestemt farve.

Hardware/software platform:

En NXT, 3+ motorer (og muligvis en motor multiplexer) og en NXT Color Sensor.

Motorer:
Vi skal dels:
  • Kunne navigere rundt på en todimensionel flade (2 motorer).
  • Kunne "spise" en klods med en specifik farve op fra gulvet (ukendt antal motorer).
Sensorer:
Der skal bare være en NXT Color Sensor til at måle farven på hver klods.

Software:
Softwaren skal kunne:
  • Måle og skelne mellem et antal farver.
  • Køre rundt og lede efter klodser på en mere eller mindre udtømmende måde.
  • Samle en klods op fra gulvet.
Største udfordring:
Vi har ikke overblik over hvordan man nemmest (dvs med mindste antal motorer) samler en legoklods op fra gulvet. Derfor vil dette være den største udfordring.

Hvad vi ville regne med at nå frem til:
Såfremt det kan lykkes at samle en klods op fra gulvet, ser vi ikke andre hindringer mod at opnå en komplet løsning.

Projekt 3 - Robotter der kører rundt mellem hinanden og kan skelne mellem ven og fjende baseret på hinandens farver.

Hardware/software platform:
Pr robot vil vi have brug for: en NXT, to motorer og en NXT Color Sensor.

Motorer:
Motorerne skal køre robotten rundt på samme måde som vi har eksperimenteret med til de almindelige øvelsesgange.

Sensorer:
I hver robot skal vi have en farvesensor, så vi kan skelne mellem ven og fjende.

Software:
Softwaren skal kunne ændre robottens adfærd baseret på hvad den ser.

Største udfordring:
Robotterne skal formentlig meget tæt på hinanden før man kan lave en præcis farvemåling. Den præcise adfærd omkring denne måling vil være den største udfordring i et projekt som dette.

Hvad vi ville regne med at nå frem til:
Såfremt vi kunne få robotterne til at skelne mellem hinanden på en pålidelig måde, ser vi ingen grund til ikke at kunne opnå komplet funktionalitet.

Ingen kommentarer: