Denne blog bruges af Kim Munk Petersen (20063667), Andreas Koefoed-Hansen (20062154) og Tim Rasmussen (20061947) som dagbog i forbindelse med kurset Embedded Systems/Legolab på Århus Universitet.

torsdag den 3. december 2009

Valg af projekt

Dato:
27-11-2009

Antal timer brugt:
5 timer

Deltagende personer:
Kim Munk Petersen, Andreas Koefoed-Hansen og Tim Rasmussen

Denne uges opgave:
Denne uges opgave går ud på at bestemme hvilket projekt der ønskes at arbejde med. Vi skal overveje alle projekter fra listen og dertil gerne tilføje nye selv. Der skal udvælges 3 projekter, hvor det ene er projektet med højeste prioritet og de sidste to er alternative projekter. Til hvert projekt skal der laves et beskrivelse, overvejelser omkring software og hardware, beskrivelse af problemer der skal løses og hvad vi forventer at præsentere når projektforløbet er slut. Efter denne korte beskrivelse, skal der laves en mere detaljeret beskrivelse af det projekt vi har valgt at arbejde med samt en plan for projektets forløb.

Overvejelser omkring projekterne:
Vi har snakket de 6 projekter igennem og har på baggrund af dette udvalgt 2 af projekterne vi kunne have lyst til at arbejde videre med. Ud over de 2 projekter, er vi også selv kommet frem til et projekt der kunne være spændende at arbejde med. De udvalgte projekter, i prioriteret rækkefølge, er:
  1. LegWay
  2. Farve-scanner (der bygger billedet i lego)
  3. Pacman
Vi vil kun koncentrere os om disse projekter fra nu af.

Legway:
Dette projekt går ud på at bygge en Legway robot der kan balancere ved at benytte en gyroskop-sensor fremfor en lyssensor som ved øvelse 4. Ifølge vores overbevisning lykkedes det ikke for nogen gruppe at få den SegWay-lignende robot til at balancere ved øvelse 4. Idet vi af den grund ikke har nogen anelse om hvor lang tid det tager os at få robotten til at balancere, tillader vi os at definere projektet en smule løst. Hermed menes at vi i første omgang koncenterer os om at få robotten til at balancere hvorefter vi implementerer en række features hvis der er tid tilovers.

1x NXT

Sensors:
1x Gyroskop
1x Ultralydssensor
1x Lyssensor
1x Kompassensor

Actuators:
2x Motorer

Achitecture:
I første omgang vil vi benytte en simpel klasse, der implementerer en PID kontroller[1] som sender input til motorerne ved at fortolke inputtet fra gyroskopsensoren. For at udvide funktionaliteten til at kunne køre frem og tilbage vil vi bruge en car klasse der som default sørger for at robotten hele tiden balancerer. Klassen skal også have metoder til at få robotten til at bevæge sig. Senere hen kan der anvendes en behavior-baseret achitecture[2], hvor opførsler fx får robotten til at følge en linje på gulvet, gør det muligt at styre robotten fra en computer eller får den til at undgå forhindringer.

Difficulties:
Det sværeste vil i dette projekt være at implementere en PID kontroller og justere den ved at ændre på parameterne, således at robotten kan balancere. En anden ting der muligvis bliver svært er at få robotten til at dreje samtidigt med at den holder balancen.

Presentation:
Til præsentationen forventer vi at kunne præsentere en kørende robot der balancerer på egen hånd og er i stand til at køre op og ned af ramper samt få små skub uden at vælte. Derudover vil vi demonstrere nogle af de valgfrie features, forklaret længere nede, hvis vi når at implementere disse.

Pacman:
Projektet går ud på at simulerer et pac-man spil med Lego-robotter. Der er en pac-man og tre spøgelser der skal bevæge sig rundt på en fastlagt bane. Målet for pac-man er at "overleve" i et stykke tid, og hvor spøgelserne bliver aktiveret med faste intervaller. For at gøre spillet sværere kan hastigheden af spøgelserne øges efterhånden som spillet skrider frem.

4x NXT

Sensors:
8x Lyssensorer

Actuators:
8x Motorer

Achitecture:
Til pac-man kunne der godt bruges en behavior styret achitecture, hvor en tråd finder ud af om man er i live eller om man er blevet fanget af spøgelserne, og andre tråde der bruges til at holde sig inden for banen og modtage indput via Bluetooth.

Spøgelserne kan bruge noget af den samme ide, hvor der også skal holdes styr på om de er inden for banen og hvor der er en tråd afvikler noget AI der bruges til at forfølge pac-man.

Difficulties:
Det sværeste i dette projekt vil være at progammere en AI der får spøgelserne til at forfølge pac-man og samtidigt holde sig inden for banens grænser.

Presentation:
Ved præsentationen vil vi demonstrere hvordan spillet virker ved at starte et kortvarigt spil. Her vil vi både vise et scenarie hvor man vinder spillet, dvs. ikke bliver fanget af spøgelserne, samt hvad der sker når man bliver fanget og dermed taber. Hvis der er stemning for det, vil vi evt. lade en frivillig teste spillet.

Farve skanner:
Dette går ud på at bytte en scanner der kan aflæse et billede og enten sende informationerne til en pc eller replicerer billedet ved at placere legoklodser på en plade.

Hvis billedet skal kunne repliceres i lego skal der bruges:

2x NXT: En der bruges til at scanne billedet og en der bruges til at bygge replikationen.

Sensors:
1x Lys / Farve sensor

Actuators:
5x Motorer
2x til at scanne, 3x til at bygge.

Achitecture:
Ideen er at fordele ansvaret på de to NXT´er så en sørger for at scanne billedet samt sende informationerne via Bluetooth, og en anden bruges til at finde de korrekte klodser og placere dem. Der er ingen grund til bruge tråde da der ikke er flere behaviors der spiller ind, derfor vil en sekventiel struktur være oplagt.

Difficulties:
Den sværeste del vil være at få lavet den del der bygger billedet i Lego, da der skal kunne placeres forskelligt farvede klodser alt efter hvilke informationer der modtages. Der kunne også være problemer med at få vendt klodserne rigtigt så de kan placeres på pladen.

Presentation:
Vi regner med at kunne demonstrere en scanning og "printning" af et billede. For at det ikke kommer til at tage for lang tid, kunne man starte midtvejs i en scanning og printning. Desuden vil vi forklare hvordan vi har løst de sværeste problemer og evt. præsentere kvantitative målinger udført.

Beskrivelse af valgte projekt:
Vil har valgt at arbejde med projektet LegWay. Grunden til dette, skyldes at vi her føler at vi her bedre kan dele problemet med at få robotten til at balancere og køre op i flere problemer. F.eks. vil det først problem der skal løses blot være at få robotten til at balancere. Herefter kan robotten udvides til at kunne kører og derefter også til at kunne dreje. Samtidig giver projektet os også mulighed for at kommer mere i dybden med PID controlleren, som ikke rigtig lykkes for os under øvelsesgangen.

Vi håber på at kunne udvide funktionaliteten så den kan køre frem og tilbage og muligvis også dreje. Hvis vi får den til at køre rundt kan vi også tilføje ekstra features som fx. følge en linje og/eller undgå forhindringer. Tilføjelsen af ekstra sensorer, kunne give mulighed for at tilføje ekstra opførsler til robotten. Som basis for at få robotten til at balancere, køre og dreje, kunne man forestille sig at man har en opførsel der får robotten til at balancere, en til at få robotten til at køre/dreje. Hvis robotten udvides med ekstra sensorer, vil der også kunne tilføjes en opførsel der sørger for at robotten undgår at køre ind i objekter.

Prioiriteter:
  1. Balacere vha. PID kontroller.
  2. Køre frem og tilbage evt. styret via Bluetooth.
  3. Dreje
  4. Follow the line
  5. Undgå objekter.
  6. Navigation vha. kompas.
Plan for projektforløbet:
Først vil i bygge robotten og udføre eksperimenter på gyroskop-sensoren, hvorefter vi vil arbejde på at udvide funktionaliteten.

Vi tager udgangspunkt i de ovenstående prioriteter. Planen vil være at opdele projektet i faser, hvor vi arbejder på at implementere og dokumentere en feature af gangen og først begynder på den næste fase når arbejdet på den forrige er færdig. Der kan opstå situationer hvor vi er nødt til at opgive at implementere en feature, hvis vi kommet til at sted hvor vi ikke kan komme videre. I denne situation vil vi i stedet vælge at gå videre til en anden fase.

Referencer:
  1. PID controller, http://en.wikipedia.org/wiki/PID_controller
  2. leJOS behavior programming tutorial, http://lejos.sourceforge.net/nxt/nxj/tutorial/Behaviors/BehaviorProgramming.htm

Ingen kommentarer:

Send en kommentar

Faste læsere