Program for robot ev3 å kjøre langs en linje. Lego EV3. Bevegelse langs den svarte linjen. Fargesensor - "Omgivelseslys lysstyrke"-modus

La oss vurdere enkleste algoritmen bevegelse langs den svarte linjen på én fargesensor på EV3.

Denne algoritmen er den tregeste, men den mest stabile.

Roboten vil ikke bevege seg strengt langs den svarte linjen, men langs grensen, svinge til venstre og høyre og gradvis bevege seg fremover.

Algoritmen er veldig enkel: hvis sensoren ser svart, snur roboten i den ene retningen, hvis den er hvit, i den andre.

Implementering i Lego Mindstorms EV3-miljø

I begge bevegelsesblokkene velger du "aktiver"-modus. Vi setter bryteren til fargesensor - måling - farge. Nederst, ikke glem å endre "ingen farge" til hvit. Du må også spesifisere alle porter riktig.

Ikke glem å legge til en syklus, roboten vil ikke gå noe sted uten den.

Sjekk det ut. Å oppnå beste resultat prøv å endre styrings- og kraftverdiene.

Bevegelse med to sensorer:

Du kjenner allerede algoritmen for å flytte en robot langs en svart linje ved hjelp av én sensor. I dag skal vi se på å bevege oss langs en linje ved hjelp av to fargesensorer.
Sensorene skal monteres slik at den svarte linjen går mellom dem.


Algoritmen vil være som følger:
Hvis begge sensorene ser hvit– gå fremover;
Hvis en av sensorene ser hvitt og den andre svart, vend deg mot svart;
Hvis begge sensorene ser svart, er vi i et kryss (for eksempel stopper vi).

For å implementere algoritmen må vi overvåke avlesningene til begge sensorene, og først etter det sette roboten til å bevege seg. For å gjøre dette bruker vi brytere som er nestet i en annen bryter. Dermed vil vi først polle den første sensoren, og deretter, uavhengig av avlesningene til den første, vil vi polle den andre sensoren, hvoretter vi vil sette handlingen.
La oss koble den venstre sensoren til port nr. 1, den høyre til port nr. 4.

Program med kommentarer:

Ikke glem at vi starter motorene i "På"-modus slik at de fungerer så lenge som nødvendig basert på sensoravlesningene. Dessuten glemmer folk ofte behovet for en loop - uten den vil programmet umiddelbart avsluttes.

http://studrobots.ru/

Det samme programmet for NXT-modellen:

Studer bevegelsesprogrammet. Programmer roboten. Send video av modelltesting

Teksten til verket er lagt ut uten bilder og formler.
Full versjon arbeid er tilgjengelig i "Arbeidsfiler"-fanen i PDF-format

Lego Mindstorms EV3

Forberedende stadium

Programoppretting og kalibrering

Konklusjon

Litteratur

1.Introduksjon.

Robotikk er et av de viktigste områdene for vitenskapelig og teknologisk fremgang, der problemene med mekanikk og ny teknologi kommer i kontakt med problemene med kunstig intelligens.

Til siste årene Fremskritt innen robotikk og automatiserte systemer har endret de personlige og forretningsmessige områdene i livene våre. Roboter er mye brukt i transport, jord- og romutforskning, kirurgi, militærindustri, laboratorieforskning, sikkerhet og masseproduksjon av industri- og forbruksvarer. Mange enheter som tar beslutninger basert på data mottatt fra sensorer kan også betraktes som roboter – som for eksempel heiser, uten hvilke livet vårt allerede er utenkelig.

Mindstorms EV3-designeren inviterer oss til å gå inn i robotenes fascinerende verden og fordype oss i det komplekse miljøet innen informasjonsteknologi.

Mål: Lær å programmere roboten til å bevege seg i en rett linje.

    Bli kjent med Mindstorms EV3-designeren og dets programmeringsmiljø.

    Skriv programmer for at roboten skal bevege seg i en rett linje ved 30 cm, 1 m 30 cm og 2 m 17 cm.

    Mindstorms EV3-konstruktør.

Designerdeler - 601 stk., servomotor - 3 stk., fargesensor, berøringsbevegelsessensor, infrarød sensor og en berøringssensor. EV3-mikroprosessorenheten er hjernen til LEGO Mindstorms-konstruktøren.

En stor servomotor er ansvarlig for bevegelsen til roboten, som er koblet til EV3-mikrodatamaskinen og får roboten til å bevege seg: gå fremover og bakover, snu og kjør langs en gitt bane. Denne servomotoren har en innebygd rotasjonssensor, som lar deg styre robotens bevegelse og hastighet meget nøyaktig.

