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ő.
A fényérzékelő a modellen kényelmesen elhelyezett gerendára van felszerelve.
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:
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).
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.
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).
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) )
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
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) )
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.
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