Nemzetközi robotversenyek - Szabályok - Példák robotokra - LEGO EV3 alapú pályarobot.

Afanasyev A.N. Orosz kincses mesék (Alexander Afanasyev) Afanasjev pdf

Vakolat

A könnyű konstrukció egyik alapmozdulata a fekete vonal követése. Általános elmélet és konkrét példák

A program létrehozását a wroboto.ru weboldal ismerteti

Leírom, hogyan valósítjuk meg ezt az EV3 környezetben, mert vannak eltérések.

Az első dolog, amit a robotnak tudnia kell, az a fekete-fehér határán elhelyezkedő „ideális pont” jelentése.

A piros pont helye az ábrán pontosan ennek a pozíciónak felel meg.

Az ideális számítási lehetőség a fekete-fehér értékek mérése és a számtani átlag vétele.

Ezt manuálisan is megteheti. A hátrányok azonban azonnal láthatóak: akár rövid időn belül is megváltozhat a megvilágítás, és a számított érték hibás lesz.

Tehát rávehet egy robotot, hogy megcsinálja.

A kísérletek során rájöttünk, hogy nem szükséges egyszerre feketét és fehéret is mérni. Csak fehéret lehet mérni. Az ideális pontértéket pedig a fehér érték osztva 1,2-vel (1,15), a fekete vonal szélességétől és a robot sebességétől függően.

A kiszámított értéket egy változóba kell írni, hogy később hozzáférhessünk.

Az „ideális pont” kiszámítása A mozgásban szerepet játszó következő paraméter a forgási együttható. Minél nagyobb, annál élesebben reagál a robot a megvilágítás változásaira. De túl sokat nagy érték

Az utolsó paraméter a motorok alapteljesítménye. Ez befolyásolja a robot sebességét. A mozgási sebesség növelése a robot válaszidejének növekedéséhez vezet a megvilágítás változásaira, ami a pályáról való eltéréshez vezethet. Az értéket kísérletileg is kiválasztjuk.

A kényelem kedvéért ezek a paraméterek változókba is írhatók.

Fordítási arány és alapteljesítmény

A fekete vonal mentén történő mozgás logikája a következő: mérjük az ideális ponttól való eltérést. Minél nagyobb, annál erősebben kell a robotnak arra törekednie, hogy visszatérjen hozzá.

Ehhez két számot számítunk ki - a B és C motorok teljesítményértékét külön-külön.

Képlet formájában így néz ki:

Ahol Isens a fényérzékelő leolvasási értéke.

Végül a megvalósítás az EV3-ban. A legkényelmesebb egy külön blokk formájában elhelyezni.

Az algoritmus megvalósítása

Pontosan ez az az algoritmus, amelyet a WRO 2015 középkategóriás robotjában implementáltak

Ez a probléma klasszikus, ideológiailag egyszerű, sokszor megoldható, és minden alkalommal felfedez valami újat a maga számára.

Számos megközelítés létezik a következő sor probléma megoldására. Az egyik kiválasztása a robot konkrét kialakításától, az érzékelők számától, a kerekekhez és egymáshoz viszonyított elhelyezkedésétől függ.

Példánkban egy robot három példáját elemezzük a Robot Educator fő oktatási modellje alapján.

Először összeállítjuk a Robot Educator oktatórobot alapmodelljét, ehhez használhatja a következő utasításokat: szoftver MINDSTORMS EV3.

Példákként szükségünk lesz EV3 világos színérzékelőkre is. Ezek a fényérzékelők semmihez sem hasonlíthatók a lehető legjobb módon feladatunknak megfelelő, amikor velük dolgozunk, nem kell aggódnunk a környező fény intenzitása miatt. Ehhez az érzékelőhöz a programokban az üzemmódot fogjuk használni visszavert fény, amelynél megbecsülik az érzékelő piros háttérvilágításáról visszavert fény mennyiségét. Az érzékelő leolvasási határértékei 0-100 egység, a „nincs visszaverődés” és a „teljes visszaverődés” esetén.

Példaként 3 példát elemezünk olyan programokra, amelyek egy lapos, világos háttéren ábrázolt fekete pálya mentén mozognak:

· Egy érzékelő, P szabályozóval.

· Egy érzékelő, PC szabályozóval.

· Két érzékelő.

1. példa Egy érzékelő, P szabályozóval.

Tervezés

A fényérzékelő a modellen kényelmesen elhelyezett gerendára van felszerelve.


Algoritmus

Az algoritmus működése azon alapul, hogy az érzékelő megvilágítási sugárának fekete vonallal való átfedésének mértékétől függően az érzékelő által visszaadott értékek gradiensen változnak. A robot megtartja a fényérzékelő pozícióját a fekete vonal határán. A fényérzékelő bemeneti adatainak konvertálásával a vezérlőrendszer értéket generál a robot forgási sebességére vonatkozóan.


Mivel egy valós pályán a szenzor a teljes működési tartományában (0-100) generál értékeket, az 50-et választja ki az az érték, amelyre a robot törekszik. Ebben az esetben a forgatási funkciókhoz továbbított értékek generálódnak a tartomány -50 - 50, de ezek az értékek nem elegendőek a pálya meredek elfordulásához. Ezért a tartományt másfélszeresére kell bővíteni -75 - 75-re.

Ennek eredményeként a programban a számológép funkció egy egyszerű arányos vezérlő. melynek funkciója ( (a-50)*1,5 ) a fényérzékelő működési tartományában a grafikonnak megfelelően forgási értékeket generál:

Példa az algoritmus működésére

2. példa Egy érzékelő PK szabályozóval.

Ez a példa ugyanazon a konstrukción alapul.

Valószínűleg észrevette, hogy az előző példában a robot túlzottan imbolygott, ami nem tette lehetővé, hogy kellőképpen felgyorsuljon. Most megpróbálunk egy kicsit javítani ezen a helyzeten.

Proporcionális szabályzónkhoz egy egyszerű kockavezérlőt is adunk, amely némileg meghajlítja a vezérlő funkciót. Ez csökkenti a robot kilengését a pálya kívánt határa közelében, valamint erősebb rándulásokat hajt végre távol tőle.

A robotika egy izgalmas új terület, amelyet valószínűleg továbbfejlesztenek az iskolai számítástechnikai és technológiai kurzusokon. A robotika fellendülése nagyrészt annak a ténynek köszönhető, hogy lehetővé teszi számunkra, hogy megválaszoljuk a kérdést: „Miért tanulunk valójában programozni?” Emellett a robotika során az elmélet elemi fogalmaival is megismerkedhetsz.

automatikus vezérlés

Ez az oldal a szerző által fejlesztett programozási szimulátorokat és Arduino kártyákat mutatja be. Olyan esetekben tudnak segíteni, amikor valamilyen oknál fogva nem lehet valódi hardvert használni. A szimulátorok HTML5 képességeket használnak, így csak a modern böngészőkben működnek (a legjobb használni Google Chrome).

vagy Mozilla Firefox

Hír
most a Telegram csatornán is 2015. november 27 Az „embrió” sáv hozzáadásra került a szimulátorokhoz (

M.V. Lazarev
Most már betöltheti saját nyomait (a robot mezőit) a LEGO robotszimulátorokba. Hogyan kell ezt csinálni? Lásd.
Új szimulátorok kerültek hozzáadásra - LEGO robotok két, három, négy fényérzékelővel.

Robotvezérlési nyelv

A robotok szimulátorokban történő vezérléséhez egy egyszerű programozási nyelvet használnak, amely megkapta a munkanevet SiRoP (Egyszerű robotprogramozás).

Robotvezérlés fényérzékelővel

A fényérzékelő lehetővé teszi a robot számára, hogy az asztal felületén navigáljon, például mozogjon a fehér és a fekete területek közötti határ mentén (a fekete vonal széle mentén). Fotodióda világítja meg a felületet, fotodetektor „fogja” a visszavert sugarakat és méri azok intenzitását.

A legnépszerűbb ilyen típusú feladat a vonal mentén történő mozgás. A szimulátor segítségével különféle szabályozási törvényeket tanulmányozhat - relé, arányos, sőt PID szabályozást (arányos-integrál-derivált).

Példák programokra fényérzékelős robothoz

Míg 1 (ha az érzékelő > 128 (motor = 100 motor = 0) egyébként (motor = 0 motor = 100) várjon (10))

KP = 0,2, míg 1 ( u = kP*(érzékelő-128) motor = 50 + u motor = 50 - u várakozás(20) )

Fő ( miközben 1 ( miközben az érzékelő > 128 ( motor = 100 motor = 100 vár(10) ) vissza() fordul() ) ) vissza ( motor = -100 motor = -100 vár(260) ) fordulat ( motor = -50 motor = 50 várakozás(50) )

Robotvezérlés két fényérzékelővel

Két fényérzékelő lehetővé teszi a robot számára, hogy jobban navigáljon és egy vékony vonal mentén haladjon. Kicsit előre hozzuk és oldalra terítjük. Az egyszenzoros problémákhoz hasonlóan ez a szimulátor is használható különféle szabályozási törvények tanulmányozására.

Példák programokra három fényérzékelővel rendelkező robothoz

Robotvezérlés négy fényérzékelővel

Négy fényérzékelő segítségével a robot jobban érzékeli az éles kanyarokat. A finombeállításhoz belső érzékelőket használnak; Két külső érzékelő enyhén előrehordva és oldalra terítve. Éles kanyar esetén használatosak. A külső pár érzékelőinek leolvasásán alapuló vezérlés erősítését nagyobbra választjuk, mint a belső párnál (lásd. L.Yu. Ovsyanitskaya et al., Algoritmusok és programok a Lego Mindstorms EV3 robot vonal mentén történő mozgásához, M.: „Pero”, 2015).

Példák négy fényérzékelővel rendelkező robot programjaira

Míg 1 ( d0 = érzékelő > 128 d1 = érzékelő > 128 d2 = érzékelő > 128 d3 = érzékelő > 128 if d1 & !d2 ( motor = 100 motor = 0 ) ha! d1 & d2 ( motor = 0 motor = 100 ) ha d1 == d2 ( motor = 100 motor = 100 ) if d0 & !d3 ( motor = 30 motor = 0 ) if!d0 & d3 ( motor = 0 motor = 30 ) várjon(10) )

K1 = 0,2 k2 = 0,4, míg 1 ( u1 = érzékelő - érzékelő u2 = érzékelő - érzékelő motor = 50+k1*u1+k2*u2 motor = 50-k1*u1-k2*u2 várakozás(10) )

Robot vezérlése távolságérzékelővel (szonárral)

A távolságérzékelő (szonár) lehetővé teszi a legközelebbi akadálytól való távolság meghatározását, miközben a robot mozog. Ultrahangos jelet bocsát ki és veszi a visszavert jelet. Minél hosszabb idő telik el a kibocsátott és a vett jelek között, annál nagyobb a távolság.

Távolságérzékelő segítségével a robot úgy programozható, hogy automatikusan navigáljon egy ismert alakú, de ismeretlen méretű labirintusban.

Részletek Szerző: Konovalov Igor     Az arányos vezérlő továbbfejlesztés. A relé fő hátránya, hogy nem érdekli, hogy az áramértékek mennyiben térnek el az érzékelő normál értékétől. Csak két állapota van - vagy próbálja meg növelni az érzékelő értékeket egy bizonyos állandó számmal, ha kisebbek a normál értéknél, vagy növelje meg. Emiatt az oszcillációk állandó amplitúdójúak, ami nagyon nem hatékony.
    Sokkal logikusabb meghatározni, hogy az aktuális értékek milyen „távol” vannak a normáltól, és ennek függvényében változtatjuk az amplitúdót. Hogy érthetőbb legyen, nézzünk egy példát. A példa, akárcsak az előző cikkben, ugyanaz: a Lego Mindstorms EV3 robotja egy fekete vonalon halad egy színérzékelővel világos módban.

A robot a fehér és a fekete határán próbál haladni, és ott a szenzor a megvilágítás körülbelül 50%-át mutatja. És minél távolabb van a normál pozíciótól, annál nagyobb erőfeszítést tesz a robot, hogy visszatérjen 50%-ra.
    A program írásához a „hiba” és a „vezérlési művelet” kifejezéseket fogjuk használni. A hiba az aktuális érzékelő és a normál érték közötti különbség. Esetünkben, ha a robot most a megvilágítás 20%-át látja, akkor a hiba 20-50 = -30%. A hibajel azt jelzi, hogy a robotnak milyen irányba kell fordulnia, hogy megszabaduljon a hibától. Most meg kell mondanunk a motoroknak, hogy a robot milyen irányba, milyen sebességgel és milyen élesen forduljon. Szabályozó hatást kell kifejteni a motorokra, ami azt jelenti, hogy milyen élesre kell visszatérnie normál helyzetben. A szabályozási művelet (UP) kiszámítása a hiba (hiba) és az arányossági tényező (k) szorzataként történik. Ezt az együtthatót arra használják, hogy fokozzák vagy csökkentsék a hiba hatását a vezérlési műveletre. A vezérlő bemenet a kormányba kerül, ahol beállítják a robot átlagsebességét.
    Hogyan állítsuk be az arányossági tényezőt? Kísérletileg válassza ki az értékeket a pálya haladásához, ez lehet például 0,2 és 1,5 között, a robot sebességétől és kialakításától függően. Ha túl nagy az együttható, akkor a robot sokat billeg, ha kicsi, akkor simán halad, de egy ponton lecsúszik kanyarodáskor az elégtelen vezérlési bemenet miatt. Írjuk meg a program két verzióját - változókkal (azoknak, akik már tanulmányozták őket) és anélkül.


    De ez a szabályozó egy arányos és integrált komponens bevezetésével is megerősíthető, a leírás a következő cikkekben lesz. Hamarosan találkozunk!

Arányos vezérlő

Leírás

Az automatikus vezérlésben az u(t) vezérlési művelet általában a dinamikus hiba függvénye - az x(t) vezérelt változó e(t) eltérése az x0(t) beállított értéktől:

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

Ez az eltéréssel történő szabályozás Polzunov-Watt elve, vagy elve visszacsatolás. A kívánt vezérlési művelet u0(t) funkcionális függésének a szabályozó által mért mennyiségektől való matematikai kifejezését a fent tárgyalt törvénynek vagy szabályozási algoritmusnak nevezzük.

Az arányos vezérlő olyan eszköz, amely egy tárgyra az adott állapottól való eltérésével arányosan vezérlő hatást fejt ki:

Itt k a vezérlő erősítése.

Az adott x0 állapotot általában alapjelnek, az ettől való e eltérést pedig maradéknak nevezzük. A következőkben a határozottság kedvéért a maradékot az err rövidítéssel jelöljük (a angol szó"hiba" - hiba).

Motorvezérlés

Egy tapasztalt harcos nem lengeti meg a kardot, mint egy robot a relévezérlőn. Ki kell találnunk egy olyan algoritmust, amely a kardot tartó motort szigorúan rögzített helyzetben tartja (7.1. ábra). A P-szabályozó segít ebben.

Legyen e 1 - az A motoron lévő 1 sebességérzékelő leolvasása - állítható változó. A beállítás x0 = 45, a maradék e = 45 – e 1. Ekkor a motor vezérlési műveletét a képlet adja meg.

u = k ∙ (45 – e 1).

Itt k az erősítési tényező, például 5, amely javítja a motor reakcióját még az alapjeltől való kis eltérések esetén is.

1 Ne keverje össze a maradék e matematikai megjelölését (a hibából) az e 1 (a kódolóból) kódoló leolvasásával, amely egy előre meghatározott Robolab környezeti változó.

Pozitív irányú elhajlás esetén a motor negatív vezérlési műveletet hajt végre, és fordítva. Ez a vezérlés egy ciklusban, rövid, 1-10 ms késleltetéssel alkalmazható a motorra, hogy tehermentesítse a vezérlőt (7.8. ábra).

Rizs. 7.8. Motorvezérlési algoritmus arányos vezérlővel.

Ha az erősítési tényezőt 5-ről 100-ra növeljük, akkor az arányos vezérlőnk reléként kezd működni, ami a túllövés hatás miatt erős ingadozásokat okoz.

A RobotC nyelv nem rendelkezik olyan kényelmes jelöléssel a kódoló olvasásához, mint a Robolabban, ezért a program egy kicsit hosszabbnak tűnik:

int k=5, u; nMotorEncoder=0; míg (igaz)

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

Továbbá a „kardütés” leadásához elegendő a 45-ös szám helyett egy változót használni, és annak értékét kívülről megváltoztatni, például egy párhuzamos feladatból. Erről a 8. fejezet robotdobosairól szóló szakasza szól.

Most építsünk egy olyan szabályozót, amely nemcsak a motor statikus helyzetét, hanem mozgási sebességét is szabályozza. Az algoritmus logikáját követve az eddig állandó és változatlan alapjelnek el kell indulnia a növekedés vagy a csökkenés felé. A szabályozónak engedelmeskedve a motor elkerülhetetlenül követni fogja azt. Az alapjel értékének folyamatos növelésének legegyszerűbb eszköze az időzítő.

Az NXT vezérlő négy beépített időzítővel rendelkezik, amelyek mindegyike tized-, század- és ezredmásodpercben képes mérni az időt. Sajátítsuk el az első időzítőt, amely másodpercenként 10 „tippet” hajt végre.

kov". A Robolabban T1 vagy Timer100ms1, a RobotC-ben pedig timer100.

A motor eltérítési szöge alfa, pontban meghatározott előző példa 45 érték, függjünk a k 2 gyorsítótényezővel rendelkező időzítő leolvasásától:

alfa = k2 ∙ T1.

A vezérlési művelet változatlan marad k 1 erősítési tényezővel:

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

Röviden, a Robolab nyelvű programban a vezérlési műveletet közvetlenül a motorra alkalmazzuk, miután előzetesen inicializáltuk az időzítőt

Rizs. 7.9. A motor fordulatszám-szabályozása egy fordulat/másodperc.

A k 2 = 36 együttható azt határozza meg, hogy egy másodperc alatt az alfa érték 360-ra nő, ami a motor egy teljes fordulatának felel meg:

int k1=2, k2=36, u, alfa; nMotorEncoder=0; ClearTimer(T1); míg (igaz)

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

Az egész típusú változókra a C nyelvben (és a Robolabban) elfogadott egész számok osztásával diszkrét szögváltozást lehet elérni, pl. másodpercenként egyszer növeli:

alfa = T 1 / 10 ∙ k 2.

K 2 = 60 együttható esetén a sugár mozgása megfelel az óra számlapján lévő másodpercmutató mozgásának. De ez nem elég

észrevehető. Az egyértelműség kedvéért beállíthatja a k2 = 30 értéket, ekkor a nyíl teljes fordulatot tesz 12, egyenként 30 fokos „tick”-ben. Legyen óvatos az egész számok osztási és szorzási műveleteinek sorrendjével, ha megváltoztatjuk a sorrendet, vagy „kicsinyítjük” az eredményt (7.10. ábra).

Rizs. 7.10. Az óramutató mozgásának gyorsított utánzása.

És végül egy példa egy matematikai dobosra. Helyett állandó mozgás előre a nyíl előre-hátra oszcillál a P-szabályozó vezérlése alatt. Ebben segít a maradékkal való osztás művelete, amelyet C-ben a % jel jelöl. Egy nem negatív egész szám 2-vel osztva maradványa mindig 0 vagy 1 lesz:

alfa = T 1% 2 ∙ k 2.

Az eltérést k 2 = 15-szörösére növelve egy oszcilláló alfa alapjelet kapunk, amely arra kényszeríti a vezérlőt, hogy másodpercenként 5-ször mozgassa a motort, akár 0º, akár 15 fokkal. A programban kisebb változások történtek. Nézzünk egy példát a RobotC-ben:

int k1=3, k2=15, u, alfa; nMotorEncoder=0; ClearTimer(T1); míg (igaz)

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

Ez a dobos prototípus rendszeres időközönként kerül az asztalra. A lényeg az, hogy a megfelelő pozícióban kezdjük. Az egész matematika segítségével összetettebb ritmusmintát állíthat be, például (7.1. táblázat):

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

középpont = S3.

Az együtthatót a ciklusban határozzák meg:

k 1 = c + (S 3 - középpont) / k 2.

Rizs. 7.36. Mozgás a vonal mentén lebegő együtthatós arányos vezérlőn.

A kapott erősítésszabályozási törvény nemcsak az arányos komponensre, hanem bármely más komponensre, valamint a vezérlési művelet egészére is alkalmazható (7.36. ábra).

PID vezérlő

Az arányos-integrál-derivatív (PID) vezérlő az egyik legnépszerűbb, és a legtöbb eszközben használják. különböző típusok, amelyek gyors reagálást és a rendszer helymeghatározási pontosságát igénylik. Ahogy a neve is sugallja, ez a szabályozó három komponens összegéből áll, és grafikusan ábrázolja az 1. ábrán. 7.37.

Rizs. 7.37. PID vezérlő áramkör.

Ez egy egyszerűsített diagram. Az e (t) dinamikus hiba értéke a vezérlő bemenetére kerül, és a kimeneten generálódik az u (t) vezérlési művelet:

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

e (τ)d τ + k d ∙

de.

A diagramon háromszögként látható arányos komponens felelős a rendszer adott állapotba való pozicionálásáért. Egyes esetekben túllövést okozhat későbbi önrezgésekkel. Vagyis a P-szabályzó „túlzásba viszi”, és a robot elkezd egyik oldalról a másikra sodródni.

Az integrál komponens negatív tapasztalatokat halmoz fel (összegzi a hibákat), és kompenzáló hatást fejt ki. Minimális eltérések esetén az arányos komponens „gyengül”, az integrál komponens pedig az összegzéssel történő gyors növekedése miatt segíti a szabályozott érték „elérését” a beállított értékre.

A differenciálkomponens (D-komponens) figyeli a rendszer állapotának változásának sebességét, és megakadályozza az esetleges túllövést. Egyes esetekben a D-komponens az arányos előjellel ellentétes, más esetekben pedig ugyanaz.

Az arányos komponenst már ismerjük, a differenciálist az előző 6. fejezetben írtuk le. Vegyük az integrált. Ez a komponens dinamikusan kerül meghatározásra, az előző értékkel összegezve:

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

Az e(t) × dt mennyiség fizikai jelentése az, hogy az

arányos a rendszer hibás állapotának időtartamával. Mivel a k i együtthatót a zárójelekből kivesszük, az i értékről beszélhetünk a hibatartamok összegeként. Így az integrált összegzéssel találjuk meg.

Nézzük meg a PID-szabályozó használatát egy két keréken egyensúlyozó robot példáján. Ezt a klasszikus problémát különféle érzékelők segítségével többféleképpen is meg lehet oldani. A javasolt példában fényérzékelőt használunk és legegyszerűbb formája PID vezérlő. A robot stabilizálása azonban pontosabb szenzorleolvasást igényel.

RAW formátum

Az érzékelő adatok feldolgozatlan, nyers formában kerülnek az NXT vezérlőbe. Minden érzékelő egy 0-tól 1023-ig terjedő digitális értéket továbbít az operációs rendszernek, amit aztán a megfelelő illesztőprogram feldolgoz, és érthetőbb formára redukál (távolság 0...255, megvilágítás 0...100, érintés 0 vagy 1, stb.). Az adatok azonban közvetlenül, a vezető megkerülésével fogadhatók. Ezt a nyers formátumot általában RAW-nak hívják (az angol „raw”). Bizonyos esetekben nagyobb pontosság elérésére használható. Például a fényérzékelő értékek tartománya körülbelül 10-szeresére nőhet. Ezt a lehetőséget használják tovább.

RAW formátumban is fogadhat adatokat a Robolabban és a RobotC-ben is. Ehhez az érzékelőt ennek megfelelően inicializálják, és egy speciális előre definiált változó segítségével adatokat olvasnak ki belőle.

Egyensúlyozó robot

A Segway robot kialakítása az ábrán látható. 7.38: függőlegesen elhelyezett vezérlő, szorosan elhelyezett kerekek és lefelé néző fényérzékelő. Az algoritmus valamivel bonyolultabb lesz.

A Segway stabilizálásának elve kiegyensúlyozott helyzetben a következő. Ha a robot előrehajol, a fényérzékelő leolvasása megnő a visszavert fény miatt. Erre válaszul egy vezérlési művelet generálódik, amely arra kényszeríti a robotot, hogy előrehaladjon, és ezáltal ismét függőleges helyzetbe lépjen.

Ha hátrafelé mozog, az érzékelő leolvasása csökken, és a robot elkezd hátrafelé mozogni. Mindezért az arányos összetevő a felelős. Az integrál- és differenciálelemek szerepét a túllövés elleni biztosítás tölti be.

Rizs. 7.38. Kiegyensúlyozó Segway robot.

ábrán. A 7.39 mutatja a Robolab algoritmust. A legtöbbet a változók inicializálása foglalja el. A pontosság növelése érdekében nemcsak az érzékelő adatait olvassuk RAW formátumban, hanem a legtöbb változót valós lebegő formátumban deklarálják. Maga a PID algoritmus hurokban van.

Rizs. 7.39. A kiegyensúlyozó algoritmus egy PID-szabályozón alapul.

A vonal mentén történő mozgás hagyományát követve alapjelként a szürke változót használjuk - az egyensúlyi helyzetben lévő fényérzékelő átlagos leolvasását. Az új skála paraméter határozza meg a vezérlési művelet skálázását. Ez lényegében egy csillapítási tényező, mivel a szabályozó által előállított érték túl magas az NXT motorokhoz. Lehetséges lenne a meglévő együtthatókon belül hozzáadni, de a RobotC-nél ez a paraméter más lesz, de az együtthatók ugyanazok.

A megadott együtthatókkal a robot jól stabilizálódik egy sima, világos színű linóleumon vagy asztalon. Vagyis nem kell neki fehér felületek. Az indításhoz pontosan be kell állítania a Segwayt egyensúlyi helyzetbe. Ha a robot némi előre- vagy hátradőléssel indul, azonnal elindul a dőlés irányába.

A RobotC hasonló példája több okból is kissé eltér. Először is, az NXT teljesítménye ennek a környezetnek a firmware-ével körülbelül 1,4-szer nagyobb, mint a Robolabé, ezért a léptéktényezőt növelni kell. Másodszor, a RAW értékek átkerülnek ide megfelelő sorrendbenés vissza kell állítania a motorokat, vagy egyszerűen negatív vezérlési műveletet kell végrehajtania:

int gray=SensorRaw; int err, errold=0;

float kp=25, ki=350, kd=0,3; úszómérleg=14;

float dt=0,001; float p, i=0, d, u; míg (igaz)

err= szürke-SensorRaw; //Eltérés ellentétes előjellel p=kp*err;

i=i+ki*err*dt; d=kd*(err-errold)/dt; err=hiba; u=(p+i+d)/skála; motor=u; motor=u; várjon1Msec(1);

Az iskolai automatikus vezérlés elméletének elemei1

Fontos és érdekes módszertani feladat, hogy „hidat verjen” a szakember és a hallgató tudásterületei között, segítve az iskolásokat abban, hogy egy-egy leendő szak távlatait lássák, i. pályaorientációt végeznek, a hallgatók látják szakmai tudásuk gyakorlati alkalmazhatóságát. Hasonló hatás elérése érdekében a szabályozók kiszámítására szolgáló módszereket matematikai eszközökkel fejlesztettek ki, amelyek nem haladják meg iskolai programok matematikában és fizikában. Különösen ahelyett differenciálegyenletek különbségeket használnak, amelyek jól megfelelnek az objektum és a vezérlő közötti interakció diszkrét jellegének a számítógépes vezérlésben.

Nézzük például az arányos (P) és az arányos-derivatív (PD) vezérlők felépítésének problémáját a mozgásvezérlés problémájában. mobil robot a fal mentén. Jelöljük x t-vel a robot és a fal távolságát, θt-vel a robot irányszögét, u t-vel pedig a vezérlési műveletet az s pillanatban sorozatszámát t , ahol t = 0, 1, 2, … - a változási pillanatok száma

rénium. Úgy gondolják, hogy az érzékelők lekérdezése és a vezérlési művelet nagyságának változása egyenlő időközönként h. A Lego NXT robotok irányítási feladatainál természetes az a feltételezés, hogy a vezérlési művelet a különbség szögsebességek kerék forgása, arányos az irányszög változási sebességével:

Figyelembe véve a névleges θt =0 lefutási eltéréseket kicsi, és átlagsebesség robot állandó: vt=v, a robot állapotváltozóinak változásának dinamikája első közelítéssel leírható lineáris egyenletek kimondja:

ahol g = h2vr / b.

Állítsuk be a kívánt távolságot a faltól x*> 0-ra, és határozzuk meg az összefüggés alapján a szabályozási célt (CT).

xt → x* mint t→∞.

Most természetesen vezessük be szubsztantív szinten az aszimptotikus stabilitás fogalmát, mint a (4) rendszer megoldásainak tulajdonságát, biztosítva az (5) célérték elérését minden olyan kezdeti feltétel mellett, amely alig különbözik a célfeltételektől. Könnyen belátható, hogy u t = 0 esetén a (4) egyenlet megoldása tetszőleges x t = x* állandó érték. De mivel a (4) egyenlet, amely a kettős integrátor (dupla összeadó) modellnek felel meg, nem rendelkezik az aszimptotikus stabilitás tulajdonságával, az (5) vezérlőközpont nem érhető el állandó vezérléssel. Ez könnyen kimutatható analitikusan számos összefoglalásával