Zeitabhängige weiche Bewegung < Physik < Naturwiss. < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 15:52 Mo 04.04.2005 | Autor: | d-sine |
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Hallo,
Ich suche einen Kinematik Profi. Ich bin an meinen Grenzen angekommen.
Es geht darum eine Bewegungsengine zu programmieren, die immer weich Beschleunigt und weich abbremst. Auch wenn Sie schon in Bewegung ist und währenddessen ein Aufruf kommt an eine neue Position zu gelangen.
Soweit gehts alles ich bekommen nur nicht hin, dass die Engine in einer vorgegebenen Zeit weich an das neue Ziel gelangt. Egal ob sie eine Wende in der richtung macht oder nicht. Hoffe die Grafik zeigt das Problem.
Hilfe: Checker gesucht!
Danke
Christoph
[Externes Bild http://www.d-sine.de/physik.jpg]
Dateianhänge: Anhang Nr. 1 (Typ: jpg) [nicht öffentlich]
|
|
|
|
Hallo Christoph,
ist dein Problem nur theoretischer Natur oder soll ein solches Ding real gebaut werden?
Im Grunde ist dein Problem sogar sehr leicht zu lösen...
Du möchtest eine weiche Beschleunigung, d.h. die Beschleunigung soll sich stetig mit der Zeit ändern. Das geht, wenn der Ort eine Funktion 3. Grades von der Zeit ist, d.h.
[mm] x(t)=pt^3+qt^2+rt+s
[/mm]
Dann ist die Geschwindigkeit
[mm] v(t)=3pt^2+2qt+r
[/mm]
und die Beschleunigung
a(t)=6pt+2q
Die Koeffizienten p, q, r und s kannst du bestimmen, indem du die vier linearen Gleichungen
[mm] v(0)=v_0
[/mm]
[mm] x(0)=x_0
[/mm]
v(t_Ziel)=0
x(t_Ziel)=x_Ziel
löst.
Hugo
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 17:34 Di 05.04.2005 | Autor: | d-sine |
Hallo,
Erstmal danke für die Antwort und die Mühe. Es geht um eine reine grafische Programmierung. Soll also nicht real gebaut werden.
Ich denke aber nicht, dass ich die Beschleunigung "beschleunigen" muß. Es geht auch um die Laufzeit weswegen ich die einfachste Lösung suche.
Hast du dir vielleicht die Grafik dazu angesehen?
http://www.d-sine.de/physik.jpg
Ich möchte ín diesem Fall eine gleichmäßige Beschleunigung um den Körper wenden zu lassen ihn auf die maximale Geschwindigkeit zu bringen um ihn wieder mich einer gleichmäßigen Abbremsung zum Stillstand zu bringen. Also 2 Verschiedene Beschleunigungen die sich so verhalten, dass der Körper in vorgegebener Zeit am Ziel zum Stillstand kommt. Weitere Info, dass die beiden Beschleunigungen gleich lang dauern sollen (also jeweils t/2). Aus dem Stillstand kein Problem, bewegt sich der Körper mit V0 jedoch wirds schwierig.
Vielleicht denke ich auch zu kompliziert.
Meine Gleichungen funktionieren auch schon für den Fall, indem mir die Ankunftszeit egal ist und ich die Geschwindigkeit vorgebe.
Bei fester Zeit und "Wende" des Körpers steige ich allerdings aus.
Vielleicht hast du noch nen Anzatz. Eigentlich fehlt mir nur die Berechnung von der "Wendebeschleunigung" (der ersten). Der Rest ergibt sich dann.
Zu ihr weiß ich:
- Sie dauert t/2
- Am Ende dieser Beschleunigung muß der Körper genau in der Mitte
zwischen Wendepunkt und Ziel liegen.
- Die Geschwindigkeit soll nach dieser Beschleunidung so hoch sein,
dass der Körper es schafft in der Reststrecke und der Restzeit wieder
zum Stillstand zu kommen
Es ist also alles Abhängig voneinander (Wendepunkt, Mittelpunkt (Wende,Ziel), Geschwindigkeit...).
Ne Idee? Ich grübel echt schon Wochen an diesem Teil. Ziel ist es ja nur eine Weiche Bewegung zum Ziel bei jedem Zustand zu erreichen und die Zeit einzuhalten.
Nochmal vielen vielen Dank,
Christoph
|
|
|
|
|
Hallo d-sine,
mein Vorschlag ist nicht kompliziert.
Du kannst nicht beide Forderungen erfüllen:
- gleiche Beschleunigung und Verzögerung
- Zeit für Beschleunigung und Verzögerung halbe/halbe
Ich rechne dir einfach ein Beispiel vor, so wie ich das Problem lösen würde.
Du startest bei x=10 und fährst mit v=5. Ankommen möchtest du bei x=-10 nach der Zeit t=8. Die Ankunftsgeschwindigkeit kannst du beliebig wählen, ich nehme einfach mal Null, dann setzt du 'sanft' auf.
Wenn du ansetzt: [mm] x(t)=at^3+bt^2+ct+d [/mm] und [mm] v(t)=3at^2+2bt+c [/mm] bekommst du
(1) 10=d
(2) 5=c
(3) [mm]-10=8^3a+8^2b+8c+d[/mm]
(4) [mm] 0=3\cdot8^2a+2\cdot8b+c
[/mm]
Die ersten beiden Gleichungen in die letzten beiden eingesetzt ergibt:
(3) -10=512a+64b+50 |+10
(3') 0=512a+64b+60
(4) 0=192a+16b+5 [mm] |\cdot4
[/mm]
(4') 0=768a+64b+20
Du subtrahierst (3') von (4') und bekommst:
(5) 0=256a-40
Daraus folgt, dass
[mm] a=\frac{5}{32} [/mm] und [mm] b=\frac{35}{16}
[/mm]
Also lautet deine Bewegungsfunktion
[mm] x(t)=\frac{5}{32}t^3+\frac{35}{16}t^2+5t+10
[/mm]
mit der Beschleunigung
[mm] a(t)=\frac{15}{16}t+\frac{35}{8}
[/mm]
Wenn du diese Rechnung nachvollziehen kannst, dann versuch doch mal, das Gleichungssystem für beliebige Vorgaben von [mm] x_0 [/mm] , [mm] v_0 [/mm] , x_Ziel, t_Ziel zu lösen, indem du zusätzlich noch v_Ziel=0 forderst.
Hugo
PS: Dein Bild hatte ich mir bereits angesehen. Du solltest die Halbierung von t_all verwerfen. Das geht in der Tat nur dann problemlos, wenn die Startgeschwindigkeit Null ist.
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 11:30 Mi 06.04.2005 | Autor: | d-sine |
Hallo,
Erstmal nochmals danke. Du rettest mich hier gerade! Genial dass sich hier jemand wirklich einem Problem von Anderen annimmt. Danke!!
Mit deinem Beispiel komme ich jetzt besser klar und ich glaube so könnte ich es auch umsetzen. Wie meinst du jedoch das "indem du zusätzlich noch v_Ziel=0 forderst. "? Dachte das hättest du bei deinem Beispiel getan?
Bis jetzt ist nur die Engine nicht auf zeitabhängige Beschleunigungen ausgelegt.
Ich habe meine Grafik erweitert mit 2 Diagrammen. Ich möchte nicht ganz glauben, dass das nur mit a(t) funktioniert.
http://www.d-sine.de/physik2.jpg
Die Vereinung der beiden Thesen kann nicht funktionieren, das stimmt. Die erste jedoch muß es auch nicht sein (gleiche Beschleunigung und Verzögerung).
Es ist eigentlich egal ob die Beschleunigung und die Abbremsung gleich sind. Nur die Zeiten hätte ich gerne eingehalten.
Dann muß es doch mit konstanter (verschiedener) Beschleunigung und Abbremsung möglich sein oder?
Danke nochmal,
Christoph
|
|
|
|
|
Hallo Christoph,
> Erstmal nochmals danke. Du rettest mich hier gerade! Genial
> dass sich hier jemand wirklich einem Problem von Anderen
> annimmt. Danke!!
Dieses Forum existiert ja auch aus exakt diesem Grund!
Wenn du Lust hast, dann schau dich doch mal in den Schulforen um. Vielleicht kannst du dort selbst Fragen beantwortet. Und wenn dir Mathe nicht so liegt, dann gibt es immer noch andere Fächer...
> Mit deinem Beispiel komme ich jetzt besser klar und ich
> glaube so könnte ich es auch umsetzen. Wie meinst du jedoch
> das "indem du zusätzlich noch v_Ziel=0 forderst. "? Dachte
> das hättest du bei deinem Beispiel getan?
Die Sache ist ein wenig verzwickt. Ich habe als Information:
zu Beginn: Ort und Geschwindigkeit
am Ende: Ort
Zusätzlich ist noch die Dauer, also der zeitliche Unterschied zwischen Beginn und Ende vorgegeben.
Ich gebe mir zur Vereinfachung vor, dass die Zeit zu Beginn "Null" ist, somit ist
[mm] x(0)=x_{Beginn} [/mm] und [mm] v(0)=v_{Beginn}
[/mm]
und wenn der Vorgang [mm] t_{all} [/mm] lang sein soll, bedeutet das
[mm] x(t_{all})=x_{Ende}
[/mm]
Ich brauche jetzt noch eine zusätzliche Information für die Bestimmung der Koeffizienten, da habe ich mit [mm] v(t_{all})=0 [/mm] gearbeitet, weil die Bewegung dann sanft zum Stillstand kommt.
> Die Vereinung der beiden Thesen kann nicht funktionieren,
> das stimmt. Die erste jedoch muß es auch nicht sein
> (gleiche Beschleunigung und Verzögerung).
> Es ist eigentlich egal ob die Beschleunigung und die
> Abbremsung gleich sind. Nur die Zeiten hätte ich gerne
> eingehalten.
Es ist möglich, mit verschiedenen Beschleunigungen zu arbeiten, die jeweils die Hälfte der Zeit wirken. Besser finde ich jedoch, gleichgroße Beschleunigungen zu benutzen, und die jeweilige Wirkdauer anzupassen.
Ich nehme mal $a$ als erste und $b$ als zweite Beschleunigung, die jeweils [mm] $t_a$ [/mm] und [mm] $t_b$ [/mm] wirken. Es gilt [mm] $t_a+t_b=t_{all}$ [/mm] und $a=-b$.
Dummerweise kann die Geschwindigkeit am Ziel nicht immer Null sein, sondern irgendeine Endgeschwindigkeit [mm] v_{Ziel}, [/mm] so dass
[mm]v_0+a\cdot t_a+b\cdot t_b=v_{Ziel}[/mm]
Die Bedingung, dass man von [mm] x_0 [/mm] nach [mm] x_{Ziel} [/mm] kommt, äußert sich in:
[mm]x_0+v_0\cdot t_{all}+0,5a\cdotv t_a^2+0,5b\cdot t_b^2=x_{Ziel}[/mm]
Sind dir diese Gleichungen klar?
Wenn du jetzt noch $b$ durch $-a$ ersetzt, bekommst du:
[mm]a(t_a-t_b)=v_{Ziel}-v_0[/mm]
und
[mm]v_0t_{all}+0,5a(t_a^2-t_b^2)=x_{Ziel}-x_0[/mm]
Diese Gleichungen kannst du lösen, indem du [mm] t_a+t_b=t_{all} [/mm] benutzt, denn dadurch kannst du die zweite Gleichung umformen zu
[mm]v_0+0,5a(t_a-t_b)=\frac{x_{Ziel}-x_0}{t_{all}}[/mm].
Da können wir das Produkt [mm]a(t_a-t_b)[/mm] von der ersten Gleichung einsetzen und erhalten
[mm]v_0+0,5(v_{Ziel}-v_0)=\frac{x_{Ziel}-x_0}{t_{all}}[/mm]
Daraus bekommst du die automatisch auftretende Endgeschwindigkeit [mm] v_{Ziel} [/mm] .
Schaffst du es von hier aus weiter?
Hugo
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 17:32 Mi 06.04.2005 | Autor: | d-sine |
Hallo,
Ja ich werde auch versuchen weiterzuhelfen hier im Forum.
Mit deinen Gleichungen komme ich klar. Könnte auch mit verschiedenen Wirkdauer von a und b leben. Aber Ziel ist es immer mit einer Geschwindigkeit von 0 anzukommen.
Ist dies nicht möglich? Auch nicht wenn man die Wirkdauer und die Beschleunigungen individuell anpasst? Kann ich irgendwie nicht glauben.
In meinem v-t-Diagramm habe ich mehrere Kurven eingezeichnet. Es gibt ja unendlich viele davon. Ein Graph müsste doch auch dem entsprechen, bei dem die Strecken eingehalten werden, oder? Auch wenn man die Wirkdauer anpassen kann.
Danke nochmal
Chris
|
|
|
|
|
Endgeschwindigkeit=0 geht schon, aber mir wäre das zu kompliziert.
Du hast verschiedene Beschleunigungen und verschieden lange Wirkzeiten, dadurch werden die Gleichungen sehr verzwickt. Genauer gesagt bleiben die Gleichungen dieselben, aber a=-b und kannst du nicht mehr verwenden.
Ich empfehle stattdessen die erste Variante mit linearer Änderung der Beschleunigung. Notfalls kannst du diese Beschleunigung ja in kleinen Zeitabschnitten durch konstante Beschleunigungen ersetzen.
Auf jeden Fall hast du hier einfache Gleichungen und du kannst sehr leicht beliebige Kombinationen von Start- und Zielgrößen behandeln.
Hugo
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 18:07 Do 07.04.2005 | Autor: | d-sine |
Alles klar.
Ich werde dann diese Sache umsetzen. Schade das diese Gleichungen zu verzwickt werden. Genau die würde ich suchen.
Leider konnte ich noch niemanden finden, der diese rausbekommen.
Naja aber trotzdem danke. So habe ich wenigstens einen Ansatz wie es funktioniert von dir.
Ciao
Chris
|
|
|
|