Ole Caprani
Sidst opdateret 28.6.16.
Programmering af kørsel langs kanten af en sort stregPå de fleste robotbaner er der sorte streger, som kan benyttes, når robotten skal navigeres rundt imellem forskellige positioner på banen. Med en farvesensor monteret foran på robotten, som f.eks. vist her:kan en robot f.eks. programmeres til at følge kanten af den sorte streg. Ideen er, at farvesensoren under kørslen registrerer, hvor stregen er i forhold til robotten og på basis af farvesensorens registrering programmeres robottens to motorer til at styre hjulene, så robotten holder sig i nærheden af kanten af stregen under kørslen langs stregen. På videoen kan det ses, hvordan en robot ved hjælp af registreringer fra farvesensoren følger den inderste kant af en sorte streg rundt i en cirkel:
Programmet, testLeftEdgeDrive.ev3p, som styrer robotten på videoen, ser sådan her ud: Den brugerdefinerede programmeringsblok LeftEdgeDrive bruger en farvesensor og de fire tal: 3, 40, 20 og 0,2 til at sikre, at robotten kører fremad med farvesensoren over den venstre kant af den sorte streg. Programmet testLeftEdgeDrive.ev3p findes i EV3 projektet FollowEdge.ev3. 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 bruges tallene. Navnene kan ses her: De fire parameterværdier bliver brugt af langsVkant sådan her:
Opgave 2: Gentag opgave 1 men nu med programmet testRightEdgeDrive.ev3p fra EV3 projektet FollowEdge.ev3. Programmering af kørsel langs kanten af en sort stregNu forklares, hvordan en robot ved hjælp af registreringer fra farvesensoren kan programmeres til at følge kanten af en sort streg. Under kørslen langs den venstre kant af stregen i robottens kørselsretning, ønskes det altså, at robotten programmeres til en styring, så robotten kører ligeud, når farvesensoren er lige over kanten af stregen: Når robotten under kørslen har farvesensoren på det hvide til venstre for kanten eller på den sorte streg til højre for kanten, skal robotten altså "rettes op", så den igen kører med farvesensoren over kanten. Det betyder, at robotten skal holde til højre, når farvesensoren registrerer hvid og robotten skal holde til venstre, når farvesensoren registrerer sort: For at køre ligeud og samtidig holde til højre, skal motor B dreje hurtigere rundt end motor C. For at få robotten til at holde til venstre skal motor C dreje hurtigere end motor B. Men hvor meget hurtigere? Og når farvesensoren er langt væk fra kanten af stregen, skal robotten vel rettes mere op end når farvesensoren er næsten over kanten? Det viser sig, at farvesensorens registrerede lysværdi kan benyttes til at afgøre, hvor meget hurtigere det ene hjul skal dreje end det andet og dermed rette robotten mere eller mindre op afhængig af, hvor tæt farvesensoren er over kanten. Hvis farvesensoren benyttes til at måle intensitet af reflekteret lys, vil farvesensoren registrerer en lysværdi, der ligger imellem f.eks. 10% (farvesensors røde lysende cirkel helt over sort) og 84% (farvesensor over hvid). Med den røde lysende cirkel halvt over hvid og halvt over sort er farvesensoren lige over kanten og så registreres en lysværdi, som er (84+10)/2 = 47%. Det betyder, at at lysværdien kan bruges til at afgøre hvor farvesensoren befinder sig i forhold til kanten af den sorte streg:
I den første ligning udregnes turn til at være propertional med forskellen offset-lightValue. Propertionalitetsfaktoren kaldes P. Hvis P er positiv, har turn samme fortegn som offset-lightValue. I de to sidste ligninger bruges turn til at justere power til de to motorer i forhold til en konstant power kaldet minPower. Ved at se på de tre tilfælde igen som ovenfor, kan det ses, at ligningerne netop giver den ønskede styring:
LeftEdgeDriveRobotten på videoen ovenfor har en farvesensor tilsluttet port 3 og to motorer tilsluttet port B og C. Robotten styres af et program, som hedder testLeftEdgeDrive.ev3p. Programmet findes i projektet FollowEdge.ev3. Programmet ser sådan her ud:I programmet gentages udførelsen af den brugerdefinerede programmeringsblok LeftEdgeDrive ubegrænset i løkken. LeftEdgeDrive benytter P-regulering til at styre de to motorer, så robotten følger venstre kant af en sorte streg. For at kunne følge kanten ved hjælp af P-regulering input parametrene sættes i LeftEdge Drive. LeftEdgeDrive har fire input parametre, Port, offset, minPower og pFaktor:
Blokken udregner power til motor B og C ud fra lysværdien fra farvesensoren på den port som parametren Port angiver, værdien af parametren offset samt de to parametre minPower og pFaktor. Det sker ud fra P-reguleringsligningerne: Den første ligning udregnes af den første matematik-blok, se EV3 hjælp > Programmering > Data-blokke > Matematik. Lysværdien fra farvesensoren registreres af en farvesensor-blok, se EV3 hjælp > Programmering > Sensorblokke > Farve. Værdien af turn fra den første ligning er altså resultatet af udregningen fra den første matematik-blok. Værdien af turn føres videre til de to andre matematik-blokke, som udregner power til motor B og C ud fra de to næste ligninger. RightEdgeDriveI projektet FollowEdge.ev3 findes også et program testRightEdgeDrive.ev3p som får robotten til at følge højre kant af en sort streg ved hjælp af den brugerdefinerede programmeringsblok RightEdgeDrive, som ser sådan her ud:RightEdgeDrive fås ud fra LeftEdgeDrive ved at ombytte navnene i de to motorblokke. |