Mijn eerste Multiplo-experimenten

Mijn eerste multiplo-robot: Makaron

Tegen het einde van de kerstvakantie is mijn Multiplo-pakket aangekomen, dus ondertussen heb ik er een beetje mee kunnen experimenteren. Wil je meer weten over Mulitplo, lees dan even multiplo: een arduinorobotbouwpakket op kickstarter, mijn vorige post hierover.

De kit werd ineens geleverd in een goed gevulde gereedschapskist. De kern is natuurlijk het robotbrein. Duinobot is op arduino gebaseerd, maar dan speciaal gepimpt als robotbrein  (met een aan/uit-knop en een run-knop) en aangepast om makkelijk alle robotonderdelen aan te sluiten. En zo zitten er al enkele bij: 2 batterypacks om de 2 hoofdmotoren aan te sturen. Er zijn ook aparte aansluitingen voor infrarood (afstandsbediening), sensoren, sonar en de servo-motoren. Daarnaast kan je natuurlijk de standaard arduino-shields gebruiken, dus ga ik binnenkort eens proberen om de besturing via Wifi te doen.

Daarnaast bevat de kit vooral een hoop onderdelen om robotjes te bouwen: een hele hoop plaatjes met gaatjes, boutjes en moertjes, plastic rivetten, assen, rondellen, 4 wielen en het gereedschap om alles vast te zetten. En een afstandsbediening natuurlijk.

De eerste experimenten:

Zaterdagavond ben ik dan maar in die doos gedoken en de eerste vier online tutorials gevolgd. Die eerste drie gingen goed: eerst uitleg over het bouwsysteem zelf (hoe bevestig je de plaatjes aan elkaar, maar ook meer uitleg over hoe je zelf onderdelen kan maken), nummer twee over het aansluiten van het robotbrein en het gebruiken van de programmeeromgeving (minibloq) en dan een batterypack aansluiten en motor laten draaien.

Nummer 4 was een ander paar mouwen: Om een robotje in een cirkel/vierkant te laten rijden hebben je natuurlijk een robot nodig. Hoe je die maakt staat niet in de tutorial, maar de bouwplannen vind je ook in het doc center.

Bouwen dan maar

De Three Wheeled Robot Assembly Guide kwam aardig in de buurt van wat ik zocht: een robot die draaide door twee wielen in een verschillende richting te laten draaien, een beetje zoals het isolab-robotje uit de informaticalessen uit het middelbaar. Die assembly guide is een deftige PDF met schema’s en foto’s, redelijk vergelijkbaar met een Lego-handleiding met een lijstje met benodigdheden voor iedere stap. Maar het is wel iets moeilijker dan Lego: je zit met veel complexere onderdelen met veel meer gaatjes, je maakt dus iets gemakkelijker een foutje.

Met voorsprong het moeilijkst om te assembleren waren de wielen: ieder wiel bestaat uit 23 onderdelen, met helemaal in het midden twee boutjes en moertjes om je wielen vast te zetten op een as. Als je die iets te vrolijk losvijst, kan je je hele wiel opnieuw demonteren, want anders krijg je ze er niet terug in. Toen alle wielen die ik nodig had klaar waren, ontdekte ik wat er twee soorten wielen zijn en dat het onderscheidt gemaakt wordt door het eerste onderdeel: de grootte van het gat in dat plaatje bepaalt of je het wil kan aandrijven of dat het meerolt. In alle eerlijkheid: in het bouwplan heb ik dat verschil niet gezien. Maar ik kon die twee wielen dus terug uit elkaar halen en opnieuw beginnen.

Ik heb het bouwplan slechts gevolgd tot stap 71. Zo had ik wat ik nodig had: 2 wielen met aandrijving, 1 draaiend wiel zonder aandrijving op een chassis met de duinobot, het robotbrein. Als je doorwerkt tot stap 120 heb je ook nog sonar, infrarood en een grijparm aangesloten, maar ik had genoeg aan een rijdend robotje. Het was ondertussen dan ook al een uur of 3…

