Een pizza delivery robot op school


Hoe kunnen we programmeren van robots op school echt cool maken.

De uitdaging

pizza_robot_400

Pizza delivery robot

  1. De klant bestelt een pizza en drinken
  2. Pizza bakkerij bakt de pizza
  3. Robot haalt pizza en drinken op bij de bakkerij
  4. Robot rijd over de straat
  5. Robot brengt de pizza naar de klant (pizza warm en de drankjes koud)

Een praktijkvoorbeeld van Domino’s pizza

Bron: https://www.dominos.nl/over-dominos/dru

Het plan

simple-circuit-1

De stadsplattegrond

We maken eerst een plattegrond van de stad. De straten zijn kaarsrechte zwarte lijnen, de percelen met de gebouwen zijn allemaal precies even lang zodat de robot makkelijk kan rondrijden. We plaatsen de robot in het midden precies op de pizzawinkel en hij kijkt naar boven (het noorden). Vanuit daar kan hij nu zijn routes gaan rijden. Ik wilde de robot laten vertekken vanaf de pizza winkel. De robot start midden op de pizza winkel, rijd naar de straat en gaat vervolgens via de straten naar een huis toe. Aangekomen bij de straat van het huis verlaat de robot de weg, rijd naar het huis toe en eindigt midden op het huis. We hebben nu twee uitdagingen hoe vertellen we de robot wat hij moet gaan doen en hoe bepalen we de route.

De implementatie

Dit scenario lijkt niet ingewikkeld maar is het wel, zeker voor een robot. De robot waarover ik beschik is de Ozobot EVO. Deze kan op twee manieren geprogrammeerd worden: met kleurcodes en met programma code. De kleur codes worden op de ondergrond aangebracht en sturen de robot een bepaalde richting op. Het programmeren is dus het tekenen van kleurcodes, niet al te moeilijk. Dat heeft wel een aantal nadelen. De kleurcodes moeten goed worden geplaatst anders ziet de robot ze niet. De plattegrond vol komt te staan met kleurcodes. Ook is de route die de robot volgt nogal statisch, als je hem ergens anders naar wil sturen moet je een hele nieuwe plattegrond maken.

Een andere oplossing is een programma ontwikkelen. De robot moet dan zelfstandig kunnen navigeren. De posities van de huizen kunnen worden aangegeven in een grid met x,y coordinaten. Pizzawinkel=(0,0) Huis1=(-1,0), Huis3=(1,1). De robot heeft een locatie en orientatie (kijkt Noord, West, Zuid, Oost)

Na veel gepuzzel blijkt dat dit gewoon veel te moeilijk is. Het oorspronkelijke plan is om de robot te laten rijden zoals een echte pizza courier. Een eerste uitdaging was het verlaten van de pizzawinkel. Je moet vanuit de winkel de straat bereiken en dan links of recht gaan. De robot heeft instucties om vrij rond te rijden en instructies voor het volgen van lijnen. Voor het volgen van lijnen zit er een sensor onder de robot, hiermee kan je lijnen volgen en kruisingen herkennen. Maar deze sensor kan in de war raken als de robot op een afbeelding staat.

leave_shopWe moeten dus eerst een stukje naar voren rijden om de pizzawinkel te verlaten. Daarna komen we op het witte deel en vandaar kan de robot gaan zoeken naar de zwarte lijn. Zodra deze is gevonden kies je een richting.
leave_code

 

 

 

 

Dit soort technische uitdagingen zijn moeilijk aan kinderen uit te leggen.

Nu staat de robot op het grid, moet exact weten waar hij is, in welke richting hij kijkt en vervolgens navigeren over de kaart. Dat vraagt om geavanceerde algorithmes. Ik heb geprobeerd om die te maken maar loop tegen een aantal beperkingen van de robot aan.

  1. Maximaal 500 instructies
  2. Grote programma’s worden onverzichtelijk
  3. Code kan niet worden voorzien van commentaar
  4. De structuur en layout van de code is niet optimaal
  5. Beperkingen met variabelen (alleen nummer van -127 tot 128, geen strings, geen constanten)
  6. Scope van variabelen is globaal
  7. Inladen van een programma duurt erg lang
  8. Fouten in programma’s zijn moeilijk te debuggen

Om het werkend te krijgen moet het oorspronkelijke plan sterk worden vereenvoudigd. De robot rijd alleen op de straten en komt niet naar de huizen toe. Navigatie met een algorithme is alleen mogelijk als we bijvoorbeeld rechtsonder de pizzawinkel starten en dan weer rechtsonder bij het huis adres eindigen.

In een volgend experiment ga ik kijken of dit plan betere te realiseren is met de Makebloc mBot robot.

Wat hebben we geleerd

Programmeren is goed te leren en het kan best leuk zijn om een robot te programmeren. Wees je bewust van de beperkingen van zowel de programmeer mogelijkheden als de physiek van de robot. Anders begin je aan een project maar loop je vast en raak je gefustreerd. Als je echte robots te moeiljk vind zijn er ook alternatieven. Robots programmeren kan je ook leren in een virtuele omgeving zoals Robomind academy, Code studio en de Minecraft Edu versie.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s