Glat bevægelse langs den sorte linje ev3. Lego EV3. Bevægelse langs den sorte linje. Farvesensor - tilstanden "Omgivelseslys lysstyrke".

Indre

For at få robotten til at bevæge sig jævnt langs den sorte linje, skal du tvinge den til at beregne selve bevægelseshastigheden.

En person ser en sort streg og dens klare grænse. Lyssensoren fungerer lidt anderledes.

Det er denne egenskab ved lyssensoren - manglende evne til klart at skelne mellem hvid og sort - som vi vil bruge til at beregne bevægelseshastigheden.

Lad os først introducere begrebet "Ideelt banepunkt."

Lyssensoraflæsninger spænder fra 20 til 80, oftest på hvid er aflæsningerne cirka 65, på sort omkring 40.

Det ideelle punkt er et konventionelt punkt omtrent i midten af ​​de hvide og sorte farver, hvorefter robotten vil bevæge sig langs den sorte linje.

Her er punktets placering fundamental - mellem hvid og sort. Det vil af matematiske årsager ikke være muligt at indstille den nøjagtigt til hvid eller sort; hvorfor vil blive klart senere.

Empirisk har vi beregnet, at det ideelle punkt kan beregnes ved hjælp af følgende formel:

Robotten skal bevæge sig strengt langs det ideelle punkt. Hvis der er en afvigelse i nogen retning, skal robotten vende tilbage til det punkt.

Lad os komponere matematisk beskrivelse af problemet.

Indledende data.

Ideelt punkt.

Aktuelle lyssensoraflæsninger.

Resultat.

Motorens rotationseffekt V.

Motorens rotationseffekt C.

Løsning.

Lad os overveje to situationer. Først: robotten afveg fra den sorte linje mod den hvide linje.

I dette tilfælde skal robotten øge rotationseffekten af ​​motor B og reducere effekten af ​​motor C.

I en situation, hvor robotten går ind i den sorte linje, er det modsatte tilfældet.

Jo mere robotten afviger fra det ideelle punkt, jo hurtigere skal den vende tilbage til det.

Men at skabe en sådan regulator er en ret vanskelig opgave, og det er ikke altid nødvendigt i sin helhed.

Derfor besluttede vi at begrænse os til kun P-regulatoren, som reagerer tilstrækkeligt på afvigelser fra den sorte linje.

I matematisk sprog vil det blive skrevet således:

hvor Hb og Hc er slutpotenserne for henholdsvis motor B og C,

Base – en vis basiseffekt af motorerne, der bestemmer robottens hastighed. Det vælges eksperimentelt, afhængigt af robottens design og skarpheden af ​​svingene.

Itek – aktuelle aflæsninger af lyssensoren.

Iid – beregnet idealpunkt.

k – proportionalitetskoefficient, udvalgt eksperimentelt.

I tredje del vil vi se på, hvordan man programmerer dette i NXT-G-miljøet.

Sådan ser en person linjen:

Sådan ser robotten det:


Vi vil bruge denne funktion, når vi designer og programmerer en robot til konkurrencekategorien "Trajectory".

Der er mange måder at lære en robot at se en linje og bevæge sig langs den. Der er komplekse programmer og meget simple.

Jeg vil tale om en programmeringsmetode, som selv børn i 2-3 klasse kan mestre. I denne alder er det meget lettere for dem at samle strukturer efter instruktionerne, og programmering af en robot er for dem vanskelig opgave. Men denne metode vil give barnet mulighed for at programmere robotten til enhver rute på banen på 15-30 minutter (under hensyntagen til trin-for-trin test og justering af nogle funktioner i banen).

Denne metode blev testet ved kommunale og regionale robotkonkurrencer i Surgut-regionen og Khanty-Mansi Autonome Okrug-Yugra og bragte vores skole førstepladser. Der blev jeg overbevist om, at dette emne er meget relevant for mange hold.

Nå, lad os komme i gang.

Når man forbereder sig til denne form for konkurrence, er programmering kun en del af løsningen på opgaven. Du skal starte med at designe en robot til en bestemt rute. I den næste artikel vil jeg fortælle dig, hvordan du gør dette. Nå, da bevægelse langs en linje forekommer meget ofte, vil jeg begynde med programmering.

Lad os overveje muligheden for en robot med to lyssensorer, da det er mere forståeligt for folkeskoleelever.

Lyssensorer er forbundet til port 2 og 3. Motorer til porte B og C.
Sensorerne er placeret i kanterne af linjen (prøv at eksperimentere med at placere sensorerne i forskellige afstande fra hinanden og i forskellige højder).
Vigtigt punkt. Til bedre arbejde For et sådant skema er det tilrådeligt at vælge et par sensorer i henhold til parametrene. Ellers vil det være nødvendigt at indføre en blok til justering af sensorværdier.
Montering af sensorer på chassis iht klassisk ordning(trekant), omtrent som på billedet.

Programmet vil bestå af et lille antal blokke:


1. To lyssensorenheder;
2. Fire blokke af "Matematik";
3. To motorblokke.

To motorer bruges til at styre robotten. Effekten af ​​hver er 100 enheder. For vores skema vil vi tage den gennemsnitlige værdi af motoreffekt lig med 50. Det vil sige, at den gennemsnitlige hastighed, når du bevæger dig i en lige linje, vil være lig med 50 enheder. Ved afvigelse fra bevægelse i lige linje, vil motorernes effekt stige eller falde proportionalt, afhængigt af afvigelsesvinklen.

Lad os nu finde ud af, hvordan man forbinder alle blokkene, konfigurerer programmet og hvad der vil ske i det.
Lad os opsætte to lyssensorer og tildele port 2 og 3 til dem.
Tag matematikblokken og vælg "Subtraktion".
Lad os forbinde lyssensorerne fra "Intensitet" udgangene med busser til matematikblokken til indgangene "A" og "B".
Hvis robottens sensorer er installeret symmetrisk fra midten af ​​sporlinjen, vil værdierne af begge sensorer være ens. Efter subtraktion får vi værdien – 0.
Den næste blok af matematik vil blive brugt som en koefficient, og du skal indstille "Multiplikation" i den.
For at beregne koefficienten skal du måle de "hvide" og "sorte" niveauer ved hjælp af NXT-blokken.
Lad os antage: hvid -70, sort -50.
Dernæst beregner vi: 70-50 = 20 (forskellen mellem hvid og sort), 50/20 = 2,5 (vi sætter den gennemsnitlige effektværdi, når vi bevæger os i en lige linje i matematikblokkene til 50. Denne værdi plus den tilføjede potens ved justering skal bevægelsen være lig med 100)
Prøv at indstille værdien til 2,5 ved input "A", og vælg den mere nøjagtigt.
Til indgangen "B" på matematikblokken "Multiplikation", tilsluttes udgangen "Resultat" fra den foregående matematikblok "Subtraktion".
Dernæst kommer et par - en matematikblok (Addition) og motor B.
Opsætning af en matematikblok:
Indgang "A" er indstillet til 50 (halv motoreffekt).
Udgangen fra "Resultat"-blokken er forbundet med en bus til "Power"-indgangen på motor B.
Det næste par er en matematikblok (subtraktion) og motor C.
Opsætning af en matematikblok:
Indgang "A" er indstillet til 50.
Indgang "B" er forbundet med en bus til "Resultat"-udgangen på matematikblokken "Multiplikation".
Udgangen fra "Resultat"-blokken er forbundet med en bus til "Power"-indgangen på motor C.

Som et resultat af alle disse handlinger får du følgende program:

Da alt dette vil fungere i en cyklus, tilføjer vi "Cycle", vælger det og flytter det hele til "Cycle".

Lad os nu prøve at finde ud af, hvordan programmet fungerer, og hvordan det konfigureres.


Mens robotten bevæger sig i en lige linje, falder sensorernes værdier sammen, hvilket betyder, at outputtet fra "Subtraktions"-blokken vil være værdien 0. Outputtet fra "Multiplication"-blokken giver også værdien 0. Denne værdi leveres parallelt med motorstyringsparret. Da disse blokke er sat til 50, påvirker det ikke motorernes effekt at addere eller trække 0 fra. Begge motorer kører med samme effekt på 50, og robotten ruller i en lige linje.

Lad os antage, at sporet laver et sving, eller at robotten afviger fra en lige linje. Hvad vil der ske?

Figuren viser, at belysningen af ​​sensoren forbundet til port 2 (herefter benævnt sensor 2 og 3) øges, når den bevæger sig over i det hvide felt, og belysningen af ​​sensor 3 falder. Lad os antage, at værdierne af disse sensorer bliver: sensor 2 – 55 enheder og sensor 3 – 45 enheder.
"Subtraktions"-blokken vil bestemme forskellen mellem værdierne af to sensorer (10) og føre den til korrektionsblokken (multipliceret med en koefficient (10*2,5=25)) og derefter til kontrolblokkene
motorer.
I matematikblokken (Addition) motorstyring B til værdien gennemsnitshastighed 50
25 vil blive tilføjet, og en effektværdi på 75 vil blive leveret til motor B.
I matematikblokken (Subtraktion) til styring af motor C vil 25 blive trukket fra den gennemsnitlige hastighedsværdi på 50 og en effektværdi på 25 vil blive leveret til motor C.
På denne måde vil afvigelsen fra den rette linje blive korrigeret.

Hvis sporet drejer skarpt til siden, viser sensor 2 sig at være hvid, og sensor 3 er sort. Belysningsværdierne for disse sensorer bliver: sensor 2 - 70 enheder og sensor 3 - 50 enheder.
"Subtraktions"-blokken vil bestemme forskellen mellem værdierne af to sensorer (20) og føre den til korrektionsblokken (20*2,5=50) og derefter til motorstyringsenhederne.
Nu i matematikblokken (Addition) af motor B-styring, vil en effektværdi på 50 +50 =100 blive leveret til motor B.
I matematikblokken (Subtraktion) af motor C-styring vil en effektværdi på 50 – 50 = 0 blive tilført motor C.
Og robotten vil lave et skarpt sving.

På hvide og sorte felter skal robotten køre i lige linje. Hvis dette ikke sker, så prøv at vælge sensorer med samme værdier.

Lad os nu skabe ny blok og vi vil bruge den til at flytte robotten langs enhver rute.
Vælg cyklussen, og vælg derefter kommandoen "Opret min blok" i menuen "Rediger".

I "Blokdesigner"-dialogboksen, giv et navn til vores blok, for eksempel "Go", vælg et ikon for blokken og klik på "UDFØRT".

Nu har vi en blok, som kan bruges i tilfælde, hvor vi skal bevæge os langs en linje.

En af de grundlæggende bevægelser i let konstruktion er at følge den sorte linje.

Generel teori og konkrete eksempler Oprettelsen af ​​programmet er beskrevet på webstedet wroboto.ru

Jeg vil beskrive, hvordan vi implementerer dette i EV3-miljøet, da der er forskelle.

Det første, robotten skal vide, er betydningen af ​​det "ideelle punkt", der er placeret på grænsen mellem sort og hvid.

Placeringen af ​​den røde prik i figuren svarer nøjagtigt til denne position.

Den ideelle beregningsmulighed er at måle de sorte og hvide værdier og tage det aritmetiske gennemsnit.

Du kan gøre dette manuelt. Men ulemperne er umiddelbart synlige: Over selv en kort periode kan belysningen ændre sig, og den beregnede værdi vil være forkert.

Så du kan få en robot til at gøre det.

Under forsøgene fandt vi ud af, at det ikke er nødvendigt at måle både sort og hvid. Kun hvid kan måles. Og den ideelle pointværdi beregnes som den hvide værdi divideret med 1,2 (1,15), afhængigt af bredden af ​​den sorte linje og robottens hastighed.

Den beregnede værdi skal skrives til en variabel for at få adgang til den senere.

Beregning af det "ideelle punkt"

Den næste parameter involveret i bevægelse er rotationskoefficienten. Jo større den er, jo skarpere reagerer robotten på ændringer i belysningen. Men for meget stor betydning vil få robotten til at vakle. Værdien vælges eksperimentelt individuelt for hvert robotdesign.

Den sidste parameter er motorernes basiseffekt. Det påvirker robottens hastighed. Forøgelse af bevægelseshastigheden fører til en stigning i robottens responstid på ændringer i belysningen, hvilket kan føre til afvigelse fra banen. Værdien vælges også eksperimentelt.

For nemheds skyld kan disse parametre også skrives ind i variabler.

Drejningsforhold og basiseffekt

Logikken ved at bevæge sig langs den sorte linje er som følger: afvigelsen fra det ideelle punkt måles. Jo større den er, jo stærkere skal robotten stræbe efter at vende tilbage til den.

For at gøre dette beregner vi to tal - effektværdien af ​​hver af motorerne B og C separat.

I formelform ser det sådan ud:

Hvor Isens er værdien af ​​lyssensorens aflæsninger.

Endelig implementeringen i EV3. Det er mest bekvemt at arrangere det i form af en separat blok.

Implementering af algoritmen

Dette er præcis den algoritme, der blev implementeret i robotten til mellemkategorien af ​​WRO 2015

Algoritmer til styring af en mobil LEGO robot. Linjebevægelse med to lyssensorer

Yderligere uddannelseslærer

Kazakova Lyubov Alexandrovna


Bevægelse langs linjen

  • To lyssensorer
  • Proportional controller (P-controller)

Algoritme til at bevæge sig langs den sorte linje uden en proportional controller

  • Begge motorer roterer med samme kraft
  • Hvis den højre lyssensor rammer den sorte streg, så falder eller stopper effekten af ​​den venstre motor (for eksempel B)
  • Hvis den venstre lyssensor rammer den sorte linje, så falder effekten af ​​en anden af ​​motorerne (for eksempel C) (vender tilbage til linjen), falder eller stopper
  • Hvis begge sensorer er på hvid eller sort, så retlinet bevægelse

Bevægelsen organiseres ved at ændre effekten af ​​en af ​​motorerne


Eksempel på et program til at køre langs en sort linje uden P-controller

Bevægelse organiseres ved at ændre rotationsvinklen


  • En proportional controller (P-controller) giver dig mulighed for at justere robottens adfærd afhængigt af, hvor meget dens adfærd afviger fra den ønskede.
  • Jo mere robotten afviger fra målet, jo flere kræfter skal den til for at vende tilbage til det.

  • P-controlleren bruges til at holde robotten i en bestemt tilstand:
  • Holder manipulatorens position Bevægelse langs en linje (lyssensor) Bevægelse langs en væg (afstandssensor)
  • Holder manipulatorens position
  • Linjebevægelse (lyssensor)
  • Bevægelse langs væggen (afstandssensor)

Linjebevægelse med en sensor

  • Målet er at bevæge sig langs den "hvid-sorte" grænse
  • En person kan skelne grænsen mellem hvid og sort. Det kan en robot ikke.
  • Målet for robotten er i gråt

Kørsel gennem kryds

Ved brug af to lyssensorer er det muligt at organisere bevægelse langs mere komplekse ruter



Algoritme til kørsel ad en motorvej med vejkryds

  • Begge sensorer er på hvidt - robotten kører ligeud (begge motorer roterer med samme kraft)
  • Hvis den højre lyssensor rammer den sorte linje og den venstre den hvide linje, så sker der en højresving
  • Hvis den venstre lyssensor rammer den sorte linje, og den højre rammer den hvide linje, så drejer den til venstre
  • Hvis begge sensorer er sorte, opstår der lineær bevægelse. Du kan tælle vejkryds eller udføre enhver handling


Funktionsprincip for P-regulatoren

Sensorposition

O=01-02


Algoritme til at bevæge sig langs den sorte linje med en proportional controller

HC = K*(C-T)

  • Ts - målværdier (tag aflæsninger fra lyssensoren på hvid og sort, beregn gennemsnittet)
  • T - strømværdi - opnået fra sensoren
  • K - følsomhedskoefficient. Jo flere, jo højere følsomhed



For at se præsentationen med billeder, design og dias, download dens fil og åbn den i PowerPoint på din computer.
Tekstindhold i præsentationsdias:
"Algorithme for bevægelse langs den sorte linje med en farvesensor" Klub på "Robotics" Lærer før Yezidov Akhmed ElievichAt MBU DO "Shelkovskaya TsTT" For at studere algoritmen for at bevæge sig langs den sorte linje, vil en robot blive brugt Lego Mindstorms EV3 med én farvesensor Farvesensor Farvesensoren skelner 7 farver og kan registrere fravær af farve. Ligesom i NXT kan den fungere som en lyssensor Felt til robotkonkurrencer "Line S" Den foreslåede træningsbane med en bane i form af bogstavet "S" vil give dig mulighed for at udføre endnu en interessant test af de skabte robotter for hastighed og reaktion. Lad os overveje enkleste algoritme bevægelse langs den sorte linje på én farvesensor på EV3. Denne algoritme er den langsomste, men den mest stabile. Robotten vil ikke bevæge sig strengt langs den sorte linje, men langs dens grænse, dreje til venstre og højre og gradvist bevæge sig fremad. Algoritmen er meget enkel: Hvis sensoren ser sort, så drejer robotten i den ene retning, hvis den er hvid - i den anden. Følge en linje i lysstyrketilstand for reflekteret lys med to sensorer Nogle gange er farvesensoren ikke effektiv nok til at skelne mellem sort og hvide farver. Løsningen på dette problem er at bruge sensoren ikke i farvedetekteringstilstand, men i lysstyrketilstand for reflekteret lys. I denne tilstand, ved at kende sensorværdierne på en mørk og lys overflade, kan vi uafhængigt sige, hvad der vil blive betragtet som hvidt, og hvad der vil være sort. Lad os nu bestemme lysstyrkeværdierne på hvide og sorte overflader. For at gøre dette finder vi fanen "Modulapplikationer" i EV3-blokmenuen. Nu er du i portvisningsvinduet og kan se aflæsningerne af alle sensorer i øjeblikket. vores sensorer skal lyse rødt, hvilket betyder, at de fungerer i lysstyrkeregistreringstilstand for reflekteret lys. Hvis de lyser blåt, skal du i portvisningsvinduet på den ønskede port trykke på centerknappen og vælge COL-REFLECT-tilstand Lad os nu placere robotten, så begge sensorer er placeret over den hvide overflade. Vi ser på tallene i port 1 og 4. I vores tilfælde er værdierne henholdsvis 66 og 71. Disse vil være de hvide værdier for sensorerne. Lad os nu placere robotten, så sensorerne er placeret over den sorte overflade. Lad os igen se på værdierne for port 1 og 4. Vi har henholdsvis 5 og 6. Disse er betydningerne af sort. Dernæst vil vi ændre det forrige program. Vi vil nemlig ændre indstillingerne af kontakterne. For nu har de Farvesensor -> Måling -> Farve installeret. Vi skal indstille Farvesensor -> Sammenligning -> Lysstyrke for reflekteret lys. Nu skal vi indstille "sammenligningstype" og "tærskelværdi". Tærskelværdien er værdien af ​​nogle "grå", værdier mindre end den, vi vil betragte som sort, og mere - hvid. For en første tilnærmelse er det praktisk at bruge gennemsnitsværdien mellem hvid og sort for hver sensor. Således vil tærskelværdien for den første sensor (port nr. 1) være (66+5)/2=35,5. Lad os runde op til 35. Tærskelværdi for den anden sensor (port nr. 4): (71+6)/2 = 38,5. Lad os runde op til 38. Nu indstiller vi disse værdier i hver switch i overensstemmelse hermed. Det er alt, blokkene med bevægelser forbliver på deres pladser uden ændringer, da hvis vi sætter tegnet "sammenligningstype"<», то все, что сверху (под галочкой) будет считаться черным, а снизу (под крестиком) – белым, как и было в предыдущей программе.Старайтесь ставить датчики так, чтобы разница между белым и черным была как можно больше. Если разница меньше 30 - ставьте датчики ниже. Это было краткое руководство по программированию робота Lego ev3, для движения по черной линии, с одним и двумя датчиками цвета