World Robot Olympiad 2018 - Regular Elementary

Ole Caprani
Institut for Datalogi, Aarhus Universitet,
ocaprani@cs.au.dk

Sidst opdateret 7.9.18.

Robotudfordring trin 1

I udfordringen er et styk frisk frugt:
placeret i positionen mærket 10 på banen:
Den røde frugt skal transporteres til et af de to Supermarkeder (et af de to rektangulære røde områder mærket GROCERY STORE). Robotten skal starte i Start området (det hvide område i nederste højre hjørne med to grønne linier som kant) og robotten skal slutte i Slut området (det røde område i øverste højre hjørne mærket FINISH).

Udfordringen skal klares på under 2 minuter. Pointgivning for de enkelte robotopgaver på banen i udfordringen på trin 1 er:

Der kan altså maksimalt opnås 20 point for udfordringen på trin 1. De detaljerede regler kan ses her.

Mange løsninger

Udfordringen på trin 1 kan løses på utroligt mange måder, se f.eks. her hvor basisrobotten er udbygget med en simpel skubbemekanisme som bruges til at skubbe frugten ind i Supermarkedet:
Ruten robotten kører består blot af to ligeudkørsler og et drej på stedet.

Uanset, hvilken løsning der vælges skal der bygges og programmeres.

I det følgende foreslås et skubbestativ, som også kan bruges, når flere frugter skal indsamles, altså et stativ som er forberedt til udfordringerne på de næste trin. Der gives også forslag til måder at programmere på som er nyttige, når udfordringerne bliver vanskeligere og programmerne derfor bliver større og mere komplicerede.

Bygning og programmering af robot til trin 1 udfordringen

Forslaget til en robot til trin 1 udfordringen ser sådan ud (klik på billedet for at se detaljer):
Basisrobotten er blevet udbygget med et skubbestativ, så robotten kan indfange og skubbe den røde frugt ind i et Supermarked, som det ses på denne video:

Bygning af skubbestativ til basisrobotten

Basisrobotten skal udbygges ved at påmontere et skubbestativ (klik på billedet for at se detaljer):

Skubbestativet kan bygges ved at følge en byggevejledning. Sidst i vejledningen ses en liste over de LEGO elementer stativet er bygget af.

Byggevejledning for skubbestativet er lavet ved hjælp af værktøjet LEGO Digital Designer (LDD). Byggevejledningen findes i filen stativ.lxf. Det kan være en fordel at bruge byggevejledning i filen til at bygge efter, da det giver mulighed for at dreje LEGO modellerne på skærmen under byggeprocessen. Inden filen kan bruges, skal LDD installeres på maskinen. Når en byggevejledning er åbnet i LDD fås de enkelte trin i byggeprocessen ved at klikke på knappen "Building guide mode" øverst til højre.

Inden skubbestativet påmonteres basisrobotten, skal der sættes en stopper under basisrobotten som vist her (klik på billedet for at se detaljer):

Stopperen forhindrer den røde frugt i at glide for langt ind under robotten, når frugten skubbes af robotten.

Når skubberen under robotten er kommet på plads, monteres skubbestativet. Inden monteringer tages de to motorledninger ud fra port B og C. Efter monteringen føres de to ledninger ind imellem de to tværgående teknikbjælker som vist til højre (klik på billedet for at se detaljer):

Programmering af udfordring på trin 1

Start med at planlægge en rute fra Start området ud til positionen for den friske frugt, mærket 10. F.eks. som denne rute markeret med gule pile:
Robotten kan køre langs ruten hvis den bliver programmeret til at køre sådan her:
  • 1. Kør lige ud så langt som den første gule pil angiver.
  • 2. Drej på stedet 90 grader til højre.
  • 3. Kør lige ud så langt som den anden gule pil angiver.
  • 4. Drej på stedet 90 grader til venstre.
  • 5. Kør lige ud så langt som den tredie gule pil angiver.
