Raspberry Pi Pico-W differentiaal robot
Wat heeft een dual-core RPi Pico W-microcontroller (MCU) eigenlijk allemaal te bieden?
Met MicroPython programmeer je er verrassend eenvoudig een differentiële robot, inclusief odometrie. Afhankelijk van de gekozen componenten, kost een simpele set onderdelen z’n 25 euro.
Omdat met de “RPi Pico W“, WiFi heeft, kun je relaxed achter je pc blijven zitten terwijl je de robot opdrachten geeft. Ondertussen rapporteert de microcontroller netjes via een logfunctie wat hij aan het doen is. Wat wil je nog meer?
Odometrie betekent dat je de verandering van de robot-pose (positie + richting) meet. In dit geval worden de omwentelingen van beide wielmotoren continu en razendsnel uitgelezen. Op basis daarvan wordt de huidige positie bepaald. Geef je een nieuwe pose op, dan rijdt de robot daar automatisch naartoe.
De RPi Pico heeft twee onafhankelijke cores, die elk hun eigen taak uitvoeren:
Core 0:
Deze core berekent op basis van de afstand tot het doel de benodigde rijsnelheid. Tijdens het rijden leest hij de wielencoders uit om precies te weten waar de robot zich bevindt en hoeveel er nog afgelegd moet worden. Omdat de motorsnelheden nooit perfect gelijk zijn, stuurt Core 0 de motoren continu bij. Dit gebeurt met een frequentie van 20 Hz.
Core 1:
Deze core verzorgt de WiFi-communicatie. De pc kan commando’s sturen, en de robot stuurt op 4 Hz zijn huidige pose terug. Zo kun je het afgelegde pad realtime volgen. Omdat WiFi-signalen soms vertraging hebben, houdt Core 1 zich exclusief met communicatie bezig.
De twee cores moeten natuurlijk ook met elkaar kunnen praten. Core 0 moet weten waar hij naartoe moet, terwijl Core 1 op gezette tijden de positie doorgeeft. Om dat veilig te laten verlopen, worden speciale registers gebruikt zodat beide cores zonder problemen gegevens kunnen uitwisselen.
Voor de WiFi-communicatie zijn meerdere protocollen mogelijk. Voor deze robot is gekozen voor UPD: een send-and-forget methode. Berichten kunnen soms verloren gaan, maar het is wél de snelste manier om bijvoorbeeld logdata te versturen.
Op de PC draait een GUI, gebasseerd op Python & Tkinter. Zowel PC als robot moeten op hetzelfde LAN netwerk worden aangesloten en dan werkt de rest vanzelf.
Het totale systeem ziet er als volgt uit:

De volledige code is op github te vinden: RPi-Pico-Robot-Platform.
Mocht je het leuk vinden om er meer over te horen, of wil je er graag aan mee werken, kom eens langs op Makey Monday.
