Re: Fahrsimulatordatenauswertung
Verfasst: Mi Apr 28, 2021 9:24 pm
Hallo Bernhard,
Dank der R – Befehle, die du mir gezeigt hast, ist es mir nun gelungen ein Skript zu schreiben, welches die Daten aufbereitet und in eine neue Datei schreibt, alles im Prinzip wie geplant. Besten Dank dafür! Ich habe das Skript mal auf ein Minimum reduziert:
Aufgrund theoretischer Überlegungen habe ich einige Werte noch einmal angepasst, die Prinzipien bleiben ja zum Glück gleich. Außer bei der TTC und Geschwindigkeit, da hätte ich noch zwei dringende Fragen. Und zwar habe ich nicht berücksichtigt, dass die Minimalfunktion ja auch nach negativen Werten sucht und dass negative TTC-Werte in unserem Universum unnütze Informationen darstellen (Zeitangabe der Kollision, wenn die Zeit rückwärts laufen würde). Gibt es eine Möglichkeit diesen Befehl so zu modifizieren, dass nur das positive Minimum berücksichtigt wird, also alle Werte wie Null und größer Null? :
Dann eignet sich bei der Geschwindigkeitsdifferenz der Durchschnittswert wahrscheinlich besser als der Maximalwert. Kann ich das so machen (mean() anstelle von max())? :
Das wäre dann tatsächlich alles, was ich zur Auswertung brauchen würde, vielen Dank nochmal – du hast mich da echt gerettet und ich konnte auch einiges lernen!
Ich habe auch echt Interesse für das Programm R entwickelt und denke, dass ich dieses vielleicht auch in Zukunft an der ein oder anderen Stelle nutzen werde. Diesbezüglich hätte ich auch noch ein paar Interessensfragen, wie man das ein oder andere vielleicht besser/übersichtlicher lösen kann (nur falls du noch Zeit und Lust hast diese zu beantworten, es wäre jetzt nicht dringend).
Jedes Mal, wenn ich diesen Code am Anfang ausführe (um den Variablen Konstanten hinzuzuaddieren) muss ich aufpassen, dass ich den Befehl nur einmal ausführe (ansonsten wird jedes Mal erneut addiert). Gibt es eine Möglichkeit diesen Befehl so zu modifizieren, dass er nur einmal ausgeführt werden kann? :
Dann habe ich mir ein Tutorial angeschaut, wie man eine Tabelle erstellt und dieses Beispiel umgeschustert und auf meine Daten angewendet. Die Tabelle bildet so zwar in Reihenfolge die Ergebniswerte der Variablen ab, jedoch ohne Beschriftung. Gibt es eine Möglichkeit, dass diese Tabelle mit dem Ergebnis der Variablennamen beschriftet und vielleicht sogar nach Ampelnummer kategorisiert werden kann? :
Dann hatte mir dieser Plot, den du mir gezeigt hast, sehr gut gefallen:
Hier würde mich interessieren, ob es möglich ist so einen Plot über die kompletten Daten und alle 24 Versuchspersonen zu legen. Ich vermute ich müsste die Daten aller Versuchspersonen einlesen:
Diese Daten müssten dann irgendwie übereinander gelegt werden (zu einem einzelnen Datensatz), damit die oben genannten Plotbefehle auf einen einzelnen Datensatz angewendet werden können. Mitteln zu jedem Zeitpunkt würde hier nicht so einfach funktionieren, da die Daten der Versuchspersonen unterschiedlich groß sind (jede Versuchsperson ist unterschiedlich schnell gefahren). Hättest du da einen Vorschlag?
LG,
Robin
Dank der R – Befehle, die du mir gezeigt hast, ist es mir nun gelungen ein Skript zu schreiben, welches die Daten aufbereitet und in eine neue Datei schreibt, alles im Prinzip wie geplant. Besten Dank dafür! Ich habe das Skript mal auf ein Minimum reduziert:
Code: Alles auswählen
setwd("C:/Users/RobinAOE/Desktop")
fasi <- read.table("P1.csv",
sep = ",", dec = ".", header = TRUE)
fasi$Traffic_T00_sRoad <- fasi$Traffic_T00_sRoad + 357
fasi$Traffic_T01_sRoad <- fasi$Traffic_T01_sRoad + 892
fasi$Traffic_T02_sRoad <- fasi$Traffic_T02_sRoad + 2565
fasi$Traffic_T03_sRoad <- fasi$Traffic_T03_sRoad + 2778
fasi$Traffic_T04_sRoad <- fasi$Traffic_T04_sRoad + 4640
ampel_1 <- subset(fasi, Car_Road_sRoad > 697.5 & Car_Road_sRoad < 797.5)
ampel_1$distance <- ampel_1$Traffic_T00_sRoad - ampel_1$Car_Road_sRoad
ampel_1$delta_v <- ampel_1$Car_v - ampel_1$Traffic_T00_LongVel
ampel_1$ttc <- (ampel_1$distance - 5) / ampel_1$delta_v
ampel_1$delta_a <- ampel_1$Car_ax - ampel_1$Traffic_T00_a_0_x
Eampel1ttc <- min(ampel_1$ttc)
Eampel1abstand <- min(ampel_1$distance)
Eampel1geschwindigkeit <- max(ampel_1$delta_v)
Eampel1beschleunigung <- max(ampel_1$delta_a)
ampel_2 <- subset(fasi, Car_Road_sRoad > 1249.5 & Car_Road_sRoad < 1349.5)
ampel_2$distance <- ampel_2$Traffic_T01_sRoad - ampel_2$Car_Road_sRoad
ampel_2$delta_v <- ampel_2$Car_v - ampel_2$Traffic_T01_LongVel
ampel_2$ttc <- (ampel_2$distance - 5) / ampel_2$delta_v
ampel_2$delta_a <- ampel_2$Car_ax - ampel_2$Traffic_T01_a_0_x
Eampel2ttc <- min(ampel_2$ttc)
Eampel2abstand <- min(ampel_2$distance)
Eampel2geschwindigkeit <- max(ampel_2$delta_v)
Eampel2beschleunigung <- max(ampel_2$delta_a)
ampel_3 <- subset(fasi, Car_Road_sRoad > 3067.5 & Car_Road_sRoad < 3167.5)
ampel_3$distance <- ampel_3$Traffic_T02_sRoad - ampel_3$Car_Road_sRoad
ampel_3$delta_v <- ampel_3$Car_v - ampel_3$Traffic_T02_LongVel
ampel_3$ttc <- (ampel_3$distance - 5) / ampel_3$delta_v
ampel_3$delta_a <- ampel_3$Car_ax - ampel_3$Traffic_T02_a_0_x
Eampel3ttc <- min(ampel_3$ttc)
Eampel3abstand <- min(ampel_3$distance)
Eampel3geschwindigkeit <- max(ampel_3$delta_v)
Eampel3beschleunigung <- max(ampel_3$delta_a)
ampel_4 <- subset(fasi, Car_Road_sRoad > 4527.5 & Car_Road_sRoad < 4627.5)
ampel_4$distance <- ampel_4$Traffic_T03_sRoad - ampel_4$Car_Road_sRoad
ampel_4$delta_v <- ampel_4$Car_v - ampel_4$Traffic_T03_LongVel
ampel_4$ttc <- (ampel_4$distance - 5) / ampel_4$delta_v
ampel_4$delta_a <- ampel_4$Car_ax - ampel_4$Traffic_T03_a_0_x
Eampel4ttc <- min(ampel_4$ttc)
Eampel4abstand <- min(ampel_4$distance)
Eampel4geschwindigkeit <- max(ampel_4$delta_v)
Eampel4beschleunigung <- max(ampel_4$delta_a)
ampel_5 <- subset(fasi, Car_Road_sRoad > 5067.5 & Car_Road_sRoad < 5167.5)
ampel_5$distance <- ampel_5$Traffic_T04_sRoad - ampel_5$Car_Road_sRoad
ampel_5$delta_v <- ampel_5$Car_v - ampel_5$Traffic_T04_LongVel
ampel_5$ttc <- (ampel_5$distance - 5) / ampel_5$delta_v
ampel_5$delta_a <- ampel_5$Car_ax - ampel_5$Traffic_T04_a_0_x
Eampel5ttc <- min(ampel_5$ttc)
Eampel5abstand <- min(ampel_5$distance)
Eampel5geschwindigkeit <- max(ampel_5$delta_v)
Eampel5beschleunigung <- max(ampel_5$delta_a)
Endergebins <- matrix(c(Eampel1abstand, Eampel1geschwindigkeit, Eampel1beschleunigung, Eampel1ttc, Eampel2abstand, Eampel2geschwindigkeit, Eampel2beschleunigung, Eampel2ttc, Eampel3abstand, Eampel3geschwindigkeit, Eampel3beschleunigung, Eampel3ttc, Eampel4abstand, Eampel4geschwindigkeit, Eampel4beschleunigung, Eampel4ttc, Eampel5abstand, Eampel5geschwindigkeit, Eampel5beschleunigung, Eampel5ttc),ncol=1,byrow=TRUE)
Endergebnistabelle <- as.table(Endergebins)
write.table(Endergebnistabelle, "P1_final.csv")
Code: Alles auswählen
Eampel1ttc <- min(ampel_1$ttc)
Code: Alles auswählen
Eampel1geschwindigkeit <- mean(ampel_1$delta_v)
Ich habe auch echt Interesse für das Programm R entwickelt und denke, dass ich dieses vielleicht auch in Zukunft an der ein oder anderen Stelle nutzen werde. Diesbezüglich hätte ich auch noch ein paar Interessensfragen, wie man das ein oder andere vielleicht besser/übersichtlicher lösen kann (nur falls du noch Zeit und Lust hast diese zu beantworten, es wäre jetzt nicht dringend).
Jedes Mal, wenn ich diesen Code am Anfang ausführe (um den Variablen Konstanten hinzuzuaddieren) muss ich aufpassen, dass ich den Befehl nur einmal ausführe (ansonsten wird jedes Mal erneut addiert). Gibt es eine Möglichkeit diesen Befehl so zu modifizieren, dass er nur einmal ausgeführt werden kann? :
Code: Alles auswählen
fasi$Traffic_T00_sRoad <- fasi$Traffic_T00_sRoad + 357
Code: Alles auswählen
Endergebnis <- matrix(c(Eampel1abstand, Eampel1geschwindigkeit, Eampel1beschleunigung, Eampel1ttc, Eampel2abstand, Eampel2geschwindigkeit, Eampel2beschleunigung, Eampel2ttc, Eampel3abstand, Eampel3geschwindigkeit, Eampel3beschleunigung, Eampel3ttc, Eampel4abstand, Eampel4geschwindigkeit, Eampel4beschleunigung, Eampel4ttc, Eampel5abstand, Eampel5geschwindigkeit, Eampel5beschleunigung, Eampel5ttc),ncol=1,byrow=TRUE)
Endergebnistabelle <- as.table(Endergebnis)
Dann hatte mir dieser Plot, den du mir gezeigt hast, sehr gut gefallen:
Code: Alles auswählen
par(mfrow = c(4,1), mar = c(1.7,4,1,1))
plot(ampel_1$Car_Road_sRoad, ylab = "Position [m]", type = "l", ylim = c(200,900))
lines(ampel_1$Traffic_T00_sRoad, col = "red")
plot(ampel_1$distance, type="l", ylab = "distance")
plot(ampel_1$Car_v, ylab ="Velocity", type ="l")
lines(ampel_1$Traffic_T00_LongVel, col ="red")
plot(ampel_1$ttc, ylab = "Time to collision", type = "l")
Code: Alles auswählen
daten <- read.csv("P1.csv", header = TRUE, sep = ",")
daten2 <- read.csv("P2.csv", header = TRUE, sep = ",")
...
daten24 <- read.csv("P24.csv", header = TRUE, sep = ",")
LG,
Robin