Robbie

advertisement








Hugo de Groot
Rik de Groot
Sander Hartogensis
Reinoud Karssenberg
Martijn Lindhout
Marcel Lindenbergh
Julien Moorrees
Sebastiaan Overdijk
•
•
•
•
•
•
•
Het object-geörienteerde project
Het klassendiagram
Object-georiënteerd programmeren
Team building en rollen
MVC
Simulatie
Routeplanning
• Demonstratie
• Toekomst van Robbie
• Nawoord
CRC sessies
Class Diagram
Eisen vaststellen
Oriëntatie: CRC’s, Class
diagram,
Eisen vaststellen
Functionaliteit specificeren:
Uses Cases, Scenario’s
Klassenstructuur nader uitwerken:
Interaction diagrams,
State diagrams
Code hacken / Testen
Use cases
Scenario’s
Klant moet accoord
gaan.
Oriëntatie: CRC’s, Class
diagram,
Eisen vaststellen
Functionaliteit specificeren:
Uses Cases, Scenario’s
Klassenstructuur nader uitwerken:
Interaction diagrams,
State diagrams
Code hacken / Testen
Sequence Diagrams
Collaboration Diagram
State Diagrams
Oriëntatie: CRC’s, Class
diagram,
Eisen vaststellen
Functionaliteit specificeren:
Uses Cases, Scenario’s
Klassenstructuur nader
uitwerken:
Interaction diagrams,
State diagrams
Code hacken / Testen
Iedere groep klassen
moet afzonderlijk
getest worden
Oriëntatie: CRC’s, Class
diagram,
Eisen vaststellen
Functionaliteit specificeren:
Uses Cases, Scenario’s
Systeemtest
Acceptatietest
Klassenstructuur nader
uitwerken:
Interaction diagrams,
State diagrams
Code hacken / Testen
Eventueel volgende
increment beginnen.
•Diagram voor laatste twee incrementen
Deel diagram voor 3e increment: botssensor
Deel diagram
3e increment:
Driver en Map
Deel diagram voor simulatie
Leef je in in de klasse waar je mee bezig bent.
Doel: Op een logische manier verantwoordelijkheid
verdelen.
Voorbeeld:
“Ik ben de klasse Logboek. Met
mijn method
setMaxNumberOfMessages kan
worden ingesteld hoeveel
logboek-entry’s ik kan bevatten.”
Noteer de code zo, dat het duidelijk is welke
messages gestuurd worden.
Voorbeeld:
Roep niet goForward() aan, maar stuur de
message goForward naar jezelf:
this.goForward()
Doel: Duidelijkheid
Benader attributen door het sturen van messages.
Voorbeelden:
Gebruik in een klasse Person niet zomaar het
attribuut description, maar vraag het op via een
message: this.getDescription()
Doel: Verantwoordelijkheid voor het opleveren van
een attribuut-waarde staat op 1 plek.
Probeer koppelingen tussen objecten zo los
mogelijk te houden.
Voorbeeld:
klasse Simulation:
Battery simBattery =
new SimulatedBattery();
this.getRobot().
setBattery(simBattery);
Doel: • Herbruikbare klassen
• Heldere verdeling van verantwoordelijkheid
Wat is team building?
•
•
•
•
•
Meerdere personen
Eén doel
Samenstelling verschillend
Op elkaar ingespeeld zijn
Verantwoordelijkheids gevoel
Het nut van verschillende rollen
•Specialiteiten
•Taken
•Duidelijke afspraken
•Verantwoordelijkheden
De rol van de projectleider
•Overal verantwoordelijk voor
•Afspraken maken
•Aanspreekpunt van de klant
AF
Hugo
•Plannen CRC-cards
23-11
Class Diagrams 23-11 20-11/23-11
•Orde bewaren
Use cases en
26-11
•Uren bijhouden
Scenario’s
Sequence
•Niemand zijn
vriend 26-11 23-11/26-11
Diagrams
Collaboration
Diagrams
State Diagrams
Kaart
Bestuurder
Robot
26-11
26-11
30-11
27-11
27-11
Sebastiaan
Marcel
20-11/23-11
23-11/26-11
23-11/26-11
23-11/26-11
26-11/26-11
26-11/26-11
26-11/26-11
26-11/30-11
27-11/27-11
27-11/27-11
OO verder uitgewerkt
• incrementeel ontwikkelen
• bij Robbie:
• basisbewegingen
• kaart maken
• routebepaling
• reuse of code
Scheiding tussen:
• functionaliteit
• representatie
Models
Modellering van
de werkelijkheid
Views
Representatie van
de werkelijkheid
Controllers
Gedrag van de
user-interface
• Waarom simulatie?
• Simulatiespecifieke implementaties
• Testen
classes onderling
interactie met de werkelijkheid
zeldzame omstandigheden
• Minder afhankelijk van de andere groep
• Schild
• Wereld
kennis van Robbie’s positie
kennis van aanwezige objecten
kennis van de grenzen
• Accu
• Accu
• Richtingsverandering
• Verplaatsing
Hoe zoekt Robbie zijn weg naar een opgegeven positie?
•
•
•
•
Alle objecten op de kaart worden ingedikt
De kortste route wordt berekend
Indien mogelijk, volgt Robbie deze route
Bij een eventuele botsing:
• Botsing wordt in kaart gebracht
• Er wordt weer overnieuw begonnen
Bepalen van de kortste route op de kaart
Alle vrije posities markeren met afstand ‘oneindig’
Het eindpunt wordt op afstand 0 gezet
Dit eindpunt wordt in een wachtrij geplaatst
Voor alle punten in de wachtrij:
• Afstand wordt opgehaald
• Voor alle omliggende punten:
• Indien nieuwe afstand + 1 < oude afstand
• Afstand wordt aangepast
• Punt wordt in de wachtrij geplaatst
• Routes vlak langs objecten voorkomen als het kan
• Als afstand = ‘oneindig’: eindpunt onbereikbaar
•
•
•
•
Bepalen van de kortste route op de kaart
Waarom objecten indikken?
• Robbie is groter dan 1 pixel op de kaart
• Door in te dikken verdwijnen deze te smalle gangen
• Reële toekomst
•Infrarood besturing
•Verkleining van de hardware
•Basisversie voor eerste semester studenten
•Ontwikkeling robot in Smalltalk
• Mogelijke toekomst
•Meerdere botssensoren voor nauwkeuriger detectie
•Toevoeging van andere sensoren, bijvoorbeeld een
laser voor afstandsdetectie
•Uitbreiding intelligentie m.b.t. de kaart: Herkenning
van objecten, bijv. Verplaatsbare objecten.
•JAVA chip op robot
•Commando’s geven aan robot via spraakmodule
•Leerzaam voor software ontwikkeling
•Leerzaam voor werken in teamverband
•Goede toekomst voor gebruik robot:
•Werk te doen
Download