M13 Observatorie

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

Sidst opdateret 22.9.18.

Mission

Rotér observatorium til præcis position

Se på videoen, hvordan robotten fra en startposition i basen kører til oservatoriet og drejer det ved at skubbe til pinden:

Redskab

Der skal ikke bygges et redskab, men armen skal være i en position lige over baneoverfladen, så armen kan skubbe til pinden på observatoriet.

Der skal monteres to farvesensor foran på robotten som beskrevet i byggevejledningen for basisrobotten, side 69. Farvesensoren på venstre side skal tilsluttes port 1, farvesensoren i højre side til port 4.

Program

Programmet som styrer robotten på videoen, ser sådan her ud:
Programmet består af tre dele og der bruges udelukkende brugerdefinerede blokke:
  • De øverste fire programmeringsblokke får robot til at køre ud til den sorte tværstreg ud fra kanten af banen:
    De to første MoveCm blokke får robotten til at køre ialt 70 cm ligeud. De første 20 cm køres med hastighed 10 og de sidste med hastighed 20. Ved at starte langsomt og så sætte hastigheden op undgås, at robotten slår et lille slag ved start og på den måde sikres, at robotten kører i den retning som den peger i ved start. De to næste blokke får robotten til først at køre til den hvide streg og så til den sorte streg.

  • De næste fire blokke bringer robotten til en position så den peger mod pinden på observatoriet:
    Blokken SpinDegree drejer robotten på stedet 55 grader til venstre, blokken MoveCm bringer robotten 10 cm ligeud fremad mod det sorte T ved rumfærgen. Blokken ToLeftDark bringer robotten ligeud fremad indtil farvesensoren på den venstre side registrerer en lysprocent under 10 som først sker når farvesensoren er over den sorte streg. Den sidste blok, SpinDegree, 95 grader på stedet til højre, så robotten peger mod pinden på observatoriet.

  • Den nederste del er en MoveCm blok som bringer robotten 52 cm fremad, så robotten netop skubber pinden ind i det orange område.
Når robotten nu alligevel befinder sig på denne del af banen, kan en af de øvrige missioner måske løses inden turen går tilbage til basen.

Brugerdefinerede programmeringsblokke: MoveCm, SpinDegree, ToDark, ToBright og ToLeftDark

Hvis ikke de brugerdefinerede programmeringsblokke havde været brugt, ville programmet bestå af 27 programmeringsblokke. Det kan umiddelbart virke uoverskueligt. Ved at bruge brugerdefinerede programmeringsblokke kan nogle af blokkene grupperes til en ny programmeringsblok, der gives et navn som f.eks. ToDark, der fortæller, at blokken får robotten til at køre indtil en lav lysprocent registreres, f.eks. en sort streg. Brugen af de fem blokke betyder, at programmet bliver mere overskueligt, da det nu består af blot 9 blokke. Se eventuelt EV3 Hjælp > Funktioner > Min blokbygger:
En anden fordel ved de brugerdefinerede blokke er, at de fem brugerdefinerede blokke kan bruges andre steder i programmeringen af robotten. Blokkene kan findes i den turkis mappe:

MoveCm og SpinDegree

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

ToLeftDark

Ved dobbeltklik på blokken ToLeftDark åbnes et faneblad, så indholdet af ToLeftDark kan ses:
Det er de tre blokke i ToLeftDark, som får robotten til at køre fra den første sorte streg hen til den anden sorte streg, sådan her:
Den første blok får robotten til at køre lige ud, den næste blok er en vent-blok, som får programmet til at vente på, at farvesensoren på port 1 registrerer en lysprocent som er under den tærskelværdi som er givet som parameter til ToLeftDark, altså her 10 %. Sker det, fortsætter programmet med blokken efter vent-blokken som får robotten til at standse. Se eventuelt EV3 Hjælp > Programmering > Flow-blokke > Vent:

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.

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 4 (øverste sekvens) eller port 1 (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 4 registrerer en lav lysprocent først, vil motor C i samme side som lyssensoren blive stoppet, mens motor B vil blive ved med at køre indtil en lav lysprocent også registreres på port 1. 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 hvide streg og dernæst på den sorte streg: