Het overeind houden van een omgekeerde slinger is een populaire uitdaging in de besturingstheorie − die zich bezighoudt met het gedrag van dynamische systemen − en vereist nauwkeurige bewegingsbesturing om omvallen te voorkomen. Het is iets wat maker en YouTuber Juha, van het Brick Experiment Channel, leerde in cursussen die hij 20 jaar geleden volgde, en wat hem inspireerde om het te proberen met LEGO en een Raspberry Pi.

Gemaakt van LEGO-stenen, vereist zijn omgekeerde slinger actieve besturing om overeind te blijven. Een 'reactiewiel', ook gemaakt van LEGO, is op de slinger gemonteerd en bevestigd aan een motor die wordt bestuurd door een Raspberry Pi Zero 2 W. "Door het wiel te draaien wordt er een koppel op de slinger uitgeoefend, waardoor de slingerhoek verandert," legt hij uit. "De rest is gewoon meten en berekenen."

Nou, dat is de theorie, maar in de praktijk is het niet zo eenvoudig en, zoals te zien is in zijn YouTube-video, moest Juha zijn Python-code herhaaldelijk wijzigen en hardwareaanpassingen maken om het systeem naar tevredenheid te laten werken.

LEGO-Pendulum-01.jpg
Een IMU-board aan de basis van de slinger meet voortdurend de hoek


Nauwkeurige besturing

Een gyroscoop en versnellingsmeter op een mini IMU (inertia measurement unit)-board worden gebruikt om de slingerhoek te meten, terwijl de Raspberry Pi een controllus uitvoert om gegevens te filteren en PID (proportional-integral-derivative) controller-outputs te berekenen om de snelheid en richting van de motor aan te passen. PID berekent automatisch correcties op basis van feedback en is een van de meest gebruikte regelmethoden in industriële en mechanische toepassingen, zoals in de cruisecontrol van een auto. Het is ook vrij eenvoudig toe te passen.

"Anderen hebben LQR [linear–quadratic regulator] gebruikt voor omgekeerde slingers," merkt Juha op, "maar dat lijkt me te wiskundig en moeilijk. Wat betreft het afstemmen van de PID-parameters had ik geen andere aanpak dan 'gewoon uitproberen'. In de commentaarsectie op YouTube werd er flink om gelachen, omdat het er zo onprofessioneel uitziet."

Hoewel Juha ervoor koos om een Raspberry Pi Zero 2 W te gebruiken vanwege zijn snelle opstarttijd, "was de cpu-belasting slechts 5% bij het uitvoeren van de controllus met een interval van 1 ms, dus het zou werken met een veel minder krachtig board." Hij probeerde zelfs een Pico te gebruiken, die "qua processorkracht prima werkte, maar toen realiseerde ik me dat ik tientallen megabytes aan loggegevens moest opslaan om mooie grafieken voor de video te maken."

Verbazingwekkend genoeg had Juha vóór dit project nog nooit een Raspberry Pi gebruikt en had hij minimale ervaring met elektronica. "Ik moest uitzoeken hoe GPIO werkt, wat pull-down en pull-up weerstanden zijn, hoe I2C werkt, enz."

Een Raspberry Pi Zero 2 W draait de Python-code die de sensormetingen uitleest en op basis daarvan de motor aanstuurt


Hooghouden

De volgende grote uitdaging was om de slinger langer dan twee seconden overeind te houden. "Het probleem was de topsnelheid van het reactiewiel," aldus Juha. "Er is een kort tijdvenster voor versnelling voordat de limiet wordt bereikt, dus je moet vóór dat moment voorbij het bovenste evenwichtspunt zien te komen. Een gewone PID-controller zou alleen de hoekfout minimaliseren en het wiel te snel laten draaien. Ik las veel studies over verschillende omgekeerde slingers, totdat ik een paper vond waarin sprake was van het voortdurend veranderen van de doelhoek voor de PID-controller. Dat was uiteindelijk de oplossing."

Is het in het voltooide systeem dan onmogelijk om de slinger uit balans te duwen zodat hij omvalt? "Nee, helemaal niet," antwoordt Juha. "Hij valt gemakkelijk om als je ertegen duwt. De controller zal onmiddellijk proberen de duw te compenseren door het wiel te versnellen, maar hij kan alleen kleine fouten corrigeren. Met een krachtigere motor, een hogere topsnelheid en een hogere rotatietraagheid voor het wiel, zou hij bestand zijn tegen hardere duwtjes."

 

BEC-logo---new.jpgMaker

"Een Finse man van middelbare leeftijd," Juha runt het Brick Experiment Channel op YouTube, gewijd aan het bouwen en experimenteren met LEGO Technic-stenen. Hij werkt al meer dan tien jaar als software-engineer.

 

Vertaling: Jan Mulder