Kurvengestaltung



  • Hallo,

    ich bin auf der Suche nach einem Mechanismus, der aus einer vorgegebenen Distanz (z.B. Kilometer) und einer vorgegebenen Zeitdauer (z.B. Stunden) ein nichtlineares, aber harmonisches Geschwindigkeitsprofil erzeugt.

    Dabei soll der Charakter des Geschwindigkeitsprofils durch die Parameter Änderungshäufigkeit (selten bis oft) und Änderungsstärke (schwach bis stark) voreinstellbar sein.

    Wie gehe ich das am besten an?

    Gruß
    Leo


  • Mod

    Definiere "harmonisch"! Du meinst sicherlich kein x^2-Potential, vermute ich.

    Ich werfe zunächst einmal in den Raum, dass hier die Länge und die Zeit keine Rolle spielen, außer bei deiner Definition von "harmonisch" kommt noch etwas unerwartetes bei rum. Denn jede Kurve kannst du einfach umskalieren.

    Für konkretere Tipps müsstest du die Nebenbedingungen genauer definieren. Sind auch negative Geschwindigkeiten zulässig? Willst du wirklich ein Geschwindigkeitsprofil? Nichts gegen Geschwindigkeitsprofile, aber deine Anforderung, dass es nicht "linear" sein soll, lässt mich vermuten, dass du eher an einem Streckenprofil (Weg gegenüber Zeit) interessiert bist.

    Sehr allgemeine Ansätze für so ein Vorhaben: Punkte vorgeben für das einfachstmögliche Profil. Anhand der Parameter diese Punkte mehr oder weniger stark versetzen. Prüfen, ob die Nebenbedingungen immer noch erfüllt sind. Punkte mit einer passenden Kurvenform verbinden, z.B. einem Spline.



  • SeppJ schrieb:

    Definiere "harmonisch"! Du meinst sicherlich kein x^2-Potential, vermute ich.

    Mit "harmonisch" meine ich Kurven wie z.B. Splines oder Bezierkurven.

    SeppJ schrieb:

    Für konkretere Tipps müsstest du die Nebenbedingungen genauer definieren.
    Sind auch negative Geschwindigkeiten zulässig?

    Nein, nur positive.

    SeppJ schrieb:

    Willst du wirklich ein Geschwindigkeitsprofil?

    Ja. Denn anders als beim Streckenprofil, wo abgebildet wird, wieviel Strecke auf welcher Höhe absolviert wird, soll abgebildet werden, wie hoch die Geschwindigkeit jeweils ist.

    Ein Beispiel: bei einer Sinuskurve der allgemeinen Form (beginnt mit einem Wellenberg, gefolgt von einem Wellental usw.) sei die Geschwindigkeit in y-Richtung abgebildet, die Zeit in x-Richtung.
    Da die Fläche eines Wellenbergs der eines Wellentals entspricht, sich also die 'langsameren' und die 'schnelleren' Geschwindigkeiten egalisieren, müsste die zurückgelegte Strecke der entsprechen, die mit Durchschnittsgeschwindigkeit zurückgelegt würde.

    Zur Veranschaulichung hier einige konkrete, einfache Beispiele:

    Gegeben seien fünf Geschwindigkeitsstufen 0-100 km/h (y-Richtung) und zwölf Zeitstufen 0-55 Minuten (x-Richtung).
    In allen drei Beispielen wird eine Strecke von 50 km in einer Stunde zurückgelegt. In Beispiel 1 mit konstanter Geschwindigkeit von 50 km/h, in den anderen Beispielen mit unterschiedlichen Geschwindigkeiten, im Mittel aber ebenfalls mit 50 km/h.

    Bsp. 1

    `100 - - - - - - - - - - - -

    _75 - - - - - - - - - - - -

    _50 x x x x x x x x x x x x

    _25 - - - - - - - - - - - -

    __0 - - - - - - - - - - - -

    `

    Bsp. 2

    `100 - - x - - - - - - - - -

    _75 - x - x - - - - - - - -

    _50 x - - - x - - - x x x x

    _25 - - - - - x - x - - - -

    __0 - - - - - - x - - - - -`

    Bsp. 3

    `100 - - - - - - - - x - - -

    _75 - - - x - - - x - x - -

    _50 - - x - x - x - - - - x

    _25 - x - - - x - - - - x -

    __0 x - - - - - - - - - - -`

    Gesucht ist ein Verfahren, das nach Vorgabe eines gewünschten Durchschnittswert (z.B. Geschwindigkeit) und einer Anzahl von Scheitelpunkten (siehe Beispiel 2 und 3) eine harmonische Kurve erzeugt, deren Durschnittswert dem vorgegebenen entspricht.
    Dabei soll der Kurvencharakter durch Anzahl und Ausschlagstärke der Scheitelpunkte einstellbar sein.

    Ich hoffe, das Ziel ist jetzt klarer geworden.

    Gruß
    Leo



  • Gesucht ist also v(s), wobei v Geschwindigkeit und s zurueckgelegte Strecke ist.

    Normalerweise wird mit s(t) gerechnet. Hat man dieses, kan man v(t) = ds/dt bzw. auch v(s(t)) ableiten. Das beste was mir grad einfaellt, ist Splineinterpolation. weiss aber nicht, wie gut es sich mit deiner Nebenbedingung vertraegt.


  • Mod

    Sind die Scheitelpunkte konkret vorgegeben oder ist es Aufgabe des Algorithmus, eine hinreichend "wilde" Kurve zu erzeugen, damit im Schnitt genügend Scheitelpunkte auftreten?

    Idee für Ansatz: Ein Streckenprofil ist einfach zu erzeugen, da man nicht die Fläche unter der Kurve als Nebenbedingung hat, sondern den Anfang und den Endpunkt, dazwischen kann man machen, was man möchte. Wenn man nur einen kubischen Spline als Streckenprofil erzeugt, so ist dieser an jeder Stelle (analytisch!) stetig differenzierbar und man erhält ein Geschwindigkeitsprofil, welches automatisch die Bedingung an die zurück gelegte Gesamtstrecke erfüllt. Das Ergebnis ist dann jedoch selber nur noch einmal stetig differenzierbar, daher will man eventuell eine höhere Ordnung bei der Interpolation wählen. Andererseits ist es durchaus realistisch, wenn die Beschleunigung sich ruckartig ändert, für viele Arten von Fahrzeug passt dies.
    Dann kann man wieder mit dem schon gemachten Vorschlag, eine Reihe von Vorgabepunkten entsprechend der Parameter etwas zu versetzen, die "Wildheit" der Kurve variieren.



  • SeppJ schrieb:

    Sind die Scheitelpunkte konkret vorgegeben oder ist es Aufgabe des Algorithmus, eine hinreichend "wilde" Kurve zu erzeugen, damit im Schnitt genügend Scheitelpunkte auftreten?

    die Scheitelpunkte sind nicht konkret vorgegeben

    SeppJ schrieb:

    Idee für Ansatz: Ein Streckenprofil ist einfach zu erzeugen, da man nicht die Fläche unter der Kurve als Nebenbedingung hat, sondern den Anfang und den Endpunkt, dazwischen kann man machen, was man möchte.

    Hier ist mir einiges unklar:
    Wie definierst Du „Streckenprofil“?
    Was bedeutet „da man nicht die Fläche unter der Kurve als Nebenbedingung hat (...)“?

    Ich habe inzwischen einige Beispiele zu Extremwertaufgaben durchgearbeitet, nur die Nebenbedingungen darin bringe ich mit meinem Beispiel in keinen Zusammenhang.

    Ich denke, bevor ich Dich nicht genau verstehe, macht es wenig Sinn, mich ans Erzeugen kubischer Splines zu machen.

    Gruß
    Leo



  • Du sollst s(t) erzeugen und v(s) daraus ableiten.

    Wenn du s(t) erzeugst ist die Durchnittsgeschwindigkeit gegeben durch
    v¯=s(0)s(T)T\bar v = \frac{s(0) - s(T)}{T}
    Das ist einfacher als die Durchschnittsgeschwindigkeit aus v(s) zu ermitteln, die Berechnet sich nämlich als:
    v¯=1s_1s_0s_0s_1v(s)ds\bar v = \frac{1}{s\_1 - s\_0} \int_{s\_0}^{s\_1} v(s) ds
    ist also eine Integrale Nebenbedingung


Log in to reply