Cookies op Tweakers

Tweakers is onderdeel van DPG Media en maakt gebruik van cookies, JavaScript en vergelijkbare technologie om je onder andere een optimale gebruikerservaring te bieden. Ook kan Tweakers hierdoor het gedrag van bezoekers vastleggen en analyseren. Door gebruik te maken van deze website, of door op 'Cookies accepteren' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt? Bekijk dan ons cookiebeleid.

Meer informatie

Robotkarretjes leren samen efficiënt voortbewegen met paar regels computercode

Spectaculair ziet de stoet aan elkaar gekoppelde robotkarretjes van Amolfs Soft Robotic Matter-groep er niet uit, maar bijzonder is wel dat ze zichzelf als treintje een bepaalde kant op leren te bewegen, met slechts enkele regels code.

Afzonderlijk kunnen de robotjes van de onderzoeksgroep zich niet voortbewegen. Ze bestaan uit een microcontroller, een bewegingssensor, een blaasbalgje met een luchtpompje en een naald voor de uitstoot van de lucht.

Een simpel algoritme bepaalt dat het karretje om de paar seconden de pomp aan en uit zet, waarbij kleine aanpassingen verricht worden op basis van de gemeten snelheid. "Laat je op deze manier twee of meer robotjes aan elkaar duwen en trekken dan gaat het treintje vroeg of laat één kant op bewegen. Daardoor 'leren' de robotjes dat dat de betere instelling voor de pomp is, zonder dat ze met elkaar communiceren en zonder dat precies geprogrammeerd is hoe ze kunnen voortbewegen" beschrijft Bas Overvelde, groepsleider Amolfs Soft Robotic Matter. Amolf is een in Amsterdam gevestigd instituut voor natuurkundig onderzoek, onderdeel van de Nederlandse Organisatie voor Wetenschappelijk Onderzoek.

Volgens hem kan het onderzoek van belang zijn voor de ontwikkeling van soft robotics, een onderzoeksgebied rond zachte robots die zich ook vaak voortbewegen met lucht. Overvelde beschrijft mogelijke toepassing voor robothanden die leren hoe ze verschillende objecten kunnen oppakken, of robots die hun gedrag automatisch aanpassen na schade. Het systeem is volgens de onderzoeker makkelijk op te schalen en de volgende stap is mogelijk het werken met bouwstenen die zich gedragen als de armen van een octopus. Overvelde: "Die beschikken ook over een decentraal zenuwstelsel, een soort onafhankelijk brein, net als onze robotjes." De onderzoekers beschrijven hun werk in het wetenschappelijke tijdschrift PNAS onder de titel Continous learning of emergent behavior in robotic matter.

AMOLF Soft Robotic Matter Bas Overvelde from AMOLF on Vimeo.

Wat vind je van dit artikel?

Geef je mening in het Geachte Redactie-forum.

Door Olaf van Miltenburg

Nieuwscoördinator

11-05-2021 • 12:25

23 Linkedin

Reacties (23)

Wijzig sortering
"Paar regels code"
https://www.pnas.org/cont.../pnas.2017015118.sapp.pdf

Pagina 6 zijn de gebruikte algoritmes ~ 18 regels psuedo code ~ in 150 regels Scratch kun je dit wel implementeren schat ik ~ ongeveer 400 regels Python (max) ;)

[Reactie gewijzigd door djwice op 11 mei 2021 18:29]

ik vind de opmerking in de video dat ze niet in het verleden blijven hangen interessanter. Er is dus geen groot leerproces en grote database die allerlei situaties meeneemt in berekeningen die alleen maar uitdijen. Het corrigeert zichzelf ten opzichte van wat er in het nabije verleden gebeurde. Benieuwd hoever dat teruggaat, misschien minder dan seconden voor zo'n simpele taak.
Benieuwd hoever dat teruggaat, misschien minder dan seconden voor zo'n simpele taak.
Ik heb nog geen tijd gehad om het artikel te lezen, maar ik vermoed dat "hoever dat teruggaat" de verkeerde manier is om ernaar te kijken. Dat suggereert dat er (bijvoorbeeld) een minuut aan data nog beschikbaar is en alles dat ouder is verwijderd wordt. Een veel betere manier om te leren is echter om niet elke losse poging vast te leggen, maar alleen de resultaten te onthouden.