Terug naar de tutorial

Om het robotje te doen rijden, moet je dat programmeren in Minibloq. Minibloq is eigenlijk een visuele manier om Arduino te programmeren:  Je hebt een startblok en daaronder sleep blokjes met commando’s. Om de robot vooruit te doen rijden heb je twee blokjes nodig: eentje om de ene motor in gang te zetten en eentje om de andere motor in gang te zetten. Als ze allebei even snel in dezelfde richting draaien rijdt het robotje vooruit (of achteruit natuurlijk). Maar daar voeg je best toch een derde blokje met een timer aan toe, anders blijft hij rijden tot de batterijen op zijn. Dat is dan een derde blokje.

Om een bocht te nemen moet je er gewoon voor zorgen dat de wielen niet even snel draaien. In het voorbeeld de ene motor op 25% en de andere 50 %. Als je dat voor enkele seconden doet en dan de waarden omwisselt (de eerste motor op 50% en de tweede op 25%) dan neemt de robot een bocht in de andere richting. Als je dat ook voor enkele seconden doet en dat in een loop zet, krijg je een oneindig slalommend robotje. Om niemand wakker te maken heb ik dat toch maar beneden getest met de deur dicht.

Dat zag er ongeveer zo uit in Minibloq:

Hoe laat je een multiplo-robot slalommen

En zo toen ik het testte:

Het einde van de tutorial is een opdracht: je hebt nu een robotje dat kan slalommen, pas het programma zo aan dat het in een vierkant rijdt.

Maar ondertussen was het 3:40 en slaapjestijd.

Van slalom naar vierkant

Dat was op zich niet zo moeilijk: proberen timen hoe lang het duurt om een bocht van 90 graden te maken, een stukje rechtdoor en dat loopen. Maar omdat het maken van een bocht van 90 graden me iets moeilijker te timen leek dan draaien om zijn as, heb ik dat dan maar gedaan: als de motoren in een verschillende richting draaien, krijg je dat effect. Na wat prutsen reed de robot in een aanvaardbaar vierkant, kijk maar.

Dat lukte niet altijd even goed, maar toch Close Enough, dus besloot ik om het te beperken tot een vierkant (in plaats van oneindig vierkantjes rijden) en pimpte ik hem alvast met wat getoeter.

Volgende uitdaging: de livingtafel

In een arbitrair vierkant rijden is één ding, rond een object toch al iets moeilijker: als je nergens tegen kan botsen en je wijkt een beetje af, is dat niet zo’n probleem. Je ziet het misschien zelfs niet echt. Maar als je rond een tafel moet, dan moet het wel juist zijn natuurlijk, anders zit je tegen de poten te rammen. Dat leek een kwestie van de timing van de rechte stukken wat aan te passen, maar ik had het mis: er zaten teveel afwijkingen op. En vooral teveel verschillende afwijkingen. Ik heb nog niet precies ontdekt waar het aan ligt: is het de schuld van dat achterste wiel dat wat trager meedraait, zitten de aangedreven wielen niet vast genoeg, is de bouw niet helemaal symmetrisch? Ik ben er nog niet uit. De code die ik gebruikte, vind je trouwens hierzo.

Voorlopig ziet het er zo uit:

Zoals je kan horen krijg ik het daar van. Er zijn betere tests geweest en met een beetje hulp is hij ook al proper rond geraakt, maar daar heb ik geen beelden van (so it didn’t happen).

Makaron

Eens hij rond de livingtafel raakt, zal het toch tijd zijn voor afstandsbediening (en dan de grijparm en de sonar). ‘Hij’ heet trouwens ondertussen Makaron, naar de koekjes die mij voorbij mijn midnight munchies hielpen. Als ik die wifi dan nog aan de praat krijg heb ik al een nieuw projectje in gedachten, maar daar ga ik nog even vaag over blijven.