/ Forside / Karriere / Uddannelse / Højere uddannelser / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Højere uddannelser
#NavnPoint
Nordsted1 1588
erling_l 1224
ans 1150
dova 895
gert_h 800
molokyle 661
berpox 610
creamygirl 610
3773 570
10  jomfruane 570
fysisk "simulering" med constraints
Fra : Willian d'foe


Dato : 11-04-04 20:28

For min egen morskabs skyld har jeg lavet en simulation af en 2d firkantet
bil med to baghjul med kraftoverførsel og to drejelige forhjul uden kraft.
Bilen er bare et rektangel med to tværstivere og et hjul i hvert hjørne. Som
den er nu, så er stiverne meget stive fjedre. Jeg er imidlertid ikke
intereseret i hverken en elastisk bil eller numerisk instabilitet, så jeg
vil gerne forsøge mig med "constraints". Metoden hvor man angiver en afstand
mellem to forbundne partikler, og hvis afstanden ikke er korrekt, så
"ryster" man partiklerne til afstanden passer. Lidt simpelt beskrevet, men
de der kan hjælpe mig kender det nok i forvejen.

Mit problem er bare at med fjedre kan jeg beregne en reel kraft som virker
på eksempelvis et forhjul afhængigt af overførslen fra baghjulene. Jeg deler
derefter denne kraft op i to komponenter. En langs hjulets rulle-retning og
en på tværs. Denne kraft bruger jeg så til at beregne acceleration,
bevægelse og eventuel udskridning ect. baseret på statisk og dynamisk
friktion. Kraften er for en simpel fjeder jo bare en funktion af dens
længde, styrke og hvilelængde.

Hvordan gør jeg dette med "constraints"? Normalt vil man "ryste" to
forbundne partikler relativt til deres masse. Et to partikler for tæt på
hinanden i forhold til en constraint, så flytter man dem fra hinanden
relativt til deres masse, så den tunge flyttes mindst. Hvordan oversætter
man dette til en kraft? En partikkel føres måske fremad med 100N, den vejer
100kg. Den anden føres modsat med 200N og vejer 40kg. Hvad nu? Hvor meget
flytter jeg dem i forhold til hinanden? Deres hastigheder er der taget højde
for gennem "the unconstrained motion", som man vel må kalde delen før man
ser på contraints.

Er der nogen her med tips, pointeres eller links, som kan hjælpe mig?



 
 
Niels L. Ellegaard (13-04-2004)
Kommentar
Fra : Niels L. Ellegaard


Dato : 13-04-04 16:57

"Willian d'foe" <will@not.receive.mails> writes:

> For min egen morskabs skyld har jeg lavet en simulation af en 2d
> firkantet bil med to baghjul med kraftoverførsel og to drejelige
> forhjul uden kraft. Bilen er bare et rektangel med to tværstivere
> og et hjul i hvert hjørne. Som den er nu, så er stiverne meget stive
> fjedre. Jeg er imidlertid ikke intereseret i hverken en elastisk bil
> eller numerisk instabilitet, så jeg vil gerne forsøge mig med
> "constraints". Metoden hvor man angiver en afstand mellem to
> forbundne partikler, og hvis afstanden ikke er korrekt, så "ryster"
> man partiklerne til afstanden passer. Lidt simpelt beskrevet, men de
> der kan hjælpe mig kender det nok i forvejen.

Jeg er ikke sikker på at jeg har forstået dig rigtigt, mon ikke det
letteste er at tilføje en støddæmper til hver fjeder ? :)

Nå.. men her er en lille snak om constraints Du beskriver tilstanden
af din bil med en vektor x=(x1,x2...xn). Elementerne i denne vektor
angiver placeringen af hjul. x1 er x-koordinatern for højre
baghjul. x2 er y-koordinaten for højre baghjul etc. Nu tilføjer du
nogle constrainst. De kan skrives på følgende form

f1(x1,x2...xn) = 0
f2(x1,x2...xn) = 0
....
fm(x1,x2...xn) = 0

Eksempelvis kunne en constraint være x1 - x2 = 7. Dette ville svare
til

f1(x1,x2...xn) = x1 - x2 - 7

Lad starte med en teori for hvordan man optimerer en vektor x så den
kommer til at opfylder dine constraints. Det kan sikkert gøre på flere
måder. Så vidt jeg kan se kender du en metode hvor man ryster
koordinaterne på plads. Alternativ kan man sikkert bruge Newtons
metode.

http://www.library.cornell.edu/nr/cbookcpdf/c9-6.pdf

Hvis du vil have noget der er simplere at implementere, så kan du
bruge steepest descent til at minimere følgende funktion

h(x) = f1(x) * f1(x) + f2(x) * f2(x) + ... + fN(x) * fN(x)
http://www.library.cornell.edu/nr/cbookcpdf/bookcpdf/c10-3.pdf

Når du nu har fundet en værdi af vektoren x der opfylder dine
constraints, så kan du lede efter kræfterne i dit system. Du leder
altså efter en kraftvektor på følgende form.

F = (F1,F2... FN)

Her er pointen at elementet F1 svarer til koordinaten x1.. osv. Jeg
har ikke regnet det følgende efter i detalje, men der virker rigtigt,
når jeg bruger det på et simpelt modelsystem.

F = -grad U(x)
+ a1 grad f1(x)
+ a2 grad f2(x)
....
+ an grad fn(x)

Her angiver "grad", gradientent operatoren
http://mathworld.wolfram.com/Gradient.html

Konstanterne a1, a2 .. an er givet ved

a1 = (grad U(x) * grad f1(x))/(grad f1(x) * grad f1(x))
a2 = (grad U(x) * grad f2(x))/(grad f2(x) * grad f2(x))
.....
aN = (grad U(x) * grad fN(x))/(grad fN(x) * grad fN(x))

Her angiver * prikproduktet.

Hvis du virkelig vil have en ordentlig formalisme, der sikrer at du
ikke laver fejl, så kan du læse en bog om analytisk mekanik :) Her er
et tilfældigt link til lecture notes på nettet. De er måske lidt for
kompakte til at være brugbare.
http://fy.chalmers.se/~tfemc/MekanikF1/mekanikkompendium.pdf

--
Niels L Ellegaard http://dirac.ruc.dk/~gnalle/

Niels L. Ellegaard (13-04-2004)
Kommentar
Fra : Niels L. Ellegaard


Dato : 13-04-04 17:16

gnalle@ruc.dk (Niels L. Ellegaard) writes:

> F = -grad U(x)
> + a1 grad f1(x)
> + a2 grad f2(x)
> ....
> + an grad fn(x)

Hmm U(x) er energien, men det gættede du vel :)

--
Niels L Ellegaard http://dirac.ruc.dk/~gnalle/

Niels L. Ellegaard (13-04-2004)
Kommentar
Fra : Niels L. Ellegaard


Dato : 13-04-04 19:06

gnalle@ruc.dk (Niels L. Ellegaard) writes:
> F = -grad U(x)
> + a1 grad f1(x)
> + a2 grad f2(x)
> ....
> + an grad fn(x)


Hmmm Det var dog det værste vrøvl jeg længe har skrevet. man skal ikke
skrive på usenet, når man er halvtræt. Nå men her er en løsning der er
mindre forkert. Mon ikke at man skal gøre noget i retningen af det her:

Kig på en masseløs stang der er påvirket af en kraft i hver ende. Hvis
stangen er masseløs er den resulterende kraft nul. Det samme gælder
kraftmomentet. Desuden er der et kraft om at stangens længde er
konstant i tiden. Disse kraft giver tilsammen en beskrivelse af
stangen.

Men hvis man bruger denne metode til at beskrive et system med mange
stænger, så ender sandsynligvis man med at skulle løse flere ligninger
med flere ubekendte. Det bliver sikkert noget rod og det er nok derfor
at man har fundet på metoden med at ryste koordinaterne.

Konklussion: Se bort fra sidste halvdel af min besked.

--
Niels L Ellegaard http://dirac.ruc.dk/~gnalle/

Carsten Svaneborg (14-04-2004)
Kommentar
Fra : Carsten Svaneborg


Dato : 14-04-04 15:05

Willian d'foe wrote:
> For min egen morskabs skyld har jeg lavet en simulation af en 2d firkantet
> bil med to baghjul med kraftoverførsel og to drejelige forhjul uden kraft.
> Bilen er bare et rektangel med to tværstivere og et hjul i hvert hjørne.

Et stift alternativ:

Masse midtpunktet bevæger sig som hvis alle kræfter angreb i det punkt.

Dvs. du har 4 en fra hver hjul. Baghjul skubber frem, mens forhjulene
har 0 kraft i hjulets rulle retning, men en høj friktion for bevægelse
vinkelret herpå, og disse afhænger kun af bevægelses hastigheden.

Det burde give dig en ligning du kan numerisk integrere for at finde
masse midpunktets bevægelse.

De fire kræfter giver en net torque omkring en akse igennem bilens CM,
(normalt 0) og fra denne kan du udregne ændringen i bilens
rotationshastighed omkring denne akse, når du kender inerti momentet.

Dvs. det giver dig en ligning for bilens retning.

Din bil er fuldstændigt karakteriseret ved masse midtpunktets position
og længde aksens retning.

--
Mvh. Carsten Svaneborg
http://www.softwarepatenter.dk

Brian Elmegaard (15-04-2004)
Kommentar
Fra : Brian Elmegaard


Dato : 15-04-04 08:02

"Willian d'foe" <will@not.receive.mails> writes:

> Er der nogen her med tips, pointeres eller links, som kan hjælpe mig?

Jeg ved ikke helt hvad du mener med at ryste, men et fysisk system
med constraints forstår jeg som et differential-algebraisk
ligningssystem. For at løse et sådant er du nødt til at bruge løser
der kan dette.

Derudover kan man vælge forskellige tilgange. Et par metoder som nævnes i:
http://www.imm.dtu.dk/documents/ftp/tr99/tr08_99.pdf

er index-reduktion, projektionsmetoder, ODE'er med invarianter.

--
Brian (remove the sport for mail)
http://www.et.dtu.dk/staff/be

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste