-
Notifications
You must be signed in to change notification settings - Fork 4
Technisch rapport
De front-end van dit project is de 3D simulatie van de controller. Deze word in jME3 (jMonkeyEngine 3) gemaakt. De front-end is interafhankelijk van de back-end door middel van signaalverkeer. Het project maakt gebruik van de standaard BasicGame template die geleverd wordt door de jME SDK.
Dit signaalverkeer ziet er ongeveer zo uit:
- Controller geeft opdracht aan Simulator.
- Simulator verwerkt de opdracht en stuurt een OK signaal terug.
- Simulator maakt de opdracht af en stuurt een tweede OK signaal terug.
- Controller geeft een nieuwe opdracht terug aan de Simulator.
Java: OpenJDK 7 JRE, Oracle Java 7 JRE
Libraries: jMonkeyEngine 3.0 Stable
Packaging & build tool: Ant (jME3 default)
Operating systems: Windows 7 en nieuwer, Ubuntu 14.04 en nieuwer
Graphics: Intel HD 3000 of beter
De back-end van het project is een standaard Java project. Het is interafhankelijk van de front-end door middel van signaalverkeer. Er wordt gebruikt gemaakt van Maven als packaging & build tool. Dit zorgt ervoor dat extra libraries makkelijk toegevoegd kunnen worden zodra ze nodig zijn. Er wordt daardoor gekozen voor een flexibele aanpak van 3rd party libraries: Als een library beschikbaar is via Maven en makkelijk geïntegreerd kan worden in het project, dan is het in principe geen probleem om de library toe te voegen als dependency.
Er wordt echter wel sterk benadrukt dat jME3 niet een dependency van de back-end kan zijn. Er is geen Maven package voor jME3, en de package bevat alleen maar front-end logica die in de front-end thuishoort.
De back-end leest de geleverde XML files in via de SAX XML parser. Er wordt een (bijna) 1-to-1 overzetting gedaan van de data uit de XML file naar een Container-object. Dit dataverkeer heeft één richting: Er kan niet terug naar de XML files geschreven worden.
De back-end moet een goede beginstaat hebben die afgeleid kan worden vanuit de XML files. Verder regelt de back-end al het verkeer van de voertuigen die gesimuleerd worden. Deze aansturing vloeit primair uit het Dijkstra-algorithme.
Java: OpenJDK 7 JRE, Oracle Java 7 JRE
Libraries: jUnit 4.11
Packaging & build tool: Maven
Operating systems: Windows 7 of nieuwer, Ubuntu 14.04 of nieuwer
Om informatie over de staat van de back-end te kunnen visualiseren op een mobiel apparaat, is er besloten om een web-pagina te gebruiken. Dit is cross-platform en schaalbaar. De exacte implementatie van de web-app is nog niet besloten.
Hier twee UML UCDs die een groffe overview van de samenwerking geeft:

Teamleden: Thom Wouda, Moreno Bralts, Jeroen van der Meulen, Matthijs Hovestad, Ruben Bakker
Standaard open source methodiek van development wordt aangehouden. Taken zijn grotendeels optioneel. Er is een lijst van issues. Iedereen kan een issue tacklen. Zodra de issue af is, wordt gewoon een nieuwe issue gepakt.
- Projectleider: Matthijs
- Maintainer: Ruben
- Notulist: Ruben
- Tester: Moreno
- Wiskundig eindverantwoordelijke: Moreno
Onze opdracht is om de Rotterdamse haven na bootsen. Op de haven worden de volgende acties dagelijks afgehandeld:
- Containers komen aan door boot, vrachtauto of trein
- Containers worden van het voertuig afgehaald door een kraan
- Containers worden op een AGV geplaatst door een kraan
- Containers moeten naar de opslagplaats gebracht worden door een AGV
- Container wordt van de AGV afgehaald door een kraan en wordt opgeslagen op de opslagplaats
- Container wordt door een kraan van de opslagplaats gehaald en op een AGV geplaatst.
- De AGV rijd naar zijn eindbestemming bijvoorbeeld een trein.
- Als de AGV aangekomen is op zijn eindbestemming wordt de container van de AGV afgehaald door een kraan.
- De kraan plaatst de container op het voortuig bijvoorbeeld een trein.
- Zodra de trein vol is vertrekt hij.
Al deze gegevens moeten weergegeven worden op een tablet. De simulatie en de controller moeten aparte programma’s zijn die onderling met elkaar communiceren. Naast deze punten zijn er nog wat specifieke eisen voor elk onderdeel, denk hieraan dat er 100 AGV zijn.
Iedere pull request die methodes toevoegt moet gepaard zijn met een overeenkomstige unit test. De unit tests van de 3D interface kunnen mogelijk overgeslagen worden, en vervolgens vervangen worden met UX testing. De programmalogica moet echter wél unit tests hebben.
Alle pull requests en directe commits worden getest via een Continuous Integration server. Hiervoor wordt Travis-CI gebruikt (vooral bekend in de Ruby community). De CI server blijft stil totdat er een commit gepusht wordt die niet compileert en/of niet goed uit de tests komt. Het doel is om geen pull requests te accepteren waarover de CI server zeurt. Continuous Integration is alleen maar mogelijk in de back-end.
De eindverantwoordelijke voor tests en QA is Moreno.




