Lego ev3 proporcionální integrální diferenciální regulátor.

hlasy)

Proporcionální ovladač

Popis

V automatickém řízení je regulační akce u(t) obvykle funkcí dynamické chyby - odchylky e(t) regulované veličiny x(t) od její nastavené hodnoty x0(t):

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

Jedná se o Polzunov-Wattův princip regulace odchylkou, neboli princip zpětné vazby. Matematické vyjádření funkční závislosti požadované regulační akce u0(t) na veličinách měřených regulátorem se nazývá zákon nebo regulační algoritmus diskutovaný výše.

Proporcionální regulátor je zařízení, které působí na objekt úměrně jeho odchylce od daného stavu:

Zde k je zesílení regulátoru. Daný stav x0 se obvykle nazývá žádaná hodnota a odchylka od ní e se nazývá reziduální. V následujícím budeme pro jednoznačnost označovat zbytek zkratkou err (od anglické slovo

"chyba" - chyba).

Ovládání motoru

Zkušený válečník nebude máchat mečem jako robot na reléovém ovladači. Musíme vymyslet algoritmus, který bude držet motor držící meč ve striktně pevné poloze (obr. 7.1). S tím pomůže P-regulátor.

Nechť e 1 - hodnoty snímače rychlosti 1 na motoru A - je nastavitelná veličina. Nastavení x0 = 45 a zbytkové e = 45 – e 1. Potom je regulační působení na motor dáno vzorcem

u = k ∙ (45 – e 1).

Zde k je faktor zesílení, například 5, který zlepší odezvu motoru i při malých odchylkách od nastavené hodnoty.

1 Nezaměňujte matematické označení zbytkového e (z chyby) s údaji kodéru e 1 (z kodéru), předdefinované proměnné prostředí Robolabu. Pokud dojde k odchylce v pozitivní stránka

negativní řídicí vstup bude aplikován na motor a naopak. Toto ovládání lze aplikovat na motor v cyklu s krátkým zpožděním 1-10 ms pro odlehčení regulátoru (obr. 7.8).

Rýže. 7.8. Algoritmus řízení motoru pomocí proporcionálního regulátoru.

Jazyk RobotC nemá tak pohodlný zápis pro čtení kodéru jako v Robolabu, takže program vypadá trochu déle:

int k=5, u; nMotorEncoder=0; zatímco (pravda)

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

Dále, aby bylo možné provést „úder mečem“, stačí mít proměnnou místo čísla 45 a změnit její hodnotu zvenčí, například z paralelní úlohy. To je popsáno v části o robotických bubenících v kapitole 8.

Nyní sestrojme regulátor, který řídí nejen statickou polohu motoru, ale také rychlost jeho pohybu. Podle logiky algoritmu by se žádaná hodnota, která byla dosud konstantní a nezměnila se, měla začít pohybovat směrem ke zvýšení nebo snížení. Poslechne-li se regulátor, motor jej bude nevyhnutelně následovat. Nejjednodušším nástrojem pro plynulé zvyšování požadované hodnoty je časovač.

Ovladač NXT má čtyři vestavěné časovače, z nichž každý dokáže měřit čas v desetinách, setinách a tisícinách sekundy. Pojďme zvládnout první časovač, který provádí 10 „tipů“ za sekundu.

kov“. V Robolabu je označen T1 nebo Timer100ms1 a v RobotC je to timer100.

Udělejme úhel vychýlení motoru alfa, zadaný v předchozím příkladu na 45, závislý na údajích časovače s koeficientem zrychlení k 2:

alfa = k2 ∙ T1.

Kontrolní akce zůstane stejný s faktorem zesílení k 1:

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

Stručně řečeno, v programu v jazyce Robolab aplikujeme řídicí akci přímo na motor, když jsme předtím inicializovali časovač

Rýže. 7.9. Regulace otáček motoru je jedna otáčka za sekundu.

Koeficient k 2 = 36 určuje, že za sekundu se hodnota alfa zvýší na 360, což odpovídá jedné celé otáčkě motoru:

int k1=2, k2=36, u, alfa; nMotorEncoder=0; ClearTimer(T1); zatímco (pravda)

alfa=časovač100*k2; u=k1*(alpha-nMotorEncoder); motor=u;

Pomocí celočíselného dělení, jak bylo přijato v C (a Robolabu) pro proměnné celočíselného typu, je možné dosáhnout diskrétních změn úhlu, tzn. zvyšuje jednou za sekundu:

alfa = T1/10 ∙ k2.

Při koeficientu k 2 = 60 bude pohyb paprsku odpovídat pohybu vteřinové ručky na ciferníku hodinek. Ale to nestačí

patrný. Pro přehlednost můžete nastavit k2 = 30, poté se šipka otočí o 12 „tiknutí“ po 30 stupních. Pozor na posloupnost celočíselných operací dělení a násobení, změna jejich pořadí nebo jejich „zmenšení“ jistě změní výsledek (obr. 7.10).

Rýže. 7.10. Zrychlená imitace pohybu hodinové ručičky.

A na závěr příklad matematického bubeníka. Namísto neustálého pohybu vpřed bude jehla kmitat tam a zpět pod kontrolou P-regulátoru. Pomůže k tomu operace dělení se zbytkem, která se v C značí znakem %. Zbytek nezáporného celého čísla děleného 2 bude vždy 0 nebo 1:

alfa = T 1% 2 ∙ k 2.

Zvýšením odchylky o k 2 = 15krát získáme oscilující žádanou hodnotu alfa, která donutí regulátor pohnout motorem 5krát za sekundu, buď o 0º nebo 15 stupňů. Změny v programu jsou drobné. Podívejme se na příklad v RobotC:

int k1=3, k2=15, u, alfa; nMotorEncoder=0; ClearTimer(T1); zatímco (pravda)

alfa=časovač100%2*k2; u=k1*(alpha-nMotorEncoder); motor=u;

Tento prototyp bubeníka v pravidelných intervalech dopadá na stůl. Hlavní je začít ve správné pozici. Pomocí celočíselné matematiky můžete nastavit složitější rytmický vzor, ​​například (Tabulka 7.1):

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

střed = S3.

Koeficient se určuje v cyklu:

ki = c + (S3 - střed) / k2.

Rýže. 7.36. Pohyb po přímce na proporcionálním regulátoru s plovoucím koeficientem.

Výsledný zákon regulace zesílení lze aplikovat nejen na proporcionální složku, ale i na kteroukoli jinou složku, jakož i na regulační akci jako celek (obr. 7.36).

PID regulátor

Proporcionálně-integrálně-derivační (PID) regulátor je jedním z nejpopulárnějších a používá se v obrovském množství zařízení nej různé typy, které vyžadují rychlou odezvu a přesnost polohování systému. Jak název napovídá, tento regulátor se skládá ze součtu tří složek a je graficky znázorněn na Obr. 7.37.

Rýže. 7.37. Obvod PID regulátoru.

Toto je zjednodušený diagram. Hodnota dynamické chyby e (t) je přivedena na vstup regulátoru a na výstupu je generována regulační akce u (t):

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

e (τ)d τ + k d ∙

de.

Proporcionální složka, znázorněná v diagramu jako trojúhelník, je zodpovědná za umístění systému do daného stavu. V některých případech může způsobit překmit s následnými vlastními oscilacemi. To znamená, že P-regulátor to může „přehnat“ a robot se začne unášet ze strany na stranu.

Integrální složka shromažďuje negativní zkušenosti (sčítá chyby) a vytváří kompenzační účinek. S minimálními odchylkami proporcionální složka „slábne“ a integrální složka svým rychlým součtovým nárůstem pomáhá „dosáhnout“ regulované hodnoty na žádanou hodnotu.

Diferenciální složka (D-komponenta) sleduje rychlost změny stavu systému a zabraňuje možnému překmitu. V některých případech je D-složka ve znaménku opačné než proporcionální a v jiných je stejná.

Proporcionální složku již známe, diferenciální je popsána v předchozí kapitole 6. Vezměme si integrální. Tato složka je určena dynamicky, sečtena s předchozí hodnotou:

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

Fyzikální význam veličiny e(t) × dt je takový, že je

úměrné době trvání systému v chybovém stavu. Protože koeficient k i je vyjmut ze závorek, můžeme hovořit o hodnotě i jako o součtu trvání chyb. Integrál tedy najdeme součtem.

Uvažujme o použití PID regulátoru na příkladu robota balancujícího na dvou kolech. Tento klasický problém lze vyřešit pomocí různých senzorů různými způsoby. V navrhovaném příkladu je použit světelný senzor a nejjednodušší forma PID regulátor. Dosažení stabilizace robota však bude vyžadovat použití přesnějších údajů ze senzorů.

Formát RAW

Data ze senzorů vstupují do ovladače NXT v nezpracované, nezpracované formě. Všechny senzory vysílají operační systém digitální hodnotu od 0 do 1023, která je následně zpracována příslušným ovladačem a redukována do srozumitelnější podoby (vzdálenost 0...255, osvětlení 0...100, dotyk 0 nebo 1 atd.). Data však lze přijímat přímo, aniž by se řidič obešel. Tento raw formát se obvykle nazývá RAW (z anglického „raw“). V některých případech jej lze použít k dosažení větší přesnosti. Například rozsah hodnot světelného senzoru se může zvýšit přibližně 10krát. Právě této příležitosti se dále využívá.

Data ve formátu RAW můžete přijímat v Robolabu i RobotC. K tomu je senzor odpovídajícím způsobem inicializován a pomocí speciální předdefinované proměnné se z něj načítají data.

Vyvažovací robot

Konstrukce robota Segway je na Obr. 7.38: vertikálně umístěný ovladač, těsně umístěná kola a dolů směřující světelný senzor. Algoritmus bude poněkud složitější.

Princip stabilizace Segwaye ve vyvážené poloze je následující. Pokud se robot nakloní dopředu, hodnota na světelném senzoru se zvýší v důsledku odraženého světla. V reakci na to je generována řídicí akce, která nutí robota pohybovat se dopředu a tím opět zaujmout vertikální polohu.

Při pohybu dozadu se hodnoty senzoru sníží a robot se začne pohybovat dozadu. Za to vše může poměrná složka. Roli integrální a diferenciální složky hraje pojištění proti překmitu.

Rýže. 7.38. Vyvažovací robot Segway.

Na Obr. 7.39 ukazuje algoritmus v Robolabu. Většinu z toho zabírá inicializace proměnných. Pro zlepšení přesnosti jsou data snímače nejen čtena ve formátu RAW, ale většina proměnných je deklarována ve skutečném plovoucím formátu. Samotný PID algoritmus je ve smyčce.

Rýže. 7.39. Algoritmus balanceru je založen na PID regulátoru.

V souladu s tradicí pohybu podél linie používáme šedou proměnnou jako setpoint - průměrné hodnoty světelného senzoru v rovnovážné poloze. Nový parametr měřítka určuje měřítko ovládací akce. To je v podstatě faktor útlumu, protože hodnota vytvářená regulátorem je pro motory NXT příliš vysoká. Bylo by možné jej přidat do stávajících koeficientů, ale pro RobotC bude tento parametr jiný, ale koeficienty budou stejné.

S danými koeficienty se robot dobře stabilizuje na hladkém světlém linoleu nebo stole. To znamená, že nepotřebuje bílý povrchy. Ke spuštění je potřeba přesně nastavit Segway do rovnovážné polohy. Pokud se robot spustí s určitým nakloněním dopředu nebo dozadu, okamžitě se začne pohybovat ve směru naklonění.

Podobný příklad v RobotC je z řady důvodů mírně odlišný. Za prvé, výkon NXT s firmwarem tohoto prostředí je přibližně 1,4krát vyšší než výkon Robolabu, takže by měl být zvýšen faktor měřítka. Za druhé, hodnoty RAW se přenášejí ve správném pořadí a budete muset nastavit motory na reverzaci nebo jednoduše použít negativní řídicí akci:

int šedá=SensorRaw; int err, errold=0;

float kp=25, ki=350, kd=0,3; plováková stupnice=14;

float dt=0,001; float p, i=0, d, u; zatímco (pravda)

err= šedá-SensorRaw; //Odchylka s opačným znaménkem p=kp*err;

i=i+ki*err*dt; d=kd*(chyba-chyba)/dt; err=chyba; u=(p+i+d)/měřítko; motor=u; motor=u; wait1Msec(1);

Prvky teorie automatické ovládání ve škole 1

Důležitým a zajímavým metodickým úkolem je „hodit most“ mezi oblastmi znalostí odborníka a studenta a pomoci studentům školy vidět budoucnost budoucí specialita, tj. provádět kariérové ​​poradenství a studenti vidí praktickou využitelnost svých odborných znalostí. K dosažení podobného efektu byly vyvinuty metody pro výpočet regulátorů s využitím matematického aparátu, které nepřekračovaly rámec školních osnov v matematice a fyzice. Zejména místo toho diferenciální rovnice používají se rozdílové, které dobře odpovídají diskrétní povaze interakce mezi objektem a regulátorem při počítačovém řízení.

Uvažujme například problém konstrukce proporcionálních (P) a proporcionálně-derivačních (PD) regulátorů v problému řízení pohybu mobilního robota po stěně. Označme x t vzdálenost mezi robotem a stěnou, θt - úhel náběhu robota a u t - řídící akci v daném okamžiku s pořadovým číslem t, kde t = 0, 1, 2, ... - počet okamžiků změny

rhenium. Má se za to, že dotazování senzorů a změny velikosti řídicí akce se provádějí ve stejných časových intervalech h. Na úkoly Lego ovládání Roboti NXT přirozeně předpokládají, že rozdíl je v ovládání úhlové rychlosti rotace kola, úměrná rychlosti změny úhlu kurzu:

Za předpokladu, že odchylky kurzu od nominálního θt =0 jsou malé a průměrná rychlost robota je konstantní: vt=v, lze dynamiku změn stavových proměnných robota popsat v první aproximaci pomocí lineárních stavových rovnic. :

kde g = h2vr / b.

Nastavíme požadovanou vzdálenost ke stěně x*> 0 a vztahem určíme cíl kontroly (CT).

xt → x* jako t→∞.

Teď přirozeně Zaveďme na věcné úrovni koncept asymptotické stability jako vlastnosti řešení systému (4), zajišťující dosažení cílové hodnoty (5) za jakýchkoli počátečních podmínek, které se od cílových liší jen málo. Je snadné vidět, že pro u t = 0 je řešením rovnice (4) jakákoli konstantní hodnota x t = x*. Ale protože rovnice (4), odpovídající modelu dvojitého integrátoru (dvojitá sčítačka), nemá vlastnost asymptotické stability, řídicí centrum (5) není dosaženo konstantním řízením. To lze snadno analyticky demonstrovat sečtením několika

Jedním ze základních pohybů v lehké konstrukci je sledování černé linie.

Obecná teorie a konkrétní příklady tvorby programu jsou popsány na webu wroboto.ru

Popíšu, jak to implementujeme v prostředí EV3, protože existují rozdíly.

První věc, kterou robot potřebuje vědět, je význam „ideálního bodu“ umístěného na hranici černé a bílé.

Umístění červeného bodu na obrázku přesně odpovídá této poloze.

Ideální možností výpočtu je změřit černobílé hodnoty a vzít aritmetický průměr.

Můžete to udělat ručně. Nevýhody jsou však okamžitě viditelné: i po krátké době se osvětlení může změnit a vypočítaná hodnota bude nesprávná.

Můžete si tedy pořídit robota, aby to udělal.

Během experimentů jsme zjistili, že není nutné měřit jak černou, tak bílou. Lze měřit pouze bílou. A ideální bodová hodnota se vypočítá jako bílá hodnota dělená 1,2 (1,15), v závislosti na šířce černé čáry a rychlosti robota.

Vypočítaná hodnota musí být zapsána do proměnné, aby k ní bylo možné později přistupovat.

Výpočet „ideálního bodu“

Dalším parametrem zapojeným do pohybu je rotační koeficient. Čím je větší, tím ostřeji robot reaguje na změny osvětlení. Ale příliš skvělá hodnota způsobí kývání robota. Hodnota je vybrána experimentálně individuálně pro každý návrh robota.

Posledním parametrem je základní výkon motorů. Ovlivňuje rychlost robota. Zvýšení rychlosti pohybu vede ke zvýšení doby odezvy robota na změny osvětlení, což může vést k vybočení z trajektorie. Hodnota je také vybrána experimentálně.

Pro usnadnění lze tyto parametry také zapsat do proměnných.

Poměr otáčení a základní výkon

Logika pohybu po černé čáře je následující: měří se odchylka od ideálního bodu. Čím je větší, tím silnější by se měl robot snažit se k němu vrátit.

K tomu vypočítáme dvě čísla – hodnotu výkonu každého z motorů B a C zvlášť.

Ve formě vzorce to vypadá takto:

Kde Isens je hodnota hodnot světelného senzoru.

Nakonec implementace v EV3. Nejvýhodnější je uspořádat jej ve formě samostatného bloku.

Implementace algoritmu

To je přesně ten algoritmus, který byl v robotu implementován střední kategorie WRO 2015

Tento problém je klasický, ideově jednoduchý, dá se řešit mnohokrát a pokaždé pro sebe objevíte něco nového.

Existuje mnoho přístupů k vyřešení problému následujícího řádku. Výběr jednoho z nich závisí na konkrétní konstrukci robota, na počtu senzorů, jejich umístění vzhledem ke kolům a navzájem.

V našem příkladu budou analyzovány tři příklady robota na základě hlavního vzdělávacího modelu Robot Educator.

Pro začátek sestavíme základní model výukového robota Robot Educator, můžete k tomu využít návod v softwaru MINDSTORMS EV3.

Také například budeme potřebovat snímače barvy světla EV3. Tyto světelné senzory se jako žádné jiné pro náš úkol nejlépe hodí, při práci s nimi se nemusíme starat o intenzitu okolního světla. U tohoto senzoru v programech využijeme režim odraženého světla, ve kterém se odhaduje množství odraženého světla od červeného podsvícení senzoru. Limity hodnot snímače jsou 0 - 100 jednotek pro „žádný odraz“ a „úplný odraz“.

Jako příklad budeme analyzovat 3 příklady programů pro pohyb po černé trajektorii zobrazené na plochém světlém pozadí:

· Jeden snímač s P regulátorem.

· Jeden snímač s PC regulátorem.

· Dva senzory.

Příklad 1. Jeden snímač s P regulátorem.

Design

Světelný senzor se instaluje na paprsek vhodně umístěný na modelu.


Algoritmus

Činnost algoritmu je založena na skutečnosti, že v závislosti na stupni překrytí paprsku osvětlení senzoru černou čarou se hodnoty vrácené senzorem mění gradientně. Robot udržuje polohu světelného senzoru na hranici černá čára. Převedením vstupních dat ze světelného senzoru řídicí systém generuje hodnotu rychlosti otáčení robota.


Protože na reálné trajektorii snímač generuje hodnoty v celém svém provozním rozsahu (0-100), je vybrána hodnota 50, o kterou se robot snaží, v tomto případě jsou generovány hodnoty přenášené do rotačních funkcí rozsah -50 - 50, ale tyto hodnoty nestačí na strmé otočení trajektorie. Proto by měl být rozsah rozšířen jedenapůlkrát na -75 - 75.

Výsledkem je, že v programu je funkce kalkulačky jednoduchým proporcionálním regulátorem. Jeho funkce ( (a-50)*1,5 ) v provozním rozsahu světelného senzoru generuje hodnoty rotace podle grafu:

Příklad, jak algoritmus funguje

Příklad 2. Jeden snímač s regulátorem PK.

Tento příklad je založen na stejné konstrukci.

Pravděpodobně jste si všimli, že v předchozím příkladu se robot nadměrně kýval, což mu neumožňovalo dostatečně zrychlit. Nyní se pokusíme tuto situaci trochu zlepšit.

K našemu proporcionálnímu regulátoru také přidáváme jednoduchý krychlový regulátor, který přidá funkci regulátoru ohnutí. Tím se sníží kývání robota v blízkosti požadované hranice trajektorie a také dojde k silnějším trhnutí, když se od ní vzdálí.

Robotika je vzrušující nová oblast, která se bude pravděpodobně dále rozvíjet v rámci školních kurzů informatiky a technologií. Rozmach robotiky je z velké části způsoben tím, že nám umožňuje odpovědět na otázku: „Proč se vlastně učíme programovat?“

Kromě toho se v kurzu robotiky můžete seznámit se základními pojmy teorie automatického řízení.

Tato stránka představuje programovací simulátory a desky Arduino vyvinuté autorem. Mohou pomoci v případech, kdy z nějakého důvodu není možné použít skutečný hardware. Simulátory využívají možnosti HTML5, takže budou fungovat pouze v moderních prohlížečích (nejlepší je použít Google Chrome).

nebo Mozilla Firefox

Zprávy
nyní také na kanálu Telegram 27. listopadu 2015 Do simulátorů byla přidána dráha „embrya“ (

M.V. Lazarev
, Orechovo-Zuevo).
13. října 2015

Nyní si v simulátorech robotů LEGO můžete nahrát své vlastní dráhy (pole pro robota). Jak to udělat? Vidět.

Přibyly nové simulátory – LEGO roboti se dvěma, třemi, čtyřmi světelnými senzory. Jazyk ovládání robota (Pro ovládání robotů v simulátorech se používá jednoduchý programovací jazyk, který dostal pracovní název).

SiRoP

Jednoduché programování robotů

Ovládání robota se světelným senzorem

Světelný senzor umožňuje robotovi navigovat po povrchu stolu, například se pohybovat podél hranice mezi bílou a černou oblastí (po okraji černé čáry). Fotodioda osvětluje povrch, fotodetektor „zachytává“ odražené paprsky a měří jejich intenzitu.

Nejoblíbenějším úkolem tohoto typu je pohyb po čáře. Pomocí simulátoru můžete studovat různé zákonitosti řízení – reléové, proporcionální a dokonce i PID řízení (proporcionálně-integrálně-derivační).

Příklady programů pro robota se světelným senzorem

Hlavní ( zatímco 1 ( zatímco senzor > 128 ( motor = 100 motor = 100 čekání(10) ) zpět () otáčka() ) ) zpět ( motor = -100 motor = -100 čekání (260) ) otáčka ( motor = -50 motor = 50 čekání (50) )

Ovládání robota se dvěma světelnými senzory

Dva světelné senzory umožňují robotovi lepší navigaci a jízdu po tenké čáře. Jsou trochu posunuty dopředu a roztaženy do stran. Stejně jako u úloh s jedním senzorem lze tento simulátor použít ke studiu různých zákonů řízení.

Příklady programů pro robota se třemi světelnými senzory

Ovládání robota se čtyřmi světelnými senzory

Čtyři světelné senzory umožňují robotu lépe detekovat ostré zatáčky. K jemnému nastavení slouží vnitřní snímače; Dva externí senzor nesený mírně dopředu a roztažený do stran. Používají se při ostré zatáčce. Zesílení pro řízení na základě údajů ze snímačů externího páru je zvoleno větší než pro vnitřní pár (viz. L.Yu Ovsyanitskaya et al., Algoritmy a programy pro pohyb robota Lego Mindstorms EV3 podél linie, M.: „Pero“, 2015).

Příklady programů pro robota se čtyřmi světelnými senzory

Zatímco 1 ( d0 = snímač > 128 d1 = snímač > 128 d2 = snímač > 128 d3 = snímač > 128 if d1 & !d2 ( motor = 100 motor = 0 ) if! d1 & d2 ( motor = 0 motor = 100 ) jestliže d1 == d2 ( motor = 100 motor = 100 ) if d0 & !d3 ( motor = 30 motor = 0 ) if!d0 & d3 ( motor = 0 motor = 30 ) čekat(10) )

K1 = 0,2 k2 = 0,4 zatímco 1 ( u1 = snímač - snímač u2 = snímač - motor snímače = 50+k1*u1+k2*u2 motor = 50-k1*u1-k2*u2 počkat(10) )

Ovládání robota pomocí senzoru vzdálenosti (sonar)

Senzor vzdálenosti (sonar) umožňuje určit vzdálenost k nejbližší překážce, když se robot pohybuje. Vysílá ultrazvukový signál a přijímá odražený signál. Jak více času mezi vysílaným a přijímaným signálem, tím větší je vzdálenost.

Pomocí senzoru vzdálenosti lze robota naprogramovat tak, aby automaticky procházel bludištěm známého tvaru, ale neznámé velikosti.

Podrobnosti Autor: Konovalov Igor     Proporcionální regulátor je vylepšením. Hlavní nevýhodou relé je, že se nestará o to, jak se aktuální hodnoty liší od normální hodnoty snímače. Má pouze dva stavy - buď se pokusit zvýšit hodnoty senzoru o určité konstantní číslo, pokud jsou menší než normální hodnota, nebo je zvýšit. Kvůli tomu dochází ke kmitům s konstantní amplitudou, což je velmi neefektivní.
    Je mnohem logičtější určit, jak „daleko“ jsou aktuální hodnoty od normálu, a v závislosti na tom změnit amplitudu. Aby to bylo jasnější, podívejme se na příklad. Příklad jako v předchozím článku je stejný: robot z Lego Mindstorms EV3 jede po černé čáře pomocí jednoho barevného senzoru ve světelném režimu.

Robot se snaží jet po hranici mezi bílou a černou a tam senzor ukazuje přibližně 50 % osvětlení. A čím dále je od normální polohy, tím větší úsilí robot vynakládá na návrat na 50 %.
    K napsání programu budeme používat termíny „chyba“ a „kontrolní akce“. Chyba je rozdíl mezi aktuální hodnotou snímače a normální hodnotou. V našem případě, pokud robot nyní vidí 20 % osvětlení, pak je chyba 20-50 = -30 %. Chybová značka označuje, kterým směrem by se měl robot otočit, aby se chyby zbavil. Nyní musíme říci motorům, kterým směrem se má robot otočit, jakou rychlostí a jak ostře. Na motory je nutné vyvinout regulační účinek, to znamená, jak rychle se má vrátit do své normální polohy. Regulační akce (UP) se vypočítá jako chyba (chyba) násobená faktorem úměrnosti (k). Tento koeficient se používá ke zvýšení nebo snížení vlivu chyby na regulační akci. Řídící vstup je odeslán do řízení, kde se nastavuje průměrná rychlost robota.
    Jak upravit faktor proporcionality? Hodnoty vybírejte experimentálně pro jízdu po trajektorii, může to být například od 0,2 do 1,5, v závislosti na rychlosti a konstrukci robota. Pokud je koeficient příliš velký, bude se robot hodně kývat, pokud je malý, pojede plynule, ale v určitém okamžiku při zatáčení sklouzne kvůli nedostatečnému řídicímu vstupu. Napišme dvě verze programu – s proměnnými (pro ty, kteří je již studovali) a bez.


    Tento regulátor lze ale také posílit zavedením proporcionální a integrální složky, popis bude v následujících článcích. Brzy se uvidíme!