Korkens styrkort för multirotors (KFly) - Nya bilder s. 27!

Berätta om dina pågående projekt.
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Korkens styrkort för multirotors (KFly) - Nu med Blogg!

Inlägg av Korken »

LHelge:
"Vad tycker du om att göra exjobbet ensam? Vi brukar inte ta emot ensamma exjobbare av rädsla för att det lägger mycket tyngd på handledaren när exjobbaren inte har något annat bollplank."
Jag tyckte det va det ända som fungerade. Ingen annan här på universitetet har kunskapen som behövdes i detta projekt och jag orkade inte lära någon det. :) (även om jag fick kriga lite för att få vara ensam, tillåts inte normalt här heller)
Men det va också designat för att passa mig perfekt samt gjort så att jag kan publicera ett par artiklar (ingen har gjort en closed-loop regulator för vairable pitch på quadrotors förut).
Utöver det va jag väldigt självständig, träffade min handledare ish en gång i månaden.

"Kan du med några få meningar förklara skillnaden mellan ett Cubature KF och UKF, EKF & vanligt linjärt KF."
Jag kan försöka! :) Jag antar dock att man kan lite om KF, förklara teorin bakom är lite väl mycket.

Linjärt Kalman Filter (KF):
Ett linjärt KF fungerar genom att hitta en minimering av en viktad linjär kostnadsfunktion som är utsatt för Gaussiskt brus som inte behöver ha ett medelvärde av 0.
Systemet som vi vill estimera är linjärt om man kan översätta det till linjär state-space form.

Extended Kalman Filter (EKF):
Ett EKF är exakt samma sak som det vanliga linjära fallet, men det kan hantera olinjariteter genom att linjarisera systemet i varje sampel. Man gör alltså en första ordningens approximation i varje sampel. Detta fungerar bra om olinjariteterna är små men har generellt sätt dålig prestanda om man har mer än "mild" olinjaritet (japp det är ordet litteratur använder, så det är svårt att veta hur bra det fungerar utan att testa).

Cubature/Unscented Kalman Filter (CKF/UKF):
Ett CKF/UKF fungerar på ett helt annat sätt.
Det först man måste inse med olinjär estimering är att hitta den optimala estimeringen fungerar inte längre, man kan bara försöka komma så nära som möjligt. För att få optimal estimering (i sk. Bayesian filters) så måste man evaluera integraler på formen integral(Olinjär funktion * Gaussisk variabel), och det man gör är approximera dessa integraler med viktade summor (därför de aldrig kan bli optimala) då man aldrig kan göra perfekta integraler i verkligheten. Man vill då välja så få sampel-punkter som möjlig i integralen så summan blir så liten som möjligt.

UFK använder vikter, till summorna, som kommer från den sk. Unscented Transform, som är en metod för att beräkna statistiken på en Gaussisk variabel som går igenom en olinjär transformering. Dock vikterna valda i UKF har ett problem, dessa filter bygger på att man kan göra matris-roten-ur på kovariansmatrisen, men UKF kan göra så att denna inte är positiv definit längre, och då for man sqrt(-1).
CKF löser detta problem genom att välja vikter som inte förstör denna matris men ändå behåller (och har bättre) prestanda än ett UKF. Vikterna CKF använder kommer från "spherical-radial cubature rule" vilket är en metod för att approximera Gaussiska integraler.
De använder två helt olika sätt för att beräkna statestiken hos en en gaussisk variabel, men kommer fram till exakt samma ekvationer med skillnaden bara på vikterna i summorna. Man brukar säga att ett UKF estimerar upp till andra ordningens olinjaritet exakt och sedan approximerar, medans CKF går upp till tredje ordningen.

Detdär vart väldigt tekniskt, men de är svåra att förklara utan att verkligen sätta sig in i dom. :humm: Tror det är därför väldigt få använder dom, då de är väldigt o-intuitiva att använda.
Är någon intresserad så har jag dokument som man kan få läsa för att bättre förstå UKF och EKF.
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Korkens styrkort för multirotors (KFly) - Nu med Blogg!

Inlägg av Andax »

LHelge, min erfarenhet är att det oftast är de svagpresterande som envisas med att göra exjobb i par. Vet arbetsgivare som undviker studenter som inte gjort sitt exjobb solo.
Om ni ställer krav på era studenter att de skall göra det i par så gäller givetvis inte detta.
Användarvisningsbild
LHelge
Inlägg: 1772
Blev medlem: 2 september 2007, 18:25:31
Ort: Östergötland
Kontakt:

Re: Korkens styrkort för multirotors (KFly) - Nu med Blogg!

Inlägg av LHelge »

Korken: Tack, då har jag iaf ett hum om vad CKF är för något. Läste en kurs i statistisk signalbehandling där vi stötte på UKF, men CKF var nytt för mig.

Andax: Vi brukar ha det som krav för att vi tror att det krävs mindre insats från handledaren, men givetvis skiljer det från student till student. Jag har varit handledare för ett exjobb med en ensam student också, och det gick alldeles utmärkt. Men denne var ganska självgående.

I korkens fall inser jag problemet med att hitta en kompanjon. Det blir också lita annorlunda när man gör exjobbet vid universitetet istället för på ett företag. När vi tar emot exjobbare så innebär tiden man lägger på handledning en kostnad som får vägas mot eventuella framtida intäkter från patent, kunskap eller möjlighet till rekrytering.
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Korkens styrkort för multirotors (KFly) - Nu med Blogg!

Inlägg av Korken »

Okej! Nu börjar mitt nya filter ta form! :D
Jag har gjort ett dokument om all matematik bakom filtret och om någon har lust att ge lite kommentarer så är det mycket uppskattat!

Sammanfattningsvis:
- 22 states (undersöker om jag kan ta bort 3).
- Mätningar från accelerometer, magnetometer, gyroscope, barometer och GPS.
- Square-root implementation för bättre numerisk stabilitet.
- Inte adaptivt än, det kommer lite senare.
srckf.pdf
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
PaNiC
Inlägg: 2610
Blev medlem: 15 augusti 2003, 22:16:15
Ort: Skånelandet

Re: Korkens styrkort för multirotors (KFly) - Nu med Blogg!

Inlägg av PaNiC »

Det är inte utan att man blir imponerad. Längtar verkligen till "Shut up and take my money!"-steget :).
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Korkens styrkort för multirotors (KFly) - Nu med Blogg!

Inlägg av Korken »

PaNiC:
Jag ska försöka komma dit så snabbt som möjligt :)


Uppdatering:
Efter lite prat och rekommendationer om hur jag kan modellera vissa states som inputs så har jag nu kanske reducerat filtret till 13 states istället för 22. :)
Detta skulle betyda att filtret skulle gå ca 10 gånger snabbare! Men återkommer efter lite simuleringar.
Agwan
Inlägg: 1617
Blev medlem: 15 september 2009, 09:05:14

Re: Korkens styrkort för multirotors (KFly) - Nu med Blogg!

Inlägg av Agwan »

Det brukar inte vara så lätt att få till estimeringen av så många states som 22 att fungera på ett mindre system med förhållandevis hög dynamik. Skall du börja estimera ett gäng felparametrar så strular systemet snabbt ihop dem med varandra.

Något de var helt insnöade på på FIO när jag jobbade där var att det inte fanns någon anledning att estimera de "verkliga" parametrarna själva i filtret. Som positioner och vinklar. De estimerade bara felparametrarna. Så när ett nytt värde mättes så drogs det estimerade värdet bort från det mätta värdet och stoppades in i mätekvationerna. Om jag inte missminner mig så hade man ett system som drevs av gyrona för vinkel och accelerometrarna för position där man använde kalmanfiltrets estimerade bias och gain för att korrigera. Sedan hade man kalmanfiltret där man matade in mätningarna med vinklarna och positionerna från det andra simpla systemet avdraget.
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Korkens styrkort för multirotors (KFly) - Nu med Blogg!

Inlägg av Korken »

Så kan man verkligen göra, men det man förlorar är den statistiska krosskovarians som filtret skapar. Är det inte så noga så kan detta skippas och man antar att medelvärdet har nog information, men i mina simuleringar så har det inte givit då bra resultat.
Tex så testade jag att ha en attitude estimator och en position estimator, men det effektivt halverade precisionen.

Jag vet också att min stora 22 states estimator kommer fungera på min MCU i 200 Hz, så är inte orolig att prestandan ska ta slut. :)
Men on jag kan förenkla systemet så gör jag det.

Och som min professor brukar säga: Ett styrsystem är bara så bra som dess estimering. ;)
niklascooke
Inlägg: 42
Blev medlem: 13 januari 2011, 15:54:00
Ort: Göteborg

Re: Korkens styrkort för multirotors (KFly) - Nu med Blogg!

Inlägg av niklascooke »

Hej Korken,

Läste på din blogg ang. Madgwick's filter, hur löste du problemet med det? Kod exempel?

Mvh Niklas C.
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Korkens styrkort för multirotors (KFly) - Nu med Blogg!

Inlägg av Korken »

Stor uppdatering!

Godagens igen efter lång tid av tystnad!
Väldigt mycket har hänt och det är nu dags att berätta lite. :D

Det första som hänt (och det roligaste för mig) är att jag nu äntligen är antagen som doktorand på Luleå Tekniska Universitet i ämnet Reglerteknik, där min forskning kommer handla om "Cooperative Unmaned Aerial Vehicles", dvs hur jag får UAVer att samarbeta för olika uppgifter.
Detta kommer bli sjukt kul och jag får se vad framtiden håller för mig här. :)

Utöver detta så har själva KFly projektet fått en rejäl omdesign.
Jag läste på mig om standarden för RC signaler och det visade sig att godkänd signal-spänning är 3-5V, detta gjorde att jag slopade optokopplarna.
Efter lite fundering och efter att ha kikat lite på Openpilot så la jag till så jag har en radiomodul direkt på KFly för trådlös telemetri via en RFM22B modul (samma som OP har). Detta kommer lite också ifrån ett studentprojekt här där de designar en RF-länk baserad på RFM22B så då kan jag bygga ihop mitt med deras system.
Och efter mycket om och men så lyckades jag minska från en 4-lagers design till en 2-lagers design med nästan alla komponenter på ena sidan! :D Detta gör att kretskorten blir mycket enklare att felsöka, enklare att bygga samt billigare än förut. Plus att jag har designat om så nästa beställning så kommer KFly på panel istället för enskilda kretskort, detta för att jag gjorde lite DFM (design for manufacturing) ifall att jag vill börja producera lite fler kort - jag har fått många mail av folk som är intresserade så börjar fundera på att tillverka en batch på kanske 100-200 st och se vad som händer.
Då jag använder KFly i min forskning så kommer det att fortsätta att utvecklas allt efter som min forskning framskrider. :)

När det gäller estimeringsalgorithmen för mitt system så har jag tagit en rejäl svängom. Som Agwan förklarade så har jag gått bort från direktestimering till errorestimering. Detta gör att filtret fungerar mycket snabbare och är lättare att ställa in. :)
Jag la till lite mer också så filtret kan uppskatta hur starka motorerna är, detta så man får en adaptiv modell för styrning. Men den ska vara klar om ca en vecka, så det kommer bli riktigt kul att se hur det presterar.

Mer information kommer komma lite löpande nu, det har varit alldeles för tyst alldeles för länge! :D

Och självklart, lite bilder på det nya kretskortet: (EDIT: ops fel bilder.....)
top.png
bottom.png
panel.png
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Senast redigerad av Korken 8 november 2013, 11:42:28, redigerad totalt 1 gång.
Användarvisningsbild
LHelge
Inlägg: 1772
Blev medlem: 2 september 2007, 18:25:31
Ort: Östergötland
Kontakt:

Re: Korkens styrkort för multirotors (KFly) - Nu med Blogg!

Inlägg av LHelge »

Grymt!

Jag ställer mig på kö för ett exemplar ur första batchen. Är planen fortfarande att mjukvaran kommer vara Open Source om man själv vill in och pilla?
Användarvisningsbild
drh
Inlägg: 1338
Blev medlem: 10 januari 2011, 23:38:41

Re: Korkens styrkort för multirotors (KFly) - Nu med Blogg!

Inlägg av drh »

LHelge skrev:Grymt!

Jag ställer mig på kö för ett exemplar ur första batchen. Är planen fortfarande att mjukvaran kommer vara Open Source om man själv vill in och pilla?
Tar en plats bakom dig i kön :)
Användarvisningsbild
tecno
Inlägg: 27248
Blev medlem: 6 september 2004, 17:34:45
Skype: tecnobs
Ort: Sparreholm, Södermanland N 59° 4.134', E 16° 49.743'
Kontakt:

Re: Korkens styrkort för multirotors (KFly) - Nu med Blogg!

Inlägg av tecno »

äntligen är antagen som doktorand

Ett stort GRATTIS
Agwan
Inlägg: 1617
Blev medlem: 15 september 2009, 09:05:14

Re: Korkens styrkort för multirotors (KFly) - Nu med Blogg!

Inlägg av Agwan »

Kul att du blivit antagen! Jag kan komma på ganska så många tråkigare saker man kan pyssla med under ett gäng år. Lite avis helt klart.
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Korkens styrkort för multirotors (KFly) - Nu med Blogg!

Inlägg av Korken »

LHelge skrev:Grymt!

Jag ställer mig på kö för ett exemplar ur första batchen. Är planen fortfarande att mjukvaran kommer vara Open Source om man själv vill in och pilla?
Tackar! :)

Jodå, koden kommer vara open source förutom de jag forskar på. :) Men all grundläggande funktionalitet kommer vara 100% open.
Dock har det blivit lite problem när det kommer till HW designen, då jag har den i min forskning så kommer jag inte släppa BRD filerna, men schemat kan man få.
Får se hur jag löser detta i framtiden... Kanske gör en OpenHW version ar kretskortet på fritiden.

En lite dålig sak är dock att detta kort måste ugnlödas, detta utav sensorernas kapslar samt att jag har gått över till 0402 och resistorarrayer på det flesta komponenterna.
Men kollar på om jag kan ändra tillbaka till 0603. :)

tecno:
Tackar! :)

Agwan:
Hehe, jo jag måste säga att jag är sjukt nöjd med mitt område! :)
Men funderade på de du skrev för länge sedan om error estimering, hur gör ni detta för positionering?
Jag har nu error estimering för attitude, men skulle vilja ha det för positionen också - men hittar nästan inget alls publicerat inom detta. :humm:


Måste också påpeka att jag hade fel när jag skrev "Så kan man verkligen göra, men det man förlorar är den statistiska krosskovarians som filtret skapar.".
Kovariansen propageras genom error variablerna så den behålls. :)
Skriv svar