6. Januar
Dato: Torsdag d. 6 januarTilstedeværende: Line og Lars Christian
Varighed: 7 timer
Mål: Færdig med fase 2, dvs. bane + enderobot færdig
Plan: Lars Christian arbejder på bluetooth kommunikation mellem robot og computer, Line arbejder på programmering af enderobot.
Vi startede med at lave en plan for hvordan enderobotterne skulle programmeres. Vi har diskuteret forskellige designforslag her iblandt behavior-based som er den vi har valgt at bruge.
Vi har overvejet følgende designforslag:
- Behavior based (fra Rodney Brooks supsumtion arkitektur, og Tom Dean (http://www.cs.brown.edu/people/tld/courses/cs148/02/architectures.html))
- PID (http://www.inpharmix.com/jps/PID_Controller_For_Lego_Mindstorms_Robots.html)
- til at registrere bolden
- Sekventiel (Martin kap. 5.3)
Vi valgte at bruge behavior-based design fordi dette virkede som det mest simple og logiske valg. Vores robot skal kunne nogle meget simple ting som at køre frem og tilbage indtil den ser en bold eller enden af banen. Dette er meget simpel opførsel, der burde være meget overskuelig at implementere i forskellige behaviors. Det er desuden også nemmere at debugge med flere behaviors da det er nemmere at se i hvilken behavior det går galt.
Skulle det implementeres sekventielt ville det kræve mange while-løkker / if - statements bl.a. fordi at det vigtigste robotten skal gøre er at skifte retning så den ikke kører ud over kanten. Hvordan man skulle implementere dette har vi ikke gjort os flere tanker om da det virkede meget kompliceret, og unødvendigt.
Vi overvejede muligheden for at bruge PID-kontrol til at styre sensorene så vi f.eks. kunne køre tættere på bolden.
Vi besluttede os for at starte med et behavior-based design, og hvis tiden tillader det vil vi senere udvidde det med PID-kontrol til at køre tættere på bolden.
Behaviors
Vi valgte at bruge den udleverede Behavior-klasse (fra lab 8) og udvide den med funktioner til vores robot. Ligeledes tog vi (den meget benyttede) Car klasse og skrev den om til kun at håndtere en enkelt motor.
Vi skal have tre behaviors:
- Drivebehavior: Nederst i hierakiet som får robotten til at køre (retningen sættes StopBehavior).
- Search-behavior: Leder efter en bold, stopper robotten og sparker hvis den finder en.
- Stopbehavior er øverst i hierakiet leder efter sort underlag og ændrer retningen.
Dette gik Line i gang med at programmere. Undervejs stødte vi på nogle mindre problemer, bl.a. gjorde manglende kendskab til LeJos API at Line længe bøvlede med at få en af de gamle lyssensorer til at virke.
Da alle tre behaviors var implementeret gik vi i gang med at teste dem. Robotten stoppede i de sorte felter da den konstant skiftede retning. Derfor implementeredes i StopBehavior en while-løkke der sørger for at StopBehaviour ikke skifter retning før der var målt hvidt underlag.
For at nå til denne erkendelse prøvede vi at logge data i en datalogger (koden er her) og så at det ikke var fordi sensoren ikke målte de data der skulle til for at aktivere StopBehavior. Desuden skrev vi en masse data på displayet hvilket også forstyrrede robottens kørsel ved at bruge en masse ressourcer på at opdatere displayet hver eneste gennemgang af løkken. Dette gjorde at robotten ikke nåede at reagere på sensorerne før det var for sent (og en enkelt gang kørte ud over kanten af banen).
Da vi fik ændret disse ting kørte robotten som forventet.
Lars Christian startede dagen med at have en masse problemer med kommunikation over bluetooth - ikke specielt med robotterne bare helt generelt (upload af data samt discovery til NXT). Målet var at få kommunikation til virke begge veje, vi fandt nogle eksempler (Lejos’ egen eksempler) på hvordan dette kunne lade sig og gøre, og da bluetooth først virkede var dette ikke et problem at få til at køre. Dette gav os grundlaget for at arbejde med bluetooth både som debugging, kontrol og informations værktøj.
Line arbejde samtidigt på at få banen gjort færdig, hvilket har involveret en del savning, boren og legobygning. Vi endte med at få gjort plads til både lyssensorer og de to lyskastere i to bjælker som vi har monteret på banen.
Konklusion
Vi har i dag nået vores mål. Vi har bygget banen færdig (stort tømmerarbejde) samt fået enderobotten til at køre med 3 behaviors der skifter som forventet. Alt i alt betyder dette at vi nu er færdig med 2. fase af projektet.
Da lyset på banen skifter i løbet af dagen kan vi ikke fastsætte værdier for bolde og sort på banen, så næste skridt er at implementere en kalibreringsfunktion.
Desuden skal vi have arbejdet mere på midterrobotten, som vi syntes det kunne være sjovt at montere omnihjul på. Midterrobotten skal kontrolleres fra en PC via bluetooth.
Bluetooth kommunikation mellem PC og NXT skal viderudvikles så vi kan få kommunikationen til at virke imellem de forskellige robotter.
Ingen kommentarer:
Send en kommentar