Seite 1 von 1

Funktion zur Berechnung der minimalen und maximalen Distanz einer Probandenfahrspur zu einer Straße

Verfasst: Montag 16. September 2024, 11:26
von morgig
Hallo alle zusammen,

ich bin gerade dabei eine Bachelorarbeit zu schreiben und dort brauche ich einen Python Code, der Diagramme erstellt, zur Auswertung von Daten. Mein Skript ist schon beinahe fertig, jedoch will ich noch eine Funktion implementieren, die den Punkt einer Fahrspur eines Probanden ausgibt, der minimale bzw. maximale Distanz von der Fahrspur eines Probanden bis hin zum linken Straßenrand ausgibt. Ich habe die Funktion bisher wie folgt implementiert:

def calculate_extremum(x_proband, y_proband, x_left_border, y_left_border, spurBreite):

# Resette die Indizes
max_distance_point = (None, None, None)
min_distance_point = (None, None, None)
x_proband = x_proband.reset_index(drop=True)
y_proband = y_proband.reset_index(drop=True)
x_left_border = x_left_border.reset_index(drop=True)
y_left_border = y_left_border.reset_index(drop=True)

# Berechne die euklidische Distanz zwischen Proband und linkem Straßenrand
distances = np.sqrt((x_proband - x_left_border)**2 + (y_proband - y_left_border)**2)
#distances_ideallinie = np.sqrt((x_proband - x_left_border)**2 + (y_proband - (y_left_border - spurBreite - 1/2*spurBreite))**2)
distances_ideallinie = y_proband - (y_left_border - spurBreite - 1/2*spurBreite)

# Berechne den Punkt mit der geringsten Distanz
min_distance_index = np.argmin(distances)
min_distance_point = (x_proband[min_distance_index], y_proband[min_distance_index], distances_ideallinie[min_distance_index])

# Finde die Punkte, wo der Probandengraph über dem linken Straßenrand liegt
over_left_border_mask = y_proband > y_left_border

if np.any(over_left_border_mask):
# Berechne die maximale Distanz nur für den Abschnitt über dem linken Straßenrand
over_left_distances = distances[over_left_border_mask]
over_left_distances_ideallinie = distances_ideallinie[over_left_border_mask]
over_left_x_proband = x_proband[over_left_border_mask]
over_left_y_proband = y_proband[over_left_border_mask]

max_distance_index = np.argmax(over_left_distances)
max_distance_point = (over_left_x_proband.iloc[max_distance_index], over_left_y_proband.iloc[max_distance_index], over_left_distances_ideallinie.iloc[max_distance_index])

# Finde die Punkte, die am nächsten an der rechten Straßenseite sind
max_all_distance_index = np.argmax(distances)
max_all_distance_point = (x_proband[max_all_distance_index], y_proband[max_all_distance_index], distances_ideallinie[max_all_distance_index])

if max_distance_point != (None, None, None):
return max_distance_point, max_all_distance_point
else:
return min_distance_point, max_all_distance_point

Leider ist dort das Problem, dass immer wieder die Distanz zwischen dem Punkt auf dem linken Straßenrand und dem Punkt auf der Probandenfahrspur senkrecht zur x Achse gemessen wird und nicht wie gewünscht die Krümmung der Straße miteinbezieht, denn es soll die Distanz aus der Sicht des Autofahrers berechnet werden, also wie viele Meter der linke Straßenrand noch entfernt ist.
x_proband und y_proband sind die x und y Koordinaten der Probandenfahrspur und x_leftBorder und y_leftBorder sind die x und y Koordinaten des linken Straßenrandes.
Wäre super, wenn mir dabei jemand helfen könnte die Funktion dementsprechend anzupassen, danke fürs Zeitnehmen schon mal.

Viele Grüße
Moritz

Re: Funktion zur Berechnung der minimalen und maximalen Distanz einer Probandenfahrspur zu einer Straße

Verfasst: Mittwoch 18. September 2024, 11:14
von Dennis89
Ohjee, das fehlt noch einiges an "I" in der KI-Antwort.

Re: Funktion zur Berechnung der minimalen und maximalen Distanz einer Probandenfahrspur zu einer Straße

Verfasst: Mittwoch 18. September 2024, 11:47
von noisefloor
Hallo,

man muss der KI aber zugute halten, dass sie scheinbar gecheckt hat, dass "blackjack" im Benutzernamen der Reputation in Sachen Kompetenz zugute kommen könnte... ;-)

Gruß, noisefloor

Re: Funktion zur Berechnung der minimalen und maximalen Distanz einer Probandenfahrspur zu einer Straße

Verfasst: Mittwoch 18. September 2024, 13:13
von DeaD_EyE
Ich bin dafür, dass KI-generierte Inhalte von einer KI automatisch beantwortet werden.

Re: Funktion zur Berechnung der minimalen und maximalen Distanz einer Probandenfahrspur zu einer Straße

Verfasst: Mittwoch 18. September 2024, 14:15
von Dennis89
@noisefloor der Benutzername ist mir tatsächlich als erstes ins Auge gefallen und hatte da schon ein komisches Gefühl. Dann will ich in diesem Bereich das "I" nicht bemängeln. Wir sind ja auch nicht in allen Bereichen gleich schlau. 🤪


Grüße
Dennis

Re: Funktion zur Berechnung der minimalen und maximalen Distanz einer Probandenfahrspur zu einer Straße

Verfasst: Samstag 5. Oktober 2024, 23:09
von losgehts
Hallo,

ich vermute da zwei Probleme:
1) wenn ich den Code richtig lese, dann berechnest du für einen Punkt der Probandenfahrspur nur eine Distanz. Du weißt ja aber im Vorhinein nicht, zu welchem Punkt des Fahrbahnrandes der Minimale Abstand (=Distanz) eines Punktes der Probandenfahrspur besteht.

2) Wenn du - wie du schreibst - "es soll die Distanz aus der Sicht des Autofahrers berechnet werden" Distanzen ermitteln möchtest, dann entspricht das sozusagen der Aufgabe "berechne für jeden Punkt des Fahrbahnrandes den Abstand zur aktuellen Sichtlinie des Autofahrers und finde das Minimum dieser Abstände. Das ist dann der Abstand zu einem bestimmten Punkt der Probandenfahrspur. Um für jeden Punkt der Probandenfahrspur diesen Abstand zu haben, muss das eben für jeden Punkt der Probandenfahrspur wiederholt werden.
Die Berechnung des Abstandes ist also der Abstand eines Punktes zu einer Geraden (nicht Punkt zu Punkt).

Es erscheint so, als ob du zu früh anfängst zu programmieren: ich empfehle dir, zu Papier und Stift zurück zu kehren: mach dir eine Skizze mit den Polygonen (Fahrspuren, Probandenlinie, etc.) und zeichne die Distanzen ein, die du für einen Punkt der Probandenfahrspur ermitteln möchtest. Tipp: nimm dafür nicht den ersten Punkt und auch nicht den letzten Punkt der Probandenfahrspur.

Grüße, Ulrich