Mijn hoofdstuk over roboticaonderzoek

Table of Contents

Deze post beschrijft mijn reis in robotica, beginnend met het ontdekken van mijn passie voor robotica in FRC tijdens de middelbare school in 2015 tot mijn tijd als onderzoeksassistent in het Human Centered Robotics (HCR) Lab van de Colorado School of Mines van februari 2021 tot september 2021. Let op dat sinds eind 2022 het HCR Lab is verhuisd van de Colorado School of Mines naar de University of Massachusetts Amherst, samen met de site van hcr.mines.edu naar hcr.cs.umass.edu.

Achtergrond

Ik begon mijn bachelorstudie aan de Colorado School of Mines in het semester van herfst 2018. Mijn hoofdvak was Computer Science met een focus op Robotica & Intelligente Systemen. En ik studeerde af in het voorjaar van 2022.

Ik had het geluk om mijn passie vroeg in mijn leven te vinden. Tijdens de middelbare school heb ik behoorlijk wat tijd besteed aan het uitzoeken wat ik leuk vond en waar ik goed in kon zijn. Na wat vallen en opstaan, slaagde ik erin te ontdekken dat mijn passie informatica was. Maar het was ook in deze periode dat ik ontdekte dat ik een overweldigende liefde had voor bouwen via code.

Bij Mines kreeg ik de kans om te werken in het Human Centered Robotics (HCR) Lab van Mines onder Dr. Hao Zhang. Ik ontmoette Dr. Zhang voor het eerst in het voorjaar van 2020 via zijn vak “Human Centered Robotics” (CSCI473), en na de chaos van COVID en het studiewerk kon ik begin voorjaar 2021 in zijn lab aan de slag.

Les Human Centered Robotics (CSCI473)

Mines’ Human Centered Robotics (CSCI473) was een van de weinige vakken uit mijn studietijd die een diepgaande impact op mij hadden. Het vak werd gegeven door Dr. Hao Zhang. Ons cijfer voor het hele vak bestond uit slechts drie projecten, die elk een uitdagend probleem presenteerden dat kernconcepten van robotica introduceerde. Deze projecten bestonden uit:

  1. Leren Robot Operating System (ROS)
  2. Reinforcement Learning voor robotmuurvolgen
  3. Begrip van menselijk gedrag door robots met behulp van skeletgebaseerde representaties

Leren van Robot Operating System (ROS)

Dit was het eerste project dat we kregen toegewezen. Het project bestond uit drie taken:

  1. Ontwikkelomgeving instellen
  2. Gazebo-simulator begrijpen
  3. Een ROS “Hello World” schrijven

Voor taken 1 en 2 hoefden we alleen maar onze ontwikkelomgeving in te stellen en een inleiding tot de Gazebo-tutorial te volgen. Dit omvatte:

  • ROS Melodic instellen, wat ik deed op mijn HP-laptop uit 2011 die goed genoeg was
  • ROS en Gazebo installeren en configureren
  • De tutorial van gazebosim en die van e-manual doorlopen

Taak 3 daarentegen was een echte uitdaging. De taak was om turtlesim te gebruiken en de schildpad het Mines- “M”-logo te laten tekenen:

Deze taak, hoewel eenvoudig klinkend, was moeilijker dan het leek. Dit project introduceerde mij uiteindelijk in het concept van Open-Loop- en Closed-Loop-systemen. Voor de volledige projectbeschrijving kun je csci473-p1.pdf bekijken, of je kunt meer leren over dit project en mijn oplossing op de projectpagina ROS Move Turtle.

Reinforcement Learning voor robotmuurvolgen

Dit was het tweede project dat we kregen toegewezen, en het was een van de moeilijkste projecten waaraan ik ooit op de universiteit heb gewerkt. De projectbeschrijving was als volgt:

In dit project zullen studenten reinforcement learning-algoritmen ontwerpen en implementeren om een autonome mobiele robot te leren een muur te volgen en te voorkomen tegen obstakels aan te rijden. Studenten zullen de Gazebo-simulatie in ROS Melodic gebruiken om een omnidirectionele mobiele robot genaamd Triton te simuleren, en een omgevingskaart gebruiken die aan jullie wordt verstrekt. Studenten zullen een laserscanner op de robot gebruiken om waarneming en leren uit te voeren, waarbij de robot wordt bestuurd met stuur- en snelheidscommando’s. Studenten moeten dit project programmeren met C++ of Python in ROS Melodic onder Ubuntu 18.04 LTS (d.w.z. dezelfde ontwikkelomgeving als gebruikt in Project 1). Daarnaast moeten studenten een rapport schrijven volgens het formaat van standaard IEEE-robotica-conferenties met behulp van LATEX.

Voor het reinforcement learning-algoritme kregen we de instructie om Q-Learning te gebruiken. We gebruikten ook de Gazebo-simulatieomgeving Stingray die door de klas werd aangeboden. Stingray bestond uit het Triton-model en de fysica-logica. We kregen ook een doolhof om door de robot te laten volgen. Alles bij elkaar zag de omgeving er als volgt uit:

Ik heb mijn oplossing nooit op GitHub of op het web gepubliceerd omdat deze niet erg goed was en zwaar gebrekkig. Ook is het behoorlijk moeilijk en vervelend om de code in de juiste omgeving aan de praat te krijgen. Ik heb echter wel een demovideo die ik bij de klas heb ingeleverd, waarin mijn oplossing te zien is. Je kunt die hier bekijken:

Voor de volledige projectbeschrijving kun je csci473-p2.pdf bekijken.

Begrip van menselijk gedrag door robots met behulp van skeletgebaseerde representaties

Voor het derde project was de projectbeschrijving als volgt:

In dit project zullen studenten verschillende skeletgebaseerde representaties implementeren (Oplevering 1) en Support Vector Machines (SVM’s) (Oplevering 2) gebruiken om menselijk gedrag te classificeren met behulp van een openbare activiteiten-dataset verzameld met een Kinect V1 sensor. Daarnaast moeten studenten een rapport schrijven volgens het formaat van standaard IEEE-robotica-conferenties met behulp van LATEX in Oplevering 3.

Dit project was uitdagend maar niet zo moeilijk als het tweede project. Het hoofddoel was om sensorgegevens van Kinect V1, afkomstig uit de MSR Daily Activity 3D Dataset, en Support Vector Machines te gebruiken om bepaalde menselijke acties/gedragingen te classificeren. Voor de volledige projectbeschrijving kun je csci473-p3.pdf bekijken, of je kunt meer leren over dit project en mijn oplossing in de blogpost Menselijke acties voorspellen met LIBSVM.

CSCI473-conclusie

CSCI473 is een van de, zo niet de beste, vakken die ik tijdens mijn bachelorstudie aan Mines heb gevolgd. Al deze projecten leerden me veel en gaven me een mooie verzameling projecten om op terug te kijken en naar te verwijzen op mijn cv. Het was ook het eerste vak waarin ik het gevoel had dat ik helemaal op mijn plek zat, omdat ik nooit goed was in toetsen maken maar wel uitblonk in het afronden van projecten. Het was ook via dit vak dat ik Dr. Hao Zhang ontmoette, die me uiteindelijk hielp een positie als onderzoeksassistent te krijgen in het Human-Centered Robotics (HCR) Lab van Mines.