Du kan få roboten til å utføre en handling ved å bruke EV3-dataprogrammet. Programmet består av ulike kontrollblokker. Vi skal jobbe med bevegelsesblokken.

Bevegelsesblokken styrer robotens motorer, slår den på, av og får den til å fungere i samsvar med de tildelte oppgavene. Du kan programmere bevegelsen til et visst antall omdreininger, eller grader.

    Forberedende stadium.

    Oppretting av et teknisk felt.

La oss bruke markeringer på robotens arbeidsfelt, ved hjelp av elektrisk tape og en linjal, lage tre linjer 30 cm lange - grønn linje, 1 m 15 cm - rød og 2 m 17 cm - svart linje.

    Nødvendige beregninger:

Robothjulets diameter er 5 cm 7 mm = 5,7 cm.

En omdreining av robothjulet er lik lengden på en sirkel med en diameter på 5,7 cm. Vi finner omkretsen ved hjelp av formelen

Der r er radiusen til hjulet, d er diameteren, π = 3,14

l = 5,7 * 3,14 = 17,898 = 17,9.

De. For én omdreining av hjulet kjører roboten 17,9 cm.

La oss beregne antall omdreininger som kreves for å kjøre:

N = 30: 17,9 = 1,68.

    1 m 30 cm = 130 cm

N = 130: 17,9 = 7,26.

    2 m 17 cm = 217 cm.

N = 217: 17,9 = 12,12.

    Oppretting og kalibrering av programmet.

Vi lager programmet ved å bruke følgende algoritme:

Algoritme:

    Velg en bevegelsesblokk i Mindstorms EV3-programmet.

    Slå på begge motorene i gitt retning.

    Vent til avlesningen av rotasjonssensoren til en av motorene endres til den angitte verdien.

    Slå av motorene.

Vi laster det ferdige programmet inn i robotkontrollenheten. Vi plasserer roboten på feltet og trykker på startknappen. EV3 kjører over feltet og stopper ved enden av en gitt linje. Men for å oppnå en nøyaktig finish, må du utføre kalibrering, siden bevegelsen påvirkes av eksterne faktorer.

    Feltet er montert på elevpulter, slik at en liten nedbøyning av overflaten er mulig.

    Overflaten på feltet er glatt, så dårlig adhesjon av robotens hjul til feltet er mulig.

    Ved å beregne antall omdreininger måtte vi runde tallene, og derfor oppnådde vi det nødvendige resultatet ved å endre hundredeler i omdreininger.

5. Konklusjon.

Evnen til å programmere en robot til å bevege seg i en rett linje vil være nyttig for å lage mer komplekse programmer. Som regel indikerer de tekniske spesifikasjonene for robotkonkurranser alle bevegelsesdimensjoner. De er nødvendige for at programmet ikke skal overbelastes med logiske forhold, løkker og andre komplekse kontrollblokker.

På neste trinn av å bli kjent med Lego Mindstorms EV3-roboten, må du lære å programmere svinger i en bestemt vinkel, bevegelse i en sirkel og spiraler.

Å jobbe med designeren er veldig interessant. Ved å lære mer om dens evner, kan du løse ethvert teknisk problem. Og i fremtiden, kanskje, lag dine egne interessante modeller av Lego Mindstorms EV3-roboten.

Litteratur.

    Koposov D. G. "Det første trinnet i robotikk for klasse 5-6." - M.: Binom. Kunnskapslaboratoriet, 2012 - 286 s.

    Filippov S. A. "Robotikk for barn og foreldre" - "Vitenskap" 2010

    Internett-ressurser

    http://lego. rkc-74.ru/

    http://www.9151394.ru/projects/lego/lego6/beliovskaya/

    http://www. lego no/education/

Algoritmer for å kontrollere en mobil LEGO-robot. Linjebevegelse med to lyssensorer

Tilleggsutdanningslærer

Kazakova Lyubov Alexandrovna


Bevegelse langs linjen

  • To lyssensorer
  • Proporsjonal kontroller (P-kontroller)

Algoritme for å bevege seg langs den svarte linjen uten en proporsjonal kontroller

  • Begge motorene spinner med samme kraft
  • Hvis den høyre lyssensoren treffer den svarte linjen, reduseres eller stopper kraften til venstre motor (for eksempel B).
  • Hvis den venstre lyssensoren treffer den svarte linjen, reduseres effekten til en annen av motorene (for eksempel C) (går tilbake til linjen), reduseres eller stopper
  • Hvis begge sensorene er på hvitt eller svart, oppstår lineær bevegelse

Bevegelsen organiseres ved å endre kraften til en av motorene


Eksempel på program for kjøring langs svart linje uten P-kontroller

Bevegelse organiseres ved å endre rotasjonsvinkelen


  • En proporsjonal kontroller (P-kontroller) lar deg justere oppførselen til roboten avhengig av hvor mye dens oppførsel avviker fra ønsket.
  • Jo mer roboten avviker fra målet, jo mer innsats må den legge ned for å komme tilbake til det.

  • P-kontrolleren brukes til å holde roboten i en bestemt tilstand:
  • Holde posisjonen til manipulatoren Bevege seg langs en linje (lyssensor) Bevege seg langs en vegg (avstandssensor)
  • Holde posisjonen til manipulatoren
  • Linjebevegelse (lyssensor)
  • Bevegelse langs veggen (avstandssensor)

Linjebevegelse med én sensor

  • Målet er å bevege seg langs den "hvit-svarte" grensen
  • En person kan skille grensen mellom hvit og svart. En robot kan ikke.
  • Målet for roboten er i grått

Kjører gjennom kryss

Ved bruk av to lyssensorer er det mulig å organisere bevegelse langs mer komplekse ruter



Algoritme for kjøring langs en motorvei med kryss

  • Begge sensorene er på hvitt - roboten kjører rett (begge motorene snurrer med samme kraft)
  • Hvis den høyre lyssensoren treffer den svarte linjen og den venstre treffer den hvite linjen, skjer en høyresving
  • Hvis den venstre lyssensoren treffer den svarte linjen og den høyre treffer den hvite linjen, svinger den til venstre
  • Hvis begge sensorene er svarte, oppstår lineær bevegelse. Du kan telle veikryss eller utføre handlinger


Driftsprinsipp for P-regulatoren

Sensorposisjon

O=01-02


Algoritme for å bevege seg langs den svarte linjen med en proporsjonal kontroller

HC = K*(C-T)

  • Ts - målverdier (ta avlesninger fra lyssensoren på hvitt og svart, beregn gjennomsnittet)
  • T - strømverdi - hentet fra sensoren
  • K - følsomhetskoeffisient. Jo flere, jo høyere følsomhet


Dette problemet er klassisk, ideologisk enkelt, det kan løses mange ganger, og hver gang vil du oppdage noe nytt for deg selv.

Det er mange tilnærminger for å løse linjefølgeproblemet. Valget av en av dem avhenger av robotens spesifikke design, antall sensorer, deres plassering i forhold til hjulene og hverandre.

I vårt eksempel vil tre eksempler på en robot bli analysert basert på hovedutdanningsmodellen til Robot Educator.

Til å begynne med setter vi sammen grunnmodellen til Robot Educator pedagogisk robot for dette kan du bruke instruksjonene i MINDSTORMS EV3-programvaren.

For eksempel trenger vi EV3 lysfargesensorer. Disse lyssensorene er som ingen andre best egnet for vår oppgave når vi jobber med dem, vi trenger ikke å bekymre oss for intensiteten til lyset rundt. For denne sensoren vil vi i programmer bruke reflektert lysmodus, der mengden reflektert lys fra sensorens røde bakgrunnsbelysning er estimert. Grensene for sensoravlesningene er 0 - 100 enheter, for henholdsvis "ingen refleksjon" og "total refleksjon".

Som et eksempel vil vi analysere 3 eksempler på programmer for å bevege seg langs en svart bane avbildet på en flat, lys bakgrunn:

· En sensor, med P-regulator.

· Én sensor, med PC-regulator.

· To sensorer.

Eksempel 1. En sensor, med P-regulator.

Design

Lyssensoren er installert på en stråle som er praktisk plassert på modellen.


Algoritme

Virkemåten til algoritmen er basert på det faktum at, avhengig av graden av overlapping av sensorbelysningsstrålen med en svart linje, varierer avlesningene som returneres av sensoren gradient. Roboten opprettholder posisjonen til lyssensoren på grensen svart linje. Ved å konvertere inndata fra lyssensoren genererer kontrollsystemet en verdi for robotens snuhastighet.


Siden sensoren på en reell bane genererer verdier gjennom hele driftsområdet (0-100), er 50 valgt som verdien som roboten streber etter. I dette tilfellet genereres verdiene som overføres til rotasjonsfunksjonene området -50 - 50, men disse verdiene er ikke nok for en bratt sving i banen. Derfor bør området utvides en og en halv gang til -75 - 75.

Som et resultat, i programmet, er kalkulatorfunksjonen en enkel proporsjonal kontroller. Funksjonen som ( (a-50)*1,5 ) i driftsområdet til lyssensoren genererer rotasjonsverdier i samsvar med grafen:

Eksempel på hvordan algoritmen fungerer

Eksempel 2. En sensor, med PK-regulator.

Dette eksemplet er basert på samme konstruksjon.

Du la sikkert merke til at i det forrige eksemplet svaiet roboten for mye, noe som ikke tillot den å akselerere nok. Nå skal vi prøve å forbedre denne situasjonen litt.

Til vår proporsjonale kontroller legger vi også til en enkel kubekontroller, som vil legge til litt bøying til kontrollerfunksjonen. Dette vil redusere svaiingen til roboten nær ønsket grense for banen, samt gi sterkere rykk når den er langt unna den.

Slik ser en person linjen:

Slik ser roboten det:


Vi vil bruke denne funksjonen når vi designer og programmerer en robot for konkurransekategorien "Trajectory".

Det er mange måter å lære en robot å se en linje og bevege seg langs den. Det er komplekse programmer og veldig enkle.

Jeg vil snakke om en programmeringsmetode som selv barn i 2-3 klasse kan mestre. I denne alderen er det mye lettere for dem å sette sammen strukturer etter instruksjoner, og programmering av en robot er en vanskelig oppgave for dem. Men denne metoden vil tillate barnet å programmere roboten til hvilken som helst rute på banen på 15-30 minutter (under hensyntagen til trinn-for-trinn-testing og justering av noen funksjoner i banen).

Denne metoden ble testet ved kommunale og regionale robotkonkurranser i Surgut-regionen og Khanty-Mansi autonome Okrug-Yugra og ga skolen vår førsteplasser. Der ble jeg overbevist om at dette temaet er veldig aktuelt for mange lag.

Vel, la oss komme i gang.

Når man forbereder seg til denne typen konkurranser, er programmering bare en del av løsningen på oppgaven. Du må begynne med å designe en robot for en bestemt rute. I den neste artikkelen vil jeg fortelle deg hvordan du gjør dette. Vel, siden bevegelse langs en linje forekommer veldig ofte, begynner jeg med programmering.

La oss vurdere alternativet med en robot med to lyssensorer, da det er mer forståelig for grunnskoleelever.

Lyssensorer er koblet til port 2 og 3. Motorer til portene B og C.
Sensorene er plassert i kantene av linjen (prøv å eksperimentere med å plassere sensorene i forskjellige avstander fra hverandre og i forskjellige høyder).
Viktig poeng. Til bedre arbeid For et slikt opplegg er det tilrådelig å velge et par sensorer i henhold til parametrene. Ellers vil det være nødvendig å innføre en blokk for justering av sensorverdier.
Installasjon av sensorer på chassiset i henhold til det klassiske mønsteret (trekanten), omtrent som på figuren.

Programmet vil bestå av et lite antall blokker:


1. To lyssensorenheter;
2. Fire blokker med "matematikk";
3. To motorblokker.

To motorer brukes til å styre roboten. Kraften til hver er 100 enheter. For vårt opplegg vil vi ta gjennomsnittsverdien av motorkraft lik 50. Det vil si at gjennomsnittshastigheten når du beveger deg i en rett linje vil være lik 50 enheter. Ved avvik fra rettlinjet bevegelse vil kraften til motorene øke eller redusere proporsjonalt, avhengig av avviksvinkelen.

La oss nå finne ut hvordan du kobler til alle blokkene, konfigurerer programmet og hva som vil skje i det.
La oss sette opp to lyssensorer og tilordne port 2 og 3 til dem.
Ta matteblokken og velg "Subtraksjon".
La oss koble lyssensorene fra "Intensitet"-utgangene med busser til matematikkblokken til inngangene "A" og "B".
Hvis robotens sensorer er installert symmetrisk fra midten av sporlinjen, vil verdiene til begge sensorene være like. Etter subtraksjon får vi verdien – 0.
Den neste blokken med matematikk vil bli brukt som en koeffisient, og du må sette "Multiplikasjon" i den.
For å beregne koeffisienten må du måle "hvitt" og "svart" nivå ved å bruke NXT-blokken.
La oss anta: hvit -70, svart -50.
Deretter beregner vi: 70-50 = 20 (forskjellen mellom hvit og svart), 50/20 = 2,5 (vi setter den gjennomsnittlige effektverdien når vi beveger oss i en rett linje i matematikkblokkene til 50. Denne verdien pluss den ekstra kraften ved justering skal bevegelsen være lik 100)
Prøv å sette verdien til 2,5 ved inngang "A", og velg den mer nøyaktig.
Til inngangen "B" til matematikkblokken "Multiplikasjon", koble utgangen "Resultat" fra forrige matematikkblokk "Subtraksjon".
Deretter kommer et par - en matematikkblokk (addisjon) og motor B.
Sette opp en matematikkblokk:
Inngang "A" er satt til 50 (halve motoreffekten).
Utgangen til "Resultat"-blokken er koblet med en buss til "Power"-inngangen til motor B.
Det neste paret er en matematikkblokk (subtraksjon) og motor C.
Sette opp en matematikkblokk:
Inngang "A" er satt til 50.
Inngang "B" er koblet med en buss til "Resultat"-utgangen til matematikkblokken "Multiplikasjon".
Utgangen til "Resultat"-blokken er koblet med en buss til "Power"-inngangen til motor C.

Som et resultat av alle disse handlingene vil du få følgende program:

Siden alt dette vil fungere i en syklus, legger vi til "Syklus", velger det og flytter det hele til "Syklus".

La oss nå prøve å finne ut hvordan programmet vil fungere og hvordan du konfigurerer det.


Mens roboten beveger seg i en rett linje, faller sensorverdiene sammen, noe som betyr at utgangen til "Subtraksjon"-blokken vil være 0. Utgangen fra "Multiplisering"-blokken gir også verdien 0. Denne verdien leveres med parallelt med motorkontrollparet. Siden disse blokkene er satt til 50, vil det å legge til eller trekke fra 0 ikke påvirke kraften til motorene. Begge motorene opererer med samme effekt på 50, og roboten ruller i en rett linje.

La oss anta at banen gjør en sving eller roboten avviker fra en rett linje. Hva vil skje?

Figuren viser at belysningen av sensoren koblet til port 2 (heretter kalt sensor 2 og 3) øker når den beveger seg inn på det hvite feltet, og belysningen av sensor 3 avtar. La oss anta at verdiene til disse sensorene blir: sensor 2 – 55 enheter, og sensor 3 – 45 enheter.
"Subtraksjons"-blokken vil bestemme forskjellen mellom verdiene til to sensorer (10) og føre den til korreksjonsblokken (multipliser med en koeffisient (10*2,5=25)) og deretter til kontrollblokkene
motorer.
I matematikkblokken (tillegg) til motorstyring B til gjennomsnittlig hastighetsverdi på 50
25 vil bli lagt til og en effektverdi på 75 vil bli levert til motor B.
I matematikkblokken (Subtraksjon) for styring av motor C, vil 25 bli trukket fra den gjennomsnittlige hastighetsverdien på 50 og en effektverdi på 25 vil bli levert til motor C.
På denne måten vil avviket fra den rette linjen bli korrigert.

Hvis sporet svinger skarpt til siden, viser sensor 2 seg å være hvit, og sensor 3 er svart. Belysningsverdiene til disse sensorene blir: sensor 2 - 70 enheter, og sensor 3 - 50 enheter.
"Subtraksjon"-blokken vil bestemme forskjellen mellom verdiene til to sensorer (20) og mate den til korreksjonsblokken (20*2,5=50) og deretter til motorkontrollenhetene.
Nå i matematikkblokken (tillegg) til motor B-kontroll, vil en effektverdi på 50 +50 =100 bli levert til motor B.
I matematikkblokken (subtraksjon) til motor C-styring vil en effektverdi på 50 – 50 = 0 tilføres motor C.
Og roboten vil gjøre en skarp sving.

På hvite og svarte felt må roboten kjøre i rett linje. Hvis dette ikke skjer, prøv å velge sensorer med samme verdier.

La oss nå lage en ny blokk og bruke den til å flytte roboten langs en hvilken som helst rute.
Velg syklusen, og velg deretter kommandoen "Opprett min blokk" i "Rediger"-menyen.

I "Block Designer"-dialogboksen, gi et navn til blokken vår, for eksempel "Go", velg et ikon for blokken og klikk "DONE".

Nå har vi en blokk som kan brukes i tilfeller der vi må bevege oss langs en linje.