Blueprint architectuur

In het DurableCASE-project wordt gewerkt aan een blueprint voor een architectuur van systemen met coöperatieve robots. De architectuur moet op een dusdanig abstract niveau zijn dat deze ook buiten het project te implementeren is. Samen met domeinexperts binnen het project (Hogescholen, Universiteiten, bedrijfsleven), modeleren we tijdens werksessies deze architectuur op basis van thema's zoals robuustheid, security en interfacing (communicatie-protocollen). We hebben elementaire taken en eigenschappen gedefinieerd zodanig dat ze een onderdeel kunnen zijn van een generieke coöperatieve architectuur. De focus hierbij ligt op het coöperatieve gedrag van de robots en de onderlinge interfacing.


Coöperatieve robots

Een van de doelen van het DurableCASE-project is om tot een abstracte architectuur te komen voor systemen met coöperatieve robots. Gedurende het project wordt aan de casussen van Lely en H2Trac gewerkt. Hierbij komen casus-specifieke aspecten aan bod die te maken hebben met de functionaliteit van beide casussen, waar coöperatief gedrag op een robuuste manier aan toegevoegd moet worden. Elke situatie is anders, zo rijden de robots van Lely een route door een schuur met koeien om deze schoon te maken. De robots van H2Trac rijden door gewassen om te oogsten. Hiervoor hebben beide robots andere software en hardware nodig. Om de schuren schoon te houden moeten de Lely-robots bijvoorbeeld routes rijden, water op de vloer spuiten en rekening houden met koeien. Terwijl de H2Trac-robots onder andere rekening moeten houden met de ruimtes op de velden en het vullen van losse containers met de oogst. Toch zijn er ook veel overeenkomsten zoals het managen van de capaciteit van de robot en het batterijniveau. En ook in het normale gedrag van de robots als je dit naar een hoger abstract niveau tilt: de robots moeten taken uitvoeren, rijden, weten waar ze zich bevinden en status rapporteren. Dat geldt ook voor het coöperatieve gedrag. Zo weten we dat de robots elkaars taken kunnen overnemen en dat bepaalde onderdelen van het systeem met elkaar kunnen interfacen, maar wanneer dit gebeurt en wat er gerapporteerd wordt is implementatie-specifiek. Zo willen we tot een architectuurmodel komen dat herbruikbaar is als template voor andere situaties met coöperatieve robots buiten het DurableCASE-project.

Illustratie blueprint architectuur vanuit draw.io


Architectuur

Om tot een eerste versie van de architectuur te komen hebben we vanaf het begin van het project werksessies georganiseerd. Vaak gebaseerd op een onderwerp zoals robuustheid, security of de robot en het coöperatieve gedrag. In eerste instantie om kennis op te doen van de manier waarop coöperatieve systemen in elkaar zitten en moeten zitten, maar ook om een gezamenlijk begrip te krijgen van de termen en basis van de architectuur. Het gedeelte dat we met het project toe hopen te voegen aan de bestaande systemen, het coöperatieve gedrag, moest nog gedefinieerd worden. Omdat er gedurende het project ook steeds aan de specifieke casussen gewerkt wordt, maakt dit de abstracte architectuur ook een product dat zich nog altijd verder ontwikkeld. In een later stadium van het project hebben we ook samen met verschillende projectleden uit andere disciplines (Universiteiten, Hogescholen, bedrijfsleven, etc..) geprobeerd om samen te modelleren en de architectuur verder uit te specificeren. Hierbij hebben we ook veel gebruik gemaakt van het ontwerpwerp van Distribute voor de Lely-case volgens de Prometheus methode. Voor het modelleren is gebruik gemaakt van Draw.io.


Supervisor

In de abstracte architectuur focussen we ons vooral op het coöperatieve gedeelte omdat wij dit willen toevoegen aan het bestaande systeem. We hebben bepaald dat dit nieuwe gedeelte moet communiceren met een supervisory controller, een soort entrypoint in het systeem. Als je het coöperatieve deel van het systeem weghaalt, moet het systeem als voorheen functioneren. Het is belangrijk om te bepalen waar de interfacing plaats vindt omdat het coöperatieve gedrag het bestaande gedrag moet gaan beïnvloeden. Losse aspecten van het coöperatieve gedeelte moeten heb nieuwe gedrag bepalen en doorspelen naar de robots om zo de "missies" of "manoeuvres" aan te sturen.


Agents

Om het gedrag van het systeem te beïnvloeden moeten we kennis hebben van enkele aspecten van het systeem: de locatie waar de robot zich bevindt, de directe omgeving, de status van taken of calamiteiten die gemonitord zullen worden. Al deze informatie wordt opgeslagen in hiervoor gedefinieerde "agents", gedefinieerd volgens de Prometheus methode. Elke robot in het systeem zal een eigen "operating agent" hebben die luistert naar de "cooperative agent". Wat hier gecommuniceerd een aangestuurd wordt kan verschillen per situatie omdat in elk systeem andere taken of prioriteiten kan hebben. Zo kan elke systeem hele andere eisen hebben rondom de security of over wanneer er een calamiteit plaatsvindt waar het coöperatieve gedrag op moet reageren door één of meerdere robots aan te sturen. Hier kan onder andere ook configuratie van doelen of regels van invloed op zijn, evenals de mogelijkheid dat het systeem voorspellend gedrag vertoont over mogelijke malfuncties, kritieke situaties of onverwachte calamiteiten.

Wat dat precies betekent in bijvoorbeeld de casussen van Lely en H2Trac wordt los gespecificeerd in dit project met hiervoor geplande trajecten. Hiermee wordt ook onze architectuur verder gevalideerd en verbeterd. Het kan dienen als template voor het verdere design en de implementatie. Dat is ook het doel van deze abstracte architectuur: om tijdens maar ook na het project als product te dienen voor het ontwerpen en ontwikkelen van systemen met coöperatieve robots.

Mischa Corsius, Michel Hansma. HAN