Tid: 5 timer, Deltagere: Kenneth, Rawad.
Siden sidst:
Intet at bemærke.
Formål:
Formålet med denne session er at færdiggøre subsumption arkitekturen for opponent robotten samt færdiggøre konstruktionen af den fjernstyrede segway (montere IR kugle). Dette vil være sidste session inden fremvisning, der vil derfor være fokus på små justeringer[1]
Plan
- Kig på Subsumption Arkitektur i opponent robot.
- Monter IR bold på segway robot.
- Undersøg og forbedre spille værdi.
- Konklusion
1. Subsumption Arkitektur i opponent robot
Efter vi oplevede problemer med subsumption arkitekturen i sidste session der er baseret på en arbitrator, har vi valgt at implementere en hieraki baseret subsumption arkitektur. Forskellen på de to arkitektur er at behaviors suppresser hinanden som det kan ses i diagrammet herunder, hvor der istedet ville have været en arbitrator til at beslutte hvem der er suppressed.
En vigtig forskel mellem vores implementering af hieraki baseret arkitektur og arkitektur med arbitrator er at alle behaviors er selvstændige tråde der forløber kontinuerligt, og det der suppresses er kun adgang til motorene.
Vi introducerede fire behaviors i den nye arkitektur:
MonitorTouch:
Har ansvaret for monitorering af touchsensoren og registrering af tab for opponent robot[6].
MonitorInfrared:
Har ansvaret for monitorering af IRSeekeren og rapporterer directions til KillSegway behavior[5].
DiscoverSegway:
Har ansvaret for at undersøge terrænet for at finde den fjernstyrede segway, i realitet køres der rundt random indtil behavior bliver suppressed[7].
KillSegway:
Har ansvaret for at fange den fjernstyrede robot. Vi har valgt at implementere to udgave af denne behavior for at kunne justere sværhedsgraden i spillet.
Den første killSegway behavior er baseret på switch styring som det ses i forrige session. I.e. killSegway modtager en direction fra MonitorInfrared og vurdere ud fra nogle IF-statements hvilken vej den skal tage. Derudover er der inkluderet nogle kunstige delays for at gøre det lettere at undgå at blive fanget[8].
Den anden KillSegway behavior er baseret på en PID Controller. Dog anvendes kun den propertionelle del af PID controlleren. Når denne behavior aktiveres har den fjernstyrede segway reelt ingen chance for at undgå opponent robotten[9].
Behaviors initialiseres i main, hvordan dette udføres kan ses her[4].
2. Monter IR bold på segway robot.
For at IR bolden er i samme højde som IR seekeren har vi måtte placere den oven på segway robotten. På grund af boldens glatte overflade har vi valgt at lave en slags holder hvori bolden er spændt fast med elastik. Den orginale segway robot blev beskyttet ved fald af gummi dutter for og bag. Desværre betød boldens placering på toppen af robotten at det nu var den der skulle tage slaget når robotten væltede. Dette var ikke hensigtsmæssigt da bolden ikke ser ud til at være designet til at kunne modstå sådanne slag. Derfor valgte vi at konstruere en støttehjuls anordning til hver side af segway’en sådan at den ikke bliver udsat for samme høje acceleration når den vælter.
Effekt:
Desværre havde monteringen af IR bolden samt støttehjulene den effekt at vægten af robotten blev forøget væsenligt samt tyngdepunktet blev højere. Dette resulterede i at robotten ikke hold balancen så fint som den havde gjort tidligere. Dog var den stadig i stand til at stå uden at svinge for meget og køre efter kommandoerne fra telefonen dog med nedsat reaktionshastighed.
Resultatet ses her:
3. Undersøg og forbedre spille værdi
Efter skiftet fra arbitrator baseret arkitektur til hieraki forsøgte vi at optimere KillSegway behavioren ved at anvende en PID-Controller. PID-Controlleren viste sig dog at gøre spillet for svært, da den fjernstyrede segway kun er blevet langsommere efter tilføjelsen af IR-kuglen. For at gøre spillet sjovere tilføjelse en mulighed i start menuen for at skifte sværhedsgrad. Måden dette er gjort på er ved at have to implementeringer af KillSegway behavior og skifte hvilken af disse bliver initieret på baggrund af valget i menuen.
Den nemmere udgave af KillSegway er baseret på en switch struktur som det kan ses i forrige session. Grunden til at vi vælger en switch struktur er at det i kombination med et delay, for robotten til at køre i nogenlunde rigtig retning men ikke helt præcist. Dette giver mulighed for at den fjernstyrede segway kan komme om bagved opponent robotten og ramme touchsensoren der får den til at vinde spillet.
Introduktion af touchsensoren skyldes at det føltes lidt håbløst at spille, uden at have nogen mulig måde at vinde på. Uden touchsensoren ville det bare være et spørgsmål om tid før man tabte.
4. Konklusion
Det lykkedes os at få begge robotter klar i stand så de kan fremvises. Subsumption arkitekturen virkede tilfredsstillende, dog var vi mindre glade for IR-bolden på den fjernstyrede robot, da den gjorde robotten langsommere og mere klodset end vi havde håbet på.
Referencer:
[1]:http://legolab.cs.au.dk/DigitalControl.dir/index.html
[2]: Behavior.java
https://dl.dropbox.com/u/2779683/OpponentRobot/Behavior.java
[3]: Car.java
https://dl.dropbox.com/u/2779683/OpponentRobot/Car.java
[4]: Main.java
https://dl.dropbox.com/u/2779683/OpponentRobot/Main.java
[5]: InfraredMonitor.java
https://dl.dropbox.com/u/2779683/OpponentRobot/InfraredMonitor.java
[6]: TouchMonitor.java
https://dl.dropbox.com/u/2779683/OpponentRobot/TouchMonitor.java
[7]: DiscoverSegway.java
https://dl.dropbox.com/u/2779683/OpponentRobot/DiscoverSegway.java
[8]: KillSegwayEasy
https://dl.dropbox.com/u/2779683/OpponentRobot/KillSegwayEasy.java
[9]: KillSegwayHard
https://dl.dropbox.com/u/2779683/OpponentRobot/KillSegwayHard.java
No comments:
Post a Comment