Når robotten har kørt ruten skulle den friske frugt være indfanget imellem benene af skubbestativet.
Opgave 1: Brug 5 bevægelsesstyring-blokke til at få robotten til at køre langs den gule rute ud til den friske frugt.
Opgave 2: Planlæg nu en lignende rute for robotten fra positionen ved den friske frugt, så robotten ved at køre ruten transporterer den friske frugt til et af de to Supermarkeder. Planlæg dernæst en rute, så robotten kører til Slut området.

Brug af brugerdefinerede blokke: MoveCm og SpinDegree

Når en rute, f.eks. den gule rute ud til den friske frugt, skal programmeres, er det noget besværligt at måle strækninger og drejningsgrader i hjulomgange, som jo bruges i bevægelsesstyring-blokke. I stedet kunne den gule rute programmeres udelukkende ved at bruge de to brugerdefinerede blokke MoveCm og SpinDegree sådan her:
Programmet, kaldet gulRute, kan findes i EV3 projektet Trin1.ev3.

Med blokkene MoveCm og SpinDegree kan strækninger i ruten angives i cm og drej på stedet angives i antal grader robotten skal dreje:

Den første MoveCm blok får robotten til at køre 40 cm ligeud med hastighed 20. Den næste blok, SpinDegree, får robotten til at dreje på stedet til højre 90 grader med hastighed 10. Så kører robotten 14 cm ligeud, drejer til venstre 90 grader (-90 grader betyder til venstre) inden robotten kører 30 cm ligeud hen til frugten.

På videoen ses hvordan robotten kører den gule rute, når robotten følger programmet gulRute:

Se eventuelt EV3 Hjælp > Funktioner > Min blokbygger:
Brugen af de brugerdefinerede programmeringsblokke: MoveCm og SpinDegree gør det altså muligt at bruge cm og drejningsvinkler i grader. En anden fordel ved de brugerdefinerede blokke er, at de to brugerdefinerede blokke kan bruges andre steder i programmeringen af robotten f.eks. når ruten fra Supermarkedet til Slut området skal programmeres. Blokkene kan findes i den turkis mappe i EV3 projektet Trin1.ev3:
Skal den friske frugt f.eks. skubbes ind i det nærmeste Supermarked, kan programmet gulRute udvides, så robotten drejer på stedet over mod Supermarkedet og skubber frugten ind i det røde område som det ses på videoen:
Programmet som styrer robotten på videoen ser sådan her ud:
Opgave 3: Planlæg en rute, så robotten efter at have kørt den friske frugt ind i Supermarkedet kører til Slut området. Programmér ruten ved blot at forlænge programmet ovenfor under brug af blokkene MoveCm og SpinDegree.

MoveCm og SpinDegree er unøjagtige

Når blokkene MoveCm og SpinDegree bruges kan det være, at de ikke er så nøjagtige i deres kørsel, som de kunne være. Robotten drejer ikke helt 90 grader eller kører længere end 40 cm. For at få en så nøjagtig kørsel som mulig skal der ikke benyttes høje hastigheder. F.eks. start med hastighed 20 i MoveCm og hastighed 10 i SpinDegree.

Hvis ikke det hjælper at kører langsomt, skal der rettes i de to konstanter, som indgår i omregningerne i MoveCm og SpinDegree fra cm og grader til hjulomdrejninger. Det sker ved at åbne de to blokke og rette konstanterne:

  • Et dobbeltklik på MoveCm åbner et faneblad, som ser sådan her ud:
    Det er tallet 17,5 som skal rettes:
    • Hvis robotten kører for kort, skal 17,5 rettes til et tal som er mindre end 17,5.
    • Hvis robotten kører for langt, skal 17,5 rettes til et tal som er større end 17,5.

  • Et dobbeltklik på SpinDegree åbner et faneblad, som ser sådan her ud:
    Det er tallet 165 som skal rettes:
    • Hvis robotten drejer for lidt, skal 165 rettes til et tal som er mindre end 165.
    • Hvis robotten drejer for meget, skal 165 rettes til et tal som er større end 165.

I Programmering af kørsel langs en rute beskrives de to blokke i større detalje MoveCm og SpinDegree.