Zeer sterk versimpeld voorbeeld. Laten we zeggen dat een robot drie verschillende strategieën kan gebruiken: X, Y en Z. Voor allemaal houdt je een score bij: aantal successen en aantal pogingen. Let op, dat zijn geen integers maar floats; waarom dat zo is zie je verderop. Als de robot net geboot is heeft ie nog niets geprobeerd, dus zowel X, Y als Z staan op { 0,5 ; 1 } (het lijkt logischer om te beginnen met { 0 ; 0 }, maar dat veroorzaakt randgevallen die je speciaal moet behandelen). Dan begint ie met een super simpel loopje: kies een strategie, voer die uit en verwerk de resultaten.
  • Kies een strategie om te proberen. Je wilt dit willekeurig bepalen, maar wel rekening houden met de opgebouwde kennis. Aanvankelijk hebben alle drie de strategieën een "betrouwbaarheid" van 0,5 / 1,0 = 0,5 en 0,5 + 0,5 + 0,5 = 1,5 dus kies een willekeurig getal tussen 0,0 en 1,5. Als dat getal tussen 0 en 0,5 ligt kies je strategie X, voor [ 0,5 ; 1,0 ) kies je Y en bij [ 1,0 ; 1,5 ) probeer je Z.
  • Gebruik de gekozen strategie om de volgende beweging uit te voeren.
  • Stel vast hoe succesvol deze poging was. De mate van succes is een getal tussen 0 en 1. Een 0 betekent volkomen hopeloos, een 1 staat voor perfectie.
  • Nu pas je de resultaten aan: voor de gekozen strategie tel je het succes (het getal uit de vorige stap) op bij het aantal successen en het aantal pogingen verhoog je met 1.
Bovenstaande aanpak geeft, met een geheugen van slechts zes getallen, een erg goede indicatie van hoe goed de verschillende strategieën presteren. In een volkomen statische omgeving zou dit een goede oplossing zijn. Als de omgeving echter verandert (bijvoorbeeld omdat het gedrag van de andere robots verandert!), dan moet je zorgen dat oude "herinneringen" in de loop der tijd vervagen. Dit is verbazingwekkend eenvoudig: na een aantal iteraties van het stappenplan hierboven deel je alle getallen door 2. Het mooie is dat de score van elke strategie hetzelfde blijft (om maar iets te noemen: { 10 ; 40 } heeft een score van 0,25 maar na het "vervagen van de herinnering" krijg je { 5 ; 20 } en dat is nog steeds 0,25). De impact van een nieuwe poging wordt echter dubbel zo groot. Een nieuwe, erg succesvolle poging van bijvoorbeeld 0,75 geeft in het eerste geval { 10,75 ; 41 } (dat is ongeveer 0,2622) terwijl de tweede situatie uitkomt op { 5,75 ; 21 } oftewel 0,2738.
Het mooie is dat deze aanpak nooit "vastroest" in wat ie eenmaal geleerd heeft. Omdat de betrouwbaarheid tussen 0 en 1 begint en elke nieuwe meting ook tussen 0 en 1 ligt, zal geen enkele strategie ooit op 0,00 betrouwbaarheid uitkomen (en ook niet op 1,00 trouwens). Dat betekent dat elke strategie, heel af en toe, toch nog een keertje geprobeerd wordt. Als de situatie veranderd is en die strategie opeens wél erg goed werkt, dan neemt de score relatief snel toe, wordt die strategie vaker geprobeerd en (als het inderdaad goed werkt) neemt de score snel toe tot de betrouwbaarheid in de nieuwe situatie.

Nogmaals, dit is niet precies hoe het genoemde onderzoek werkt, al was het maar omdat in dat geval geen vast lijstje van mogelijke strategieën bestaat. Maar ik vermoed dat ze wel iets gedaan hebben wat in grote lijnen op bovenstaande omschrijving lijkt:
  • Niet proberen elk probeersel te loggen, maar alleen een geaggregeerde score bij te houden.
  • Zorgen dat de "herinnering" wat het beste werkt in de loop der tijd vervaagd, zodat recente pogingen een grotere invloed hebben dan wat lang geleden geprobeerd is.
Dus om antwoord te geven op je vraag: bij het langzaam laten vervagen van oude kennis is er geen moment waarop die oude kennis daadwerkelijk "afgekapt" wordt. Zelfs het resultaat van de allereerste poging blijft invloed houden *). Die invloed wordt steeds kleiner en kleiner, maar in theorie nooit echt nul. In de praktijk kun je wel zeggen dat hele oude tests nauwelijks meer van invloed zijn, maar er is geen manier om aan te geven op welk punt de invloed verwaarloosbaar wordt, omdat de invloed langzaam en geleidelijk afneemt.
*) Wiskundig gezien. In computers hebben variabelen natuurlijk een eindige precisie; zodra het effect kleiner is dan de ulp (unit in last place), dan is het effect nul

[Reactie gewijzigd door robvanwijk op 11 mei 2021 14:04]

Als ik het goed begrijp combineren ze Thermal & Flaky en als ik de video bekijk alleen vooruit en achteruit. Ze beginnen op een random getal, dus niet op 0 or 0,5 . ik vermoed om zo te voorkomen dat ze dezelfde setting hebben aan het begin en dus als ze tegelijk stroom krijgen het process al beinvloed is door de parameter keuze :)

https://www.pnas.org/cont.../pnas.2017015118.sapp.pdf pagina 6 - de descrete versie van de eerste en tweede orde afgeleide.

Dus eigenlijk gewoon natuurkunde van de middelbare school a(t) en v(t) enzo :)

Wellicht lijkt het zelfs op het model voor een zelf ballencerende robot:
https://rebrickable.com/m...ya/gyro-inventor/#details

[Reactie gewijzigd door djwice op 11 mei 2021 18:46]

Dank voor deze heldere uitgebreide uitleg
Waarom staat er geen "Plus" logo bij je reactie?
Wat een pareltje! _/-\o_
Wow, bedankt voor de uitleg.
Klinkt als een simpele PID-regel lus :P
Ja:
Een simpel algoritme bepaalt dat het karretje om de paar seconden de pomp aan en uit zet, waarbij kleine aanpassingen verricht worden op basis van de gemeten snelheid. "Laat je op deze manier twee of meer robotjes aan elkaar duwen en trekken dan gaat het treintje vroeg of laat één kant op bewegen.
pomp aan uit.
doel snelheid bereiken.
uiteinde meet de eerst iets geen invloed op snelheid, tot snelheid hoger wordt, dan 2de tot geheel synchroon loopt en zie daar vloeiende beweging.
Dat kan in meer paar regels code.
Als je alle libraries voor je neurale netwerk niet meetelt wel inderdaad.
Welk neuraal netwerk?
import robot
from random import randint
from time import sleep

robot.push()
sleep(randint(10,100))
robot.pull()

We gaan het niet hebben over de code in de modules ;)
om maar niet te spreken over de code in de interpreter die die modules moet inladen alvorens er uberhaupt iets kan gebeuren. En dan laten we voor het gemak ook maar het OS buiten beschouwing.

Ik denk dat je vandaag de dag met minder dan een halve gigabyte aan code niet meer wegkomt.
Eensch - hangt wel van de definitie van "Veel regels code" af :=)
Beetje flauw. In de pdf staat een link met voorbeelden:
Data Availability. The experimental and numerical data that support the
findings of this study and all computer algorithms necessary to run the
models have been deposited at Figshare (10.6084/m9.figshare.13626110).
Interessant vakgebied, denk dat we in Nederland veel meer onderzoek naar softrobotics zouden moeten doen. Heb al hele nuttige toepassingsvoorbeelden gezien, maar is toch nog een gebied wat in kinderschoenen staat.

[Reactie gewijzigd door jopiek op 11 mei 2021 12:34]

Misschien heb je deze al gezien, dessanielttemin een aanrader voor andere lezers hier (die 'm nog niet kennen). Best leuke en leerzame show, gepresenteerd door niemand minder dan Iron Man. https://www.youtube.com/p...srzz_fsWIpPcf6V7p2RNAneKc
Voor degenen die meer willen zien van soft robots: Veritasium heeft ook enkele video's gemaakt:
Why Robots That Bend Are Better
This Unstoppable Robot Could Save Your Life
Zo is het 'leven' ook gestart. Met een paar codelijntjes DNA.
En van daar via steeds verdere ontwikkeling naar basale hersenen ,en hersenstam, reptielenbrein,etc naar prefrontale cortex.
De spieren/ basale functies eerst onder de knie krijgen, daarna pas centraliseren.
Zelfrijdende wagens van punt a naar punt b.
Een mega moeilijke opdracht ware het niet dat het enkel externe factoren zijn die het complex maken.
Indien die voetganger de baan kruist enkel en alleen waar voorzien en toegelaten dat is dat maar een paar regels code. Nu moet er continue gekeken worden of er zich geen voetganger voor de wagen begeeft.
End dat is nog maar 1 van de vele situaties die geprogrammeerd moeten worden.

Indien er 1 politicus zou kunnen zeggen: dat is DE regel en wie er zich niet aan houd is DE pineut en heeft geen rechten meer tot klagen dan reden we al langer met zelfrijdende voertuigen en waren de files veel korter (we bleven zelfs rijden)

Op dit item kan niet meer gereageerd worden.


Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Microsoft Xbox Series X LG CX Google Pixel 5a 5G Sony XH90 / XH92 Samsung Galaxy S21 5G Sony PlayStation 5 Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True