Sledovač čáry - PD nebo PID

Bodie
Příspěvky: 110
Registrován: 05 kvě 2013, 17:52

Sledovač čáry - PD nebo PID

Příspěvek od Bodie » 02 kvě 2014, 22:40

Zdravím všechny.

Tak mě napadla zase jednou myšlenka, jaký regulátor používáte na svých sledovačích? Já zatím vždy používal PD. A zde krátké odůvodnění. A zasvěcení snad prominou, že používám výraz PID a ne PSD, jak bych u diskrétního regulátoru měl ;-)

Vezmeme-li to v terminologii, tak robot sledující čáru sám o sobě je soustava astatická. Co to znamená?
Složitě:
V přenosu v operátorové oblasti jde ze jmenovatele vytknout operátor s.
Jednoduše:
Robot má sám o sobě integrační charakter.
Praktické vysvětlení:
Pro zjednodušení teď uvažujme že nastavujeme rychlost kol. Čára bude u robotu na kraji senzoru a jinak robot pojede rovnoběžně s čárou. Ta nikam neuhýbá. Pokud pouze změním jednou rychlost kola tak, aby se přesouvala čára na střed senzoru, znamená to, že robot se lehce otočí. A i kdyby pak jel zase rovně - obě kola stejně rychle, bude se po čáře postupně posouvat z jedné strany na druhou = integruje původní změnu rychlosti jednoho kola.
Jako druhé vysvětlení třeba tato skutečnost. Kdo jste četli článek na robotika.cz o regulátorech, tak víte, že P regulátor nedokáže dosáhnout nulové regulační odchylky.. Ale u astatické soustavy to neplatí, tedy robot může být při nízké rychlosti uspokojivě řízen pouze P regulátorem a bude držet čáru na středu senzoru.

No, pokračování úvahy. P složka zvyšuje dynamiku regulátoru a robotu, větší reakce na výchylku. D složka reaguje na diferenci v pozici čáry, můžeme říct, že když ji zvyšujeme, zamezujeme tím kmitání kolem ustálené hodnoty po výjezdu ze zatáčky. Ale musí se ladit s rozumem. Obě tyto složky zvyšují dynamiku regulátoru i robotu, D složka pomáhá té P při nájezdu do zatáčky. No a co I? Ta totiž dynamiku snižuje. Zvyšuje stabilitu, to ano, ale zpomalí reakce robotu. Tedy při nájezdu do zatáčky bude pomaleji reagovat. A z teorie vyplývá, že je-li soustava astatická, není potřeba I složka regulátoru.

Tedy zpátky k původní otázce - jaký regulátor a proč používáte? Jak se vám osvědčily jeho vlastnosti, proč? Zkoušeli jste na nějakém jednom stroji porovnávat PD a PID regulátor?

PS: Chtěl jsem přidat přímo hlasování, ale nemůžu ho nikde najít...

Uživatelský avatar
Sam
Příspěvky: 62
Registrován: 14 lis 2013, 12:53

Re: Sledovač čáry - PD nebo PID

Příspěvek od Sam » 05 kvě 2014, 19:12

Bodie, ty jsi specialista na záludné otázky :D !
U PICAXE (20M2) používáme "ošizený" PI regulátor typu ZAU (Zkusím A Uvidím). Problém PICAXE je, že neumí záporná čísla, takže je nutné pohlídat, aby koeficienty byly kladné. Lze namítnout, že pokud koeficient "přeteče", je možné to ošetřit programem. Ale to je právě zádrhel u PICAXE. Procesor by více počítal než řídil. Integrační složka je nepatrná v porovnání s P složkou. Ale funguje to docela dobře...
Začali jsme experimentovat s Arduinem (zatím 2 stroje), vypadá to nadějně...
Víc možná později...

Bodie
Příspěvky: 110
Registrován: 05 kvě 2013, 17:52

Re: Sledovač čáry - PD nebo PID

Příspěvek od Bodie » 06 kvě 2014, 09:08

No a zkoušeli jste to samé bez I složky?
Myslím že by to napsat člo i na PICAXE, akorát by se jinak musely ošetřit meze, nicméně já bych se do toho nepouštěl :-)

Dělal jsme před pár dny test s I složkou regulátoru. Podle nastavení při nájezdu do zatáčky robot začal točit o něco později, ale během jejího průjezdu pak postupně přidával, obšem na výjezdu je to zas horší, protože robt prostě musí překmitnout středovou polohu, aby se sumační složka (integrační) mohla vynulovat. V nižších rychlostech budiž, tam se to tvářilo eventuelně použitelně, ale při vyšších jsme nenašel žádné nastavení, při kterém by se to chovalo lépe než PD. Otázkou je nejen úprava konstanty I, ale taky saturační limity, nejde přece počítat až do nekonečna.

Jen se divím, že se sem nikdo nevyjadřuje. Mám za to že sledovače staví celkem dost lidí. No, škoda..

Uživatelský avatar
Sam
Příspěvky: 62
Registrován: 14 lis 2013, 12:53

Re: Sledovač čáry - PD nebo PID

Příspěvek od Sam » 06 kvě 2014, 09:45

Nooo, jezdil jsem s tím v Hranicích (s PICAXE) a první mi dával v průměru čtyři sekundy na kolo.
Na to, že moje stroje jsou v podstatě prototypem pro středoškoláky to nebylo špatné...
Ale určitě se to dá ještě poladit. To se vždy :P .

MechEdu

Re: Sledovač čáry - PD nebo PID

Příspěvek od MechEdu » 06 kvě 2014, 21:34

Dobrý večer,
je důležité jaký používáte algoritmus regulátoru, tedy zda regulátor máte absolutní, nebo přírůstkový.

(u...akční veličina)
Absolutní tvar:
u=PID
Přírůstkový tvar:
u=u+PID

Pokud používáte absolutní tvar, pak bez integrační složky by linefollower (lf) asi moc dobře nefungoval. Přírůstkový tvar již z podstaty má "integraci" v sobě, tedy "I" složka může být vynechána. Souhlasím s názorem, že "PD" v přírůstkovém tvaru může být pro "lf" ideální řešení, ale ...

Ale, je nutné mít na paměti, že pokud "čáru" považujeme za regulační předpis, pak pro pro různé tratě a různé roboty, může být "ideální" jiné řešení. Dále, že "dobře" odladěný regulátor, nemusí nutně znamenat nejrychlejší čas. Přeci jenom na závodech "lf" se nezískávají body za umělecký dojem.

Důležité je, jakým způsobem měřím polohu čáry. Platí notoricky známé pravidlo, že nemohu řídit přesněji, než měřím...

Bodie
Příspěvky: 110
Registrován: 05 kvě 2013, 17:52

Re: Sledovač čáry - PD nebo PID

Příspěvek od Bodie » 06 kvě 2014, 23:08

Zatím na všech strojích používám tvar absolutní. Teda, mno, ono nejde tohle přímo říct, tzv. korekce se počítá v absolutním tvaru, ale následně slouží k úpravě požadované rychlosti jednoho z motorů

correction = P * error + D * (error - last_error)

A podle znaménka korekce se snižují o tuto hodnotu otáčky jednoho z motorů. Tedy absolutní tvar. A z výše popsaných úvah a teorie získané ve výuce robota prostě vidím jako astatickou soustavu.

Ještě bych rád pořešil jednu věc, když už se tu bavím se dvěma lidmi - v jakém tvaru realizujete PID? Já ho testoval takto, vše funguje stejně jako jsem tady popsal:

correction = P * error + I * sum_error + D * (error - last_error)

Ale co se dívám do jednoho zápisu z diskuze s člověkem z praxe, tak by ten výpočet měl vypadat jinak:

u(k) = P * e(k) + T/Ti * e(k) + u(k-1) + Td/T [e(k) - e(k-1)]

Asi by nebylo od věci zkusit i ten druhý zápis...
A myslím, že vyladěný regulátor je celkem podstatný na soutěžích, protože s nevyladěným robot ujede delší dráhu a tak i při vyšší rychlosti může být ve výsledku pomalejší.

MechEdu

Re: Sledovač čáry - PD nebo PID

Příspěvek od MechEdu » 07 kvě 2014, 15:14

Dobrý den, domnívám se, že jste si poznamenal výraz špatně:

u(k) = P * e(k) + T/Ti * e(k) + u(k-1) + Td/T [e(k) - e(k-1)]

dobře by mělo podle mého být:

u(k) =u(k-1)+ P * {e(k) + T/Ti * e(k) + Td/T [e(k) - e(k-1)]}

což by se nejvíce blížilo výrazu, se kterým pracuji já (Petr Klán; Raymond Gorez, Process Control)

u(k)=u(k-1)+kp*[e(k)-e(k-1)]+kp*[(T*e(k)/Ti]+kp*{Td*[e(k-2)-2e(k-1)+e(k)]/T}

přičemž
T.... vzorkovací perioda
Ti....integrační časová konstanta
Td...derivační časová konstanta

a jelikož se ten výraz špatně čte, lze jej přepsat "programátorsky" takto:

while(true)
... // načtení y
e1=w-y
de=e1-e2
d2e=de-de1
u=u+Kp*(de+(T/Ti)*e1+(Td/T)*d2e)
... // zamezení Windup efektu
... // akční zásah
e2=e1
de1=de
wait(T)
end;

Samozřejmě celý "kolotoč" se točí ohledně určení Kp,Ti, Td, T .

Uživatelský avatar
Sam
Příspěvky: 62
Registrován: 14 lis 2013, 12:53

Re: Sledovač čáry - PD nebo PID

Příspěvek od Sam » 07 kvě 2014, 20:06

Používáme důsledně tvar:
correction = P * error + I * sum_error + D * (error - last_error)
Je to částečně určeno vývojem našich strojů (PICAXE), částečně úrovní znalostí žáků.
Řekl bych, že 90% robotů ze středních škol jezdí systémem Bak-bak (motor běží - stojí)...
Díky za těch 10%!

Bodie
Příspěvky: 110
Registrován: 05 kvě 2013, 17:52

Re: Sledovač čáry - PD nebo PID

Příspěvek od Bodie » 07 kvě 2014, 21:25

Myslím že jsem to špatně neopsal ;-) Ale v několika předmětech jsme regulátory řešili buď v čistě paralelním tvaru (rovnice, kterou jsem psal), nebo se sériově předřazenou zesilovací konstantou Kp a následně jsou všechny výrazy v závorce, jak uvádíte. Ale určitě by bylo zajímavé tento tvar vyzkoušet.

Řada lidí dle mě u sledovačů periodu regulátoru neřeší, prostě je tak, jak vyjde kvůli výpočtům a měření pozice čáry. Proto poté ten zjednodušený zápis s P,I a D konstantami.

MechEdu

Re: Sledovač čáry - PD nebo PID

Příspěvek od MechEdu » 08 kvě 2014, 19:52

Dobrý večer,
připravil jsem jednoduchý prográmek, který má sloužit k hraní si s regulátory. Využívám k tomu naše technologie, nicméně asi nebude problém "ideu" zpracovat do jakéhokoliv systému (PicAxe, Arduino). Důležitý je algoritmus, který je vizualizován v "program grafu". Za blokem start je vše důležité, ostatní je "ekosystém" pro komunikaci s "dashboardem". Řízenou soustavu tvoří DC motor s kódovacím kolečkem, zpětnou vazbu tvoří optická brána. která nemá implementovány HW filtry. Tedy jednoduchý filtr se realizuje softwarově. Požadovaná veličina je frekvence otáčení motoru.
Video mi fórum nedovolilo připojit, tak jej zítra zveřejním na: https://www.facebook.com/mechatronic.education
Přílohy
psdPanel.png
psd.png
PSD

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti