World Robot Olympiad 2015 - Regular

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

Sidst opdateret 5.8.15.

GetCubeInRed

Når WRO Starter Bot 2015 er kørt hen over de 8 farvede felter, henter robotten kuben i det røde område og kører dernæst med kuben til vægpositionen:

Det er blokken GetCubeInRed, som sørger for, at robotten henter kuben i det røde område. GetCubeInRed ser sådan her ud:
De tre første blokke udfører funktionen: Hent kube i røde område, de fire sidste blokke udfører funktionen: Bring kube til vægposition.

Hent kube i rødt område

Når robotten lige har registreret de 8 farvede felter, er der to ruter at vælge imellem, når robotten skal hente kuben i det røde område. De to mulige ruter er vist øverst i figuren nedenfor med henholdsvis lys grøn og lys lilla. Valget af rute afhænger af værdien af variablen posInRed, se Registrering af placerings- og anbringelsessteder. Lys grøn vælges når posInRed = 2, lys lilla når posInRed = 5:
Nederst i figuren ses de tre blokke som får robotten til at vælge imellem de to ruter hen til kuben i det røde område. Forgrenings-blokken bruges til at foretage valget imellem de blokke, som får robotten til at køre starten på en af de to ruter nemlig:
  • posInRed = 5: MoveCm får robotten til at bakke 4 cm, hvorefter SpinDegree får robotten til at dreje på stedet 90 grader mod højre.
  • posInRed = 2: DriveToBlack bringer robotten til at sandse ved den sorte streg, MoveCm får robotten 9 cm frem inden SpinToLine får robotten til at dreje mod højre indtil den midterste farvesensor er ved kanten af den sorte streg.
Uanset valget, står robotten nu ved den linie den skal følge hen til kuben i rød, enten ved starten af lys lilla pil eller starten af lys grøn pil. Blokken GetCube sørger nu for at robotten følger linien hen til kuben og sænker armen, så kuben fastholdes.

Bring kube til vægposition

Når robotten lige har hentet kuben i det røde område, er der to ruter at vælge imellem, når robotten skal til vægpositionen. På videoen ovenfor kan det ses, at robotten bakker tilbage til vægpositionen. Kørslen tilbage behøver ikke være så nøjagtig som afleveringen, derfor benyttes de sorte streger ikke til navigation. I stedet bruges en simpel rute af ligeud strækninger og drej på stedet. De to mulige ruter er vist øverst i figuren nedenfor med henholdsvis lys grøn og lys lilla. Valget af rute afhænger af værdien af variablen posInRed, se Registrering af placerings- og anbringelsessteder. Lys grøn vælges når posInRed = 2, lys lilla når posInRed = 5:
Nederst i figuren ses de fire blokke, som får robotten til at vælge imellem de to ruter hen til vægpositionen. Den første blok, MoveCm, får robotten til at bakke 30 cm, hvorefter SpinDegree får robotten til at dreje på stedet 90 grader mod venstre, så robotten vender bagenden mod vægpositionen. Forgrenings-blokken bruges til at foretage valget imellem de blokke, som får robotten til at køre til vægpositionen, nemlig:
  • posInRed = 5: MoveCm får robotten til at bakke 70 cm.
  • posInRed = 2: MoveCm får robotten til at bakke 100 cm.
Bemærk, at robotten bliver ved med at køre efter den er stødt ind i væggen. Det er for at robotten kan rette op, så den ender med at stå vinkelret på væggen og er klar til at køre vinkelret ud fra væggen igen. Grunden til at robotten bliver ved med at køre er, at strækningen som er angivet i MoveCm er en 4-5 cm for lang i forhold til væggens position.