|
| xyz-koordinatsystem Fra : Torben W. Hansen |
Dato : 07-06-06 19:38 |
|
Hej
Jeg er f....tagemig ved at gå ud af mit gode skind nu (undskyld udtrykket).
I de sidste uger har jeg forsøgt at bestemme en vektors vinkler (færisk
koordinater) i et xyz-koordinatsystem, men bliver ved med at køre rundt
idet.
x- og y-koordinaterne danner et vandret plan hvorpå z-aksen står vinkelret.
Vektoren har begyndelsespunkt i O=(0,0,0) og er sammenfaldende med z-aksens
positive retning.
Vektoren drejes omkring O ved at bruge x- og y-akse som rotationsakser og
vinklerne for drejningerne kaldes hhv. u og v.
Efter drejning med hhv. u og v radianer vil jeg nu gerne bestemme vinklen
(benævnt w) mellem z-akse og vektor samt vinklen (benævnt q) mellem x-aksen
og vektorens projektion på xy-planet
Med lidt hjælp fra Martin Larsen bestemmes w = arccos(cos(v)*cos(u))
Jeg er efterfølgende kommet frem til at vinklen q er:
q = arccot( -cos(u)*sin(v)/(cos(v)*sin(u)) ) , for 1. og 2.
kvadrant i xy-planet
og
q = arccot( -cos(u)*sin(v)/(cos(v)*sin(u)) ) + PI , for 3. og 4. kvadrant i
xy-planet
Som det ses bliver nævneren nul for u = (0 ± et multiplum af PI) eller for v
= (PI/2 ± et multiplum af PI) og det er her at jeg er kørt så grusomt fast.
| |
Carsten Svaneborg (07-06-2006)
| Kommentar Fra : Carsten Svaneborg |
Dato : 07-06-06 20:24 |
|
Torben W. Hansen wrote:
> I de sidste uger har jeg forsøgt at bestemme en vektors vinkler
> (færisk koordinater) i et xyz-koordinatsystem, men bliver ved med
> at køre rundt idet.
Det er vist et spørgsmål om at finde "gode" vinkler.
Hvis du definere vinklen mellem vektoren r og Z aksen (asimuth)
så er det cos(theta)=z/sqrt(x*x+y*y+z*z)
Du kan definere en anden vinkel som vinklen projektionen af r i xy planet
laver med x aksen. Denne er cos(phi)=x/sqrt(x*x+y*y)
Fra længden af vektoren r, cos(theta) og cos(phi) kan du så genfinde
vektoren:
x=r cos(phi) sin(theta)
y=r sin(phi) sin(theta)
z=r cos(theta)
--
Mvh. Carsten Svaneborg
http://gauss.ffii.org softwarepatent database
| |
Torben W. Hansen (07-06-2006)
| Kommentar Fra : Torben W. Hansen |
Dato : 07-06-06 21:47 |
|
"Carsten Svaneborg" <deadend@zqex.dk> skrev i en meddelelse
news:coljl3-l47.ln1@zqex.dk...
> Torben W. Hansen wrote:
>> I de sidste uger har jeg forsøgt at bestemme en vektors vinkler
>> (færisk koordinater) i et xyz-koordinatsystem, men bliver ved med
>> at køre rundt idet.
>
> Det er vist et spørgsmål om at finde "gode" vinkler.
>
> Hvis du definere vinklen mellem vektoren r og Z aksen (asimuth)
> så er det cos(theta)=z/sqrt(x*x+y*y+z*z)
>
> Du kan definere en anden vinkel som vinklen projektionen af r i xy planet
> laver med x aksen. Denne er cos(phi)=x/sqrt(x*x+y*y)
>
> Fra længden af vektoren r, cos(theta) og cos(phi) kan du så genfinde
> vektoren:
>
> x=r cos(phi) sin(theta)
> y=r sin(phi) sin(theta)
> z=r cos(theta)
Problemet er at jeg ikke kender x og y, men kun vinklerne u og v samt
længden af r som vist på min "forsinkede" illustration.
Det er så phi og theta (w og q på min illustration) jeg skal bestemme, men
kan ikke rigtig holde styr på de udefinerede vinkler som formlerne
resulterer i - kan det løses via din vejledning ovenfor ?
Med venlig hilsen
Torben W. Hansen
| |
Torben W. Hansen (08-06-2006)
| Kommentar Fra : Torben W. Hansen |
Dato : 08-06-06 06:42 |
|
"Torben W. Hansen" <nospam@ins.com> skrev i en meddelelse
news:44873b53$0$178$edfadb0f@dread16.news.tele.dk...
> Det er så phi og theta (w og q på min illustration)
Øh... omvendt phi og theta er hhv. q og w
Med venlig hilsen
Torben W. Hansen
| |
Carsten Svaneborg (08-06-2006)
| Kommentar Fra : Carsten Svaneborg |
Dato : 08-06-06 21:45 |
|
Torben W. Hansen wrote:
>> Det er så phi og theta (w og q på min illustration)
> Øh... omvendt phi og theta er hhv. q og w
Ok. Du må have fat i rotationsmatricer.
Lad os varme op med 2D. Har du en vektoren (x,y) du vil
roterer en vinkel phi i planen så er resultatet (x',y')
x' = cos(phi)x -sin(phi)y
y' = sin(phi)x +cos(phi)y
At det er sandt kan du se ved at kigge på (1,0) og (0,1)
I 3D er det næsten det samme, blot at rotationsaksen er
uforandret. Jeg starter med en u-rotation omkring x aksen:
x' = x + 0y + 0z
y' = 0x + cos(u)y - sin(u)z
z' = 0x + sin(u)y + cos(u)z
Og så en v-rotation omkring y aksen:
x'' = cos(v)x' + 0y' - sin(v)z'
y'' = 0x' + y' + 0z'
z'' = sin(v)x' + 0y' + cos(v)z'
I dit eksempel starter du med (x,y,z)=(0,0,1)
så (x',y',z')= (0,-sin(u),cos(u))
og (x'',y'',z'')= ( -sin(v)cos(u), -sin(u), cos(v)cos(u) )
Vinklerne i spheriske koordinater følger så fra:
cos(theta)=z''/sqrt(x''*x''+y''*y''+z''*z'')
= cos(v)cos(u)/sqrt( sin^2(v)cos^2(u) + sin^2(u) + cos^2(v) cos^2(u) )
= cos(v)cos(u)
Nævneren ser grim ud, men skal reducerer til 1 fordi rotationer
ikke ændre længer, og den oprindelige vektor havde længde 1.
cos(phi)=x''/sqrt(x''*x''+y''*y'')
= -sin(v)cos(u)/sqrt( sin^2(v)cos^2(u) + sin^2(u) )
--
Mvh. Carsten Svaneborg
http://gauss.ffii.org softwarepatent database
| |
Torben W. Hansen (08-06-2006)
| Kommentar Fra : Torben W. Hansen |
Dato : 08-06-06 22:54 |
|
"Carsten Svaneborg" <deadend@zqex.dk> skrev i en meddelelse
news:eqeml3-8o6.ln1@zqex.dk...
Det ser spændende... Jeg tager det med i seng og gennemlæser det nu
Det du skriver nedenfor ligner (på nær fortegnet i tælleren) jo til
forveksling, det som jeg - med din hjælp fra i går - kom frem til:
> cos(phi)=x''/sqrt(x''*x''+y''*y'')
> = -sin(v)cos(u)/sqrt( sin^2(v)cos^2(u) + sin^2(u) )
prøv at se her:
http://users.cybercity.dk/~cis2486/Page18/
Med venlig hilsen
Torben W. Hansen
| |
Torben W. Hansen (09-06-2006)
| Kommentar Fra : Torben W. Hansen |
Dato : 09-06-06 15:59 |
|
"Carsten Svaneborg" <deadend@zqex.dk> skrev i en meddelelse
news:eqeml3-8o6.ln1@zqex.dk...
> Torben W. Hansen wrote:
Tak for en rigtig god forklaring
> x' = cos(phi)x -sin(phi)y
> y' = sin(phi)x +cos(phi)y
> At det er sandt kan du se ved at kigge på (1,0) og (0,1)
Ja det kan jeg se - lavede en skitse her:
http://users.cybercity.dk/~cis2486/Page21/
---
> I 3D er det næsten det samme, blot at rotationsaksen er
> uforandret. Jeg starter med en u-rotation omkring x aksen:
>
> x' = x + 0y + 0z
> y' = 0x + cos(u)y - sin(u)z
> z' = 0x + sin(u)y + cos(u)z
>
> Og så en v-rotation omkring y aksen:
>
> x'' = cos(v)x' + 0y' - sin(v)z'
> y'' = 0x' + y' + 0z'
> z'' = sin(v)x' + 0y' + cos(v)z'
>
> I dit eksempel starter du med (x,y,z)=(0,0,1)
> så (x',y',z')= (0,-sin(u),cos(u))
> og (x'',y'',z'')= ( -sin(v)cos(u), -sin(u), cos(v)cos(u) )
Jeps det er jeg også med på - bortset fra at jeg bliver i tvivl om
omløbsretning for u og v samt hvorvidt rækkefølgen for u og v rotation
spiller en rolle (det har jeg en begyndende fornemmelse af, men bliver måske
snydt ? ), da du kommer frem til:
x'' = -sin(v)cos(u)
y'' = -sin(u)
z'' = cos(v)cos(u)
og jeg kom frem til nedenstående ifølge:
http://users.cybercity.dk/~cis2486/Page19
x'' = sin(v)cos(u) fortegnet er her +, det er vel fordi jeg har
modsat omløbsretning for v ?
y'' = -cos(v)sin(u) er det her fordi jeg først roterer v og
efterfølgende u ?
z'' = cos(v)cos(u)
---
> Vinklerne i spheriske koordinater følger så fra:
> cos(theta)=z''/sqrt(x''*x''+y''*y''+z''*z'')
> = cos(v)cos(u)/sqrt( sin^2(v)cos^2(u) + sin^2(u) + cos^2(v) cos^2(u) )
> = cos(v)cos(u)
>
> Nævneren ser grim ud, men skal reducerer til 1 fordi rotationer
> ikke ændre længer, og den oprindelige vektor havde længde 1.
Yes !
---
> cos(phi)=x''/sqrt(x''*x''+y''*y'')
> = -sin(v)cos(u)/sqrt( sin^2(v)cos^2(u) + sin^2(u) )
Ja - det forstår jeg, men hvad gør man ved de rotationer hvor nævneren
bliver 0 ?
Bliver nævneren 0 for alle vinkler hvor vektoren falder sammen med en af
akserne ?
I tilfælde af at rækkefølgen for u og v rotationerne har betydning, hvad så
hvis de sker samtidig ?
Med venlig hilsen
Torben W. Hansen
| |
Carsten Svaneborg (09-06-2006)
| Kommentar Fra : Carsten Svaneborg |
Dato : 09-06-06 21:29 |
|
Torben W. Hansen wrote:
> Jeps det er jeg også med på - bortset fra at jeg bliver
> i tvivl om omløbsretning for u og v
http://mathworld.wolfram.com/RotationMatrix.html
Ifht. ovenstående roterer min Rx den modsatte vej,
dvs. mod uret, mens Ry roterer med uret, så det ændrer
fortegnet på sin(u) led.
> samt hvorvidt rækkefølgen for u og v rotation spiller en rolle
Det gør det i allerhøjeste grad! Jeg roterer omkring X
først og så omkring Y, det var den rækkefølge du brugte
i det første email.
>> cos(phi)=x''/sqrt(x''*x''+y''*y'')
>> = -sin(v)cos(u)/sqrt( sin^2(v)cos^2(u) + sin^2(u) )
> Ja - det forstår jeg, men hvad gør man ved de rotationer hvor nævneren
> bliver 0 ?
Det er ligemeget. Det er kun tilfældet når vektoren er parallel med
z aksen så x''=y''=0, i det tilfælde er cos(theta)= -/+ 1, og
ligegyldigt hvad phi er, så ender får du det samme punkt. Det korte
af det lange er at længdegraden er udefineret når du står på nordpolen.
> I tilfælde af at rækkefølgen for u og v rotationerne har betydning, hvad
> så hvis de sker samtidig ?
Så må du definerer hvad "sker samtidigt" helt præcist betyder. ;*)
Generelt vil resultatet afhænge helt af hvad rækkefølge du vælger.
--
Mvh. Carsten Svaneborg
http://gauss.ffii.org softwarepatent database
| |
Torben W. Hansen (09-06-2006)
| Kommentar Fra : Torben W. Hansen |
Dato : 09-06-06 23:59 |
|
"Carsten Svaneborg" <deadend@zqex.dk> skrev i en meddelelse
news:h82pl3-d5d.ln1@zqex.dk...
>> http://mathworld.wolfram.com/RotationMatrix.html
> Ifht. ovenstående roterer min Rx den modsatte vej,
> dvs. mod uret, mens Ry roterer med uret, så det ændrer
> fortegnet på sin(u) led.
Jeg har nu rettet omløbsretningen i min model svarende til din, samt formler
for theta og phi - ser det rigtigt ud ?
http://users.cybercity.dk/~cis2486/Page22/
---
>> samt hvorvidt rækkefølgen for u og v rotation spiller en rolle
> Det gør det i allerhøjeste grad!
Så forstår jeg bedre at jeg har "kørt" lidt rundt i det
---
> Det korte af det lange er at længdegraden er udefineret når du står på
> nordpolen.
Ok, Ja - det står klart nu - efter at have kikket endnu engang på nævneren
---
>> I tilfælde af at rækkefølgen for u og v rotationerne har betydning, hvad
>> så hvis de sker samtidig ?
> Så må du definerer hvad "sker samtidigt" helt præcist betyder. ;*)
> Generelt vil resultatet afhænge helt af hvad rækkefølge du vælger.
Godt spørgsmål - jeg ved ikke om det overhovedet kan lade sig gøre, men jeg
forestillede mig at u og v roterede med samme hastighed.
Uden at det skal blive for teknisk, så forsøger jeg, via et tre-akset
accelerometer, at bestemme tyngdekraftens retning i forhold til et
bevægeligt plan, der eksempelvis kan have hældningerne u og v i forhold til
det vandrette jordplan. Her synes jeg ikke, at der er tale om en rækkefølge
for u og v - men måske lader jeg mig snyde også her ...
Men 10³ tak for den uvurderlige hjælp
Med venlig hilsen
Torben W. Hansen
| |
Carsten Svaneborg (10-06-2006)
| Kommentar Fra : Carsten Svaneborg |
Dato : 10-06-06 12:57 |
|
Torben W. Hansen wrote:
> Jeg har nu rettet omløbsretningen i min model svarende til din, samt
> formler for theta og phi - ser det rigtigt ud ?
> http://users.cybercity.dk/~cis2486/Page22/
Det ser korrekt ud, men mine omløbsretninger er ret arbitrærer, så
måske er det mere praktisk at du vælger dem der giver mening ifht.
dit problem, og gennemregner for at finde ligningerne i det tilfælde.
>> Det gør det i allerhøjeste grad!
> Så forstår jeg bedre at jeg har "kørt" lidt rundt i det
Du kan tage en tændstiksæske, tegne akser på den, vælge to af dem,
og så vende den om de to akser 90 grader, du får to forskellige
slut resultater alt efter hvilken rækkefølge du vælger.
> Godt spørgsmål - jeg ved ikke om det overhovedet kan lade sig gøre, men
> jeg forestillede mig at u og v roterede med samme hastighed.
Det kan du gøre ved at tage Rx Ry Rx Ry Rx Ry Rx Ry hvor du lader antallet
af rotationsmatricer gå i mod uendeligt og vinklen imod 0 så hvert skridt
bliver mindre og mindre. Men det bliver så sjovt at regne på.
> Uden at det skal blive for teknisk, så forsøger jeg, via et tre-akset
> accelerometer, at bestemme tyngdekraftens retning i forhold til et
> bevægeligt plan
Ok. Så accelerometret måler den resulterende kraft af tyndekraften og
normalkraften fra planet, der er en acceleration, der ligger i planet.
(Jeg antager at z aksen peger op, så tyndekraften er langs -z,
mens n er fladens normal og z_=(0,0,1) enhedsvektoren langs z).
Noget i retning af:
ma(t) = - mg z_ + F_norm(n) = mg [ -z_ - (z_.n) n ]
a(t) = g [ -z_ - (z_.n) n ]
Så a=0 hvis n=-z_ så fladen ligger fladt så normalen er lodret op.
?
> der eksempelvis kan have hældningerne u og v i forhold til det
> vandrette jordplan. Her synes jeg ikke, at der er tale om en
> rækkefølge for u og v - men måske lader jeg mig snyde også her ...
Det syntes at være uhensigtsmæssige vinkler til at beskrive problemet.
Det er mere hensigtsmæssige at fortælle hvad er vinklen med vandret
(inclination theta', så theta=pi/2-theta') og hvor i kompassets
retning peger hældningen (phi).
Er planet vandret er theta'=0, theta=pi/2 og indsætter du i udtrykket
for at konverterer en polær koordinat til kartesisk får du n=(0,0,1).
Er planet lodret er theta'=pi/2, og derfor theta=0, indsætter du skulle
du gerne få n=( cos(phi), sin(phi), 0) fordi planets normal nu ligger
er vinkelret på z' aksen og givet ved phi.
--
Mvh. Carsten Svaneborg
http://gauss.ffii.org softwarepatent database
| |
Torben W. Hansen (11-06-2006)
| Kommentar Fra : Torben W. Hansen |
Dato : 11-06-06 13:38 |
|
"Carsten Svaneborg" <deadend@zqex.dk> skrev i en meddelelse
news:6loql3-7r7.ln1@zqex.dk...
> Det ser korrekt ud, men mine omløbsretninger er ret arbitrærer, så
> måske er det mere praktisk at du vælger dem der giver mening ifht.
> dit problem, og gennemregner for at finde ligningerne i det tilfælde.
Fint - tak !
---
> Du kan tage en tændstiksæske, tegne akser på den, vælge to af dem,
> og så vende den om de to akser 90 grader, du får to forskellige
> slut resultater alt efter hvilken rækkefølge du vælger.
Ja - og det har forvirret min tankegang
> Det kan du gøre ved at tage Rx Ry Rx Ry Rx Ry Rx Ry hvor du lader antallet
> af rotationsmatricer gå i mod uendeligt og vinklen imod 0 så hvert skridt
> bliver mindre og mindre. Men det bliver så sjovt at regne på.
Det kan nok blive lidt langhåret
---
>> Uden at det skal blive for teknisk, så forsøger jeg, via et tre-akset
>> accelerometer, at bestemme tyngdekraftens retning i forhold til et
>> bevægeligt plan
>
> Ok. Så accelerometret måler den resulterende kraft af tyndekraften og
> normalkraften fra planet, der er en acceleration, der ligger i planet.
>
> (Jeg antager at z aksen peger op, så tyndekraften er langs -z,
> mens n er fladens normal og z_=(0,0,1) enhedsvektoren langs z).
>
> Noget i retning af:
>
> ma(t) = - mg z_ + F_norm(n) = mg [ -z_ - (z_.n) n ]
>
> a(t) = g [ -z_ - (z_.n) n ]
>
> Så a=0 hvis n=-z_ så fladen ligger fladt så normalen er lodret op.
>
> ?
Jeg er ikke sikker på at jeg forstår dig rigtigt her ( med (z_.n) mener du
prikproduktet af z_ og n ? ), men min model skal ikke tage højde for
acceleration (F=m*a), kun tyngdekræfter. Det var nok forkert af mig at
skrive "bevægeligt plan" - det jeg mente var et plan hvor hverken x- og
y-akse er vandret.
Du ved sandsynligvis alt om hvad et accelerometer er, men lige for at undgå
misforståelser giver jeg lige en kort forklaring:
I et cylinderformet rør hvori en cylinderformet masse (stempel) er ophængt
(eventuelt i begge ender) via en spiralfjederanordning. Stemplet er viskost
dæmpet for at reducere 2-ordensfænomener (udæmpede svingninger). Ved at måle
fjederens forlængelse har man et udtryk for accelerationen i een akse. Har
man tre af ovenstående konstruktioner placeret i hhv, x-, y- og z-akserne
har man så et tre-akset accelerometer. I praksis er beskevne mekanik for 1,2
eller 3 akser intergreret i een chip, hvor masse, fjederkontant og viskos
dæmpning er af microskopiske størrelser. Fjederen udgøres eventuelt af et
piezoelement, der afgiver et elektrisk signal proportionalt med
forlængelsen.
---
>> der eksempelvis kan have hældningerne u og v i forhold til det
>> vandrette jordplan. Her synes jeg ikke, at der er tale om en
>> rækkefølge for u og v - men måske lader jeg mig snyde også her ...
>
> Det syntes at være uhensigtsmæssige vinkler til at beskrive problemet.
>
> Det er mere hensigtsmæssige at fortælle hvad er vinklen med vandret
> (inclination theta', så theta=pi/2-theta') og hvor i kompassets
> retning peger hældningen (phi).
>
> Er planet vandret er theta'=0, theta=pi/2 og indsætter du i udtrykket
> for at konverterer en polær koordinat til kartesisk får du n=(0,0,1).
>
> Er planet lodret er theta'=pi/2, og derfor theta=0, indsætter du skulle
> du gerne få n=( cos(phi), sin(phi), 0) fordi planets normal nu ligger
> er vinkelret på z' aksen og givet ved phi.
Som nævnt ovenfor måler jeg tyngdekraftens x, y og z-komposanter og skal så
bestemme theta og phi. Som du selv nævnte er tyngdekraftens i -z-aksens
retning når inklinationen er nul. Jeg har bildt mig ind at jeg kunne
bestemme theta og phi ud fra u og v. Som jeg ser det er theta ikke noget
problem, men hvordan mener du at jeg kan udlede phi ud fra komposanterne ?
Med venlig hilsen
Torben W. Hansen
| |
Carsten Svaneborg (12-06-2006)
| Kommentar Fra : Carsten Svaneborg |
Dato : 12-06-06 20:12 |
|
Torben W. Hansen wrote:
> Jeg er ikke sikker på at jeg forstår dig rigtigt her ( med (z_.n) mener du
> prikproduktet af z_ og n ?
Yes.
> Ved at måle fjederens forlængelse har man et udtryk for accelerationen i
> een akse.
Indeed. Der var derfor jeg spurgte, fordi så får du den resulterende kraft,
der jo er 0 hvis planet er vandret. Hvordan vil du så finde tyndekraften?
> Som nævnt ovenfor måler jeg tyngdekraftens x, y og z-komposanter og skal
> så bestemme theta og phi.
Et hurtigt gæt:
tan(phi)=ay/ax
cos(pi-theta)=az/sqrt(ax*ax+ay*ay+az*az)
eller måske tan(pi-theta)=az/sqrt(ax*ax+ay*ay) ?
--
Mvh. Carsten Svaneborg
http://gauss.ffii.org softwarepatent database
| |
Torben W. Hansen (12-06-2006)
| Kommentar Fra : Torben W. Hansen |
Dato : 12-06-06 23:29 |
|
"Carsten Svaneborg" <deadend@zqex.dk> skrev i en meddelelse
news:btq0m3-dj8.ln1@zqex.dk...
> Torben W. Hansen wrote:
>> prikproduktet af z_ og n ?
> Yes.
OK
> Indeed. Der var derfor jeg spurgte, fordi så får du den resulterende
> kraft,
> der jo er 0 hvis planet er vandret. Hvordan vil du så finde tyndekraften?
Håber ikke at jeg får fokludret forklaringerne alt for meget ... og lov mig
at du siger fra hvis du kører træt ;0)
Jeg skal bestemme en masse m via en krafttransducer (der ikke må forveksles
med accelerometrene), hvor massen er placeret ovenpå transduceren. Af
forskellige årsager står krafttransduceren stort set aldrig lodret under
massen m, og signalet fra transduceren målt i Newton er derfor F =
m*g*cos(theta), hvor theta er inklinationen. Dvs. at massen er givet ved :
m = F/(G*cos(theta)).
For at bestemme theta at kommer accelerometrene ind i billedet. theta kan
bestemmes med et 1-, 2- eller 3-akset accelerometer og indsættes i udtrykket
for massen m ovenfor.
Ved at placere et 1-akset accelerometer (z-akse) på krafttransduceren kan
theta bestemmes, da accelerometret i lodret position vil give et signal =1G
og ved andre inklinationer et signal = G*cos(theta). På denne måde kan
massen beskrives særlig simpelt:
m = F/signal , da signal = G*cos(theta).
Ulempen ved 1-akse løsningen er at signalvariationen ved små inklinationer,
f.eks. 1 grad, er lille pga. (cos(0) - cos(1)) = 0.00015 N/grad. Hvis man
istedet placerer accelerometret vandret giver en hældning på 1 grad
(cos(89) - cos(90)) = 0.01745 N/grad, men prisen man betaler er at der skal
benyttes et 2-akset accelerometer (x- og y-akse), da man ellers kun kan måle
inklination i det lodrette plan og ikke i det lodrette rum. Det er her at
vinklerne u og v fra tidligere kommer ind i billedet. Via rotationsmatricen
fandt vi frem til:
cos(theta) = cos(u)*cos(v), så ved indsættelse dette i den første ligning
bliver massen:
m = F/(G*cos(u)*cos(v)).
Fælles for 1- og 2-akse løsningerne er at de ikke beskriver projektionens
vinkel phi i xy-planet og dermed ikke den fulde vektor, som jeg måske tror
at jeg vil få brug for senere i forbindelse med eventuel måling af "rigtig"
acceleration.
Vi forsøgte at bestemme phi via u og v, men som du også skrev "Det syntes at
være uhensigtsmæssige vinkler til at beskrive problemet",
så er det måske her at den 3. akse kommer ind i billedet ?
---
> Et hurtigt gæt:
>
> tan(phi)=ay/ax
Ja - noget i den retning, men efter du lod mig vide at rækkefølgen af u og v
var af afgørende betydning bliver jeg i tvivl ?
---
> cos(pi-theta)=az/sqrt(ax*ax+ay*ay+az*az)
> eller måske tan(pi-theta)=az/sqrt(ax*ax+ay*ay) ?
Ja det kan godt være at det er måden at gøre det på, da min (dog ofte
forkerte) intuition siger mig at man måske behøver signal fra 3 komposanter
(accelerometerets x-, y-, og z-akser) ?
Med venlig hilsen
Torben W. Hansen
| |
Torben W. Hansen (13-06-2006)
| Kommentar Fra : Torben W. Hansen |
Dato : 13-06-06 07:39 |
|
"Torben W. Hansen" <nospam@ins.com> skrev i en meddelelse
news:448deab8$0$142$edfadb0f@dread16.news.tele.dk...
Lige et par rettelser
> f.eks. 1 grad, er lille pga. (cos(0) - cos(1)) = 0.00015 N/grad.
Her skulle stå:
G*(cos(0) - cos(1)) = 0.00015 G/grad.
> istedet placerer accelerometret vandret giver en hældning på 1 grad
> (cos(89) - cos(90)) = 0.01745 N/grad,
og her :
G*(cos(89) - cos(90)) = 0.01745 G/grad
Med venlig hilsen
Torben W. Hansen
| |
Carsten Svaneborg (13-06-2006)
| Kommentar Fra : Carsten Svaneborg |
Dato : 13-06-06 23:09 |
|
Torben W. Hansen wrote:
> For at bestemme theta at kommer accelerometrene ind i billedet.
Ville det ikke være lettere med en anden force transducer belastet
med en kendt masse, og så dividerer de to resultater med hinanden?
> at der skal benyttes et 2-akset accelerometer (x- og y-akse), da man
> ellers kun kan måle inklination i det lodrette plan og ikke i det lodrette
> rum. Det er her at vinklerne u og v fra tidligere kommer ind i billedet.
Vinklerne er problematiske, fordi koordinat transformationen du har
valgt mellem lab frame og acelerometer er besværlig.
Helt generelt, har du et koordinatsystem x,y,z (lab koordinatsystemet) og
et andet koordinatsystem x',y',z' (accelerometrets koordinatsystem) så
er betyder komponenter (a,b,c) at vektoren er v=ax+by+cz i lab systemet,
du får med det samme vektorens komponenter i ' systemet som
v'=(v.x')x' + (v.y')y' + (v.z')z'
hvor . er dot produkt, fordi det er jo blot en projektion. Så du får en
transformationsmatrix med x.x' y.x' z.x' ... der relaterer komponterne
af vektorer i de to systemer.
Her accelerationen er (0,0,-g) i real space koordinatsystemet, så
den bliver i accelerometer systemet:
ax' -g x'.z
ay' = -g y'.z
az' -g z'.z
Og her måler du kun ax' og ay', men vi er sluppet af med de to vinkler.
Spørgsmålet er om det er muligt at finde theta og phi?
Det ville jeg mene at det er, men jeg er for træt til at gætte en ligning.
--
Mvh. Carsten Svaneborg
http://gauss.ffii.org softwarepatent database
| |
Torben W. Hansen (14-06-2006)
| Kommentar Fra : Torben W. Hansen |
Dato : 14-06-06 12:21 |
|
"Carsten Svaneborg" <deadend@zqex.dk> skrev i en meddelelse
news:fkp3m3-kd7.ln1@zqex.dk...
> Ville det ikke være lettere med en anden force transducer belastet
> med en kendt masse, og så dividerer de to resultater med hinanden?
Jo - og et 1-akset accelerometer _er_ en krafttransducer med en kendt masse,
der giver et signal på 1G i lodret position. Det du siger ovenfor er så vidt
jeg kan se også det der sker her:
> m = F/signal , da signal = G*cos(theta).
, men metoden er måleteknisk problematisk i praksis, da signalvariationen
(differentialkvotienten)
er lille for cos(theta) for små værdier af theta (dvs.for vektor nær
z-aksen). Derfor placerer man i stedet accelerometre
langs x'- og y'-akserne da sin(theta) giver maximum signalvariation for små
værdier af theta.
---
> Helt generelt, har du et koordinatsystem x,y,z (lab koordinatsystemet) og
> et andet koordinatsystem x',y',z' (accelerometrets koordinatsystem)
Det er jeg med på
---
> er betyder komponenter (a,b,c) at vektoren er > du får med det samme
> vektorens komponenter i ' systemet som
> v'=(v.x')x' + (v.y')y' + (v.z')z'
>
> hvor . er dot produkt, fordi det er jo blot en projektion. Så du får en
> transformationsmatrix med x.x' y.x' z.x' ... der relaterer komponterne
> af vektorer i de to systemer.
>
> Her accelerationen er (0,0,-g) i real space koordinatsystemet, så
> den bliver i accelerometer systemet:
>
> ax' -g x'.z
> ay' = -g y'.z
> az' -g z'.z
>
> Og her måler du kun ax' og ay', men vi er sluppet af med de to vinkler.
> Spørgsmålet er om det er muligt at finde theta og phi?
Som du nævner ovenfor er man her sluppet fri af vinklerne u og v, som måske
bare er en omvej, da disse skal udledes af accelerometrenes signaler for så
at regne baglæns igen. Jeg vil lige studere din vektorgymnastik for at se om
jeg kan forstå det (rumgeometri og matricer er ikke min stærke side).
Men jeg er lidt i tvivl om notationerne ovenfor :
Mener du vektoren v i lab koordinatsystemet S er v=ax+by+cz, hvor x,y,z er
enhedsvektorens komposanter og a,b,c komponenterne (eller koefficienter) ?
- og det samme spørgsmål gælder også for accelerometrets koordinatsystem S'
og v'=(v.x')x' + (v.y')y' + (v.z')z'.
Mener du at ax=(v.x')x' og by=(v.y')y' og cz=(v.z')z' ?
I 2D er prikproduktet (eller skalarproduktet) af to vektorer a og b med
indbyrdes vinkel v, a.b=|a|*|b|*cos(v) eller summen af vektorenes
x-produkter og y-produkter.
(undskyld mit børnehaveniveau i 3D) - betyder (v.x')x' " ... prikproduktet
af vektor v og af komposanten x' gange med komposanten x' ... " eller
betragtes x' som enhedsvektor (1,0,0) ?
Står her:
> ax' -g x'.z
> ay' = -g y'.z
> az' -g z'.z
ax' = -g * x'.z
ay' = -g * y'.z
az' = -g * z'.z
?
Med venlig hilsen
Torben W. Hansen
| |
Carsten Svaneborg (14-06-2006)
| Kommentar Fra : Carsten Svaneborg |
Dato : 14-06-06 20:22 |
|
Torben W. Hansen wrote:
> Som du nævner ovenfor er man her sluppet fri af vinklerne u og v, som
> måske bare er en omvej, da disse skal udledes af accelerometrenes signaler
> for så at regne baglæns igen.
Det tror jeg ikke. Det er hensigstmæssige variable. ;*)
> Mener du vektoren v i lab koordinatsystemet S er v=ax+by+cz, hvor x,y,z
> er enhedsvektorens komposanter og a,b,c komponenterne (eller
> koefficienter) ?
x=(1,0,0) er en enhedsvektor, der peger i x aksens retning, ligeleges yz.
a,b,c er tal, komponenter.
> - og det samme spørgsmål gælder også for accelerometrets koordinatsystem
> S' og v'=(v.x')x' + (v.y')y' + (v.z')z'.
a' = v.x'
b' = v.y'
c' = v.z'
Således at v' = a'x' + b'y' + c'z' er den samme vektor. Men enhedsvektorene
x',y',z' er nye, og komposanterne a',b',c' er nye.
x', y',z' definerer akserne i det mærkede koordinatsystem men udtrykt i
det gamle koordinatsystem. Dvs. x' er en enhedsvektor, men den er kun
(1,0,0) hvis x' aksen falder sammen med x aksen, hvilket generelt ikke
er tilfældet, det kunne lige så godt være at x'=(0,1,0) hvad betyder at
x' falder sammen med y aksen.
Det er her phi og theta skal dukke op.
Jeg ville definerer Phi som vinklen z' projektion i xy planet laver
med x. z' er normalen til planet, så
cos(phi) = ( (z'.x)x + (z'.y)y ).x / | (z'.x)x + (z'.y)y |
= z'.x / sqrt( (z'.x)^2 + (z'.y)^2 )
For et vandret plan er z' parallelt med z aksen, og derfor er projektionen
0 vektoren, og phi er udefineret hvad giver god mening, hældningsretningen
kan ikke defineres når planet er fladt.
Theta er relateret til z'.z igennem cos(theta) = z'.z
Theta=0 er et vandret plan, dvs. z'.z = 1.
Theta=pi/2 er et lodret plan. Dvs. z' er vinkelret på z.
Theta=pi er et vandret plan, der står på hovedet. Dvs. z'.z = -1
Så det syntes fornuftigt.
Hvordan kan theta og phi udtrykkes igennem ax' og ay' ?
Det kan jeg stadig ikke se klart.
Hvis ax' = ay' = 0 så er begge arme vandrette,
pladen er vandret. Theta=0 og phi er udefineret.
Hvis ax' = 0 så er x' vektoren vandret dvs. x'.z=0.
Hvis nu ay' < 0 så peger y' ned af dvs. y'.z<0 mens y'
er paralle med hældningsretningen og derfor definerer phi
mens størrelsen af ay' giver theta.
Hvis ax' = ay' < 0 så er x' + y' hældningsretningen, mens
theta er givet ved den fælles værdi.
> I 2D er prikproduktet (eller skalarproduktet) af to vektorer a og b med
> indbyrdes vinkel v, a.b=|a|*|b|*cos(v)
Dette er altid tilfældet også i 3D.
> ax' = -g * x'.z
> ay' = -g * y'.z
> az' = -g * z'.z
Ja. Jeg er doven med ascii notationen. ;*)
--
Mvh. Carsten Svaneborg
http://gauss.ffii.org softwarepatent database
| |
Torben W. Hansen (15-06-2006)
| Kommentar Fra : Torben W. Hansen |
Dato : 15-06-06 19:46 |
|
"Carsten Svaneborg" <deadend@zqex.dk> skrev i en meddelelse
news:p746m3-fh7.ln1@zqex.dk...
> Torben W. Hansen wrote:
> x=(1,0,0) er en enhedsvektor, der peger i x aksens retning, ligeleges yz.
> a,b,c er tal, komponenter.
> x', y',z' definerer akserne i det mærkede koordinatsystem men udtrykt i
> det gamle koordinatsystem. Dvs. x' er en enhedsvektor, men den er kun
> (1,0,0) hvis x' aksen falder sammen med x aksen, hvilket generelt ikke
> er tilfældet, det kunne lige så godt være at x'=(0,1,0) hvad betyder at
> x' falder sammen med y aksen.
Set fra accelerometer koordinatsystemet S' så er enhedsvektorerne altid
x' = (1,0,0) y' = (0,1,0) z' = (0,0,1) og deres numeriske værdier er altid
1
og set fra lab koordinatsystemet S så er de numeriske værdier for x', y', z'
stadig 1 og
x' = ( x.x', y.x', z.x')
y' = ( x.y', y.y', z.y')
z' = ( x.z', y.z', z.z')
.... var det sådan du mente ?
---
Jeg kan ikke lige gennemskue hvordan du kom frem til:
ax' = -g * x'.z
ay' = -g * y'.z
az' = -g * z'.z
det er ax', ay' og az' jeg mener - og hvor kommer bogstavet a fra i denne
sammenhæng ?
---
> Theta er relateret til z'.z igennem cos(theta) = z'.z
> Hvordan kan theta og phi udtrykkes igennem ax' og ay' ?
> Det kan jeg stadig ikke se klart.
Det var her jeg troede at cos(theta) = cos(u)*cos(v) = z'.z
Med venlig hilsen
Torben W. Hansen
| |
Torben W. Hansen (16-06-2006)
| Kommentar Fra : Torben W. Hansen |
Dato : 16-06-06 23:27 |
|
"Torben W. Hansen" <nospam@ins.com> skrev i en meddelelse
news:4491ab0c$0$132$edfadb0f@dread16.news.tele.dk...
> "Carsten Svaneborg" <deadend@zqex.dk> skrev i en meddelelse
> news:p746m3-fh7.ln1@zqex.dk...
>> Torben W. Hansen wrote:
>> Theta er relateret til z'.z igennem cos(theta) = z'.z
>> Hvordan kan theta og phi udtrykkes igennem ax' og ay' ?
>> Det kan jeg stadig ikke se klart.
>
> Det var her jeg troede at cos(theta) = cos(u)*cos(v) = z'.z
YES !!! Endelig lykkedes det at udlede foreskriften for theta (mangler
stadig phi)
x² + y² + z² = g²
z = sqrt(g² - x² - y²)
da z = cos(theta) og g =1
cos(theta) = sqrt(1 - x² - y²)
hvor x = sin(v) og y = sin(u)
theta = arccos(sqrt(1-sin²(u)-sin²(v)))
Eller theta' målt fra xy-planet:
theta' = arcsin(sqrt(1-sin²(u)-sin²(v)))
Formlen er testet på et rigtigt accelerometer med 3 akser. Jeg har benyttet
accelerometrets målte tiltvinkler v og u for x- og y-akserne som input til
formlen og sammenlignet resultatet med accelerometrets målte tilt-vinkel for
z-aksen. Desværre er accelerometrets opløsning kun 8 bit, så nøjagtigheden
er ikke helt god, men det er ikke helt skævøjet
Beregninger kan ses her:
http://users.cybercity.dk/~cis2486/Page25/
og accelerometermålinger for der to øverste beregninger kan ses her:
http://users.cybercity.dk/~cis2486/Page26/
Jeg ved ikke hvorfor jeg ikke har kunnet indse det noget før ;0)
Tusind tak for hjælpen Carsten !!!
Hvilken adresse skal jeg sende rødvinen til ?
Med venlig hilsen
Torben W. Hansen
| |
Carsten Svaneborg (17-06-2006)
| Kommentar Fra : Carsten Svaneborg |
Dato : 17-06-06 13:23 |
|
Torben W. Hansen wrote:
> Set fra accelerometer koordinatsystemet S' så er enhedsvektorerne altid
> x' = (1,0,0) y' = (0,1,0) z' = (0,0,1)
Det er de, men det er trivielt, fordi det er definitionen at have tre
ortonormale akse i et lokalt koordinatsystem. Det interessante er at du
kan udtrykke disse 'enhedsvektorer i x,y,z koordinatsystemet, fordi så
har du relateret de to koordinatsystemer direkte til hinanden, og det
uden at anvende rotationsmatricer (tungt, kompliceret, besværligt,
ikke-kommutativt).
> x' = ( x.x', y.x', z.x')
> y' = ( x.y', y.y', z.y')
> z' = ( x.z', y.z', z.z')
er derfor den interessante matrix, fordi den fortæller dig direkte
hvordan du kommer fra laboratorie koordinatsystemet til det lokale
koordinatsystem S', og tilbage igen. Den kaldes Direction cosines
fordi alle ledene er cos(vinkel mellem to akser).
http://mathworld.wolfram.com/DirectionCosine.html
> Jeg kan ikke lige gennemskue hvordan du kom frem til:
> ax' = -g * x'.z
> ay' = -g * y'.z
> az' = -g * z'.z
Fra nu af er vektorer små bogstaver, kartesiske komponenter store bogstaver,
for at undgå notationel kludder. Hvad er tyndeaccelerationen set fra
accelerometres lokale koordinatsystem S' ?
Tyngdeaccelerationen i laboratorie koordinatsystemet er a= -G z
a er en en vektor, og laboratorie koordinatsystemets z akse er
defineret som værende "op", G er 9.82m/s^2 (normalt lille g men
pga. notationen...)
> x' = ( x.x', y.x', z.x')
> y' = ( x.y', y.y', z.y')
> z' = ( x.z', y.z', z.z')
var transformationen af akserne, så for en generel vektor
v=(A,B,C) = Ax + By + Cz i S er v' givet ved
A' = A x.x' + B y.x' + C z.x'
B' = A x.y' + B y.y' + C z.y'
C' = A x.z' + B y.z' + C z.z'
v'=(A',B',C') = A'x' + B'y' + C'z'
Samme vektor, men med helt nye komponenter i det nye koordinatsystem.
Så i S' er tyngdeaccelerationens a komponenter
-G z.x'
a' = -G z.y'
-G z.z'
Hvilket er resultatet ovenover.
--
Mvh. Carsten Svaneborg
http://gauss.ffii.org softwarepatent database
| |
Torben W. Hansen (19-06-2006)
| Kommentar Fra : Torben W. Hansen |
Dato : 19-06-06 09:36 |
|
"Carsten Svaneborg" <deadend@zqex.dk> skrev i en meddelelse
news:bq8dm3-cuc.ln1@zqex.dk...
> Det interessante er at du
> kan udtrykke disse 'enhedsvektorer i x,y,z koordinatsystemet, fordi så
> har du relateret de to koordinatsystemer direkte til hinanden, og det
> uden at anvende rotationsmatricer (tungt, kompliceret, besværligt,
> ikke-kommutativt).
>
>> x' = ( x.x', y.x', z.x')
>> y' = ( x.y', y.y', z.y')
>> z' = ( x.z', y.z', z.z')
>
> er derfor den interessante matrix, fordi den fortæller dig direkte
> hvordan du kommer fra laboratorie koordinatsystemet til det lokale
> koordinatsystem S', og tilbage igen. Den kaldes Direction cosines
> fordi alle ledene er cos(vinkel mellem to akser).
Rigtig smart !
---
> http://mathworld.wolfram.com/DirectionCosine.html
Den vil jeg studere nærmere
---
> Fra nu af er vektorer små bogstaver, kartesiske komponenter store
> bogstaver,
> for at undgå notationel kludder.
Det hjalp mig til at forstå adskillelsen af komponenter (skalarer) og
vektorer
---
> Tyngdeaccelerationen i laboratorie koordinatsystemet er a= -G z
> a er en en vektor,
Dvs. hvis vektor a skrives med de forskellige notationer som du har brugt,
så kan a også udtrykkes sådan:
a = (0, 0, -G) (Her skrives kun komponenterne -
- enhedsvektorerne er underforstået)
eller
a = 0x + 0y -Gz (Her skrives produktet af komponenterne og
enhedsvektorerne)
eller
0
a = 0 (Igen - her skrives kun komponenterne
-G - enhedsvektorerne er underforstået)
---
>> x' = ( x.x', y.x', z.x')
>> y' = ( x.y', y.y', z.y')
>> z' = ( x.z', y.z', z.z')
>
> var transformationen af akserne,
> Så i S' er tyngdeaccelerationens a komponenter
> -G z.x'
> a' = -G z.y'
> -G z.z'
Der ligesom ovenover kan skrives som:
0 x.x' + 0 y.x' - G z.x'
a' = 0 x.y' + 0 y.y' - G z.y'
0 x.z' + 0 y.z' - G z.z'
eller
a' = ( (0 x.x' + 0 y.x' - G z.x'), (0 x.y' + 0 y.y' - G z.y'), (0 x.z' + 0
y.z' - G z.z') )
eller
a'= (0 x.x' + 0 y.x' - G z.x') x' + (0 x.y' + 0 y.y' - G z.y') y' + (0 x.z'
+ 0 y.z' - G z.z') z'
Tak for de gode forklaringer - dem får jeg helt sikkert meget nytte af
fremover ;*)
Med venlig hilsen
Torben W. Hansen
| |
Carsten Svaneborg (19-06-2006)
| Kommentar Fra : Carsten Svaneborg |
Dato : 19-06-06 20:58 |
|
Torben W. Hansen wrote:
> Rigtig smart !
Der er intet dybt i det, men det er svært at skrive fornuftigt
med ascii begrænsningerne.
> Tak for de gode forklaringer - dem får jeg helt sikkert meget nytte af
> fremover ;*)
You're wellcome. ;*)
--
Mvh. Carsten Svaneborg
http://gauss.ffii.org softwarepatent database
| |
Torben W. Hansen (08-06-2006)
| Kommentar Fra : Torben W. Hansen |
Dato : 08-06-06 14:12 |
|
"Carsten Svaneborg" <deadend@zqex.dk> skrev i en meddelelse
news:coljl3-l47.ln1@zqex.dk...
> så er det cos(theta)=z/sqrt(x*x+y*y+z*z)
> laver med x aksen. Denne er cos(phi)=x/sqrt(x*x+y*y)
Jeg har benyttet dine formler ovenfor og omskrevet dem lidt, da jeg som sagt
ikke kender x, y og z direkte, men derimod vinklerne u og v samt længden af
r.
Jeg har brugt w for theta og q for phi - resultatet i mathcad kan ses her:
http://users.cybercity.dk/~cis2486/Page18/
Jeg er i tvivl om resutatet af w( ) og q( ) ved vinklerne u=90 og v=90
grader - jeg ville mene at når vektoren r drejes med vinklen u = 90 gr. så
får den retning sammenfaldende med y aksen i negativ retning, dvs q = 270
gr. og ved drejning af vektoren r med v = 90 gr. kan jeg ikke indse at r
flytter sig - er jeg helt galt på den ?
Se evt. skitse her:
http://users.cybercity.dk/~cis2486/Page19/
Med venlig hilsen
Torben W. Hansen
| |
Torben W. Hansen (07-06-2006)
| Kommentar Fra : Torben W. Hansen |
Dato : 07-06-06 21:24 |
| | |
|
|