Brug af sorte streger til at navigere

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

Sidst opdateret 17.9.17.

Flere af robotterne på YouTube benytter de sorte/farvede streger på banen til at navigere, enten ved at køre hen til en streg og stoppe op eller ved at køre langs kanten af en streg.

På dette klip fra FLL Nature's Fury - Lego Vinir (Step 2 explained) ses hvordan farvesensoren benyttes til at registrere den sorte streg, mens robotten kører, så robotten kan standses ved kanten og dernæst kan farvesensoren benyttes til af få robotten til at køre langs den sorte streg for at få et mere præcist træf på modellen af bygningen:

Køre hen til en streg

På dette klip fra FLL 2013 452 points Technomancers ses hvordan farvesensoren benyttes til at registrere den sorte streg under bakningen af robotten:
Robotten bakker indtil farvesensoren registrerer den sorte streg, hvorefter robotten stopper og drejer.

Den samme metode er benyttet i løsning af FLL2017 missionen Fjernelse af rør. Den brugerdefinerede blok ToBlack benytter en bevægelsesstyring-blok efterfulgt af en vent-blok til at opnå den ønskede opførsel af robotten, To Black.

DriveToColor

En lidt mere generelt anvendelig brugerdefineret blok end ToBlack til at få robotten til at stoppe ved en farve er DriveToColor som bruges f.eks. sådan her for at få robotten til at køre med Power = 20 indtil farvesensoren på port 4 er over en farve med koden 1, altså over sort:
Åbnes blokken DriveToColor ser den sådan her ud:
Den første blok, en bevægelsesstyring-blok, benytter tilstanden Til, så robotten sættes til at køre lige ud. I den næste blok, vent-blokken, benyttes værdien af den anden input parametren ColorId, som kode for en farve, der sammenlignes med den aktuelle, registrerede farve fra farvesensoren på den port som er angivet som første input parameter Port. Farvekoderne kan ses under EV3 hjælp > Generelt > Brug af sensorer > Farve:
Vent-blokken får altså programmet til at vente indtil den registrerede farve er lig farvekoden i parametren ColorId. Først i den situation vil programmet fortsætte med næste blok, som får robotten til at standse.

For at kunne bruge DriveToColor skal DriveToColor.ev3s hentes og importeres i et EV3 projekt. Se eventuelt EV3 hjælp > Funktioner > Min blokbygger:

Køre langs kanten af en streg

På dette klip fra FLL 2013 452 points Technomancers:
Robotten kører indtil farvesensoren registrerer den sorte streg. Herefter følger robotten kanten af stregen hen til LEGO manden, som dernæst fastholdes af en grab inden robotten bakker. I løsning af FLL2017 missionen Fjernelse af rør benyttes også, at robotten følger kanten af en sort streg hen til det ødelagte rør. Den brugerdefinerede blok OnEdge benytter en forgrening-blok til få robotten til at foretage en zig-zag kørsel henad kanten af en sort streg On Edge.

I FLL2016 missionen automatisk malkning skal robotten skubbe til en pind på en malkemaskine for at få mælk ud af maskinen. På videoen ses hvordan en robot skubber pinden rundt i en cirkulær bevægelse ved at følge kanten af en sort streg rundt i en cirkel.

Læg mærke til, at robotten præcist kører med farvesensoren lige midt over kanten af stregen. I følg kanten af en sort streg findes en række brugerdefinerede blokke, som kan bruges til at få en robot til på denne måde præcist at følge kanten af en sort streg.