Infinithon 2016: Het bouwen van een robot

Opgegroeid met Robocop of Judge Dredd? Dan wil je vast een eigen robot bouwen. Wij waagden een poging!

Zoals de meeste Infinithonprojecten dit jaar zijn wij aan de slag gegaan met hardware. Met het idee om een robotbutler te maken begonnen wij aan onze brainstormsessies. Wat moet hij kunnen? Hoe noemen we het project? Welke onderdelen hebben we nodig?

Al snel heette het project 'iButler', de robotbutler die 'alles tot 4,5kg' door kantoor moet kunnen verplaatsen, van pakketjes van de postbode tot aan blikjes uit de koekast.

Infi's Iron Man

Er zijn allerlei mooie robotplatformen te koop hiervoor, maar we zijn voor een ‘Iron Man-5 Indoor Tracked Chassis’ gegaan. Deze wordt aangestuurd door een Raspberry, uitgerust met een Motor HAT om de DC-motoren aan te sturen, en een simpele USB-webcam om beelden te verwerken tijdens het rijden.

Voor het navigeren door kantoor, wilden wij het in eerste instantie simpel houden: we markeren een vaste rijbaan met (felgroene) tape en vervolgens maken we daar verschillende aftakkingen aan. Deze zijn gemarkeerd met een eigen kleur waardoor het mogelijk wordt een route van A naar B te bepalen.

Taakverdeling

Het project werd opgedeeld in vier taken:

  • Het robotplatform assembleren (Wolf)
  • De python code voor de I2C gestuurde motor HAT, porten naar C# (Jorik)
  • De code schrijven om de beelden om te zetten naar beweging instructies (Michael)
  • De API/web interface schrijven voor externe monitoring/ besturing (Dylan)
De robot assembleren ging vrij vlotjes, hij bleek ook van relatief goede kwaliteit, behalve dat er twee (vrij cruciale) onderdelen van plastic waren in plaats van metaal zoals de rest.

Hierna was ik aardig ver met beeldherkenning. Eerst wilde ik een bestaande library (AForge.NET) gebruiken, maar deze voldeed niet aan mijn verwachtingen. Later bleek de beste methode om de kleuren als HUSL (Human-Friendly HSL) te behandelen. Hierdoor konden wij de afstand tussen kleur berkenen en te kijken of het de kleur was die we zochten, en dat in alle lichtomstandigheden.
 

Testen, testen, testen...

Jorik was ondertussen al druk bezig met testen. De C#-versie van de I2C-library was klaar en hij kon op basis van de informatie die uit de beeldverwerking kwam het robotplatform aansturen. De rupsbanden maakten een geluid als een opstijgend vliegtuig en we konden beginnen.

Het samenvoegen van de code was een goed idee want de eerste test was gelijk succesvol. De robot reed over de lijn alsof het met een DARPA-vergelijkbaar budget gemaakt was en we vierden het succes met een pilsje. Of twee. Drie.... vier. 

Hierna verbonden we robot aan de webinterface van Dylan zodat we live mee konden kijken met de robot. Gelukkig konden we ook de boel stopzetten zodra er iets toch niet liep zoals verwacht.

Een echte butler

Meekijken werkte goed en we konden veilig testen. Wolf en Susanne hadden het idee om een blikjesdispenser te bouwen. Zo gezegd, zo gedaan, en binnen no-time was er een geïmproviseerde dispenser. Door onder deze dispenser door te rijden werd er een blikje gelost in de bak van de robot. 

Na wat uurtjes finetunen en lachen zijn we met een grappige robot geëindigd. Niet zo geavanceerd als we hoopten maar redelijk functioneel en leerzaam!

Zelf ook wel eens een robot gebouwd? Laat het ons weten inde reacties hieronder of natuurlijk op Facebook of Twitter!

--

[Michael is ontwikkelaar bij Infi]

Wil je iets waarmaken met Infi?

Wil jij een eigen webapplicatie of mobiele app waarmee jij het bij anderen maakt?

Waargemaakt door de nerds van Infi.
Nerds met liefde voor softwareontwikkeling en die kunnen communiceren. En heel belangrijk: wat we doen, doen we met veel lol!

Wij willen het fixen. Laat jij van je horen?

Voor wie heb je een vraag?