Portfolio

Hier vind je een aantal projecten waar ik aan gewerkt heb. Deze variëren van het ontwikkelen van oplossingen in de luchtvaartindustrie tot het uitwerken van nieuwe gameconcepten.

Autonome Landbouwrobot

Veel boeren gebruiken chemische onkruidbestrijdingsmiddelen om onkruid te verdelgen. Die chemische middelen zijn echter slecht voor de natuur en worden binnen afzienbare tijd verboden. Toch moet het onkruid worden verwijderd. Sommige boeren stappen daarom over op handmatig onkruid wieden, maar het is lastig mensen te vinden die dat willen doen. Daarom ontwikkelt Odd.Bot een landbouwrobot die zelfstandig onkruid kan wieden.

Samen met een klein team ontwierp en bouwde ik een groot deel van de robot software en de kunstmatige intelligentie. De software herkent onkruidplanten en geeft hun posities door aan een robotarm die de onkruidplanten verwijdert. De voornaamste uitdagingen waren het herkennen van allerlei verschillende onkruiden in allerlei verschillende omstandigheden, alswel het nauwkeurig omzetten van coördinaten in het camerabeeld naar coördinaten in de echte wereld. Hiervoor maken we gebruik van technieken zoals deep learning, machine learning, en visual odometry. We bouwden de software in Python en C++ met het ROS2 framework.

Herschrijven van complexe tools voor het filteren van data

TNO Windenergie werkt met een aantal Matlab tools voor het filteren van grote hoeveelheden meetdata. Deze tools vertoonden echter geen samenhang en moesten elk worden geconfigureerd met hard-coded invoerparameters.

Ik heb de tools geheel herschreven met een gestructureerd en object-georiënteerd ontwerp. Nu lezen de tools hun invoerparameters uit een Excel bestand en schrijven ze hun uitvoer ook weer terug in dat bestand. Dit helpt TNO hun tools te onderhouden en maakt het eenvoudiger om hun meetdata te filteren.

Automatisch verwerken van  bestellingen

Online verkoopplatforms zoals Amazon en Bol bieden hun partners een bekende website waar ze hun producten kunnen verkopen. Maar de administratie van bestellingen via het portaal van zo’n verkoopplatform is een langdurige en eentonige klus. Daarom vroeg mijn klant of het mogelijk is om de administratieve verwerking te automatiseren.

Ik heb een REST-client ontwikkeld die alle administratie regelt en ook de benodigde pakbonnen en pakketzegels print. Mijn klant was zeer tevreden. Want het programma doet de dagelijkse administratie in minder dan 20 minuten, terwijl dat voorheen meer dan 3 uur per dag kostte. En naast die tijdswinst neemt het mijn klant dus ook nog een eentonige klus uit handen.

Automatisch prijzen aanpassen

Online verkoopplatforms bieden ruimte aan talloze verkopers. Ben jij één van die verkopers, dan betekent dat talloze concurrenten. En verkoopplatforms schikken aanbiedingen vaak laagste prijs eerst, aangezien dat is wat meeste kopers zoeken. Dus moet je als verkoper voortdurend op je prijzen letten.

Het aanbod van mijn klant bevat meer dan 40000 unieke artikelen. Daarom hadden ze software nodig die op hun prijzen let. Mijn software verzamelt prijzen van concurrenten, berekent een competitieve prijs, en voert die prijs door. De software gebruikt ook statistische analyse om te bepalen welke prijzen van concurrenten worden meegenomen in de prijsberekening en welke niet. Deze software verdubbelde de omzet van mijn klant. Dus ik denk dat ze wel tevreden waren.

Automatisch aanbiedingen syncen en bestellingen doorsturen

Mijn klant werkt als een schakel tussen online verkoopplatforms en toeleveranciers. Handmatig synchroniseren van alle prijzen en voorraden op verkoopplatforms met prijzen en voorraden van toeleveranciers is echter niet haalbaar.

Daarom ontwikkelde ik een verzameling bots die zelfstandig voorraden bijwerkt, prijsvergelijkingen en prijsberekeningen doet, en bestellingen van verkoopplatforms doorstuurt naar toeleveranciers. Alles wat overblijft voor de klant is inkomende pakketten doorsturen naar hun klanten. En ook dat is zoveel mogelijk geautomatiseerd door middel van een app vergelijkbaar met die beschreven onder ‘Automatisch verwerken van bestellingen’.

Complexe Interfaces voor Rekenprogramma’s

Vliegtuigontwerp vergt uiterst gecompliceerde berekeningen met talloze parameters. Hiervoor worden gecertificeerde rekenprogramma’s gebruikt. De klant vroeg om grafische interfaces voor een aantal rekenprogramma’s. De interfaces moesten complexe berekeningen inzichtelijk maken, parameters uitleggen, en invoer valideren.

Ik was deel van het team dat deze interfaces ontwikkelde. Mijn taak was de meest complexe interfaces te implementeren. De klant ontving de interfaces zeer goed. De interfaces maakten het veel eenvoudiger om met deze rekenprogramma’s te werken, zodat de productiviteit verbetert en de kans op fouten vermindert.

Ant-Based Ontwerp van Infrastructuren

De elektrische infrastructuur van vliegtuigen is meestal behoorlijk complex. Daarom kost het veel tijd en moeite om zulke infrastructuren te ontwerpen. Ant Colony Optimization technieken staan bekend om hun vermogen om combinatorische optimimalisatieproblemen op te lossen. Daarmee zouden ze ook een bijdrage kunnen leveren aan het ontwerpen van elektrische infrastructuren in vliegtuigen.Ik heb een proof of concept ontwikkeld dat inderdaad liet zien dat deze technieken in staat zijn goed georganiseerde infrastructuren te genereren.

Neuro-Evolutie en Gedragsspecialisatie

Neuro-evolutie gebruikt kunstmatige evolutie om neurale netwerken te trainen. Er bestaan allerlei methoden voor neuro-evolutie. Ons doel was te onderzoeken welke invloed bepaalde methoden hebben op de taakverdeling binnen een groep samenwerkende agents.

Ik heb de omgeving gebouwd en de methoden aangepast aan ons onderzoek. Na het uitvoeren van de experimenten heb ik de data onderzocht. Sommige uitkomsten waren nogal verrassend. Zo was de verwachting dat het evolutionaire proces bepaalde gedragingen zou opleveren, maar het kwam met veel elegantere oplossingen.

Economisch Resource Management Game Logica

Al sinds The Settlers II beleef ik veel plezier aan resource management games. Toch vind ik telkens dat zulke games iets missen: een geloofwaardig economisch systeem. In huidige games geeft elke werkplaats zomaar zijn product aan de volgende schakel in de productieketen.

Dus stel je dan voor een resource management game waarin elke werkplaats zich daadwerkelijk gedraagt als een eigen onderneming. Het moet benodigde grondstoffen inkopen en probeert zijn producten te verkopen. Het is aan de speler om werkplaatsen zo te neer te zetten dat ze winst kunnen maken. Zo’n economisch model zou dit genre naar een hoger plan tillen. Ik besloot een economisch model te ontwikkelen en de game logic te bouwen. Het model is nog niet klaar, maar de eerste resultaten zijn veelbelovend.

Ontwerpen van eenheden in RTS games

In real time strategy games moeten spelers legers bouwen en aanvoeren om daarmee hun tegenstanders te verslaan. Huidige games bieden een vaste reeks aan beschikbare eenheden om een leger van te bouwen. Deze eenheden zijn zorgvuldig afgesteld om het spel in balans te houden.

Maar stel je eens voor dat je als speler bestaande eenheden mag aanpassen of zelfs nieuwe eenheden mag bedenken. En stel je eens voor hoe het voelt om je zelfbedachte eenheden te zien strijden tegen vijandelijke eenheden. Spelers toestaan om zelf eenheden te ontwikkelen geeft een nieuwe dimensie aan de game play en legt meer nadruk op strategie en tactiek.

Daarom ontwikkel ik een model voor het samenstellen van eenheden. Dat model geeft de spelers veel vrijheid om eigen eenheden te bedenken, terwijl het de game in balans houdt. De volgende stap is een proof of concept te bouwen met daarin een implementatie van het model, een overzichtelijke user interface, en mix-and-match visualisatie van eenheden.