Het verhaal van de autonome mobiele robot die had kunnen zijn

In de zomer van 1994 studeerde ik af aan de Rijkshogeschool Groningen. Ik woonde in een studentenhuis in de stad Groningen en mijn huisgenoot had ondertussen een baan aangenomen. Zelf wist ik nog niet wat ik wilde gaan doen en weifelde tussen een technische functie bij de politie in Driebergen, ‘iets met elektronica’, misschien toch verder studeren, of werken als software engineer. Ik had net mijn studielening afbetaald met de verdiensten uit mijn bijbaantje en had niet al te veel reserves meer. Toch had ik ook niet al teveel zin om me al aan een baan te verbinden en met vers afgeronde studies Elektronica en Informatica, een dubbele ingenieurstitel op zak en net 5 jaar ervaring in een elektronica-onderdelen-en-ontwerp-zaak jeukten mijn vingers om iets met die opgedane kennis te doen.

De leerlingen van Frankenstein

Mijn studies Elektronica en Informatica lagen op een pad die van een afstandje gezien althans zouden moeten leiden tot ‘iets met robots’. Ik ben altijd zeer geïnteresseerd geweest in onderzoek naar kunstmatige intelligentie en huishoudelijk toe te passen ‘robothulpjes’. Ik las in de jaren ’80 het boek De leerlingen van Frankenstein, een verslag van een generatie onderzoeksstudenten die bezig waren met het realiseren van ‘kunstmatige intelligentie’ en veel van de experimenten waren goed na te bootsen met de toenmalige thuiscomputers, hetgeen ik vaak en veelvuldig deed. Ik kon toen al goed voorstellen dat ik hier onderdeel van ging uitmaken, maar werkend vanaf een breder pallet dan ‘de leerlingen’ deden. Ik heb maanden besteed aan het nadoen van de onderzoeken en kwam tot de conclusie dat voor beperkte robothulpjes die zouden moeten opereren in een heel afgebakende omgeving al die complexiteit niet nodig zou moeten zijn. Hoewel ik de oplossing toen nog niet zag, was ik ervan overtuigd dat autonome robots weinig, maar vooral praktische intelligentie nodig hadden.

Mobile Robots

In het jaar voordat ik afstudeerde hadden Jones en Flynn het boek Mobile Robots: Inspiration to Implementation uitgebracht; een prachtig hardcover boek vol foto’s en inspirerende beschrijvingen over de elektronische en technische aspecten van mobiele robots. Met mijn vijf jaar onderdelenervaring en studies Elektronica en Informatica vond ik het boek aan de ene kant verhelderend maar aan de andere kant teleurstellend: Jones en Flynn waren professor en onderzoeksassistenten van het MIT in Cambridge MA met jarenlange ervaring maar de vindingen en verhandelingen in het boek lagen niet ver van mijn eigen ideeën en ervaringen af. Sterker, ik dacht zo her en der nog wel wat te kunnen verbeteren aan hetgeen ik las en probeerde me voor te stellen hoe een gesprek tussen mijzelf en Jones, Flynn en hun mentor Rodney Brooks over mogelijke verbeteringen zou verlopen.

Al filosoferend bedacht ik me dat ik net zo goed zelf eens zo’n autonome, mobiele robot zou kunnen bouwen om te laten zien hoe het ook kon en in het Nederlandse maandblad Elektuur, of zelfs de internationale Elektor kunnen publiceren. Het beste dat er in Nederland op dat gebied tot dan toe was, waren de robotmuis Willie van Steven Bolt (gepubliceerd in het maandblad Kijk), een prachtige constructie met hele basale elektronische componenten, en een Fischertechnik BBC robot die er fantastisch en hoogtechnisch uitzag, maar in functie maar weinig meer kon dan stapsgewijs op een tafel bestuurd worden met een BBC homecomputer. Beide leuke vindingen, die in de praktijk maar weinig weghadden van autonome robots die een rol of functie in een huishouden zouden kunnen hebben. Een klein klusje, zoals rommeltjes van de vloerbedekking verzamelen, zou toch niet teveel gevraagd hoeven zijn. Maar op z’n minst een zelfstandig werkend, niet al teveel aandacht benodigde ‘huisrobot’ vormen. Daar zou best interesse voor kunnen zijn in Cambridge, MA. En er was bij het MIT interesse in internationale onderzoeksstudenten voor 2, 3 of 6 maanden voor een veelheid aan onderwerpen. Maar hoe kom je daar, hoe betaal je dat? Misschien zou het ontwerp van de robot iets kunnen opleveren? En had Elektuur niet recentelijk een oproep staan voor technisch hoogstaande ontwerpen waarvoor een aardige beloning in het vooruitschiet werd gesteld? Hmm.

Vehicles

Ik had tot aan 1994 veel gelezen over autonome voertuigen en was er in die tijd van overtuigd, dat intelligentie niet ’top down’ maar juist ‘bottom up’ geconstrueerd moest worden. Ik werd hierbij enerzijds geïnspireerd door de tientallen jaren aan boeken en artikelen die ik had doorgenomen waarin ‘kunstmatige intelligentie’ vooral bestond uit voorgeprogrammeerde, truukjes uithalende lange stukken software die vooral de waardering van de makers zelf en niet zozeer van het grote publiek trokken. En het wilde er bij mij niet in dat je een complex programma nodig had voor iets eenvoudigs als een gesimuleerde muis of vogel. Ah, en anderzijds door de ideeën van Valentino Braitenberg.

Het boek Vehicles dat ik jaren daarvoor al had stukgelezen kwam me een heel eind tegemoet in de overtuiging dat intelligentie ‘bottom up’ ontstaat: Valentino Braitenberg liet van allerlei gedachtenoefeningen (geen van zijn ideeën waren direct praktisch uitvoerbaar, maar het scheelde meestal niet veel) voorbij gaan om aan te tonen dat complex gedrag heel goed kon ontstaan uit een klein aantal eenvoudige actie-reactie patronen die elkaar afwisselden als de sensorieke waarden voor een bepaalde actie hoger werden dan die van de andere. Ik was daarom vast van plan mijn tanden daar eens in vast te bijten: een simpele opbouw van een autonome robot met een eenvoudig doel in het bestaan, namelijk eenvoudig ‘zijn’: rondbewegen, reageren op de omgeving, op zoek naar licht of andere stimulae en op z’n tijd een elektrisch hapje. En natuurlijk in de tussentijd iets doen wat handig was thuis, zoals prullen van de vloer oprapen.

In 1994 waren er vier grote barrières voor het realiseren van autonome mobiele robots: platform en aandrijving, een geschikte microcontroller, toepasselijke softwarearchitectuur en een slimme toepassing van voorgaande drie. Geen van de robots die ik tot dat moment had gezien scoorde positief op deze aspecten. Sommige robots hadden een compact platform maar hadden verder weinig praktisch nut, sommige hadden een grote, onhandige computer en in sommige literatuur werd ingegaan op mogelijke architecturen die vervolgens door niemand was geïmplementeerd. En geen van de mobiele robots die er waren gingen ook maar iets verder dan een voorgeprogrammeerde ‘vooruit’, ‘ontwijk muur’ en ‘volg lijn’. ‘Mobile Robots’ adresseerde elk van de barrières met uitgewerkte voorbeelden en verhalende inspiraties, met hybride op Lego gebaseerde platformen en kleine motoren, een 68HC11 microcontroller en een printplaat ontwikkeld door Fred Martin van datzelfde MIT en als softwarearchitectuur de door Rodney Brooks in 1985 ontworpen ‘subsumption architecture’. Uiteindelijk kwam het boek niet voorbij de laatste hobbel, een slimme toepassing, maar daar ging ik verandering in brengen.

Elektuur van april 1994

Elektuur had een paar maanden eerder in het aprilnummer van 1994 een 68HC11 processorkaart gepubliceerd. Een minimaal ontwerp waar niet al teveel aandacht aan besteed was, maar die me op allerlei manieren vreselijk aantrok: veel I/O lijnen, ingebouwde A/D omzetters, programmeerbaar in 68HC11 assembleertaal waar ik geen enkele ervaring mee had, een handig bordje dat genoegen leek te nemen met een forse variatie in voedingsspanningen, waaronder die van penlite accu’s en vooral mooi compact. Motorola had een faxnummer voor productaanvragen en stuurde diezelfde week via UPS een set databoeken met ondermeer de 68HC11 Reference Manual uit Amerika op zonder enige bijkomende kosten en D.I.L.-Elektronica in Rotterdam, met advertenties in de Elektuur, had kitjes van het Elektuurontwerp in de handel zodat ik na enkele dagen al met de controller aan de slag kon. Een gouden greep, zo bleek, want de 68HC11 microcontroller was bijzonder krachtig en flexibel in het gebruik. Het debuggen met mijn inderhaast samengestelde code stack was nog wel een dingetje: de code moest gecompileerd op de PC en gedownload met een wat rammelende seriële verbinding naar de controller; fouten in de software konden slechts met leds en afwijkend gedrag opgespoord. Met de kennis die ik nu heb, had ik daar eerst iets aan gedaan, maar alas. Trial and error in die tijd. Mijn idee was, dat dit controllerbordje onderdeel zou gaan uitmaken van een grotere printplaat met besturingslogica en sensoren, waar de schakeling van het bordje onderdeel van zou zijn.

Onderdelen van het Elektor 930123 68HC11 microcontrollerbordje

Voor platform en aandrijving had ik een drie-wielig mechanisme in gedachten, met aangepaste modelbouwservo’s als aandrijving. Wielen in het midden zodat het platform op de plaats 360º zou kunnen draaien, handig om een obstakel te ontwijken, en een steuntje aan de achterzijde. Ik wilde hier een zo eenvoudig mogelijke mechanische opbouw, immers, de zelfbouwers van Elektuur moesten er thuis mee aan de slag kunnen! En het moest ook voor mezelf betaalbaar blijven. De oplossingen die ik tot dan had gezien bestonden ofwel uit grote, dure stappenmotoren, ofwel uit speelgoedmotoren waarvan de snelheid slecht regelbaar was. Beide oplossingen vereisten relatief zware elektronica om door microcontrollers te kunnen worden aangestuurd. Het slopen van een modelbouwservo zodat een deel van de elektronica kon worden hergebruikt en de servo, overbrenging en al, als aandrijfmotor gebruikt kon worden, leek me een gouden vondst. Die links en rechts, en dan een miniatuur zwenkwieltje als stabilisator. Hoewel me daar een kogel van een computermuis voor ogen stond, kreeg ik dat niet met minimale middelen voor elkaar en daarom maakte ik een wieltje van de reserveonderdelen die bij de modelbouwservo’s meekwamen. Dit alles om nabouw door de lezers van Elektuur eenvoudiger te maken.

In restroperspectief heb ik voor de robot de volgende uitgangspunten en randvoorwaarden gehanteerd:

  • Compact ontwerp met alles op hetzelfde platform
  • Geen afstandsbediening: autonoom is autonoom
  • Gedrag is het gevolg van reactie op omgeving en interne waarden
  • Sensoren worden gevormd door bumpers (schakelaars), infrarooddetector, lichtdetectoren, bewegende warmtebronnen, geluid en batterijniveau
  • Actuatoren zijn twee servomotoren, een indicatieled en een pieper
  • Programma volgt een minimale implementatie
  • Een lage intelligentie zou complex gedrag niet in de weg moeten zitten
  • Maximaal een week of twee bouw- en programmeertijd
  • Met zoveel mogelijk bestaande middelen te realiseren
  • Goed publiceerbaar en herbouwbaar door een gemiddelde Elektuur-lezer

Ik had een plaat aluminium gekocht en gebruikte de grote woonkamer en de eettafel van het studentenhuis als tijdelijke werkplaats. Ik kwam erachter dat aluminium ook met wat geduld heel goed te bewerken is. Want dat was het mooie van de afgelopen studies geweest: er was altijd wel een werkplaats beschikbaar om iets te maken en die luxe had ik na het afstuderen niet meer. Een figuurzaag, een vijl en een schuurpapiertje waren echter het enige dat nodig was om een keurige cirkel uit te zagen, met uitsparingen voor de servomotoren. Gaten boorde ik uit de hand met een boormachine en alle montage gebeurde met M3 boutjes, afstandsbussen en hot glue. De robot bestond uit een basisplaat met de aandrijving, een printplaat met verbindingen en de accu’s, een tweede aluminum plaat en hierop de licht- en bewegingssensoren en de microcontrollerprintplaat. De printplaat was een stuk in vorm uitgezaagd gaatjesprint met voor een kapitaal aan connectoren, waarvan ik me voornam op die in de tweede versie te laten vervallen. Om de subsumption architecture in voldoende mate toe te kunnen passen had ik verschillende niveau’s van gedrag voor ogen, met verschillende mate van prioriteit, vanaf ’terugtrekken na een botsing’, ‘omzeilen bij nabijheid’, ‘op beweging afgaan’, ‘vraag om voeding’, ‘volg het licht’, ‘verberg voor licht’ en ‘ga op onderzoek uit’. Die gedragingen zouden voldoende moeten zijn om een complex gedragende autonome robot te maken die een hele dag voor zichzelf kon zorgen en aan het einde van de dag op zoek ging naar warmbloedige voorwerpen in het huis om om voeding (opladen) te zeuren.

De autonome mobiel robot, na verwijdering van de accu’s en 30 jaar na creatie. Zoveel herinneringen 🙂

Ik gebruikte CoralDRAW om de tekeningen van de aluminium platen, de plaats van de sensoren en de draadbomen mee te maken. Hoewel niet de handigste manier leverde het mooie tekeningen op. Ik had in die tijd de beschikking over een 80386 kloon met een Windows versie en een HP LaserJet 4L waarmee ik mooie documenten kon maken. De tekeningen vonden hun weg in een Word document, waarmee ik het artikel voor Elektuur aan het schrijven was. Parallel aan het ontwerpen van het voertuig ontwikkelde ik de tekeningen, schema’s en was ik begonnen met het schrijven van een verhandeling die ik “Evolutionairy Approach to Designing and Implementing Autonomous Robot Vehicles” had genoemd. Hierin deed ik een verhaal uit de doeken zoals deze door Braintenberg was voorgesteld, maar met de praktische invulling die ik op dat moment aan het opdoen was. Ik gebruikte de in mijn studies geleerde technieken voor het maken van terzake kundige rapporten: een goede titel, een inleiding met probleemstelling, 3 tot 5 onderwerpen (paste mooi, met theorie, hardware, softwarearchitectuur, software en praktijk) en een conclusie.

De keuken van het studentenhuis had een gladde zeilvloer, een groot venster en verschillende hoekjes en was het perfecte lab voor proefnemingen met het prototype van de robot. Na wat gesprekken met de redactie van Elektuur leek het erop dat het ontwerp precies in het plaatje van het elektronicatijdschrift paste en ik maakte me klaar om een printplaat te ontwerpen waarmee de grote hoeveelheid draden vervangen zouden worden. Nog wat extra dagen tekenwerk en de schema’s begonnen er goed uit te zien. Mijn onderzoeksrapport las plezierig en enkele van de ontwerpafbeeldingen deden de tekst goed. De software, het hart van het gedrag van de robot, begon aardig stabiel te worden en het gedrag van de robot begon plezierig onvoorspelbaar te worden, precies wat je verwacht bij complex gedrag, ondanks het feit dat het programma zelf compact en overzichtelijk was gebleven.

Omdat de druk om de huiskamer weer wat leefbaar te maken na een paar weken onafgebroken schrijven, werken en zagen wat hoger werd en omdat het meeste van de hardware wel zo goed als af was, maakte ik een grote schoonmaak en ruimde de kamer op. Alle tijdelijk in de huiskamer verzamelde gereedschap ging weer terug naar de knutselkast, restjes en de vele afdrukken van de listings en platformontwerpen gingen de papierbak ik en de mobiele robot kreeg een mooi plekje in de boekenkast. Omdat ik weken onafgebroken bezig was geweest, werd het ook tijd om eens weer buitenshuis te gaan kijken. Na een paar dagen deed ik een rondje door de stad, bezocht mijn ouders en pikte in de loop een interessant tijdschrift op, met een op de voorpagina vastgeplakte diskette met een Linux distributie waar je zo mee aan de slag kon. Leek me wel wat, ik had tijdens mijn studie wel met Xinu gewerkt (wat, vanaf de grond herschreven bedoel ik), maar Linux, dat was nieuw. Leuk, even iets anders. Weer thuisgekomen plaatste ik de diskette en startte de computer opnieuw op. Ik kreeg een prompt zoals de volgende:

Welcome to Linux!
Press Y to prep your disk or any other key to quit.

Mijn hart deed even een sprongetje, toen ik me realiseerde dat al mijn tekeningen, de broncode en eigenlijk al mijn studieresultaten en mijn mogelijke toekomst in de mobiele robotica op de harde schijf van de computer stonden. De omvang hiervan was net even wat meer dan er op diskettes pasten en ik had nog niet echt tijd gehad om een kopie te maken. Gelukkig kon ik de boel met Y afbreken en het later nog eens opnieuw proberen. Ik drukte op Y.

Welcome to Linux!
Press Y to prep your disk or any other key to quit.
Prepping disk C for Linux..

Tot de dag van vandaag ben ik er overigens van overtuigd dat ik de tekst zeer zorgvuldig heb gelezen en op N heb gedrukt , maar de feedback van een ieder waar ik het verhaal aan vertelde was toch wel in de zin van “weet je zeker waar je op drukte?” en ik weet het niet zeker meer, evenmin als ik nog weet welke Linux distro het betrof.

Mijn eerste gedachte was “wat een bijzonder geluid maakt dat opstarten van Linux” en als tweede zette ik de stroom van de computer uit, met de hoop nog iets van de schijf te kunnen redden. Maar niets hiervan: de schijf was in het geheel niet meer benaderbaar en alle data die erop had gestaan was verloren gegaan. Ik voelde de grond onder mij bewegen en mijn gedachten raasden naar de afspraak met Elektuur en de afspraak met de HCC Robotica Interessegroep die ik die week nog had om de robot te demonstreren. De rest van de middag bestond uit het verzamelen van hetgeen ik nog digitaal en op papier beschikbaar had. Ik verwenste mijn grondige schoonmaak eerder die week en stelde vast dat niets van de vuilnis en papierbak nog te redden was. Belangrijker dan de tekeningen was nog de met veel moeite ontwikkelde programmatuur voor de microcontroller: op de gecompileerde versie na die nu in de 68HC11 zat opgeslagen had ik geen enkele vorm van broncode meer. Onderaan de streep had ik een mooi uitziende autonome mobiele robot, die een grote groep hobbyisten zou inspireren tot toekomstige producten, maar niets om Elektuur te overtuigen of als toelatingsproject voor het onderzoeksteam van het MIT te kunnen dienen. Ik heb echter niet lang bij de pakken neergezeten en de week erop ben ik als beroepsprogrammeur bij een lokaal softwarebedrijf aan de slag gegaan. Het duurde tot zeker 1999 voordat ik me weer enigszins interesseerde voor mobiele robots. In de tussentijd hadden Flynn, Jones en Brooks niet stilgezeten en hadden hun eerste grootschalig commerciële product, stofzuigrobot Roomba als eerste consumentenrobot op de markt gebracht, met daarin de door Jones ontwikkelde hardware en door Brooks ontwikkelde subsumption architecture.

Plaats een reactie