Spurfindung

Hi alle zusammen,

ich nehme z.Zt. am Softwarepraktikum meiner Uni teil und wir sind nun fast
fertig mit der Implementierung, jedoch haben wir ein Problem.

Folgende Aufgabenstellung:

Wir müssen einen kürzesten Weg auf einer Rennstrecke finden. Den haben wir auch
bereits gefunden, jedoch müssen wir diesen Pfad in Kommandos umwandeln, wie
z.B. links lenken usw, um ins Ziel zu gelangen.

Natürlich gibt es auch verschiedene Untergründe mit verschiedenen Eigenschaften
beim Lenk- Gas und Bremsverhalten.

Habt Ihr eine Idee, wie man schnellst möglich die Kommandos finden kann? Oder
musste schonmal jemand so etwas Ähnliches bewerkstelligen?

Wäre schön, wenn jemand antworten würde.

MfG Andi

Wir müssen einen kürzesten Weg auf einer Rennstrecke finden.
Den haben wir auch
bereits gefunden, jedoch müssen wir diesen Pfad in Kommandos
umwandeln, wie
z.B. links lenken usw, um ins Ziel zu gelangen.

Natürlich gibt es auch verschiedene Untergründe mit
verschiedenen Eigenschaften
beim Lenk- Gas und Bremsverhalten.

Hallo Andi,

von der Geschwindigkeit ist überhaupt nicht die Rede? Ich würde nämlich gleich vorab behaupten, dass der kürzeste Weg keineswegs der schnellste ist, aber schliesslich heisst es „Rennstrecke“.

Ansonsten ein paar spontane Ideen:

  1. Aufteilung des Wegs in kurze, gerade Vektoren, falls das nicht schon der Fall ist.
  2. Aus der Differenz zweier aufeinanderfolgender Vektoren lässt sich ableiten, wie gelenkt werden muss. Ist die (maximale) Geschwindigkeit bekannt, siehe oben, dann auch bremsen und gasgeben.

Damit sich Rundungsfehler nicht aufschaukeln, sollte man die Kommandos so bestimmen, dass sich jeweils am Ende eines Vektors die richtige Position, Richtung und Geschwindigkeit ergibt. Wahrscheinlich ist es Zweckmässig, vom Ziel zum Start zu rechen.

Gruss Reinhard

Hallo Reinhard,

von der Geschwindigkeit ist überhaupt nicht die Rede? Ich
würde nämlich gleich vorab behaupten, dass der kürzeste Weg
keineswegs der schnellste ist, aber schliesslich heisst es
„Rennstrecke“.

Ansonsten ein paar spontane Ideen:

  1. Aufteilung des Wegs in kurze, gerade Vektoren, falls das
    nicht schon der Fall ist.

Das ist ja eher nicht das typische Verhalten eines Fahrzeugs!
Zudem kommt men durch abrupte Lenkmanöver ins schleudern.
Man müsste die Strecke in Bogensegmente zerlegen.

Bei deiner Zerlegung würde ein Kreis recht zahlreiche Lenkausschläge ergeben, obwohl theoretisch eine feste Einstellung des Lenkrades genügen würde. Praktisch muss man natürlich dauernd ausgleichen, von wegen Lenkspiel und unterschiedlicher Bodenbeschaffenheit usw.

Eigentlich muss man die Kurve nur differenzieren um die Lenksignale zu erhalten.

MfG Peter(TOO)

Hallo,

wie genau muss denn die Spur dem kürzesten Weg folgen?

meine Idee: Du hast den Weg in Form von Geradenstücken. Bei jeder Richtungsänderung ersetzt du Anfang des ersten Stücks und Ende des zweiten Stücks durch einen Kreisbogen*. Dessen Krümmung bestimmt, zusammen mit dem Untergrund, der Haftung der Reifen etc., die maximale Geschwindigkeit, mit der du die Kurve durchfahren kannst. (F_z ~ v^2/r ~ omega^2*r).

Jetzt fängst du beim Ziel an, und schaust dir die letzte Kurve an. Diese darfst du maximal mit v0 durchlaufen. Danach kannst du also getrost beschleunigen.

Dann schaust du dir die vorletzte Kurve an, ermittelst ihre Maximalgeschwindigkeit v1. Dann musst du dazwischen das optimale Beschleunigungsverhalten ermitteln.

Das sollte eine halbwegs vernünftige Bahn liefert, hat allerdings den Nachteil, dass du die Strecke ‚von hinten nach vorne‘ durchlaufen musst. Wenn dich das stört, kannst du diese Algorithmus Stückweise durchlaufen.

Grüße,
Moritz

*Die Größe dieser Kreisbögen ist entscheidend. Je größer du sie machst, desto schneller wird die Kurve durchfahren (r ~ Sqrt[v]).