Thursday, November 4, 2010

Lab 4/11-10

Vi har idag været:
Toke, Esben og Philip (Lasses søn var syg)

Vi har arbejdet fra 11 til 14

Vi vil idag undersøge begrebet behaviours inden for embedded systemer.

Opsætning
Vi starter med at hente SoundCar.java og overføre det til nxt'en. I programet er der 3 behavoiurs som kører simultant men supressor hinanden.

Test
Vi tester programmet med forskellige antal behaviours og de opfører sig som forventet, de supressor hinanden. Når der f.eks bliver spillet lyd stopper robotten altid med at køre, også selv om den er ved at avoide.

Daemon Tråde
Behaviour tråedene bliver sat som daemon threads, for at den virtuelle maskine skal lukke ned når SoundCar.java (som har kører i main tråden) lukker ned. Vi skal altså ikke vente på behaviourne når vi vil sukke programmet.

Counters vs Booleans til supression
Behaviour klassen bruger counters til at styre supression. Grunden til at bruge counters i stedet for en simpel boolean er at hvis man bruger booleans, så vil en behaviour når den releaser sin underbehaviour også release sit "barnebar". Det kan være det barnebarnets far med vilje allerede har supressed sit barn. Den supression vil så blive brudt. Med counters sker det ikke.
Det er vigtigt at forstå at behaviours altid kører og udregner, også selv om de er supressed.

Prioritet vs Heirarky
Forskellen på den kode vi kører med behaviours og den kode som Fred Martin kører er at Martin's kode bruger en central styrings algoritme til at bestemme hvilke tråd der skal køre. Vores tråde kører altid, selv om de ikke får lov til at give udput. For os er det trådenes heraki der bestemmer udput og ikke prioritet.

Lys behaviour
Vi laver en TowardLight behaviour, som skal styre robotten imod lys når det er meget stærkt.
For at få triggered vores behaviour laver vi en treshold for hvornår lys er for lyst til at ignorere.
Vi har sat TowardLight til at supresse de andre behavious, når den ser lyset går den efter det.



No comments:

Post a Comment