Var och köpte mig en liten RC helikopter i veckan och det tog inte lång tid innan man började fundera på nån form av autopilot till den. Kom ihåg att det varit uppe här på forumet innan så jag kollade lite i dessa trådar och kom då fram till att en IMU hade varit bra till detta. Däremot har jag inte hittat så mycket mer info om hur dessa fungerar så jag tänke höra efter här. Kanske nån som lyckats bygga ihop ett eget IMU system ?
Har kommit fram till att det behövs tre gyron och tre accelerometrar för att kunna bestämma position och hastighet utifrån en given startposition och hastighet. Vinkelhastigheterna runt systemets tre axlar mäts med gyrona som integeras till vinklar som då beskriver systemets orientering. Accelerometrarna ger accelerationen längs systemets tre axlar och integreras till hastighet och position. Med hjälp av systemets orientering så transformeras sen accelerationerna längs systemtets axlar om till axlar i ett fixt kordinatsystem. Efterom orienteringen är känd kan även tyngdkraftens bidrag subtraheras bort.
Ovanstående antar jag löses med en del trigonometriska samband men har läst på flera ställen att de använt kalmanfilter. Har inte varit så detaljerat beskrivet så jag antar att de menar att de använt det för att kompensera driften hos IMU systemet med andra system såsom GPS eller kan man använda kalmanfilter i själva IMU systemet också på något sätt ?
/Magnus
Funderingar kring IMU
Rent teoretiskt - ja, det borde fungera. Rent praktiskt så kommer det inte gå så bra att integrera accelerometrarnas värde två gånger och få en position. Då du integrerar två gånger så skulle minsta lilla fel skulle göra att systemet driver. Bara vibrationerna från helikoptern innebär nog problem.
Vilken nogrannhet vill du uppnå med systemet? Att flyga 1km, från punkt A till punkt B är ju inte svårt med en GPS om reglerprocessen sker långsamt (ser nog rätt konstigt ut när helikoptern flyger annars =) )
Vilken nogrannhet vill du uppnå med systemet? Att flyga 1km, från punkt A till punkt B är ju inte svårt med en GPS om reglerprocessen sker långsamt (ser nog rätt konstigt ut när helikoptern flyger annars =) )
Är det INU du menar Inertial Navigation Unit?
Jag har/och arbetar rätt så mycket med tröghetsnavigeringssystem...
Oftast så är själva kalmanfiltert den stora hemligheten från tillverkaren för att få det hela till att fungera nått så när bra.
Filtert "lärsig" under tiden och kompenserar för diverse fel och avvikelser ifrån sensorerna.
/ Jeppsson
Jag har/och arbetar rätt så mycket med tröghetsnavigeringssystem...
Oftast så är själva kalmanfiltert den stora hemligheten från tillverkaren för att få det hela till att fungera nått så när bra.
Filtert "lärsig" under tiden och kompenserar för diverse fel och avvikelser ifrån sensorerna.
/ Jeppsson
Kärt barn har många namn. IMU (Inertial Measurement Unit), INU (Inertial Navigation Unit), IRU (Inertial Reference Unit) är de vanligaste benämningarna. Inget är väl mer rätt än det andra...
Precis som oJsan skriver växer felet snabbt när man ska integrera fram en position ur accelerationen.
Enklast att analysera är om man t.ex. har en konstant offset på accelerometern.
a(t) = a_correct(t) + a_offset, där a_offset är en konstant offset.
v(t) = v_correct(t) + a_offset*t + v_0, där v_0 är initialhastigheten när man börjar integrera.
x(t) = x_correct(t) + a_offset*t^2/2 + v_0*t + x_0, där x_0 är initalpositionen.
En liten offset i accelerationen ger ju snabbt ett ganska stort positionfel eftersom det sticker med tiden i kvadrat.
Men har man positionsavläsning via GPS också kan man skatta a_offset och v_0 med ett kalmanfilter och på så vis får en bättre positionsskattning.
Sen kan man lägga på matematiska begränsningar på hur vinklar och hastigheter mm maximalt kan vara och på så vis förbättra skattningen ännu mer. Kallas regularisering.
EDIT: stavfel
Precis som oJsan skriver växer felet snabbt när man ska integrera fram en position ur accelerationen.
Enklast att analysera är om man t.ex. har en konstant offset på accelerometern.
a(t) = a_correct(t) + a_offset, där a_offset är en konstant offset.
v(t) = v_correct(t) + a_offset*t + v_0, där v_0 är initialhastigheten när man börjar integrera.
x(t) = x_correct(t) + a_offset*t^2/2 + v_0*t + x_0, där x_0 är initalpositionen.
En liten offset i accelerationen ger ju snabbt ett ganska stort positionfel eftersom det sticker med tiden i kvadrat.
Men har man positionsavläsning via GPS också kan man skatta a_offset och v_0 med ett kalmanfilter och på så vis får en bättre positionsskattning.
Sen kan man lägga på matematiska begränsningar på hur vinklar och hastigheter mm maximalt kan vara och på så vis förbättra skattningen ännu mer. Kallas regularisering.
EDIT: stavfel
Senast redigerad av Andax 10 november 2007, 17:17:47, redigerad totalt 1 gång.
Tanken var att använda GPS för att kompensera driften i position och hastighet och en treaxlig magnetfältssensor för orienteringen då GPSen inte fixar detta när den står still. Höjden tänke jag kompensera med hjälp av en trycksensor eventuellt kompletterade med ultraljud för noggrannare resultat närmare marken där start och landningen sker.
Men om jag fattat det rätt så används kalmanfiltret bara för att korrigera IMUns kordinater så att dessa inte driver iväg. Att filtret lär sig själv låter som att det är ett tidsvariabelt filter man använder sig av vilket borde innebära att man få lösa lite riccatiekvationer osv i systemet under drift. Eller skulle man kunna få ihop det med ett staionärt filter kanske ?
Fördelen med att ha en IMU sen är ju att den ger snabbare svar än vad bara en GPS hade gjort vilket gör det lättare att bygga bra regulatorer sen för alla roder. En vanlig GPS ger ju en uppdatering per sekund så om man lyckas få ihop en IMU som ger hyfsad precision under ett par sekunder så borde kunna få ett fungerande system med hyfsat billiga komponenter.
Men om jag fattat det rätt så används kalmanfiltret bara för att korrigera IMUns kordinater så att dessa inte driver iväg. Att filtret lär sig själv låter som att det är ett tidsvariabelt filter man använder sig av vilket borde innebära att man få lösa lite riccatiekvationer osv i systemet under drift. Eller skulle man kunna få ihop det med ett staionärt filter kanske ?
Fördelen med att ha en IMU sen är ju att den ger snabbare svar än vad bara en GPS hade gjort vilket gör det lättare att bygga bra regulatorer sen för alla roder. En vanlig GPS ger ju en uppdatering per sekund så om man lyckas få ihop en IMU som ger hyfsad precision under ett par sekunder så borde kunna få ett fungerande system med hyfsat billiga komponenter.