CS Field Session (zomer 2020)

CG_GUI_19

Tijdens de zomer van 2020, tussen het afronden van CSCI473 en het toetreden tot het HCR Lab, volgde ik CSCI370 of “Advanced Software Engineering” als onderdeel van mijn bacheloropleiding Computer Science aan de Colorado School of Mines. CSCI370 is een vak waarin studenten softwaregerelateerde oplossingen voor een bedrijf moeten ontwerpen, implementeren en documenteren. Het stelt studenten in staat hun kennis uit de opleiding toe te passen op echte problemen in de informatica. Je kunt hier meer over het vak leren hier.

In het vak krijg je zelf te kiezen aan welk project/bedrijf je wilt werken. Het vak bood pdf’s met details over elk project en bedrijf. Uiteindelijk besloot ik te werken aan een project dat was geplaatst door een bedrijf genaamd Lunar Outpost, genaamd “Real Time Wheel Slip Detection and Error Corrections for Enhanced Lunar Navigation”. Omdat de naam lang is, laten we het project de alias “Wheel Slippage Detection” geven.

Het probleem

Lunar Outpost is een startup die autonome maanrovers probeert te bouwen. Op de maan is er veel maanstof dat bekendstaat om het veroorzaken van veel wielslip. Dit is niet ideaal, omdat wielslip ervoor kan zorgen dat autonome systemen de locatie in de echte wereld uit het oog verliezen. Op aarde wordt dit opgelost door GPS-gegevens te gebruiken om eventuele afwijking veroorzaakt door wielslip te corrigeren. Maar het probleem met GPS is dat het alleen werkt doordat er 30+ navigatiesatellieten voortdurend rond de aarde in een baan draaien en unieke signalen uitzenden waarmee computers hun positie kunnen berekenen. Maar op de maan bestaat er momenteel niet zoiets als GPS. Met dat in gedachten moet er een andere methode dan GPS worden gebruikt om wielslip te detecteren. Een gedetailleerder verslag van het probleem van het project kan hier worden bekeken.

Het team

Dit project was niet eenvoudig, dus moest het in teamverband worden uitgevoerd. Het team bestond uit vijf medestudenten van de Colorado School of Mines:

Dit project was niet eenvoudig, dus moest het in teamverband worden uitgevoerd. Dit team bestond uit Mehmet Yilmaz (ik), Kane Bruce, Braedon O’Callaghan, Liam Williams en Kevin Grant.

Het project vereiste dat we enige kennis hadden van ROS, C++, Python, Linux, Raspberry Pi en Arduino. De meesten van ons hadden ervaring met een of meer van deze technologieën, maar ik was de enige met ervaring in ROS, aangezien ik ROS gebruikte in mijn vak Human Centered Robotics (CSCI473) tijdens het semester van voorjaar 2020. Daardoor heb ik in het begin iedereen geholpen om snel op niveau te komen over ROS en hoe ervoor te ontwikkelen.

Uitdagingen

In dit project waren er veel uitdagingen. Maar de grootste uitdaging waar we mee te maken kregen, was dat we geen toegang hadden tot een echte robot in de praktijk om te testen. Dit kwam doordat COVID alles op afstand maakte en ons verhinderde om in de laboratorium-/gebouwfaciliteiten van Lunar Outpost te werken. Hierdoor moesten we simulaties gebruiken.

Ook hebben we wat academisch onderzoek van het WVU Navigation Lab doorgenomen om een idee te krijgen van hoe het probleem van wielslip opgelost zou kunnen worden voor de use case van Lunar Outpost, wat voor ons, als tweede- en derdejaars studenten, moeilijker was dan we hadden verwacht.

Een andere uitdaging waar we mee te maken kregen, was de hoeveelheid tijd die we hadden om aan dit project te werken. CSCI370 is een vak van één maand. Maar het probleem zelf is een enorm probleem waar veel bedrijven en academici al tientallen jaren proberen een oplossing voor te vinden/perfectioneren. Dus één maand is lang niet genoeg tijd om dit probleem op te lossen. Maar ondanks al deze uitdagingen zijn we doorgezet en hebben we ervoor gezorgd dat we een resultaat opleverden.

Conclusie

Na al het onderzoek en de ontwikkeling te hebben doorlopen, kwamen we tot de conclusie dat het bijna onmogelijk is om de juiste maanfysica digitaal te simuleren, dus echt proberen dit algoritme in een simulatie te testen heeft geen zin en zal geen betekenisvol onderzoek opleveren naar het detecteren van wielslip in de ruimte en op de maan. We concludeerden dat het opzetten van een geschikte testomgeving met iets als zand en echte hardware, zoals een Husky-robot, voor dit type onderzoek veel belangrijker is. We hebben de code voor wielslipdetectie wel bijgewerkt zodat deze werkte als een ROS-node, en het functioneerde naar behoren en kon gemakkelijk in echte hardware worden geïmporteerd voor testen. Dit project stelde me in staat een leiderschapsrol op me te nemen, mijn medestudenten te onderwijzen over ROS-ontwikkeling, en ervaring op te doen met Python, ROS en Gazebo terwijl ik een complex probleem aanpakte dat ik nog nooit eerder was tegengekomen. Het belangrijkste is dat deze ervaring mijn passie voor robotica verder heeft versterkt en mijn wens om onderzoek in dit vakgebied te doen heeft bevestigd, waarmee het toneel werd gezet voor wat er vervolgens zou komen in mijn robotica-traject.

Begonnen Bij Het HCR Lab

Na het afronden van CSCI473, mijn CS Field Session in de zomer van 2020, en mijn herfstsemester van 2020, besloot ik onderzoek in robotica na te streven. Ik had zulke geweldige ervaringen met zowel CSCI473 als de CS Field Session dat ik besloot dat ik onderzoek wilde doen voor het HCR Lab. Omdat ik Dr. Zhang het jaar daarvoor had ontmoet, besloot ik hem te mailen en te vragen naar eventuele mogelijkheden die het lab in januari 2021 zou kunnen hebben. Binnen ongeveer 2 weken toonde Dr. Zhang interesse, presenteerde hij mij onderzoeksmogelijkheden en bood hij mij een rol in het lab aan. Daarna begon ik in februari 2021 voor het lab te werken.

Introductievideo

Hier is mijn introductievideo die ik een paar maanden nadat ik begon bij het HCR Lab heb opgenomen. De video werd opgenomen in mei 2021 en behandelt het onderzoek waarop ik me tijdens de zomer van 2021 in het HCR Lab zou richten:

Mijn project

Gedurende mijn tijd in het HCR Lab lag mijn focus voornamelijk op het Triton-project. Het Triton-project is een mobiele robot ontwikkeld door het Human Centered Robotics Lab aan de Colorado School of Mines. Het is een driehoekige omni-wheel grondrobot aangedreven door NVIDIA’s Jetson Nano.

De Triton bestond, in een eenvoudig overzicht, uit de volgende onderdelen:

  • NVIDIA Jetson Nano
  • NVIDIA’s Seed Studio A205 Carrier Board
  • Arduino Mega
  • 64 GB Micro SD-kaart
  • Aangepast 3D-geprint lichaam
  • 3 mecanum-wielen
  • 1 AR-batterij
  • Aangepaste circuits voor geoptimaliseerde stroomverdeling en bedrading
  • Intel’s Realsense D435-camera
  • Enkele LED’s

Hij werd ontworpen, gebouwd en vervaardigd rond 2018-2020 als robot voor educatieve doeleinden. Tegen de tijd dat ik erbij kwam, was de Triton al behoorlijk gevestigd, en het lab overwoog om een nieuwe versie ervan te maken. Het grootste probleem met de Triton was echter de software. De Triton kon in basisvorm bewegen, opladen en functioneren, maar deed eigenlijk niets intelligents. Hij miste zelfs de mogelijkheid om geavanceerdere bewegingen te maken.

Battery charger setup Test area layout
Tritons on early test stage Tritons on shelves

Om dit aan te pakken, zette het lab een gebied op waar we de Triton konden volgen. Hiervoor creëerden ze een gebied van 2 meter bij 2 meter met 8 Optitrack Flex (infrarood) camera’s in een vierkantachtige opstelling op ongeveer 6-7 voet boven de vloer.

Area I1 Area I2

Samen met het bouwen van dit gebied kreeg elke Triton drie grijze bolletjes boven op hun lichaam bevestigd.

Met deze opstelling hadden we in feite ons eigen kleinschalige GPS-systeem gebouwd waarmee we de exacte coördinaten in meters van een Triton in ons interessegebied konden bepalen. Door de Optitrack infraroodcamera’s en de grijze Optitrack-bolletjes in een driehoekige vorm te gebruiken, konden we de exacte coördinaten van een Triton in ons gebied vaststellen. Hierdoor konden we een gesloten-lus-systeem toepassen voor betere nauwkeurigheid in de beweging.

Het Optitrack-systeem leverde positie- en oriënteringsgegevens met ongeveer 120 Hz en een nauwkeurigheid van onder de millimeter wanneer het goed was gekalibreerd. De drie reflecterende markers van elke Triton vormden een uniek driehoekig patroon dat het systeem kon volgen als een star lichaam. Het coördinatensysteem was zo gekalibreerd dat (0,0) in het midden van het volggebied lag, met de X- en Y-assen uitgelijnd met de geometrie van de ruimte. Maar ondanks deze nauwkeurige positiedata had de Triton nog steeds moeite met bewegen.

Met deze opstelling was een kernfunctie die we de Triton wilden geven de mogelijkheid om naar een specifieke coördinaat te bewegen. De gebruiker, of diens software, kon een (x, y)-coördinaat binnen hun interessegebied aanleveren. Daarna zou de robot zo snel, nauwkeurig en soepel mogelijk naar die coördinaat bewegen. Toen ik erbij kwam, bestond deze functie al, maar werkte hij niet erg goed. Hier is een simpele animatie die laat zien hoe de oorspronkelijke bewegingslogica werkte:

Ik heb de oorspronkelijke oplossing niet in actie opgenomen, dus heb ik deze simpele animatie gemaakt om je de oude bewegingslogica in actie te laten zien. Nu we dit weten, wat zijn de problemen met deze methode?

  1. Het is echt traag
  2. Het zorgt ervoor dat de robot veel ruimte inneemt om alleen maar naar een specifiek punt te gaan. Dit maakte het moeilijk voor ons om deze oplossing te gebruiken wanneer meerdere Tritons tegelijk rondbewogen.

Dus waarom gebeurde dit gedrag? Het probleem was dat de Triton eerst draaide en zijn alpha veranderde, totdat hij naar het doelpunt wees binnen een bepaalde foutmarge. Daarna sprintte hij vooruit, en nadat zijn theta van het doel met een bepaalde hoeveelheid afweek, stopte hij en begon hij opnieuw te draaien totdat de alpha weer binnen dat acceptabele bereik voor het doel lag. Daarna sprint hij weer en blijft dit doen totdat hij het punt bereikt. Ook werd, naarmate hij dichter en dichter bij het doelpunt kwam, de draai- en sprintsnelheid veel lager om ervoor te zorgen dat hij het doel niet overschoot. Dit resulteerde erin dat de Triton onnatuurlijke beweging had, er eindeloos lang over deed om bij een doelpunt te komen, en zoveel ruimte nodig had om alleen maar een specifiek doelpunt te bereiken. Dus met al deze problemen, en gezien hoe essentieel deze functie was voor de ontwikkeling van het Triton-project, was mijn eerste taak toen ik bij het HCR Lab begon het ontwikkelen van effectievere oplossingen die de Triton beter naar een doelpunt konden laten navigeren.

Omdat ik dit wist, heb ik veel tijd besteed aan onderzoek naar de best mogelijke manier om dit probleem aan te pakken. Ironisch genoeg volgde ik een vak genaamd Introduction to Feedback Control Systems (EENG307) aan Mines. In het begin van dat vak leerden we over het concept van Open-loop controllers en Closed-loop controllers. Omdat ik dit wist, en na enige discussie die ik had met de professor van dat vak en mijn slimme huisgenoot, werd het duidelijk dat dit doel om de Triton naar een doelpunt te krijgen een probleem van een gesloten-lus-systeem was.

Whiteboard control system diagram

Na uitgebreid testen en onderzoek ontwikkelde ik nu twee verschillende benaderingen van regelaars voor de Tritons:

Methode 1: Afstand-Theta-regelaar

Deze aanpak gebruikte twee afzonderlijke proportionele regelaars die tegelijkertijd draaiden:

  • Afstandsregelaar: Berekende de Euclidische afstand tot het doel en paste een proportionele versterking toe om de voorwaartse/achterwaartse snelheid te bepalen
  • Theta-regelaar: Berekende de hoekfout tussen de huidige koers van de robot en de gewenste koers naar het doel, en paste een afzonderlijke proportionele versterking toe voor de rotatiesnelheid

Het algoritme berekende continu de Euclidische afstand tot het doel en de hoekfout tussen de huidige koers van de robot en de gewenste richting. Er werden twee afzonderlijke proportionele versterkingen toegepast om respectievelijk lineaire en hoekige snelheden te genereren.

Dit resulteerde erin dat de Triton vanzelf in de richting van het doel draaide terwijl hij tegelijkertijd vooruit bewoog, waardoor soepele gebogen paden ontstonden. Het belangrijkste voordeel was dat de robot zijn voorkant altijd naar de bestemming gericht hield, wat cruciaal was voor camera-gebaseerde toepassingen.

Methode 2: X-Y-coördinatencontroller

Deze aanpak behandelde de robot als een 2D-plotter, met onafhankelijke besturing van de X- en Y-beweging:

  • X-controller: Stuurde de oost-westbeweging rechtstreeks aan op basis van de X-coördinaatfout
  • Y-controller: Stuurde de noord-zuidbeweging rechtstreeks aan op basis van de Y-coördinaatfout

De implementatie berekende X- en Y-coördinaatfouten onafhankelijk, paste afzonderlijke proportionele versterkingen toe, en transformeerde vervolgens deze globale snelheidscomponenten naar het lokale coördinatenstelsel van de robot met behulp van rotatiematrices. Deze transformatie was nodig omdat de omni-wheel-aandrijving van de robot snelheden in zijn eigen referentiekader vereiste, niet in globale coördinaten. Deze methode produceerde de meest directe paden naar doelen en was aanzienlijk sneller, maar de oriëntatie van de robot zou afdrijven omdat er geen expliciete oriëntatieregeling was.

Voor methode #1 ben ik in volledige detail ingegaan op deze methode in mijn Move Turtle (TurtleSim)-blog. Ik raad je sterk aan deze blog te lezen voor alle details over hoe PID-regelaars in het algemeen werken, en ook hoe methode #1 werkt. Ik ontwikkelde methode #1 met behulp van ROS’s TurtleSim, en heb daarna die code overgezet naar de Triton en aangepast om rekening te houden met een meer realistische omgeving.

Methode #2 gebruikte een behoorlijk andere maar even effectieve aanpak. In plaats van te denken aan de oriëntatie en afstand van de robot tot het doel, behandelt deze methode de beweging als een coördinatenvlakprobleem. De regelaar berekent continu afzonderlijk de fout in zowel de X- als de Y-richting. Als de robot bijvoorbeeld van (0,0) naar (2,3) moet bewegen, ziet hij dit als de noodzaak om een X-fout van 2 meter en een Y-fout van 3 meter te corrigeren. Twee proportionele regelaars werkten tegelijkertijd: één paste de snelheid van de robot in de X-richting aan op basis van de X-fout, terwijl de andere de Y-richtingbeweging afhandelde op basis van de Y-fout. Dit creëerde een directer pad naar het doel, vergelijkbaar met hoe een 3D-printerkop beweegt, en maakte soepele diagonale bewegingen mogelijk. De robot hoefde niet expliciet te draaien om naar zijn doel te kijken, waardoor deze methode bijzonder effectief was in krappe ruimtes of wanneer precieze positionering vereist is.

Beide methoden bleken aanzienlijk sneller en betrouwbaarder dan de oorspronkelijke aanpak. Om deze nieuwe methoden in actie te zien, bekijk de Tritons in Action-afspeellijst, die alle Tritons in actie laat zien met de nieuwe methoden.

Wat vroeger 30-45 seconden kostte voor een eenvoudige punt-naar-puntbeweging, duurde nu ongeveer 8-12 seconden. Belangrijker nog: de Triton kon nu efficiënter navigeren in krappe ruimtes, wat nuttig werd voor onze scenario’s met meerdere robots.

Ontwikkelingsuitdagingen en foutopsporing

Het implementeren van deze regelaars was niet eenvoudig en bracht verschillende aanzienlijke uitdagingen bij het debuggen met zich mee:

Coördinatensysteemtransformaties: Een van de lastigste aspecten was het correct krijgen van de coördinatentransformaties. Het Optitrack-systeem leverde gegevens in zijn eigen coördinatenstelsel, de robot had zijn lokale coördinatenstelsel, en ik moest nauwkeurig tussen beide converteren. Vroege implementaties lieten robots in de verkeerde richtingen bewegen omdat ik de berekeningen van de rotatiematrix had verwisseld.

Werkelijk gedrag versus ideaal gedrag: De grootste uitdaging was rekening houden met real-world factoren die niet voorkomen in de standaardregeltheorie. De wielen van de robot hadden verschillende wrijvingskarakteristieken, de motoren reageerden niet identiek, en er was altijd enige vertraging in de communicatielijn van Optitrack naar de besturingssoftware naar de Arduino van de robot. Ik heb weken besteed aan het afstellen van proportionele versterkingen en het toevoegen van deadband-filters om met deze fysieke realiteiten rekening te houden.

Oscillatie- en stabiliteitsproblemen: Mijn eerste implementaties leden aan oscillatieproblemen waarbij robots hun doelen overschoten en heen en weer wiebelden. Dit leerde me hoe belangrijk afgeleide termen in PID-regelaars zijn en hoe nodig een juiste afstelling van versterkingen is. Uiteindelijk koos ik voor voornamelijk proportionele regeling met zorgvuldig afgestelde versterkingen in plaats van volledige PID, omdat de inherente demping van het systeem voor de meeste toepassingen voldoende was.

Interferentie tussen meerdere robots: Toen meerdere robots tegelijkertijd werkten, ontdekte ik onverwachte interferentiepatronen. Robots zouden soms met elkaar “vechten” om dezelfde ruimte of doodlocksituaties creëren waarin ze elkaar onbeperkt zouden blokkeren. Dit bracht me ertoe coördinatiemechanismen en algoritmen voor botsingsvermijding te implementeren.

Besturingssysteem voor meerdere Tritons

Zodra ik het bewegingsprobleem van één Triton had opgelost, was de volgende uitdaging van het lab om meerdere Tritons tegelijk samen te laten werken. Dit werd een van mijn belangrijkste focusgebieden en bleek uiteindelijk een significante bijdrage aan het project.

Het oorspronkelijke systeem kon slechts één Triton tegelijk aansturen, wat de onderzoeksmogelijkheden ernstig beperkte. Het lab wilde scenario’s simuleren waarin meerdere autonome voertuigen hun bewegingen moesten coördineren, zoals zelfrijdende auto’s die met elkaar communiceren om de verkeersdoorstroming te optimaliseren en betere SLAM-kaarten (Simultaneous Localization and Mapping) te maken.

Om dit op te lossen, implementeerde ik een multiprocessing-aanpak met behulp van de multiprocessing-bibliotheek van Python. Elke Triton kreeg zijn eigen toegewijde proces dat onafhankelijk kon draaien terwijl het nog steeds gecoördineerd werd door een centraal besturingssysteem. Hierdoor konden meerdere Tritons tegelijkertijd bewegen zonder elkaars regelkringen te verstoren.

Ontwerp van de architectuur voor meerdere robots

De systeemarchitectuur die ik ontwikkelde bestond uit verschillende belangrijke componenten:

Hoofdcontrollerproces: Dit diende als centrale coördinator en verzorgde gebruikersinterface-interacties, padplanning en coördinatie op hoog niveau tussen robots. Het hield de globale toestand bij en verdeelde opdrachten naar afzonderlijke robotprocessen.

Afzonderlijke robotprocessen: Elke Triton had zijn eigen toegewijde Python-proces dat het volgende afhandelde:

  • PID-berekeningen in realtime met ~50 Hz
  • Communicatie met de hardware van de robot (Arduino/Jetson)
  • Lokale paduitvoering en obstakelvermijding
  • Statusrapportage terug naar de hoofdcontroller

Communicatie via gedeeld geheugen: Ik gebruikte Python’s multiprocessing.shared_memory en Queue-objecten om efficiënte communicatie tussen processen mogelijk te maken. Dit maakte realtime coördinatie mogelijk zonder de overhead van netwerkcommunicatie.

Synchronisatiemechanismen: Om conflicten te voorkomen wanneer meerdere robots moesten coördineren (zoals het vermijden van botsingen), implementeerde ik semaforen en locks waarmee robots exclusieve toegang tot bepaalde delen van de werkruimte konden aanvragen.

De uitdaging was ervoor te zorgen dat alle robots hun regelkringen onafhankelijk konden uitvoeren terwijl ze toch globale coördinatie behielden. Elk robotproces draaide zijn eigen PID-berekeningen en stuurde motorcommando’s rechtstreeks naar de hardware, terwijl het hoofdproces coördinatie op hoger niveau afhandelde, zoals botsingsvermijding en padplanning.

Testen van een kruispunt met meerdere Tritons Vroege opstelling met meerdere Tritons

Triton met drones voor toekomstig werk met meerdere agenten

Het systeem met meerdere Tritons opende volledig nieuwe onderzoeksmogelijkheden. We konden nu simuleren:

  • Communicatiescenario’s van voertuig naar voertuig
  • Gecoördineerde padplanning met obstakelvermijding
  • Gedrag van zwermrobotica
  • SLAM-kartering met meerdere agenten
  • Formatiebesturing en volggedrag

Hier is hoe de labopstelling eruitzag met meerdere Tritons die tegelijkertijd draaiden:

Robots op groen raster Robotopstelling op raster

Ik ontwikkelde ook een gebruiksvriendelijke interface waarmee onderzoekers visueel paden voor elke Triton konden definiëren. Je kon letterlijk het pad tekenen dat je wilde dat elke robot volgde, en ze zouden deze paden met perfecte coördinatie uitvoeren. Dit was ongelooflijk nuttig voor het opzetten van complexe experimenten zonder elke beweging handmatig te hoeven programmeren.

Het systeem kon tot 5 Tritons tegelijkertijd aan, waarbij elk zijn eigen PID-regelaars draaide terwijl het via het centrale besturingssysteem werd gecoördineerd. De prestaties waren indrukwekkend, waarbij alle robots hun individuele nauwkeurigheid behielden terwijl ze als team samenwerkten.

Hier is een afspeellijst die de Tritons in actie laat zien, van besturing van één robot tot coördinatie van meerdere robots: Tritons in Action-afspeellijst

Integratie van dieptesensoren en coördinaatcorrectie

Een andere grote vooruitgang waaraan ik werkte, betrof het gebruik van de Intel RealSense D435-dieptcamera’s die op elke Triton waren gemonteerd. Hoewel het Optitrack-systeem ons ongelooflijk nauwkeurige positioneringsgegevens gaf, wilde ik onderzoeken hoe de robots hun ingebouwde sensoren konden gebruiken om hun ruimtelijk bewustzijn te verbeteren en coördinaatfouten te corrigeren.

Het idee was dat Tritons hun dieptesensoren konden gebruiken om andere Tritons in hun omgeving te detecteren en hun posities te vergelijken. Dit zou meerdere doelen dienen:

  1. Foutcorrectie: Als het Optitrack-systeem kalibratiedrift of tijdelijke occlusie had, konden robots visuele bevestiging van elkaars posities gebruiken om nauwkeurige coördinatenstelsels te behouden.

  2. Verbeterde SLAM: Door meerdere robots met dieptesensoren samen te laten werken, konden we veel rijkere kaarten van de omgeving maken met redundante datapunten.

  3. Botsingsvermijding: Realtime dieptewaarneming zou robots in staat stellen elkaar te detecteren en te vermijden, zelfs als het centrale controlesysteem communicatievertragingen had.

Ik begon te experimenteren met algoritmen die Tritons in staat zouden stellen om:

  • Andere Tritons te detecteren aan de hand van hun kenmerkende driehoekige vorm en reflecterende sferische markeringen
  • Relatieve posities en oriëntaties te berekenen met behulp van dieptegegevens
  • Deze metingen te vergelijken met Optitrack-gegevens om afwijkingen te identificeren
  • Mogelijk hun coördinatenstelsel in realtime aan te passen om de nauwkeurigheid te behouden

Computer vision-experimenten

Ik heb veel tijd besteed aan het experimenteren met een computer vision-pijplijn die in meerdere fasen werkte:

Twee Tritons die tegenover elkaar staan voor computer vision-tests Close-up van Tritons camera
Twee Tritons recht tegenover elkaar voor testen
Twee robots die tegenover elkaar staan Twee Tritons die op het punt staan te racen

Verwerking van dieptegegevens: De Intel RealSense D435 leverde zowel RGB- als dieptegegevensstromen. Ik werkte voornamelijk met de dieptegegevens, die binnenkwamen als een 640x480-array met afstandsmetingen op 30Hz. De eerste uitdaging was het filteren van deze ruisachtige dieptegegevens om zinvolle geometrische informatie te extraheren.

Pogingen tot objectdetectie: Ik experimenteerde met detectie-algoritmen in meerdere fasen. Ik had enig succes met het segmenteren van het dieptebeeld om objecten op vloerniveau te identificeren (waarbij muren, plafond, enz. werden weggefilterd) en te zoeken naar objecten met de juiste groottekenmerken, met een voetafdruk van ongeveer 0,3x0,3 meter. Ik probeerde randdetectie en geometrische analyse te gebruiken om het kenmerkende Triton-profiel te identificeren, met gemengde resultaten.

Experimenten met markerherkenning: De drie reflecterende bollen op elke Triton leken het meest veelbelovende detectiekenmerk. Ik experimenteerde met blobdetectie-algoritmen om het kenmerkende driehoekige patroon van drie heldere stippen in het dieptebeeld te identificeren. Ik behaalde veelbelovende resultaten onder gecontroleerde lichtomstandigheden, hoewel het niet consistent betrouwbaar was.

Onderzoek naar coördinatenfusie: Ik onderzocht benaderingen voor het fuseren van visiegebaseerde positieramingen met de Optitrack-gegevens, waaronder basisimplementaties van Kalman-filters. Het concept was om Optitrack-gegevens meer gewicht te geven wanneer die beschikbaar waren, maar terug te vallen op vision wanneer nodig, hoewel ik dit niet volledig werkend kreeg voordat mijn tijd in het lab eindigde.

Prestatie-uitdagingen: Het bleek uitdagend om al deze verwerking in realtime te laten draaien naast de regelkringen van de robot. Ik experimenteerde met optimalisatiebenaderingen om de algoritmen rond 10-15Hz te laten draaien zonder de verwerkingscapaciteit van de Jetson Nano te overbelasten.

Helaas moest ik het lab verlaten voordat ik dit computer vision-werk volledig kon afronden. Hoewel ik enkele veelbelovende vroege resultaten had en veel heb geleerd over de verwerking van dieptesensoren, kreeg ik het systeem niet in een volledig betrouwbare staat. Het bleef een interessante onderzoeksrichting waarop anderen mogelijk konden voortbouwen.

Hier is een video van mij waarin ik de computer vision-algoritmen test:

Hier zag het beeld van de dieptesensor eruit tijdens mijn experimenten:

Hoewel ik het werk aan de integratie van de dieptesensor niet afmaakte, toonde het concept potentieel voor toepassingen zoals het simuleren van scenario’s met zelfrijdende auto’s, waarbij voertuigen zich bewust moeten zijn van elkaar zonder uitsluitend te vertrouwen op externe infrastructuur. De onderzoeksrichting die ik begon te verkennen, zou mogelijk kunnen bijdragen aan toekomstig werk in het lab.

Documentatie en kennisbehoud

Een van mijn belangrijkste bijdragen aan het HCR Lab, en misschien wel degene waar ik het meest trots op ben, was het organiseren en behouden van alle projectdocumentatie. Toen ik bij het lab kwam, was de kennis over het Triton-project verspreid over meerdere platforms en formaten. Kritische informatie was verspreid over:

  • Diverse Google Drive-accounts van verschillende studenten die waren afgestudeerd
  • Oude e-mails begraven in inboxen
  • Willekeurige Dropbox-mappen
  • Meerdere GitHub-repositories
  • GitLab-repositories met inconsistente organisatie
  • Handgeschreven notities die alleen door specifieke mensen geïnterpreteerd konden worden

Deze gefragmenteerde documentatie was een enorm probleem. Nieuwe studenten besteedden weken alleen maar aan het uitzoeken hoe ze moesten beginnen, en waardevolle kennis ging voortdurend verloren wanneer mensen afstudeerden of het lab verlieten.

Ik nam het op me om dit probleem systematisch op te lossen. Ik besteedde talloze uren aan het opsporen van elk stukje documentatie, code, video en notitie met betrekking tot het Triton-project. Vervolgens organiseerde ik alles in een gecentraliseerde GitLab-repository met een duidelijke, logische structuur.

Triton op bureau Meerdere Tritons op tafel (8 in totaal, 5 in aanbouw)

Tritons op plank onder mooie hoek

De gecentraliseerde documentatie omvatte:

  • Bouwgidsen: Stapsgewijze instructies voor het vanaf nul assembleren van Tritons
  • Software-instellingen: Volledige handleidingen voor het opzetten van de ontwikkelomgeving
  • Code-documentatie: Goed gecommentarieerde code met duidelijke uitleg
  • Hardware-specificaties: Gedetailleerde onderdelenlijsten, bedradingsschema’s en PCB-ontwerpen
  • Handleidingen voor probleemoplossing: Veelvoorkomende problemen en hun oplossingen
  • Videohandleidingen: Ik maakte en uploadde instructievideo’s naar YouTube, waaronder gedetailleerde tutorials voor Optitrack-kalibratie:

Ik stelde ook documentatiestandaarden vast om ervoor te zorgen dat toekomstige bijdragen georganiseerd en toegankelijk zouden zijn. De repositorystructuur die ik creëerde, werd de basis voor al het daaropvolgende werk in het lab.

Naast het organiseren van bestaande documentatie maakte ik verschillende originele handleidingen en tutorials die kritieke hiaten in de kennisbasis opvulden. Deze omvatten gedetailleerde installatie-instructies voor nieuwe lableden, uitgebreide handleidingen voor probleemoplossing en video-rondleidingen van complexe procedures.

De impact was onmiddellijk en blijvend. Nieuwe studenten konden zich in dagen in plaats van weken op snelheid brengen. De documentatierepository die ik creëerde, wordt vandaag de dag nog steeds door het lab gebruikt, jaren nadat ik vertrok. Het werd de enige bron van waarheid voor het Triton-project en bespaarde toekomstige onderzoekers talloze uren/dagen.

Begeleiding en kennisoverdracht

Een van de meest bevredigende aspecten van mijn tijd in het HCR Lab was de mogelijkheid om anderen te begeleiden en de kennis die ik had opgedaan te delen. Naarmate mijn werk vorderde en ik meer ervaring kreeg met de Triton-systemen, nam ik steeds meer verantwoordelijkheid op me voor het opleiden van nieuwe teamleden.

Begeleiden van opvolgers in het lab

Toen ik me voorbereidde om uiteindelijk het lab te verlaten om me te richten op het afronden van mijn opleiding en mijn werk bij eBay, zorgde ik ervoor dat ik twee mensen grondig trainde die het Triton-project na mijn vertrek zouden overnemen. Dit ging niet alleen om laten zien hoe de dingen werkten, maar om ervoor te zorgen dat zij de onderliggende principes echt begrepen zodat ze konden blijven innoveren.

Ik bracht weken door met nauw samenwerken met hen, waarbij we onder meer ingingen op:

  • De wiskundige grondslagen van de PID-regelsystemen
  • De multiprocessing-architectuur voor het coördineren van meerdere robots
  • De integratie van de dieptesensor en computer vision-algoritmen
  • Het documentatiesysteem en hoe dit te onderhouden
  • Foutopsporingstechnieken en veelvoorkomende faalmodi

De kennisoverdracht was ongelooflijk grondig. We doorliepen samen echte foutopsporingssessies, ik liet hen de bestaande code aanpassen en uitbreiden, en ik zorgde ervoor dat ze zelfstandig nieuwe Tritons vanaf nul konden opzetten.

Mentorschapsprogramma voor middelbare scholieren

Misschien nog lonender was mijn ervaring met het begeleiden van een middelbare scholier via het outreach-programma van het lab. Dit was een geweldige kans om iemand kennis te laten maken met robotica, informatica en onderzoek in een vormende fase van zijn of haar opleiding.

Ik ontwierp een uitgebreid curriculum dat het volgende omvatte:

Fundamenten van de informatica:

  • Programmeerconcepten met Python als primaire taal
  • Introductie tot objectgeoriënteerd programmeren
  • Inzicht in algoritmen en datastructuren

Robotica-concepten:

  • Hoe sensoren werken en hoe ermee te koppelen
  • Aansturing van actuatoren en motorsystemen
  • De basis van autonome systemen en feedbackregeling

ROS (Robot Operating System):

  • Inzicht in het publish/subscribe-berichtensysteem
  • Nodes en services maken
  • Werken met launch-bestanden en parameter servers

Praktisch projectwerk:

  • We werkten samen aan het maken van een ROS-service die het LED-systeem op het hoofd van de Triton bestuurde
  • Zij leerde schone, gedocumenteerde code te schrijven die integreerde met onze bestaande systemen
  • De LED-besturingsservice die zij maakte, werd een permanent onderdeel van de Triton-codebase

Wat dit mentorschap bijzonder maakte, was het zien van haar ontwikkeling van iemand die vrijwel niets van programmeren wist tot iemand die betekenisvolle code leverde voor een actief onderzoeksproject. Ze ging van het vragen “Wat is een variabele?” naar het zelfstandig oplossen van ROS-communicatieproblemen en het schrijven van haar eigen service-implementaties.

Het LED-besturingssysteem dat zij ontwikkelde, stelde onderzoekers in staat om via eenvoudige ROS-opdrachten gemakkelijk de kleuren en patronen van de hoofd-LED’s van de Triton te veranderen. Dat klinkt misschien eenvoudig, maar het vereiste inzicht in de ROS-architectuur, hardware-interfacing en juiste ontwerpprincipes voor software. Haar bijdrage wordt vandaag de dag nog steeds in het lab gebruikt.

De mentorrelatie was voor mij net zo leerzaam als voor haar. Het dwong me om complexe concepten op te splitsen in behapbare stukken en echt na te denken over de fundamenten van wat we aan het doen waren. Iemand anders lesgeven maakte mij een betere ingenieur en onderzoeker.

Samenwerking met PhD-onderzoek

Een van de meest professioneel bevredigende aspecten van mijn tijd in het lab was de nauwe samenwerking met Peng, een PhD-student wiens onderzoek zich richtte op algoritmen voor zelfrijdende auto’s. De softwareverbeteringen die ik aan het Triton-systeem had aangebracht, hielpen zijn doctoraalonderzoek te ondersteunen.

Pengs onderzoek vereiste precieze, betrouwbare coördinatie van meerdere robots om scenario’s met zelfrijdende auto’s te simuleren. Voor mijn verbeteringen aan de bewegingsbesturing en multi-robotsystemen waren deze experimenten veel moeilijker uit te voeren. De robots waren trager, minder nauwkeurig en konden niet zo effectief samenwerken.

Mijn bijdragen hielpen Pengs onderzoek op verschillende gebieden:

Studie van kruispuntbeheer: Met de verbeterde PID-regelaars en coördinatie van meerdere robots kon Peng kruispuntscenario’s simuleren waarin meerdere “voertuigen” (Tritons) hun bewegingen moesten afstemmen. De betere timing en positionering maakten deze studies beter uitvoerbaar.

Voertuig-tot-voertuigcommunicatie: Het multi-processing framework dat ik ontwikkelde, stelde Peng in staat om communicatieprotocollen tussen gesimuleerde voertuigen te implementeren en te testen. Elke Triton kon beslissingen nemen terwijl hij toch met anderen coördineerde, vergelijkbaar met hoe zelfrijdende auto’s zouden moeten functioneren.

SLAM- en kaartonderzoekswerk: Het werk aan de integratie van de dieptesensor leverde Peng extra data op voor zijn onderzoek naar gelijktijdige lokalisatie en mapping. Het hebben van meerdere robots met gecoördineerde sensormogelijkheden maakte uitgebreidere mappingexperimenten mogelijk.

Wat onze samenwerking bijzonder waardevol maakte, was dat het niet alleen ik was die zijn onderzoek hielp; het was een echte samenwerking. Pengs inzicht in de theoretische aspecten van autonome voertuigen hielp mijn praktische implementaties vorm te geven. Zijn feedback en vereisten dwongen me om de systemen robuuster en capabeler te maken.

We brachten vele uren samen door in het lab, debugging-scenario’s, verschillende besturingsstrategieën bespreken en verkennen wat het Triton-platform kon bereiken. Peng werd zowel een collega als een vriend, en met hem samenwerken leerde me veel over hoe academisch onderzoek eigenlijk werkt.

De systemen die ik bouwde werden een nuttig onderdeel van Pengs proefschriftwerk. Zien dat mijn praktische ingenieursbijdragen onderzoek in autonome voertuigtechnologie ondersteunden, gaf echt voldoening. Het bevestigde mijn interesse in hoe solide engineering en onderzoek kunnen samenwerken om bruikbare resultaten te creëren.

Zelfs nadat ik het lab had verlaten, hield Peng en ik contact. Weten dat mijn werk ook na mijn vertrek bleef bijdragen aan belangrijk onderzoek was enorm bevredigend.

Perspectief: het pre-LLM-tijdperk van ontwikkeling

Het is de moeite waard om op te merken dat al dit werk werd verricht tijdens het pre-LLM-tijdperk van softwareontwikkeling. Dit alles vond plaats tussen 2020 en 2021 (voornamelijk 2021), voordat ChatGPT, Claude, Perplexity of AI-aangedreven ontwikkeltools zoals Cursor IDE bestonden.

Elke regel code werd vanaf nul geschreven, elk algoritme werd onderzocht via academische papers en leerboeken, en elke debug-sessie omvatte traditionele methoden zoals printstatements, debuggers en methodische tests. Wanneer ik vastliep op een coördinatentransformatie of een PID-afstemmingsprobleem, kon ik niet zomaar een AI-assistent vragen om het concept uit te leggen of te helpen met debuggen.

Dit maakte het ontwikkelproces aanzienlijk uitdagender, maar ook leerzamer. Ik moest:

Alles handmatig onderzoeken: Het begrijpen van PID-regeltheorie betekende dat ik leerboeken en academische papers moest lezen. Het uitzoeken van coördinatentransformaties vereiste dat ik de wiskunde met de hand uitwerkte. Elk concept moest volledig begrepen worden vóór implementatie.

Debuggen zonder AI-hulp: Wanneer robots onverwachte richtingen op bewogen of rond doelen oscilleerden, moest ik systematisch de logica doorlopen, debug-uitvoer toevoegen en hypothesen één voor één testen. Er was geen AI om mogelijke problemen voor te stellen of te helpen bij het interpreteren van foutpatronen.

Leren vanuit de basisprincipes: Zonder de mogelijkheid om snel te vragen “hoe implementeer ik multi-processing in Python voor robotica?” moest ik de onderliggende concepten diepgaand begrijpen. Dit dwong me om een stevige basis op te bouwen in parallel programmeren, besturingssystemen en computervisie.

Documentatie was cruciaal: Omdat ik niet op AI kon vertrouwen om code later uit te leggen, moest ik uiterst duidelijke documentatie en opmerkingen schrijven. Deze discipline bleek van onschatbare waarde bij het overdragen van kennis aan anderen.

Als ik erop terugkijk, zouden moderne AI-tools veel aspecten van de ontwikkeling hebben versneld, maar zonder die tools te werken dwong me om diepere probleemoplossende vaardigheden en een grondiger begrip van de onderliggende systemen te ontwikkelen. Het is fascinerend om te bedenken hoe anders dit project had kunnen zijn met de ontwikkeltools van vandaag beschikbaar.

De moeilijke beslissing om te vertrekken

Hoe graag ik ook in het HCR Lab werkte, tegen het einde van 2021 stond ik voor een moeilijke beslissing waar veel studenten mee te maken krijgen: het balanceren van meerdere kansen en verantwoordelijkheden. Ik werkte tegelijkertijd fulltime als software engineer bij eBay, rondde mijn computer science-opleiding aan Mines af, en droeg bij aan onderzoek in het HCR Lab.

De kans bij eBay was aanzienlijk; het was mijn eerste grote rol als software engineer, leverde onschatbare ervaring in de industrie op en gaf me een stabiel inkomen. Toch was het simpelweg onhoudbaar om fulltime te werken, mijn diploma af te ronden en op een zinvolle manier bij te dragen aan onderzoek. Er moest iets wijken.

Toen ik Dr. Zhang benaderde over de mogelijkheid om mijn studielast te verminderen om me meer op het labwerk te kunnen richten, raadde hij dat sterk af. Zijn redenering was terecht: mijn diploma afronden moest de prioriteit zijn, en de ervaring in de industrie bij eBay zou waardevol zijn voor mijn carrièreontwikkeling. Hij vond dat het laten vallen van vakken om me op onderzoek te richten, hoe verleidelijk ook, misschien niet de beste beslissing voor de lange termijn was.

Dus in september 2021, na ongeveer 8 maanden intensief werk in het lab, nam ik de moeilijke beslissing om een stap terug te doen uit mijn rol als onderzoeksassistent om me te concentreren op het afronden van mijn diploma en mijn werk bij eBay. Het was een van de moeilijkste professionele beslissingen die ik op dat moment moest nemen.

Zelfs nadat ik officieel het lab had verlaten, bleef ik ondersteuning bieden telkens wanneer iemand hulp nodig had met de systemen die ik had gebouwd. Ik werkte documentatie bij wanneer nodig, beantwoordde vragen over debugging en hielp problemen op afstand op te lossen. De connecties die ik had opgebouwd en mijn inzet voor het succes van het project verdwenen niet alleen maar omdat ik officieel geen deel meer uitmaakte van het team.

Reflecties en terugblik

Nu, in 2025, vier jaar later, merk ik dat ik met gemengde gevoelens terugdenk aan die tijd. Mijn carrièrepad bracht me diep in webontwikkeling en AI/ML-engineering, gebieden die ongelooflijk belonend zijn geweest en enorme kansen voor groei en impact hebben geboden.

Bovenaanzicht van Tritons op tafel

Toch is er een deel van mij dat zich afvraagt: “wat als.” Robotica was, en is eerlijk gezegd nog steeds, mijn echte passie. Er is iets aan het werken met fysieke systemen, het zien van hoe je code zich vertaalt naar beweging en gedrag in de echte wereld, dat webontwikkeling en zelfs AI-werk niet helemaal kunnen evenaren.

Ik vraag me soms af wat er zou zijn gebeurd als ik een ander pad had gekozen. Wat als ik een manier had gevonden om in roboticaonderzoek te blijven? Wat als ik direct na mijn bachelorstudie aan een graduate opleiding was begonnen? Wat als ik had gekozen om het labwerk boven de ervaring in de industrie te prioriteren?

Maar ik erken ook dat elk pad zijn afwegingen heeft. De vaardigheden die ik ontwikkelde in webontwikkeling en AI zijn ongelooflijk waardevol geweest. De ervaring in de industrie leerde me software engineering op schaal, gebruikerservaringontwerp en de praktische uitdagingen van het bouwen van producten die door miljoenen mensen worden gebruikt. Deze ervaringen hebben me als ingenieur in het algemeen beter gemaakt.

Het werk dat ik in het HCR Lab deed, blijft mijn aanpak van problemen vandaag beïnvloeden. Het systematische denken dat nodig is voor PID-regelsystemen zie je terug in hoe ik feedbacklussen ontwerp in softwaresystemen. De documentatie- en kennisbehoudvaardigheden die ik ontwikkelde, zijn in elke rol sindsdien van onschatbare waarde geweest. De ervaring met mentorschap en lesgeven heeft gevormd hoe ik met junior ontwikkelaars werk en bijdraag aan het delen van teamkennis.

Het belangrijkste is dat die ervaring me leerde dat ik floreer wanneer ik werk aan uitdagende technische problemen met echte impact. Of dat nu het optimaliseren van algoritmen voor robotbewegingen is of het bouwen van AI-systemen die gebruikers helpen hun doelen te bereiken, de voldoening komt voort uit het oplossen van moeilijke problemen die ertoe doen.

De blijvende impact

Als ik terugkijk op de ervaring in het HCR Lab, valt het me op hoeveel ik in relatief korte tijd heb bereikt. De systemen die ik bouwde, veranderden fundamenteel hoe het Triton-platform werkte, en veel van die verbeteringen worden vandaag de dag nog steeds gebruikt. De documentatierepository die ik creëerde werd de kennisbasis voor het hele project. De mentorrelaties die ik opbouwde hadden een blijvende impact op de mensen met wie ik samenwerkte.

Maar misschien wel het belangrijkst: de ervaring liet me zien waartoe ik in staat ben wanneer ik werk aan problemen waar ik echt gepassioneerd over ben. In die acht maanden heb ik:

  • Het besturingssysteem voor robotbeweging verbeterd dat het platform had beperkt
  • Vanaf nul een systeem voor coördinatie tussen meerdere robots gebouwd
  • Mogelijkheden voor computervisie en sensorfusie geïntegreerd
  • Een uitgebreid systeem voor documentatie en kennisbeheer gecreëerd
  • Verschillende mensen begeleid en geholpen met kennisoverdracht
  • Onderzoek op PhD-niveau naar autonome voertuigen ondersteund

Het ging niet alleen om de technische prestaties, hoewel die voor mij wel betekenisvol waren. Het ging erom te leren dat je met doorzettingsvermogen en systematisch denken nuttige bijdragen kunt leveren, zelfs als bachelorstudent.

De Toekomst en Robotica

Hoewel mijn carrière me in andere richtingen heeft geleid, is mijn passie voor robotica niet verminderd. Ik volg nog steeds de ontwikkelingen in het vakgebied, ik ben enthousiast over vooruitgang in robotleren en autonome systemen, en ik werk af en toe in mijn vrije tijd aan persoonlijke robotica-projecten.

Wie weet wat de toekomst brengt? De vaardigheden die ik ontwikkel in AI en machine learning worden steeds relevanter voor robotica. De ervaring in de industrie die ik heb opgedaan heeft me geleerd hoe ik robuuste, schaalbare systemen kan bouwen. Misschien ligt er een toekomst waarin deze verschillende draden van mijn ervaring op onverwachte manieren samenkomen.

Voor nu ben ik dankbaar voor de tijd die ik in het HCR Lab heb doorgebracht en de ervaringen die het me heeft geboden. Het was een vormende periode die zowel mijn technische vaardigheden als mijn begrip van welk soort werk ik het meest vervullend vind, heeft gevormd. Ook al mis ik het soms, ik weet dat de lessen die ik heb geleerd en de benaderingen die ik heb ontwikkeld nog steeds invloed hebben op alles wat ik doe.

De Triton-robots staan er nog steeds, dienen nog steeds onderzoekers, en maken nog steeds belangrijk werk mogelijk. En dat is behoorlijk geweldig.