Lego ev3 proportional integreret differentialregulator.

stemmer)

Proportional controller

Beskrivelse

Ved automatisk styring er kontrolhandlingen u(t) normalt en funktion af den dynamiske fejl - afvigelsen e(t) af den kontrollerede variabel x(t) fra dens indstillede værdi x0(t):

e(t) = x0(t) – x(t).

Dette er Polzunov-Watt-princippet om regulering ved afvigelse eller feedback-princippet. Det matematiske udtryk for den funktionelle afhængighed af den ønskede kontrolhandling u0(t) af mængderne målt af controlleren kaldes loven eller kontrolalgoritmen beskrevet ovenfor.

En proportional controller er en enhed, der udøver en kontroleffekt på et objekt i forhold til dets afvigelse fra en given tilstand:

Her er k controllerens forstærkning. Den givne tilstand x0 kaldes normalt setpunktet, og afvigelsen fra den e kaldes residual. I det følgende vil vi af hensyn til sikkerheden betegne residualet med forkortelsen err (fra engelsk ord

"fejl" - fejl).

Motorstyring

En erfaren kriger vil ikke svinge et sværd, som en robot på en relæcontroller gør. Vi er nødt til at komme med en algoritme, der vil holde motoren, der holder sværdet i en strengt fast position (fig. 7.1). P-regulatoren hjælper med dette.

Lad e 1 - aflæsningerne af hastighedssensor 1 på motor A - være en justerbar variabel. Indstillingen x0 = 45, og den resterende e = 45 – e 1. Så er styringshandlingen på motoren givet ved formlen

u = k ∙ (45 – e 1).

Her er k forstærkningsfaktoren, for eksempel 5, som vil forbedre motorresponsen selv med små afvigelser fra setpunktet.

1 Forveksle ikke den matematiske betegnelse af den resterende e (fra fejl) med aflæsningerne af encoderen e 1 (fra encoder), en foruddefineret Robolab-miljøvariabel. Hvis der er en afvigelse i positive side

en negativ kontrolindgang vil blive påført motoren og omvendt. Denne styring kan anvendes på motoren i en cyklus med en kort forsinkelse på 1-10 ms for at aflaste regulatoren (fig. 7.8).

Ris. 7.8. Motorstyringsalgoritme ved hjælp af en proportional controller.

RobotC-sproget har ikke så praktisk en notation til encoder-aflæsninger som i Robolab, så programmet ser lidt længere ud:

int k=5, u; nMotorEncoder=0; mens (sandt)

u=k*(45-nMotorEncoder); motor=u;

Yderligere, for at levere et "slag med et sværd", er det nok at have en variabel i stedet for tallet 45 og ændre dens værdi udefra, for eksempel fra en parallel opgave. Dette er dækket i afsnittet om robottrommeslagere i kapitel 8.

Lad os nu bygge en controller, der kontrollerer ikke kun motorens statiske position, men også hastigheden af ​​dens bevægelse. Efter algoritmens logik skulle sætpunktet, som indtil nu har været konstant og ikke har ændret sig, begynde at bevæge sig mod en stigning eller et fald. Ved at adlyde regulatoren vil motoren uundgåeligt følge den. Det enkleste værktøj til kontinuerligt at øge sætpunktsværdien er en timer.

NXT-controlleren har fire indbyggede timere, som hver kan måle tid i tiendedele, hundrededele og tusindedele af et sekund. Lad os mestre den første timer, som udfører 10 "tip" i sekundet.

kov". I Robolab er det betegnet T1 eller Timer100ms1, og i RobotC er det timer100.

Lad os gøre motorafbøjningsvinklen alfa, specificeret i det foregående eksempel ved 45, afhængig af aflæsningerne af timeren med accelerationskoefficienten k 2:

alfa = k2 ∙ T1.

Kontrol handling vil forblive den samme med forstærkningsfaktor k 1:

u = k 1 ∙ (alfa – e 1).

Kort sagt, i programmet på Robolab-sproget vil vi anvende kontrolhandlingen direkte på motoren efter tidligere at have initialiseret timeren

Ris. 7.9. Motorhastighedsregulering er en omdrejning i sekundet.

Koefficienten k 2 = 36 bestemmer, at alfaværdien på et sekund stiger til 360, hvilket svarer til en hel omdrejning af motoren:

int k1=2, k2=36, u, alfa; nMotorEncoder=0; ClearTimer(T1); mens (sandt)

alfa=timer100*k2; u=k1*(alpha-nMotorEncoder); motor=u;

Ved at bruge heltalsdivision, som vedtaget i C (og Robolab) for variabler af heltalstype, er det muligt at opnå diskrete vinkelændringer, dvs. øger det en gang i sekundet:

alfa = T 1 / 10 ∙ k 2.

Med en koefficient k 2 = 60 vil strålens bevægelse svare til bevægelsen af ​​sekundviseren på urskiven. Men det er ikke nok

mærkbar. For klarhedens skyld kan du indstille k2 = 30, så vil pilen lave en hel omdrejning i 12 "ticks" på 30 grader hver. Vær forsigtig med rækkefølgen af ​​heltals divisions- og multiplikationsoperationer; at ændre deres rækkefølge eller "reducere" dem vil helt sikkert ændre resultatet (fig. 7.10).

Ris. 7.10. Accelereret efterligning af bevægelsen af ​​en urviser.

Og endelig et eksempel på en matematisk trommeslager. I stedet for konstant at bevæge sig fremad, vil nålen oscillere frem og tilbage under kontrol af P-regulatoren. Operationen af ​​division med en rest, som i C er angivet med %-tegnet, vil hjælpe med dette. Resten af ​​et ikke-negativt heltal divideret med 2 vil altid være 0 eller 1:

alfa = T 1% 2 ∙ k 2.

Hvis afvigelsen øges med k 2 = 15 gange, får vi et oscillerende sætpunkt alfa, som vil tvinge regulatoren til at bevæge motoren 5 gange i sekundet, enten 0º eller 15 grader. Ændringer i programmet er mindre. Lad os se på et eksempel i RobotC:

int k1=3, k2=15, u, alfa; nMotorEncoder=0; ClearTimer(T1); mens (sandt)

alfa=timer100%2*k2; u=k1*(alpha-nMotorEncoder); motor=u;

Denne prototype trommeslager rammer bordet med jævne mellemrum. Det vigtigste er at starte i den rigtige position. Ved at bruge heltalsmatematik kan du indstille et mere komplekst rytmisk mønster, for eksempel (tabel 7.1):

alfa = T 1% 5% 2 ∙ k 2.

centrum = S3.

Koefficienten bestemmes i cyklussen:

k 1 = c + (S 3 - centrum) / k 2.

Ris. 7,36. Bevægelse langs linjen på en proportional regulator med en flydende koefficient.

Den resulterende forstærkningskontrollov kan anvendes ikke kun på den proportionale komponent, men også på enhver anden komponent, såvel som på kontrolhandlingen som helhed (fig. 7.36).

PID regulator

Den proportional-integral-derivative (PID) controller er en af ​​de mest populære og bruges i et stort antal enheder af de mest forskellige typer, som kræver hurtig respons og positioneringsnøjagtighed af systemet. Som navnet antyder, består denne regulator af summen af ​​tre komponenter og er grafisk afbildet i fig. 7,37.

Ris. 7,37. PID-regulatorkredsløb.

Dette er et forenklet diagram. Værdien af ​​den dynamiske fejl e (t) leveres til controllerens input, og kontrolhandlingen u (t) genereres ved udgangen:

u (t) = p + i + d = k p ∙ e (t) + k i ∙ ò t

e (τ)d τ + k d ∙

de.

Den proportionale komponent, vist i diagrammet som en trekant, er ansvarlig for at placere systemet i en given tilstand. I nogle tilfælde kan det forårsage overskridelse med efterfølgende selvsvingninger. Det vil sige, at P-regulatoren kan "overdrive det", og robotten vil begynde at drive fra side til side.

Den integrerede komponent akkumulerer negativ erfaring (opsummerer fejl) og frembringer en kompenserende effekt. Med minimale afvigelser "svækker" den proportionale komponent, og den integrale komponent hjælper på grund af dens hurtige stigning ved summering med at "nå" den kontrollerede værdi til sætpunktet.

Differentialkomponenten (D-komponent) overvåger ændringshastigheden i systemets tilstand og forhindrer mulig overskridelse. I nogle tilfælde er D-komponenten modsat i fortegn til den proportionale, og i andre er den den samme.

Vi er allerede bekendt med den proportionelle komponent, den differentielle er beskrevet i det foregående kapitel 6. Lad os tage den integrale. Denne komponent bestemmes dynamisk, summeret med den foregående værdi:

i = i + ki × e(t) × dt.

Den fysiske betydning af størrelsen e(t) × dt er, at den er

proportional med varigheden af, at systemet er i en fejltilstand. Da koefficienten k i er taget ud af parentes, kan vi tale om værdien i som summen af ​​fejlvarigheder. Således finder vi integralet ved at summere.

Lad os overveje brugen af ​​en PID-controller ved at bruge eksemplet med en robot, der balancerer på to hjul. Dette klassiske problem kan løses ved hjælp af forskellige sensorer på en række forskellige måder. I det foreslåede eksempel anvendes en lyssensor og enkleste form PID regulator. Men opnåelse af robotstabilisering kræver brug af mere nøjagtige sensoraflæsninger.

RAW-format

Sensordata kommer ind i NXT-controlleren i ubehandlet, rå form. Alle sensorer sender operativsystem en digital værdi fra 0 til 1023, som derefter behandles af den tilsvarende driver og reduceres til en mere forståelig form (afstand 0...255, belysning 0...100, berøring 0 eller 1 osv.). Men data kan modtages direkte, uden om chaufføren. Dette råformat kaldes normalt RAW (fra engelsk "raw"). I nogle tilfælde kan det bruges til at opnå større nøjagtighed. For eksempel kan rækkevidden af ​​lyssensorværdier øges med cirka 10 gange. Det er denne mulighed, der bliver brugt videre.

Du kan modtage data i RAW-format i både Robolab og RobotC. For at gøre dette initialiseres sensoren i overensstemmelse hermed, og data læses fra den ved hjælp af en speciel foruddefineret variabel.

Balancerende robot

Designet af Segway-robotten er vist i fig. 7.38: lodret placeret controller, tæt placerede hjul og nedadvendt lyssensor. Algoritmen vil være noget mere kompliceret.

Princippet for at stabilisere en Segway i en afbalanceret position er som følger. Hvis robotten læner sig fremad, øges aflæsningen på lyssensoren på grund af det reflekterede lys. Som reaktion på dette genereres en kontrolhandling, der tvinger robotten til at bevæge sig fremad og derved igen indtage en lodret position.

Når man bevæger sig baglæns, falder sensoraflæsningerne, og robotten begynder at bevæge sig baglæns. Den proportionale komponent er ansvarlig for alt dette. Rollen af ​​de integrerede og differentielle komponenter spilles af forsikring mod overskridelse.

Ris. 7,38. Balancerende Segway robot.

I fig. 7.39 viser algoritmen i Robolab. Det meste af det er optaget af initialisering af variabler. For at forbedre nøjagtigheden læses ikke kun sensordataene i RAW-format, men de fleste variabler erklæres i ægte float-format. Selve PID-algoritmen er i en løkke.

Ris. 7,39. Balanceringsalgoritmen er baseret på en PID-regulator.

I overensstemmelse med traditionen med at bevæge os langs linjen, bruger vi den grå variabel som et sætpunkt - lyssensorens gennemsnitlige aflæsninger i ligevægtspositionen. Den nye skaleringsparameter angiver skaleringen af ​​kontrolhandlingen. Dette er i det væsentlige en dæmpningsfaktor, fordi værdien produceret af regulatoren er for høj til NXT-motorer. Det ville være muligt at tilføje det inde i de eksisterende koefficienter, men for RobotC vil denne parameter være anderledes, men koefficienterne vil være de samme.

Med de givne koefficienter stabiliserer robotten sig godt på et almindeligt, lyst linoleum eller skrivebord. Det vil sige, at han ikke behøver hvid overflader. For at starte, skal du præcist indstille Segwayen til ligevægtspositionen. Hvis robotten starter med en eller anden hældning fremad eller bagud, vil den straks begynde at bevæge sig i retning af hældningen.

Et lignende eksempel i RobotC er lidt anderledes af en række årsager. For det første er ydeevnen af ​​NXT med firmwaren i dette miljø cirka 1,4 gange højere end Robolabs, så skaleringsfaktoren bør øges. For det andet transmitteres RAW-værdierne i den rigtige rækkefølge, og du bliver nødt til at indstille motorerne til at vende eller blot anvende en negativ kontrolhandling:

int grey=SensorRaw; int fejl, errold=0;

float kp=25, ki=350, kd=0,3; flydeskala=14;

float dt=0,001; float p, i=0, d, u; mens (sandt)

err= grå-SensorRaw; //Afvigelse med det modsatte fortegn p=kp*err;

i=i+ki*fejl*dt; d=kd*(fejl-fejl)/dt; errold=fejl; u=(p+i+d)/skala; motor=u; motor=u; vent1Msek(1);

Elementer i teorien automatisk kontrol i skolen 1

En vigtig og interessant metodisk opgave er at "kaste en bro" mellem en specialists og en elevs vidensområder og hjælpe skoleelever med at se fremtiden fremtidige speciale, dvs. udfører karrierevejledning, og eleverne ser den praktiske anvendelighed af deres faglige viden. For at opnå en lignende effekt blev metoder til beregning af regulatorer udviklet ved hjælp af matematiske apparater, der ikke gik ud over omfanget af skolens læseplaner i matematik og fysik. Især i stedet for differentialligninger Der blev brugt forskelle, som svarer godt til den diskrete karakter af interaktionen mellem objektet og controlleren i computerstyring.

Lad os for eksempel overveje problemet med at konstruere proportional (P) og proportional-afledt (PD) controllere i problemet med at kontrollere bevægelsen af ​​en mobil robot langs en væg. Lad os angive med x t afstanden mellem robotten og væggen, med θt - robottens kursvinkel, og med u t - kontrolhandlingen i øjeblikket med henholdsvis serienummer t, hvor t = 0, 1, 2, ... - antal øjeblikke af forandring

rhenium. Det antages, at polling af sensorer og ændringer i størrelsen af ​​kontrolhandlingen udføres med lige store tidsintervaller h. Til opgaver Lego kontrol NXT-robotter antager naturligvis, at kontrolhandlingen er forskellen vinkelhastigheder hjulrotation, proportional med hastigheden af ​​ændring af kursvinklen:

Hvis det antages, at kursafvigelser fra den nominelle θt =0 er små, og robottens gennemsnitshastighed er konstant: vt=v, kan dynamikken af ​​ændringer i robottens tilstandsvariable beskrives i en første tilnærmelse ved lineære tilstandsligninger :

hvor g = h2vr / b.

Lad os indstille den ønskede afstand til væggen x*> 0 og bestemme kontrolmålet (CT) ved relationen

xt → x* som t→∞.

Nu naturligt Lad os på det materielle niveau introducere begrebet asymptotisk stabilitet som en egenskab ved løsninger til system (4), hvilket sikrer opnåelsen af ​​målværdien (5) under alle indledende betingelser, der adskiller sig ganske lidt fra målværdierne. Det er let at se, at for u t = 0 er løsningen til ligning (4) en hvilken som helst konstant værdi x t = x*. Men da ligning (4), svarende til modellen for en dobbeltintegrator (dobbelt adder), ikke har egenskaben asymptotisk stabilitet, opnås kontrolcenter (5) ikke med konstant kontrol. Dette demonstreres let analytisk ved at opsummere en række

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

Den generelle teori og specifikke eksempler på oprettelse af et program 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 værdi 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. En stigning i 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 mellemkategori WRO 2015

Dette problem er klassisk, ideologisk simpelt, det kan løses mange gange, og hver gang vil du opdage noget nyt for dig selv.

Der er mange tilgange til at løse det linjefølgende problem. Valget af en af ​​dem afhænger af robottens specifikke design, af antallet af sensorer, deres placering i forhold til hjulene og hinanden.

I vores eksempel vil tre eksempler på en robot blive analyseret ud fra Robot Educators hoveduddannelsesmodel.

Til at begynde med samler vi den grundlæggende model af Robot Educator pædagogisk robot til dette kan du bruge instruktionerne i MINDSTORMS EV3-softwaren.

For eksempel skal vi også bruge EV3 lysfarvesensorer. Disse lyssensorer er som ingen andre bedst egnede til vores opgave, når vi arbejder med dem, vi behøver ikke bekymre os om intensiteten af ​​det omgivende lys. Til denne sensor vil vi i programmerne bruge tilstanden reflekteret lys, hvor mængden af ​​reflekteret lys fra sensorens røde baggrundslys estimeres. Grænserne for sensoraflæsningerne er 0 - 100 enheder for henholdsvis "ingen refleksion" og "total refleksion".

Som et eksempel vil vi analysere 3 eksempler på programmer til at bevæge sig langs en sort bane afbildet på en flad, lys baggrund:

· En sensor, med P-regulator.

· Én sensor, med PC-regulator.

· To sensorer.

Eksempel 1. En sensor med P-regulator.

Design

Lyssensoren er installeret på en stråle, der er bekvemt placeret på modellen.


Algoritme

Funktionen af ​​algoritmen er baseret på det faktum, at afhængigt af graden af ​​overlapning af sensorbelysningsstrålen med en sort linje, varierer de aflæsninger, som sensoren returnerer, gradient. Robotten fastholder lyssensorens position på grænsen sort streg. Ved at konvertere inputdata fra lyssensoren genererer styresystemet en værdi for robottens drejehastighed.


Da sensoren på en reel bane genererer værdier i hele sit driftsområde (0-100), er 50 valgt som den værdi, som robotten stræber efter. I dette tilfælde genereres de værdier, der sendes til rotationsfunktionerne området -50 - 50, men disse værdier er ikke nok til en stejl drejning af banen. Derfor bør rækkevidden udvides halvanden gang til -75 - 75.

Som følge heraf er lommeregnerfunktionen i programmet en simpel proportional controller. Hvilken funktion ( (a-50)*1,5 ) i lyssensorens driftsområde genererer rotationsværdier i overensstemmelse med grafen:

Eksempel på hvordan algoritmen fungerer

Eksempel 2. En sensor, med PK regulator.

Dette eksempel er baseret på samme konstruktion.

Du har sikkert bemærket, at robotten i det foregående eksempel svajede for meget, hvilket ikke tillod den at accelerere nok. Nu vil vi prøve at forbedre denne situation lidt.

Til vores proportionalcontroller tilføjer vi også en simpel kubecontroller, som vil tilføje en vis bøjning til controllerfunktionen. Dette vil reducere robottens svajning nær den ønskede grænse af banen, samt give stærkere ryk, når den er langt væk fra den.

Robotteknologi er et spændende nyt område, der sandsynligvis vil blive videreudviklet i skoledatalogi og teknologikurser. Boomet inden for robotteknologi skyldes i høj grad, at det giver os mulighed for at besvare spørgsmålet: "Hvorfor lærer vi egentlig programmering?"

Derudover kan du i løbet af robotteknologi stifte bekendtskab med de elementære begreber i teorien om automatisk kontrol.

Denne side præsenterer programmeringssimulatorer og Arduino-tavler udviklet af forfatteren. De kan hjælpe i tilfælde, hvor det af en eller anden grund ikke er muligt at bruge rigtig hardware. Simulatorerne bruger HTML5-funktioner, så de vil kun fungere i moderne browsere (det er bedst at bruge Google Chrome).

eller Mozilla Firefox

Nyheder
nu også i Telegram-kanalen 27. november 2015"Embryon"-sporet er blevet tilføjet til simulatorerne (

M.V. Lazarev
, Orekhovo-Zuevo).
13. oktober 2015

Nu kan du indlæse dine egne spor (felter til robotten) i LEGO robotsimulatorerne. Hvordan gør man dette? Se.

Nye simulatorer er tilføjet - LEGO robotter med to, tre, fire lyssensorer. Robotkontrolsprog (For at styre robotter i simulatorer bruges et simpelt programmeringssprog, som fik arbejdsnavnet).

SiRoP

Simpel robotprogrammering

Robotstyring med lyssensor

Lyssensoren giver robotten mulighed for at navigere på bordfladen, for eksempel for at bevæge sig langs grænsen mellem de hvide og sorte områder (langs kanten af ​​den sorte linje). En fotodiode oplyser overfladen, en fotodetektor "fanger" de reflekterede stråler og måler deres intensitet.

Den mest populære opgave af denne type er at bevæge sig langs en linje. Ved hjælp af simulatoren kan du studere forskellige kontrollove - relæ-, proportional- og endda PID-kontrol (proportional-integral-afledt).

Eksempler på programmer til en robot med lyssensor

Main ( mens 1 ( mens sensor > 128 ( motor = 100 motor = 100 vent(10) ) tilbage() drej() ) ) tilbage ( motor = -100 motor = -100 vent(260) ) drej ( motor = -50 motor = 50 vent(50) )

Robotstyring med to lyssensorer

To lyssensorer giver robotten mulighed for bedre at navigere og køre langs en tynd linje. De føres lidt frem og spredes til siderne. Som med enkeltsensoropgaver kan denne simulator bruges til at studere forskellige kontrollove.

Eksempler på programmer til en robot med tre lyssensorer

Robotstyring med fire lyssensorer

Fire lyssensorer gør, at robotten bedre kan registrere skarpe sving. Interne sensorer bruges til finjustering. To ekstern sensor båret lidt frem og spredt ud til siderne. De bruges, når man støder på et skarpt sving. Forstærkningen til kontrol baseret på aflæsningerne af sensorerne i det eksterne par er valgt større end for det interne par (se. L.Yu. Ovsyanitskaya et al., Algoritmer og programmer til bevægelse af Lego Mindstorms EV3 robotten langs linjen, M.: "Pero", 2015).

Eksempler på programmer til en robot med fire lyssensorer

Mens 1 ( d0 = sensor > 128 d1 = sensor > 128 d2 = sensor > 128 d3 = sensor > 128 hvis d1 & !d2 ( motor = 100 motor = 0 ) hvis! d1 & d2 ( motor = 0 motor = 100 ) hvis d1 == d2 ( motor = 100 motor = 100 ) hvis d0 & !d3 ( motor = 30 motor = 0 ) if!d0 & d3 ( motor = 0 motor = 30 ) vent(10) )

K1 = 0,2 k2 = 0,4 mens 1 ( u1 = sensor - sensor u2 = sensor - sensormotor = 50+k1*u1+k2*u2 motor = 50-k1*u1-k2*u2 vent(10) )

Styring af en robot med en afstandssensor (ekkolod)

Afstandssensoren (ekkolod) giver dig mulighed for at bestemme afstanden til den nærmeste forhindring, mens robotten bevæger sig. Den udsender et ultralydssignal og modtager det reflekterede signal. Hvordan mere tid mellem de udsendte og modtagne signaler, jo større er afstanden.

Ved hjælp af en afstandssensor kan robotten programmeres til automatisk at navigere i en labyrint af kendt form, men ukendt størrelse.

Detaljer Forfatter: Konovalov Igor     Den proportionale regulator er en forbedring. Den største ulempe ved relæet er, at det er ligeglad med, hvor meget strømværdierne afviger fra sensorens normale værdi. Den har kun to tilstande - prøv enten at øge sensorværdierne med et bestemt konstant tal, hvis de er mindre end den normale værdi, eller øg den. På grund af dette forekommer oscillationer med en konstant amplitude, hvilket er meget ineffektivt.
    Det er meget mere logisk at bestemme, hvor "langt" de nuværende aflæsninger er fra normalen, og ændre amplituden afhængigt af dette. For at gøre det mere klart, lad os se på et eksempel. Eksemplet, som i forrige artikel, er det samme: en robot fra Lego Mindstorms EV3 kører langs en sort linje ved hjælp af en farvesensor i lystilstand.

Robotten forsøger at køre langs grænsen mellem hvid og sort, og der viser sensoren cirka 50 % af belysningen. Og jo længere den er fra normalpositionen, jo større indsats gør robotten sig for at vende tilbage til 50 %.
    For at skrive et program vil vi bruge udtrykkene "fejl" og "kontrolhandling". Fejl er forskellen mellem den aktuelle sensoraflæsning og den normale. I vores tilfælde, hvis robotten nu ser 20% af belysningen, så er fejlen 20-50 = -30%. Fejltegnet angiver, hvilken retning robotten skal dreje for at slippe af med fejlen. Nu skal vi fortælle motorerne, hvilken vej robotten skal drejes, med hvilken hastighed og hvor skarpt. Det er nødvendigt at udøve en kontroleffekt på motorerne, hvilket betyder, hvor hurtigt den skal vende tilbage til sin normale position. Kontrolhandlingen (UP) beregnes som fejlen (fejlen) ganget med proportionalitetsfaktoren (k). Denne koefficient bruges til at øge eller reducere fejlens indflydelse på kontrolhandlingen. Styreindgangen sendes til styretøjet, hvor robottens gennemsnitshastighed indstilles.
    Hvordan justerer man proportionalitetsfaktoren? Vælg værdierne eksperimentelt; for at rejse banen kan det for eksempel være fra 0,2 til 1,5, afhængigt af robottens hastighed og design. Hvis koefficienten er for stor, vil robotten slingre meget, hvis den er lille, vil den køre jævnt, men på et tidspunkt vil den glide af, når den drejer på grund af utilstrækkelig kontrolindgang. Lad os skrive to versioner af programmet - med variabler (for dem, der allerede har studeret dem) og uden.


    Men denne regulator kan også styrkes ved at indføre en proportional og integreret komponent beskrivelsen vil være i de følgende artikler. Vi ses snart!