Dead reckoning mes 2 accelerometrar, möjligt ?

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Användarvisningsbild
MrFreeze
Inlägg: 72
Blev medlem: 23 november 2005, 22:15:02

Dead reckoning mes 2 accelerometrar, möjligt ?

Inlägg av MrFreeze »

Hej

Har lekt lite med Wii kontrollern och alla mina (tanke) kalkyler om positions
kalkylering med hjälp av accelerometrar gick åt pipan, centrifug krafterna
är enorma i förhållande till accelerationen på grund av vanlig "förflyttning".

Så nu har jag tänkt lite mer, och om man har två tvådimentionella accmätare
på en pinne av längden l (en vid varje ände), borde man inte då kunna räkna ut
den teoretiska förflyttningen samt den teoretiska rotationen av "pinnen"
om man tar hänsyn till centrifugal kraften samt förflyttnings accelerationen?


Jag antar att det i vilket fall som helst inte blir något perfekt system, men
det skulle vara intressant att få ihop matten iallafall man jag har det lite
svårt att få ihop det...


Så här långt har jag kommit :?

In:

Vektorerna Vacc1 och Vacc2
Tiden T sedan sista avläsningen

Ut: Förflyttnings vektorn på "pinnen" samt Rotationen på denna.
eller den "raka" accelerationen + vinkel accelerationen på "pinnen"

Kalkylen: (här går det ju åt pipan då)

... Försökte att skriva något men har bara bas formlerna (typ F=-mw²r)
och massa förvirrat snack så jag suddade ut det.


Är det möjligt att få ut förflyttningen samt vinkeln med enbart två
accmätare eller måste man ha till exempel en tredje ?


Om någon har en länk (har googlat en hel del men har bara hittat exempel
då man använder gyros tillsammans mes accmätare) eller annan god
information så är jag väldigt tacksam :)


/Ludvig
Användarvisningsbild
RasmusB
Inlägg: 1006
Blev medlem: 24 augusti 2006, 23:32:13
Ort: Södertälje

Inlägg av RasmusB »

Låter som en intressant idé!

Om jag förstår dig rätt så menar du att du ska anta lika centrifugalkraft i bägge ändarna av pinnen, och använda den uppmätta skillnaden dem emellan för att beräkna en vinkel mot marken? (Skillnaden skulle då vara 0 om pinnen är helt vågrät...)

Jag är däremot inte riktigt med på i vilken ledd du mäter "förflyttning"? Kan du rita en bild eller nåt? :)
Användarvisningsbild
MrFreeze
Inlägg: 72
Blev medlem: 23 november 2005, 22:15:02

Inlägg av MrFreeze »

Tanken är att ha en "pinne" med en accelerometer i varje ände
och försöka detektera rörelse i två dimensioner (till att börja med),
uppifrån eller från sidan (då kommer ju gravitationen in i bilden också).

Bilden :

A1,A2 och "Pinnen" är start tillståndet, A1',A2' och pinnen' är tillståndet efter tiden T.

F1 och F2 är accelerationskrafterna, F1 = Fa + Fc där
Fa = kraften på grund av (den "raka") förflyttningen av A1
Fc = centrifugal kraften på grund av rotationen av A1 (den svarta böjda pilen)

F2 har givetvis också komponenterna "a" och "c" (men det var för litet för att klämma in).


Bild
Användarvisningsbild
RasmusB
Inlägg: 1006
Blev medlem: 24 augusti 2006, 23:32:13
Ort: Södertälje

Inlägg av RasmusB »

Okej, då hänger jag med.

Jag är tveksamt till att det går att göra som du tänker. Iom. att ditt rotationscentrum inte ligger stilla så uppstår det genast problem - du kan inte korrelera en viss kraft Fc mot en rotationshastiget om du inte känner radien från början.

Därmed inte sagt att det inte skulle kunna lösa det för några specialfall - ex. om du tänker att "pinnen" roterar runt en punkt som ligger i förlängningen och du känner pinnens längd så borde du genom att jämföra de båda Fc kunna räkna fram en rotationshastighet. Den kommer dock bara att bli korrekt om pinnen är helt vågrät.

Med reservation för att jag är rätt trött nu så tror jag att det systemet du föreslår blir svårt att använda för "dead reckoning". Det finns en anledning till att man använder accelerometrar i kombination med gyron för att bygga en IMU där man kan få ut både vinklar och rotationshastighet på samma gång :) Kan tipsa om ett kul projekt för en RC-autopilot som använder en 6-DOF IMU (3-axlig accelerometer, 3-axligt gyro) för tröghetsnavigering. Ser ut som om några länkar är kassa men det finns en hel del kvar ändå.

www.dev6.com , kolla på "Projects / Urubu" och bloggen - det mesta finns beskrivet där. :)
bearing
Inlägg: 11687
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Inlägg av bearing »

Det är enklare att förstå varandra om du skulle följa praxis för hur saker benämns. Bokstaven brukar vara unik för varje punkt och indexet unikt för varje tidpunkt. A1 och "nästa A1" heter med det benämningssättet A_0 (jag brukar göra underscore för att visa att följande ska vara nedsänkt) och A_1, de andra två punkterna heter B_0 och B_1. Krafterna benämns efter angreppspunkt, dvs F_A och F_B.

Om staven roterar med konstant vinkelhastighet (varvtal) kring ett rotationscentrum kommer krafterna endast verka i riktning mot rotationscentrum. Kraften Fc borde alltså alltså vara riktad åt andra hållet.

Sker dessutom vinkelacceleration finns Fa med och innebär, riktad som den är ritad nu, att rotationen medurs bromsas.

Jag föreslår att du beräknar position genom att integrera accelerationen två gånger:

v_n = v_n-1 + a_n*dt
s_n = s_n-1 + v_n*dt

n är löpnummret på beräkningarna (om varje värde sparas i en array är alltså n index). dt är tiden mellan samplingarna.

Om detta ständigt görs i x- och y-led med oändligt hög samplingsfrekvens kommer du i teorin hela tiden veta positionerna som (x_A, y_A) och (x_B, y_B) samt ha möjlighet att beräkna vinkeln mellan dem. Dock kommer minsta vridning så att en komponent av gravitationen påverkar i x- eller y-riktningen förstöra resultaten. Jag vet inte om det går att kompensera för det. Första steget är kanske att hålla koll även på z-led, och sedan på något smart sätt (om det nu går) kompensera för gravitationen. Sker rörelsen endast i ett plan går det kanske att kompensera för G utan gyron.
dangraf
Inlägg: 530
Blev medlem: 9 juni 2003, 15:30:56
Ort: göteborg

Inlägg av dangraf »

Det skulle ev kunna fungera, jag har testat på ett liknande sätt men jag fick aldrig ihop mattematiken.

Jag tror inte att det spelar någon roll att man itne vet rotationscentrum, man skulle kunna se det som en rotation kring en given koordinat+förflyttning.

Problemet är inte helt lätt.

låt säga att du har signalerna
a1_x a1_y
samt
a2_x och a2_y

antag sedan att x axeln längs med pinnen och Y axeln går vinkelrät ut från pinnen.


I första exemplet så skulle man kunna illustrera att pinnen roterar med konstant vinkelhastighet och då skulle man kunna få ur rotationshastigheten med:
rortation ~ a1_x - a2_x.

Om man går till nästa exempel så skulle man kunna påstå att någon håller i pinnen och svingar den i luften. Då blir det en acceleration av rotationshastigheten vilket gör att även y axeln påverkas eftersom toppen kommer på pinnen kommer accelerera snabbare än där man håller handen.
detta ger
rotation ~ a1_x- a2_x samt
rotation ~ a1_y - a2_y


Om man därefter lägger till att den acceleration som accelerometern mäter beror på en massa olika saker så har jag kommit fram till följande:
acc signal = gravitaion+ rotation+ förflyttning+brus

Det hela är kanske möjligt om man skulle försöka intergrera signalerna för att få ut en förflyttning för varje accelerometer och beräkna rotationen utifrån det och då minimera signalen typ
acc signal = gravitaion+förflyttning+brus.

gravitation = lågpassfilrering av accelerometer signalen.
förflyttning+ brus = orginal signalen - denlåpassfiltrerade signalen.

därefter så skulle man kanske kunna räkna ut rotationen genom att beräkna
rotation = förflyttning a1 ~ förflyttning a2.

Det är möjligt att jag rört till det hela för er, men jag har tänkt en del på detta problem och har inte löst det. Kommer du på en bra lösning så säg gärna hur du gjorde
Användarvisningsbild
MrFreeze
Inlägg: 72
Blev medlem: 23 november 2005, 22:15:02

Inlägg av MrFreeze »

Tack för svaren, jag börjar redan inse var jag har fel (och det är ju alltid en början ^^)!

Efter att ha läst alla svaren så sa det pling och rotations accelerationen samt
rörelse accelerationen är ju inte alls samma sak, det är ju som att jämföra
sträcka och hastighet, jag borde koncentrera mej på centrifugalkrafter
som en "rak" hastighets acceleration istället (över tiden t), en integration
borde ju ge positionerna på A1 och A2 precis som bearing skriver :p (jag ska
försöka benämna sakerna bättre nästa gång, tack för tipset bearing) och med
dessa två positioner så kan jag ju enkelt räkna ut rotationen som "pinnen" har genomfört...

Ska fundera lite mer, (dangrak: kommer tillbaka om jag får ihop något :) )

Ska gräva lite i länken från RasmusB också.
Skriv svar