Bij Eonics houden we van alles wat met nieuwe technologie te maken heeft. We bieden onze medewerkers van harte alle ruimte om te experimenteren. Zo kon het gebeuren dat de passie van een medewerker voor drones, uitgroeide tot een volwaardig onderzoeksproject, inclusief een samenwerking met de TU Delft. In dit artikel lees je hoe dit project is ontstaan en wat er allemaal komt kijken bij een project dat complexe hard- en software combineert.
Hoe het begon: van hobby tot Hack Night
Jan Peter was in zijn vrije tijd al langere tijd bezig met drones: “Het begon met de aankoop van een Parrot AR Drone 2.0, voor de fun, om samen met mijn zoontjes mee te spelen. Natuurlijk werd de programmeur in mij al snel nieuwsgierig. Ik ontdekte dat het met behulp van open-source software mogelijk was om in mijn favoriete taal – Java – de drone te programmeren en aan te sturen. Binnen de kortste keren kon ik de camerabeelden uitlezen, commando’s naar de drone sturen en nog veel meer. Dit zette me aan het denken over de mogelijke toepassingen die hiermee gebouwd zouden kunnen worden.” Jan Peter’s enthousiasme over zijn Drone leidde tot het idee om een Eonics Open Hack Night te wijden aan dit onderwerp. Er was veel animo en we hackten met veel plezier, in meerdere teams, om als eerste de gestelde uitdaging te voltooien: laat de drone zonder manuele interventie autonoom het kantoor uitvliegen. De uitdaging bleek lastiger dan gedacht want de op hol geslagen drones kortwiekten een aantal planten in het kantoor, maar…….. het zaadje voor het serieus onderzoeken van de mogelijke toepassingen van autonome drones was wél definitief geplant.
Idee vindt avontuurlijke partner
Kort na deze Hack Night raakte Jan Peter toevallig in gesprek met mede technologie-fanaat Joost, project manager bij de Nederlandse divisie van een groot internationaal logistiek bedrijf. Al snel kwam het gesprek op drones en ontstonden er ter plekke ideeën over mogelijke toepassingen in de grote logistieke distributiecentra waar Joost in zijn dagelijks werk veel mee te maken heeft. Eonics kreeg van Joost de kans om een voorstel te doen voor een proof of concept van een autonome drone die de efficiëntie van voorraadbeheer in zijn opslagloodsen zou kunnen vergroten. Vervolgens vormden we een klein team, bezochten de opslagloodsen en interviewden de werknemers met als gevolg de geboorte van een onderzoeksproject.
Voorraadbeheer complexer dan het lijkt
Om uit te leggen wat het proof of concept inhield, moesten we eerst de problemen waar je in een grote opslagloods tegenaan loopt, beter begrijpen. De loodsen in kwestie lijken een beetje op wat je wel kent van de Ikea: een grote hal met hoge schappen die gevuld zijn met dozen en producten. Verschillende internationale bedrijven gebruiken deze loodsen om hun producten, alvorens verdere distributie, tijdelijk op te slaan. De indeling ervan is daarom continu aan verandering onderhevig. Ondanks het feit dat orderpickers alle productvoorraden middels een scansysteem met barcodes in in een centraal systeem bijhouden, blijft dit mensenwerk en dus foutgevoelig. Dit betekent dat je kunt concluderen dat op een willekeurig moment de actuele voorraden in het systeem nooit exact overeenkomen met de werkelijkheid in de loods.
Om dit probleem te lijf te gaan, doen medewerkers af en toe speciale voorraad-checks in de loods, een belangrijke maar ook zeer tijdrovende klus. Dit is waar onze autonome drones om de hoek komen kijken. Kunnen we niet iedere nacht een zwerm drones door het warenhuis laten vliegen die alle voorraden controleren, aangeven wat er niet klopt en het systeem weer up-to-date brengen?
Afkaderen en testopstelling
Om het probleem behapbaar te maken en een realistisch einddoel voor een proof of concept te hebben, verkleinden we de probleemstelling tot een haalbaar scenario. Om te beginnen gingen we uit van een enkele drone in een enkel schap. Hierdoor konden we ons focussen op het bewijzen van de meerwaarde van een drone-oplossing in een geïsoleerde testomgeving. We hoefden ons niet direct te bekommeren om de additionele complexiteit van meerdere drones die door de loods zwermen. Het globale idee van het proof of concept: de drone stijgt zelfstandig, gaat het hele schap af om met behulp van beeldherkenning en andere algoritmes de voorraad van dat schap in kaart te brengen.
Nu duidelijk was wat we wilden bereiken, stroopten we de mouwen op en gingen aan de slag.
De gulden middenweg
Een belangrijke observatie tijdens onze bezoeken aan de opslagloods was de zeer beperkte ruimte tussen twee schappen. Zelfs met handmatig vliegen was het oppassen geblazen. Veiligheid gaat namelijk boven alles en de drone mag niet tegen de schappen of andere obstakels aanvliegen. Dit was het eerste deelprobleem waar we een goede oplossing voor wilden vinden. Na onderzoek volgde snel een relatief simpele oplossing. De drone zouden we een rode lijn op de vloer laten volgen die exact door het midden van het gangpad liep. Op deze manier kon de drone zich tijdens het uitvoeren van zijn taken altijd veilig en accuraat horizontaal door het gangpad verplaatsen. Een lijn-volg-algoritme is met behulp van basale beeldherkenning en middelbareschool-wiskunde relatief eenvoudig. We gingen dus aan de slag met onze Parrot AR Drone en met rode tape door het kantoor om te kijken of dit een werkbare oplossing voor dit probleem zou kunnen zijn.
Fail fast, fail often
Het aansturen van de Parrot AR Drone gebeurt feitelijk niet op de drone zelf. Middels een WiFi signaal kunnen camerabeelden en andere sensor-informatie realtime worden uitgelezen naar een computer. Vervolgens kun je op basis van deze gegevens analyses uitvoeren en commando’s naar de drone terugsturen. Voor het identificeren van de rode lijn gebruikten we OpenCV, een open-source library. Hiermee kun je behalve beelden efficiënt analyseren ook diverse elementen algoritmisch onderscheiden. Nadat de rode lijn in het beeld was geïdentificeerd, keken we wat de positie was ten opzichte van de lijn en brachten waar nodig correcties aan. Het onderstaande filmpje laat zien hoe dit zeer effectief in een rijdende robot werkt:
Het lukte ons vrij snel om op basis van de camerabeelden aan de onderkant van de drone de lijn betrouwbaar te identificeren. Vervolgens schreven we de logica die ervoor moest zorgen dat bij een afwijkende lijn de juiste commando’s naar de drone werden teruggestuurd om weer terug boven de lijn te komen. Het leek allemaal vlot te verlopen totdat we erachter kwamen dat de Parrot AR Drone tijdens het testen keer op keer zeer grillig heen en weer over de lijn bleef vliegen in plaats van deze netjes te volgen zoals het robot-autootje in het filmpje. Het zag er ongeveer als volgt uit:
Uiteraard keken we kritisch naar onze algoritmes maar de logica leek toch echt te kloppen dus moest er iets anders aan de hand zijn. Opeens viel het kwartje: het probleem was latency, oftewel vertraging. Omdat de camerabeelden eerst over WiFi naar de controle-computer worden verstuurd voor we ze kunnen analyseren, en de uiteindelijke correctie-commando’s weer via WiFi naar de drone worden verzonden, loopt ons algoritme letterlijk en figuurlijk achter de feiten aan. Met dit in het achterhoofd was het gedrag van het grillig heen en weer vliegen over de lijn opeens heel logisch. Immers, wanneer het controleprogramma op de computer het beeld ziet waarin de Drone precies boven de lijn vliegt, is de drone er in werkelijkheid al voorbij gevlogen! Het algoritme kijkt dus eigenlijk steeds naar beelden uit het verleden en stuurt correctie-commando’s op basis van een situatie die alweer is gevlogen.
We ondernamen een laatste poging om deze “naïeve” implementatie alsnog te laten werken door precies te meten wat de exacte vertraging van het signaal tussen de drone en de computer was, zodat het algoritme hiervoor zou kunnen compenseren. Al snel constateerden we dat deze vertraging continue (en onvoorspelbaar) verandert waardoor compenseren een onmogelijke opgave is. Conclusie: terug naar de tekentafel.
Plan B: je eigen drone bouwen?
Eenmaal vastgesteld dat de Parrot AR Drone toch niet voldeed, zochten we naar alternatieven waarbij we de programmatuur en algoritmes op de drone zelf konden laten draaien in plaats van via een controlestation. Helaas bleek al snel dat de meeste gangbare drones niet aan onze eisen voldeden. Of ze kenden dezelfde beperkingen als de Parrot AR Drone (alleen op afstand programmeerbaar), of ze waren simpelweg te prijzig waardoor het in de context van onze toepassing zijn doel voorbij zou schieten. We willen immers uiteindelijk een schaalbare oplossing waarbij we meerdere drones gebruiken. Dit werkt alleen als de individuele drones eenvoudig vervangbaar (lees: goedkoop) zijn. Wel bleek dat losse drone-onderdelen tegenwoordig goedkoop en eenvoudig verkrijgbaar zijn. In klassieke hacker-spirit besloten we snel dat we dan maar een op maat gemaakte drone zouden gaan bouwen die we voor onze specifieke toepassing helemaal zelf konden optimaliseren en programmeren. Helaas meteen weer een probleem want bij Eonics zijn we fanatieke softwareontwikkelaars maar er werken (nog) geen werktuigbouwkundigen en industrieel ontwerpers. Waar zouden we die nou toch eens kunnen vinden…?
Samenwerking TU Delft
Na wat speurwerk, bellen en e-mailen kwamen we uiteindelijk in contact met het honours programma van de TU Delft. Dit is een programma waarbij ambitieuze studenten, naast hun reguliere studieprogramma, een extra curriculum volgen. Hierbij krijgen ze de gelegenheid om samen met het bedrijfsleven aan innovatieve projecten te werken. Op uitnodiging gingen we ons probleem aan de studenten presenteren om zo er achter te komen of ze geïnteresseerd waren om ons te helpen met het bouwen van een op maat gemaakte drone.
Onze eerste sessie werd meteen met groot enthousiasme ontvangen. De studenten stelden slimme vragen en kwamen ter plekke met goede ideeën. Een aantal weken later kregen we bericht dat het project definitief geaccepteerd was. Een groep van zeven studenten zou aan de slag zou gaan om voor ons project een optimale drone te ontwerpen.
Wordt vervolgd…
Inmiddels zijn de honours-studenten begonnen met de eerste ontwerpen voor de drone. Bij Eonics is een tweekoppig team druk bezig met de diverse benodigde algoritmes voor het software gedeelte.
Benieuwd geworden hoe dit project verder gaat verlopen? Hou dan de Inbox in de gaten voor het vervolgverslag. Heb je naar aanleiding van dit artikel vragen, opmerkingen, ideeën of wil je in contact komen met het team? Je kunt ons altijd bereiken op inbox@eonics.nl.