Gastbijdrage: Een snelcursus Robotcontrole

Naar aanleiding van onze bespreking van de Boston Dynamics Spot robot in de Nerdland podcast van september stuurde robotica-expert professor Bram Vanderborght volgende interessante tekst in. Een must voor wie beter wil begrijpen hoe de controle van deze indrukwekkende robots in elkaar zit!


Hoe bewegen robots?

In de septembereditie van de podcast Nerdland maandoverzicht werd de vraag gesteld hoe de robots van Boston Dynamics hun salto’s en indrukwekkende sprongen uitvoeren. Velen zullen versteld staan dat hiervoor geen AI wordt gebruikt. Niet dat de controlealgoritmes van dit innovatief bedrijf, nu eigendom van de autobouwer Hyundai, zomaar te downloaden zijn om te weten hoe die robots precies hun acrobatie uitvoeren. Maar in een artikel [MOU1] werd uitgelegd hoe het dansen voor “Do you love me [MOU2] ” ontworpen werd. Daarin wordt vermeld dat ze nog geen machine learning gebruiken. Hoe bewegen deze robots dan wel? Zijn ze volledig voorgeprogrammeerd? Tijd voor een snelcursus robotcontrole.

Sensor processing zullen we in dit artikel niet bespreken. Robots moeten kunnen zien en horen, en daar wordt heel wat AI voor gebruikt. Want net zoals bij mensen gebeurt het eigenlijke zien en horen we niet met onze ogen en oren, maar via onze hersenen. Ook Boston Dynamics gebruikt allerlei sensoren om hun omgeving waar te nemen. In dit artikel gaan we specifiek dieper in op de controle van de actuatoren, zijnde de mechanische spieren van de robot, om hun omgeving te beïnvloeden bv. iets vastgrijpen of erin te bewegen.

Servomotoren

Heel wat robots bewegen door middel van servomotoren. Je stuurt er een gewenste positie naartoe en de motor tracht deze gewenste positie te bereiken. De bekendste servomotoren zitten in bijvoorbeeld modelbouwvliegtuigen, maar als je met arduino’s programmeert ben je ze waarschijnlijk ook al tegengekomen. Breng je verschillende motoren samen, dan kan je er armen en benen mee aansturen om een robot te vormen. Op gezette tijden stuur je gewenste posities naar de motoren waardoor die bepaalde bewegingen maakt. Dit noemt men ‘voorwaartse kinematica’. Door de bewegingen van de motoren aan te sturen, gaat de eindeffector (het deel waar vaak de grijper of andere werktuig aan wordt bevestigd) een bepaalde beweging uitvoeren. 

Maar vaak wens je net dat de eindeffector een vooraf bepaalde beweging uitvoert om een taak te volbrengen. Denk maar aan een blokje vastnemen en ergens anders weer neerzetten, zoals heel wat pick en place robots doen in fabrieken. Daarom moet je berekenen wat de gewrichten van de robot moeten doen, vertrekkende van de gewenste beweging van de eindeffector. Dit noemt men ‘inverse kinematica’. Teken maar eens een rechte lijn van links naar rechts: je zal zien dat je gewrichten geen lineaire bewegingen maken! Een typische 3D-printer zal bijvoorbeeld net wel een rechtlijnige beweging uitvoeren. Dit omdat de 3D printer een cartesische machine is (XYZ), wat de controle eenvoudiger maakt.  Een typische robot met armen en benen heeft daarentegen een gearticuleerde opbouw. Vroeger kon men slechts een aantal van die posities per tijdseenheid sturen naar de robot, waardoor die typisch een houterige “robot”beweging maakte. Door snellere processoren en communicatielijnen in de robot, zeg maar de zenuwen, kan je tegenwoordig heel vloeiende en organische bewegingen generen.

Dergelijke robots zijn positiegestuurd, wat maakt dat ze precies en ook snel kunnen zijn. Kijk maar naar het tempo in fabrieken waar ze auto’s en andere zaken in elkaar schroeven. Door AI-algoritmes kan je de robots ook hun omgeving laten bekijken om niet enkel voorgeprogrammeerde posities te bereiken, maar bijvoorbeeld ook te zien waar het blokje zich bevindt.  

Die positiegestuurde robots zijn echter niet geschikt om in fysieke interactie te gaan met hun omgeving, inclusief mensen. Ze zijn niet alleen onveilig (daarom staan deze robots meestal in kooien), ze kunnen ook geen krachtsinteractie aangaan. Stel dat een robot via een visiesysteem een tafel ziet staan en erop moet tekenen, maar dit systeem heeft een onnauwkeurigheid van enkele millimeter waardoor hij denkt dat de tafel iets lager staat dan in werkelijkheid. Dan gaat de positiegecontroleerde robot deze (te lage) positie trachten te bereiken, en blijft hij meer en meer kracht zetten tot tot uiteindelijk of de tafel, of de robot breekt. Daarom wordt er een nieuwe generatie robots ontwikkeld die niet op positie gecontroleerd wordt, maar op kracht. Hoe objecten bewegen en krachten ontstaan en welke rol reactiekrachten spelen, werd beschreven door Newton in de 17e eeuw. Hoewel zijn befaamde wet F=ma mooi en puur is, is deze eenvoudige vorm enkel geldig voor puntmassa’s of voor simpele objecten. Voor een robot, met heel wat componenten, motoren en interacties, wordt de wet heel wat complexer. We spreken dan niet meer van kinematica, maar dynamica. En het is net die dynamica die ze bij Boston Dynamics heel goed kunnen controleren.

Wandelen, lopen en springen

Bovendien komen er voor hun stappende en lopende robots nog heel wat uitdagingen bovenop. Ten eerste zijn de vergelijkingen die de dynamica weergeven sterk niet-lineair, wat het oplossen van die vergelijkingen er niet eenvoudiger op maakt. De vergelijkingen zijn afhankelijk van welk been erop de grond staat en wisselen dus bij elke stap. Bovendien is de formulering ook helemaal anders wanneer de robot met één voet, met twee voeten of geen van beide voeten op de grond staat. Elke stap geeft ook een impact of een schok, wat bijkomende uitdagingen zijn voor de stabiliteit. De ondergrond is vaak onbekend en variërend: bewegen over harde ondergrond, houten planken of tapijt geeft andere interacties. In tegenstelling tot een aan de grond vastgeschroefde robot (zoals de industriële robotarmen), kan de grond enkel een duwkracht ontwikkelen, maar niet de voet naar de grond trekken. Dit zorgt ervoor dat de robot makkelijk kan omvallen. Door dit alles is de ontwikkeling van humanoïde of menselijke robots qua dynamica veel moeilijker dan die van raketten. Wandelen en lopen, wat voor velen onder ons triviaal is, is enorm moeilijk is voor robot. Hoewel er al raketten de ruimte in worden gestuurd die veilig kunnen landen, zijn er nog geen humanoids die zomaar rondlopen in ons huis of op het werk.

Heel wat speelgoedrobots kunnen inderdaad ook wandelen. Als dat voldoende traag gebeurt, zijn de krachten nodig om de armen en benen te versnellen (de m*a in de wet van Newton) te verwaarlozen t.o.v. de zwaartekracht. Zolang de projectie van het massamiddelpunt op de grond binnen de zone valt die gevormd wordt door de voeten, zal de robot niet omvallen en kan je zijn beweging voorprogrammeren (positiegestuurde controle). Gaat hij echter bv. van het tapijt naar vlakke grond, of op een helling die niet in rekening is gebracht, dan zal de robot omvallen, maar dan nog zal die steeds vlijtig zijn beentjes heen en weer bewegen omdat hij zich er niet van bewust is dat hij geen contact meer maakt met de grond. Wanneer er daarentegen sneller gestapt of gelopen gaat worden, is deze positiegestuurde methode niet meer voldoende. Dan krijgen de versnellingen (men spreekt van “dynamische effecten”) teveel invloed en moeten die mee in rekening genomen worden bij de controle. Om te berekenen welke krachten elk gewricht op elk ogenblik moet uitvoeren, zal je modellen moeten hebben van alles wat er in die robot gebeurt.

Bij wandelen is het vaak voldoende om je vooral te concentreren op de onderbenen, en de bovenmassa als een geheel te beschouwen. Bij het uitvoeren van parcours gaat men alle gewrichten mee in rekening moeten brengen, daarom dat men dan ook over whole-body dynamics control spreekt. Net als Nina Derwael bij het uitvoeren van haar gouden turnprestaties controle moet hebben over heel het lichaam, is dat ook zo bij zulke acrobatierobots. Kunnen we dan de bewegingen van Nina opnemen en afspelen op de robot? Jammer genoeg niet, want de robot en Nina hebben een heel andere dynamica: hun ledematen, zwaartecentra etc. verschillen. Nina heeft ook veel meer gewrichten dan de robot, en dus andere mogelijkheden om krachten uit te oefenen. De ondergrond speelt ook een rol: als die niet identiek hetzelfde is, dan gaan er andere reactiekrachten uitgeoefend worden op de voeten van de robot, wat een invloed zal hebben op de resulterende beweging.

En ook de impact van de verschillende robotonderdelen gaat heel ver, tot in de details, zeker als je technologie duwt naar het uiterste van hun technisch kunnen. In het humanoïde robotica labo in Toulouse bijvoorbeeld, doen ze tijdens de wintervakantie de verwarming uit. Bij de heropstart van de robots na de vakantie blijkt dat de controle de eerste dagen slechter is. Dit komt vermoedelijk doordat de gewrichten kouder zijn, waardoor in de overbrengingen de smeringen en dempingen dus iets anders zijn, en die invloed zit niet in de modellen vervat. De krachten nodig voor de controle zijn dus anders dan de wat de computer berekent, en de robots vallen om. Ook zal de robot moeten anticiperen wat er in de toekomst gaat gebeuren. Hiervoor kunnen we technieken als “model predictive control” gebruiken. Bij het uitvoeren van bv. een salto, gaan de krachten bij afstoten immers bepalend zijn voor de verdere globale beweging van de robot. Om op een bepaald moment stil te staan, zal de robot vooraf al moeten afremmen, want een massa in beweging, wil nu eenmaal in beweging blijven (ook dat leerde Newton ons). En uiteraard moet alles ogenblikkelijk of in “real-time” berekend worden, want de timing van het uitoefenen en reageren op krachten is allesbepalend.

Kan je een robot leren stappen?

Kan de robot dat dan niet allemaal leren? Dat is in principe mogelijk. Ook een kind leert stappen. Anderzijds kunnen dieren als paarden en olifanten al heel snel na de geboorte stappen. De reden is dat het lichaam door miljoenen jaren van evolutie geëvolueerd en geoptimaliseerd is voor die taak. Er is een reden waarom jaguars zo’n dunne poten hebben en de meeste spieren in de romp zitten: het kost veel energie om heel snel de benen heen en weer te zwaaien. Dunne, lichte benen kunnen veel makkelijker versnellen en zijn dus veel dynamischer. Ook hebben we reflexen: niet alle signalen gaan naar de hersenen, maar sommige bewegingen worden via het ruggenmerg aangestuurd. Die principes noemen we in de robotica embodied intelligence, door slim ontwerp van de robot kunnen we ervoor zorgen dat de natuurlijke bewegingen van de robot al zo dicht mogelijk zitten bij de gewenste bewegingen. De Universiteit van Delft was bijvoorbeeld heel bekend voor de ontwikkeling van passieve stappers, een stappende robot zonder enige sensor, controle of motor.  Het probleem met zuiver artificiële intelligentie methodes, is dat de humanoïde robot zo complex is dat het moeilijk wordt om de robot zelf alles te laten leren. Het Japanse bordspel Go heeft 361 kruispunten waar geen, een wit of een zwart steentje kan staan. Dat spel heeft heel duidelijke regels en geen last van moeilijke fysieke wetten, wat men dus eenvoudig kan inbrengen in een digitale omgeving. En dan nog had het AI-programma AlphaGo 4.9 miljoen matchen nodig om klaar te zijn om op wereldniveau te spelen. De complexiteit van de humanoid Atlas van Boston Dynamics is nog veel groter, met zijn 28 motoren die in veel meer dan drie posities kunnen staan, en die bovendien onderhevig is aan alle fysieke wetten (tot impact van warmte op de overbrengingen toe).

Bovendien kan zomaar exploratief leren zowel voor de robot als voor de omgeving gevaarlijk zijn. Je wil niet na elke iteratie de robot gaan herstellen, laat staan 4,9 miljoen keer de robot uitproberen om uiteindelijk te kunnen lopen. Maar kan je dan niet in een simulatie leren? Dat klopt, maar dan moet de simulatie ook heel goed de werkelijkheid benaderen, wat ook weer om die complexen modellen vraagt. Dan kan je net zo goed modelgebaseerde controle uitvoeren. Een groot nadeel van artificiële intelligentie is bovendien dat wat geleerd wordt een “zwarte doos” is. Het AI-systeem heeft het vaak moeilijk  om uit te leggen waarom de robot bepaalde controlebeslissingen neemt. Het betekent ook dat wanneer de robot stuk gaat en beslist wordt om een mechanisch onderdeel te vervangen (bv. om de robot sterker te maken) of wanneer beslist wordt om nieuwe versie van robot uit te brengen, de controle aangepast dient te worden. Dit is eenvoudig in modelgebaseerde controle, waar het slechts een kwestie is van een paar parameters aan te passen, terwijl een AI-systeem opnieuw een leerproces zal moeten doormaken om zich gewoon te maken aan de nieuwe situatie.

De rol van AI in robotica

Wat is dan de rol van AI in de robotica? Zoals Boston Dynamics aangeeft, zijn ze nog zoekende wat de rol van onder andere machine learning is in de controle van hun robots. Elon Musk kondigde in zijn laatste AI day meeting aan dat ze ook een humanoïde robot gaan ontwikkelen. Heel veel van wat ze ontwikkelen als AI, en dan vooral visiesystemen voor hun wagens, denken ze snel over te zetten naar humanoïde robots. Dat is natuurlijk nodig om de robots de broodnodige visie te geven om nergens tegen te lopen, en obstakels te ontwijken. Maar Tesla heeft nog geen robots in fysieke interactie laten treden met hun omgeving, iets waar Boston Dynamics wel al decennia ervaring mee heeft. Dat is denk ik al een grote onderschatting van Musk. Hij zal ongetwijfeld ingenieurs moeten aannemen die dat aspect beheersen, om zijn beoogde ontwikkelingen waar te maken. Modelgebaseerde controle vergt ook modellen, die goed beschreven zijn voor massa, zwaartepunt, traagheid, motoren etc, maar vaak onbetrouwbaar zijn voor bijvoorbeeld wrijving in gewrichten. In VUB-Brubotics ontwikkelen we nieuwe modelgebaseerde algoritmes om bv. drones met elkaar te doen samenwerken, maar dicht bij een muur of boven elkaar vliegen, geeft aerodynamische storingen, die we nog moeilijk in modellen kunnen vatten. Daar kunnen dan zelflerende algoritmes aanvullen en samenwerken met de modelgebaseerde controle. De robots van Boston Dynamics worden nu over een vooraf afgetekend parcours gestuurd of met een vooraf bepaalde sequentie van dansbewegingen. Ook daar denk ik dat AI kan helpen om die ongekende omgeving te gaan exploreren en erin te navigeren. Zo kan de robot ook nieuwe zaken leren van bijvoorbeeld mensen, die hij ervoor niet kon. 

OpenAI, onder andere opgericht door (jawel!) Elon Musk, heeft zijn robotica-team trouwens recent ontbonden na jarenlang onderzoek naar machines die taken leerden uitvoeren zoals het oplossen van een Rubik’s Cube [MOU3] . Volgens hen was de markt nog niet matuur genoeg. Waarop AI-prof Rodney Brooks (MIT en oprichter van oa iRobot) tweette: “Herinner ik me het verkeerd? Was er niet gewoon een kleine hype over hoe OpenAI’s benadering van robotica zo krachtig was??? “de markt is nog niet volwassen genoeg”… misschien is het `probleem’ dat de markt volwassen is en begrijpt wat waardevol is en wat niet.” De wetten van Newton zijn al lang gekend, die hoeven de robots zichzelf niet opnieuw aan te leren. De omgeving is echter complex en dynamisch, en vaak niet in modellen te gieten. Volgens mij is de vraag voor de toekomst dan ook hoe modelgebaseerde controle en AI-technieken kunnen samenwerken, en dat in een robotlichaam dat ook embodied AI bevat.

Bram Vanderborght, Brubotics – Vrije Universiteit Brussel en imec

Bronnen

 [MOU1] https://spectrum.ieee.org/how-boston-dynamics-taught-its-robots-to-dance

 [MOU2] https://www.youtube.com/watch?v=fn3KWM1kuAw&usg=AOvVaw3dlQKg0V89FSpRKNXsAvGA

 [MOU3] https://www.youtube.com/watch?v=jm-ihc7CASY