World Robot Olympiad 2018 - Regular Elementary

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

Sidst opdateret 8.9.18.

Robotudfordring trin 3

I udfordringen er to styk grim frugt:
placeret i positionerne mærket 6 og 9 på banen:
Den gule frugt skal transporteres til Marmeladefabrikken (det rektangulære gule område). 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 3 er:

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

Første forsøg med robot til trin 3 udfordringen

Umiddelbart kunnne det være en idé at bruge robotten fra trin 1 (klik på billedet for at se detaljer):
og så lade robotten samle de to gule stykker frugt og aflevere dem i Marmeladefabrikken ved køre langs den orange rute fra trin 2 udfordringen:
Bruges programmet orangeRute fra trin 2 sker dette:
Som det ses går det fint med at samle frugten i position 9, men robotten kører for skævt til at kunne samle frugten i position 6 op.

Trods adskillige forsøg på at sætte robotten præcist i Start området, så den kunne samle begge stykker frugt op, lykkedes det ikke på noget tidspunkt, at få robotten til også at samle frugten op i position 6.

Andet forsøg med robot til trin 3 udfordringen

En måde at få robotten til at køre, så den kan samle de to gule stykker frugt, er at bruge en farvesensor til at få robotten til at følge kanten imellem den sorte streg og det røde Supermarked's område sådan som det ses her:
Videoen er fra WRO 2018 Elementary.

For at robotten skal kunne følge kanten af den sorte streg skal der monteres en farvesensor på robotten. Det kan gøres sådan her (klik på billederne for at se detaljer):

Farvesensoren skal monteres på skubbestativets venstre yderside i robottens kørselsretning, så skubbestativet er ud for frugternes position, når farvesensoren er over den venstre kant af stregen:
Efter monteringen skal farvesensoren tilsluttes port 2.

Med farvesensoren på plads kan robotten nu følge kanten af den sorte streg, så den kan samle begge de gule frugter op sådan her:

Programmet, som styrer robotten på videoen, ser sådan her ud:
Programmet, kaldet langsKant, kan findes i EV3 projektet Trin3.ev3.

Det er den brugerdefinerede programmeringsblok LeftEdgeDrive, som får robotten til at følge den sorte kant. I Følg kanten af en sort streg beskrives, hvordan en farvesensor kan benyttes til at få en robot til at følge kanten af en sort streg ved hjælp af blokken LeftEdgheDrive. LeftEdgeDrive bruger en farvesensor og de fire tal: 2, 40, 20 og 0,1 til at sikre, at robotten kører fremad med farvesensoren over den venstre kant af den sorte streg.

For at få robotten til at følge ventre kant af en sort steg skal LeftEdgeDrive, som vist, have fire tal - også kaldet parametre til LeftEdgeDrive. Parametrene har fået navne som afspejler, hvordan LeftEdgeDrive bruger tallene. Navnene kan ses her:

De fire parameterværdier bliver brugt af langsKant sådan her:
  • Port: angiver den port (1,2,3 eller 4) som farvesensoren er tilsluttet, altså her port 2.

  • offset: den lysprocent, her 40, farvesensoren viser lige over kanten imellem sort og hvid, altså når farvesensoren har denne position:
    Lysprocenten kan ses i portvisning i nederste højre hjørne af skærmen på programmeringsværktøjet:
    Lysprocenten, der skal bruges som offset, kan også findes ved at sætte farvesensoren over sort og rød:
    aflæse de to lysprocenter i portvisning, f.eks. 8 over sort og 72 over rød og så bruge (8+72)/2 = 40.

  • minPower: angiver den fart, her 20, robotten kører lige ud med, når robotten er på kanten af stregen.

  • pFaktor: angiver hvordan robotten skal svinge mod kanten af stregen, når farvesensoren ikke er over kanten. En lille værdi, som her 0.1, får robotten til at svinge blødt, en stor værdi får robotten til at svinge skarpt. Ved rette streger er en lille værdi ok.
I programmet langsKant er det en løkke-blok, som får robotten til at køre langs den venstre kant af stregen. Det sker ved, at blokken LeftEdgeDrive, som er inde i løkken, gentages indtil omdrejningstælleren på motor B er større end 2100. Se eventuelt EV3 Hjælp > Programmering > Flow-blokke > Løkke:
Tallet 2100 er fundet ved at prøve sig frem og aflæse omdrejningstælleren for motor B i portvisning. Blokken efter løkken standser robotten.

Til at få de to opsamlede stykker frugt ud til Marmeladefabrikken, kan den orange rute fra trin 2 udfordringen bruges igen:

Resultatet kan ses på videoen:
Programmet, som styrede robotten på videoen, ser sådan her ud:
Programmet, kaldet orangeRute, kan findes i EV3 projektet Trin3.ev3.

Første del af programmet, Kør til kanten af streg ind i Supermarkedet og den sidste linie med Kør langs orange rute og aflever frugt i Marmeladefabrikken samt Bak fra Marmeladefabrikken til højre kant af banen er genbrug fra programmet orangeRute fra trin 2 udfordringen.

I den midterste del benyttes programmet langsKant, dog skal motor B's omdrejningstæller nulstilles inden løkke-blokken, så de 2100 omdrejninger, som stopper løkken, passer med strækningen langs kanten. Det sker i den gule omdrejningssensor-blok inden løkke-blokken.

Som det ses på videoen, kører robotten desværre ret skævt, når den bakken til den højre kant. Robotten havner i Start området. I andre kørsler havnede den i den hvide mur ind til Slut området. Og så mistes point. Problemet er bl.a. at robotten efter at have kørt langs den venstre kant ender med at pege i forskellige retninger i de forskellige kørsler.

Tredie forsøg med robot til trin 3 udfordringen

For at få robotten til at køre mere nøjagtigt fra enden af Supermarkedet og hen til Marmeladefabrikken, kan de sorte streger på banen bruges, som det ses på videoen:
Endnu en farvesensor er monteret på skubbestativets højre yderside i robottens kørselsretning, som det ses på billed af robotten ved start:
Farvesensoren skal tilsluttes port 4.

Med to farvesensorer kan robotten rette op, når den kører hen mod en sort tværstreg, som det ses i starten af kørslen fra Supermarkedet. Selvom robotten kører skævt ud fra Supermarkedet retter den op ved mødet med den sorte tværstreg:

Det er to brugerdefinerede blokke, ToDark og ToBright, som bruges til at få robotten til at rette op ved mødet med en sort tværstreg. I EV3 projektet Trin3.ev3 findes et program, kaldet tilStreg, som bruges de to blokke til at styre robotten, så den retter op ved mødet med en streg:
Første blok, ToDark, kører fremad og retter op ved et område af overfladen, hvor begge lyssensorer registrerer en lysprocent på under 40, altså mørkt. Den anden blok, ToBright, kører tilsvarende indtil begge lyssensorer registrerer en lysprocent på over 60, altså lyst. Prøv at eksperimentere med programmet under brug af stregerne på banen.

Med de to blokke kan sidste del af kørslen programmeres sådan her:

Hele programmet, kaldet orangeRute2, kan findes i EV3 projektet Trin3.ev3. Og hele kørslen kan ses på videoen:
Ved at bruge stregerne på vej fra Supermarkedet til Marmeladefabrikken, er robotten vinkelret på den venstre kant af banen efter den har afleveret de to stykker frugt. Det betyder, at robotten ikke bakker så skævt som i det tidligere forsøg.
Opgave 1: Lav en rute som bringer robotten resten af vejen ind i Slut området, brug ToDark og ToBright til at rette op ved de sorte streger og føj en programmering af ruten til programmet orangeRute2 ovenfor.
Opgave 2: Overvej at bruge tværstregerne ved kørsel hele vejen fra Marmeladefabrikken til Slut omnrådet.

ToDark, ToBright

Indholdet af blokken ToDark ser sådan her ud:
og blokken ToBright indeholder:
Indholdet i de to blokke er helt ens bortset fra ulighedstegnet i ventblokkene. Se eventuelt EV3 Hjælp > Programmering > Flow-blokke > Vent:

I begge blokke er der to sekvenser af tre blokke som udføres parallelt. Det betyder, at de to motorer C og B startes samtidigt i de to første blokke i de to parallelle sekvenser.

Mens robotten kører vil de to vent-blokke dernæst samtidigt vente på om farvesensoren på port 2 (øverste sekvens) eller port 4 (nederste sekvens) registrerer en lysprocent som er under (for ToDark) eller over (for ToBright) tærskelværdien, der er givet som parameter til blokken. Hvis det er ToDark og farvesensoren på port 2 registrerer en lav lysprocent først, vil motor B i samme side som lyssensoren blive stoppet, mens motor C vil blive ved med at køre indtil en lav lysprocent også registreres på port 4. Det betyder, at ToDark får robotten til at stoppe ved en sort streg med begge lyssensorer på stregen. ToBright gør noget lignende ved en hvid streg.

På videoen ses hvordan robotten først stopper på den sorte streg og dernæst på det hvide område: