Tidskontinuerlig matematisk modell i en mikrokontroller?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Tidskontinuerlig matematisk modell i en mikrokontroller?

Inlägg av Volvo740 »

Hej! En mycket sen fråga det här.

Vad skulle hända om jag implementerar en tidskontinuerlig matematisk modell i en mikrokontroller?

Anta att vi har ett system av olinjära differentialekvationer som är skrivna på de olinjära tillståndsformerna:
\(\dot{x}(t) = f(x(t), u(t)) + d(t)\)
\(y(t) = h(x(t)) + n(t)\)

Där \(x(t)\) är en tillståndsvektor, \(u(t)\) är insignalsvektor, \(d(t)\) är en störningsvektor, \(n(t)\) är en brusvektor och \(y(t)\) är en utsignalvektor.

Vi säger att vi ska bygga ett Extended Kalman Filter. Ett utökat kalmanfilter är ett olinjärt filter som linjäriserar inom en viss punkt. I detta fall så linjäriserar vi hela tiden i det estimerade/skattade tillståndet \(\hat{x}\).

\(\dot{\hat{x}}(t) = f(x(t), u(t)) + K(t)[y(t) - h(\hat{x(t)})\)

Där \(K(t)\) är vårt kalman filter och \(y(t)\) är mätningen och \(h(\hat{x(t)})\) är estimeringen.
Om jag vill nu veta \(\hat{x}(t)\) från \(\dot{\hat{x}}(t)\) så måste jag ta denna algoritm:

\(\hat{x}(t) = \hat{x}(t) + \dot{\hat{x}}(t)dt\)

Från börjar vid första algoritmkörningen så är \(\hat{x}(t) = 0\) och därmed blir
\(\hat{x}(t) = 0 + \dot{\hat{x}}(t)dt\)

\(dt\) representerar samplingstiden i sekunder. Nu är detta ett tidskontinuerligt filter och inte diskret filter. Tror ni att detta skulle fungera bra i en mikrokontroller att använda tidskontinuerlig matematisk modell och undvika det med diskret matematisk modell?

Orsaken varför jag frågar är att skapa detta:
\(\dot{x}(t) = f(x(t), u(t))\)

Är mycket enkelt!

Att skapa detta(diskret modell):
\(\dot{x}_{k+1}= f(x_k, u_k)\)

Är riktigt svårt!
Användarvisningsbild
Andax
Inlägg: 4373
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Tidskontinuerlig matematisk modell i en mikrokontroller?

Inlägg av Andax »

Har du olinjära modeller är ett tips att titta på Unscented Kalman Filter (UKF).
Användarvisningsbild
Greve Hamilton
EF Sponsor
Inlägg: 542
Blev medlem: 4 september 2004, 15:03:35
Ort: GBG

Re: Tidskontinuerlig matematisk modell i en mikrokontroller?

Inlägg av Greve Hamilton »

Nej, du kommer inte undan att skapa en tidsdiskret modell på ett eller annat vis. Metoden du beskriver är just den mest rättframma för att skapa en sådan modell. Det vill säga att approximera tidsderivatan:

\(\dot x(t_k) \approx \frac{x(t_{k+1})-x(t_{k})}{t_{k+1}-t_{k}}\)

Så att diskretisera ett vanligt system \(\dot x = f(x, u)\) på det viset resulterar helt enkelt i att \(x_{k+1} = x_{k} + f(x_{k}, u_{k}) dt = F(x_k, u_k)\)

Det finns andra metoder att göra detta, men huruvida denna duger eller inte beror på din samplingstakt, snabbhet på systemdynamik, noggranhetskrav osv...

Exakt vad försöker du göra?
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Tidskontinuerlig matematisk modell i en mikrokontroller?

Inlägg av Volvo740 »

Vänta lite. Hur menar du? Måste jag använda en diskret modell eller tidskontiunerlig modell?
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Tidskontinuerlig matematisk modell i en mikrokontroller?

Inlägg av Volvo740 »

Andax skrev:Har du olinjära modeller är ett tips att titta på Unscented Kalman Filter (UKF).
UKF är för när man kräver statistisk analys för att linjärisera.

För mekanik och hydraulik så fungerar EKF utmärkt.
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Tidskontinuerlig matematisk modell i en mikrokontroller?

Inlägg av Volvo740 »

En nyfiken fråga!

Vad skulle hända om man satte \(dt = 0.000000000001\) ?

Vi säger att jag har en arduino och jag "loopar" igenom dessa
Bild

Ni kanske inte förstår ett skit, men dessa är tidsberoende ekvationer och förändrar sitt värde över tiden. Om jag säger att min arduino ska inte ha någon fördröjning alls. Alltså måste denna arduino fungera i praktiken som en tidskontinuerlig processor? Ungefär. Inte exakt. Men en Arduino gör 16 miljoner loopar per sekund och det uppfattar jag som väldigt snabbt.
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: Tidskontinuerlig matematisk modell i en mikrokontroller?

Inlägg av lillahuset »

Vilken Arduino tänker du på då?
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Tidskontinuerlig matematisk modell i en mikrokontroller?

Inlägg av Volvo740 »

UNO eller Mega. 16 Mhz.
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4689
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: Tidskontinuerlig matematisk modell i en mikrokontroller?

Inlägg av Swech »

:humm:
En 16MHz Arduino (AVR) kan utföra 16miljoner instruktioner per sekund
men dina formler omvandlat till kod lär bli tusentals rader
så hastigheten blir långt ifrån det du tror per "loop".

Nyfiken fråga, vad är det du håller på med då dina beräkningar och filterprylar är minst sagt "avancerade"

Swech
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Tidskontinuerlig matematisk modell i en mikrokontroller?

Inlägg av Volvo740 »

Det blir inte tusentals rad koder. Det blir endast lite matrisberäkningar.

Jag håller på med kalmanfiltrering och LQ-teknik. LQ-teknik, eller rättare sagt LQGI regulatorer som ser ut så här:
Bild

Dessa är optimala multivariabla regulatorer som bygger på att man har en bra matematisk modell av systemet. Man kan även använda olinjära matematiska modeller om man känner för det, vilket jag är inne på att lära mig.

LQE är vårt digitala filter. Detta filter gör två saker: 1. Skatta alla signaler i systemet, från en enda signal. 2. Filtrera bort brus från alla frekvenser.

LQR är vår regulator. I detta fall kan man säga att det är en multi PD-regulator, men den deriverar på ett annorlunda sätt än vad en PID gör.

En LQR deriverar inte på
\(\dot{f(x)}= \frac{f(x + h) - f(x)}{h}\)

Där \(h -> 0\)

Gör man detta i en PID så är risken att derivatan går mot oändligheten. Inte kul! En LQR deriverar på förändringshastigheten i sträckan är och det är en viss skillnad att derivera med avseende på sträckan och att numeriskt beräkna derivatan i tidsplanet. Detta betyder att en LQ-regulator är tålig emot brus, riktigt kraftigt brus också.

LQI är vår integrator. Denna fungerar som en vanlig integrator, utan reset. LQI integrerar felet mellan börvärde \(r(t)\) och \(y\), precis som vanligt. När \(r(t)= y \forall t\)så blir integralen konstant.
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Tidskontinuerlig matematisk modell i en mikrokontroller?

Inlägg av Volvo740 »

Jag uppfattar att ni inte förstår vad jag pratar om? Eller hur?

Vill ni ha en bättre förklaring?
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: Tidskontinuerlig matematisk modell i en mikrokontroller?

Inlägg av lillahuset »

Vad hade du tänkt att använda för datatyper för beräkningarna? Heltal, flyttal? Hur långa.
Hur många matematiska operationer blir det per loop? Addition, subtraktion, multiplikation, division, annat?
Hur mycket data behandlar du per loop? Alltså hur många, låt oss kalla det "variabler", handlar det om? En matris MxN är MxN "variabler". Konstanter?

Edit: Jag förstår inte men det är ingen idé att du försöker förklara. :)
mAVRick
Inlägg: 319
Blev medlem: 19 mars 2013, 12:43:43
Ort: Östersund

Re: Tidskontinuerlig matematisk modell i en mikrokontroller?

Inlägg av mAVRick »

Det blir inte tusentals rad koder. Det blir endast lite matrisberäkningar
Även om det inte blir tusentals rader kod, så blir det loopar över matriserna och med datatyper som är större än 8 bitar, kanske tom flyttalsberäkningar i mjukvara, så är du väldigt snabbt uppe i tusentals instruktioner som ska exekvera, även om det bara är några få rader kod.

Edit: 2:a på bollen... :)
Användarvisningsbild
Greve Hamilton
EF Sponsor
Inlägg: 542
Blev medlem: 4 september 2004, 15:03:35
Ort: GBG

Re: Tidskontinuerlig matematisk modell i en mikrokontroller?

Inlägg av Greve Hamilton »

Volvo740 skrev:Vänta lite. Hur menar du? Måste jag använda en diskret modell eller tidskontiunerlig modell?
Jag menar att din metod i ditt ursprungliga inlägg i princip är rätt, men att det du har kommit fram till faktiskt är en tidsdiskret modell.

Jag föreslår att du sätter dig och labbar med detta i Matlab/Octave/IPython eller liknande innan du implementerar det på en mcu.
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: Tidskontinuerlig matematisk modell i en mikrokontroller?

Inlägg av lillahuset »

Och sedan i C på en PC om du ska implementera det i C på en MCU.
Skriv svar