Tidskontinuerlig matematisk modell i en mikrokontroller?
Tidskontinuerlig matematisk modell i en mikrokontroller?
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!
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!
Re: Tidskontinuerlig matematisk modell i en mikrokontroller?
Har du olinjära modeller är ett tips att titta på Unscented Kalman Filter (UKF).
- Greve Hamilton
- EF Sponsor
- Inlägg: 542
- Blev medlem: 4 september 2004, 15:03:35
- Ort: GBG
Re: Tidskontinuerlig matematisk modell i en mikrokontroller?
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?
\(\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?
Re: Tidskontinuerlig matematisk modell i en mikrokontroller?
Vänta lite. Hur menar du? Måste jag använda en diskret modell eller tidskontiunerlig modell?
Re: Tidskontinuerlig matematisk modell i en mikrokontroller?
UKF är för när man kräver statistisk analys för att linjärisera.Andax skrev:Har du olinjära modeller är ett tips att titta på Unscented Kalman Filter (UKF).
För mekanik och hydraulik så fungerar EKF utmärkt.
Re: Tidskontinuerlig matematisk modell i en mikrokontroller?
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
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.
Vad skulle hända om man satte \(dt = 0.000000000001\) ?
Vi säger att jag har en arduino och jag "loopar" igenom dessa
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.
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping
- Swech
- EF Sponsor
- Inlägg: 4694
- Blev medlem: 6 november 2006, 21:43:35
- Ort: Munkedal, Sverige (Sweden)
- Kontakt:
Re: Tidskontinuerlig matematisk modell i en mikrokontroller?
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
Re: Tidskontinuerlig matematisk modell i en mikrokontroller?
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:
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.
Jag håller på med kalmanfiltrering och LQ-teknik. LQ-teknik, eller rättare sagt LQGI regulatorer som ser ut så här:
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.
Re: Tidskontinuerlig matematisk modell i en mikrokontroller?
Jag uppfattar att ni inte förstår vad jag pratar om? Eller hur?
Vill ni ha en bättre förklaring?
Vill ni ha en bättre förklaring?
- 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?
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.
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.
Re: Tidskontinuerlig matematisk modell i en mikrokontroller?
Ä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.Det blir inte tusentals rad koder. Det blir endast lite matrisberäkningar
Edit: 2:a på bollen...
- Greve Hamilton
- EF Sponsor
- Inlägg: 542
- Blev medlem: 4 september 2004, 15:03:35
- Ort: GBG
Re: Tidskontinuerlig matematisk modell i en mikrokontroller?
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.Volvo740 skrev:Vänta lite. Hur menar du? Måste jag använda en diskret modell eller tidskontiunerlig 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.
- 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?
Och sedan i C på en PC om du ska implementera det i C på en MCU.