|
@@ -66,15 +66,15 @@ class ZipCSVProcessor:
|
|
# Define column mappings more clearly
|
|
# Define column mappings more clearly
|
|
EGO_COLS_NEW = [
|
|
EGO_COLS_NEW = [
|
|
"simTime", "simFrame", "playerId", "v", "speedX", "speedY",
|
|
"simTime", "simFrame", "playerId", "v", "speedX", "speedY",
|
|
- "posH", "pitch", "roll", "speedH", "posX", "posY", "accelX", "accelY", "accelZ",
|
|
|
|
|
|
+ "posH", "pitch", "roll", "roll_rate", "pitch_rate", "speedH", "posX", "posY", "accelX", "accelY", "accelZ",
|
|
"travelDist", "composite_v", "relative_dist", "x_relative_dist", "y_relative_dist", "type" # Added type
|
|
"travelDist", "composite_v", "relative_dist", "x_relative_dist", "y_relative_dist", "type" # Added type
|
|
]
|
|
]
|
|
OBJ_COLS_OLD_SUFFIXED = [
|
|
OBJ_COLS_OLD_SUFFIXED = [
|
|
- "v_obj", "speedX_obj", "speedY_obj", "posH_obj", "pitch_obj", "roll_obj", "speedH_obj",
|
|
|
|
|
|
+ "v_obj", "speedX_obj", "speedY_obj", "posH_obj", "pitch_obj", "roll_obj", "roll_rate_obj", "pitch_rate_obj", "speedH_obj",
|
|
"posX_obj", "posY_obj", "accelX_obj", "accelY_obj", "accelZ_obj", "travelDist_obj"
|
|
"posX_obj", "posY_obj", "accelX_obj", "accelY_obj", "accelZ_obj", "travelDist_obj"
|
|
]
|
|
]
|
|
OBJ_COLS_MAPPING = {old: new for old, new in
|
|
OBJ_COLS_MAPPING = {old: new for old, new in
|
|
- zip(OBJ_COLS_OLD_SUFFIXED, EGO_COLS_NEW[3:16])} # Map suffixed cols to standard names
|
|
|
|
|
|
+ zip(OBJ_COLS_OLD_SUFFIXED, EGO_COLS_NEW[3:18])} # Map suffixed cols to standard names
|
|
|
|
|
|
def __init__(self, config: Config):
|
|
def __init__(self, config: Config):
|
|
self.config = config
|
|
self.config = config
|
|
@@ -111,8 +111,10 @@ class ZipCSVProcessor:
|
|
"speedY": "y_speed",
|
|
"speedY": "y_speed",
|
|
"speedX": "x_speed",
|
|
"speedX": "x_speed",
|
|
"posH": "yaw",
|
|
"posH": "yaw",
|
|
- "pitch": "pitch",
|
|
|
|
|
|
+ "pitch": "tilt",
|
|
"roll": "roll",
|
|
"roll": "roll",
|
|
|
|
+ "roll_rate": "roll_rate",
|
|
|
|
+ "pitch_rate": "tilt_rate",
|
|
"speedH": "yaw_rate",
|
|
"speedH": "yaw_rate",
|
|
"posX": "latitude_dd", # Source before projection
|
|
"posX": "latitude_dd", # Source before projection
|
|
"posY": "longitude_dd", # Source before projection
|
|
"posY": "longitude_dd", # Source before projection
|
|
@@ -127,9 +129,9 @@ class ZipCSVProcessor:
|
|
"y_relative_dist": "y_distance",
|
|
"y_relative_dist": "y_distance",
|
|
"type": None # Will be set later
|
|
"type": None # Will be set later
|
|
},
|
|
},
|
|
- "db_columns": ["ID", "second", "usecond", "speed", "y_speed", "x_speed",
|
|
|
|
- "yaw", "yaw_rate", "latitude_dd", "longitude_dd",
|
|
|
|
- "x_acceleration", "y_acceleration", "total_distance"] # Actual cols to SELECT
|
|
|
|
|
|
+ "db_columns": ["ID", "second", "usecond", "speed", "y_speed", "x_speed", "pitch_rate", "z_acceleration",
|
|
|
|
+ "yaw", "tilt", "roll", "yaw_rate", "latitude_dd", "longitude_dd", "roll_rate", "total_distance",
|
|
|
|
+ "x_acceleration", "y_acceleration", "total_distance", "distance", "x_distance", "y_distance"] # Actual cols to SELECT
|
|
}
|
|
}
|
|
|
|
|
|
def _get_can_config(self):
|
|
def _get_can_config(self):
|
|
@@ -146,6 +148,8 @@ class ZipCSVProcessor:
|
|
"posH": "VUT_Heading",
|
|
"posH": "VUT_Heading",
|
|
"pitch": "VUT_Pitch",
|
|
"pitch": "VUT_Pitch",
|
|
"roll": "VUT_Roll",
|
|
"roll": "VUT_Roll",
|
|
|
|
+ "pitch_rate": None,
|
|
|
|
+ "roll_rate": None,
|
|
"accelX": "VUT_Acc_X",
|
|
"accelX": "VUT_Acc_X",
|
|
"accelY": "VUT_Acc_Y",
|
|
"accelY": "VUT_Acc_Y",
|
|
"accelZ": "VUT_Acc_Z",
|
|
"accelZ": "VUT_Acc_Z",
|
|
@@ -159,6 +163,8 @@ class ZipCSVProcessor:
|
|
"posH_obj": "Heading",
|
|
"posH_obj": "Heading",
|
|
"pitch_obj": None,
|
|
"pitch_obj": None,
|
|
"roll_obj": None,
|
|
"roll_obj": None,
|
|
|
|
+ "pitch_rate_obj": None,
|
|
|
|
+ "roll_rate_obj": None,
|
|
"accelX_obj": "Acc_X",
|
|
"accelX_obj": "Acc_X",
|
|
"accelY_obj": "Acc_Y",
|
|
"accelY_obj": "Acc_Y",
|
|
"accelZ_obj": "Acc_Z",
|
|
"accelZ_obj": "Acc_Z",
|
|
@@ -436,6 +442,7 @@ class ZipCSVProcessor:
|
|
|
|
|
|
# Sort and clean up
|
|
# Sort and clean up
|
|
df_merged.sort_values(by=["simTime", "simFrame", "playerId"], inplace=True)
|
|
df_merged.sort_values(by=["simTime", "simFrame", "playerId"], inplace=True)
|
|
|
|
+ df_merged.fillna(0, inplace = True)
|
|
df_merged.reset_index(drop=True, inplace=True)
|
|
df_merged.reset_index(drop=True, inplace=True)
|
|
|
|
|
|
# Fill potential NaNs introduced by reindexing or missing data
|
|
# Fill potential NaNs introduced by reindexing or missing data
|
|
@@ -586,6 +593,8 @@ class ZipCSVProcessor:
|
|
df_vehicle["simFrame"] = np.arange(1, len(df_vehicle) + 1)
|
|
df_vehicle["simFrame"] = np.arange(1, len(df_vehicle) + 1)
|
|
df_vehicle["playerId"] = int(player_id)
|
|
df_vehicle["playerId"] = int(player_id)
|
|
df_vehicle['playerId'] = pd.to_numeric(df_vehicle['playerId']).astype(int)
|
|
df_vehicle['playerId'] = pd.to_numeric(df_vehicle['playerId']).astype(int)
|
|
|
|
+ df_vehicle["pitch_rate"] = df_vehicle["pitch"].diff() / df_vehicle["simTime"].diff()
|
|
|
|
+ df_vehicle["roll_rate"] = df_vehicle["roll"].diff() / df_vehicle["simTime"].diff()
|
|
except ValueError as ve:
|
|
except ValueError as ve:
|
|
print(f"{ve}")
|
|
print(f"{ve}")
|
|
except TypeError as te:
|
|
except TypeError as te:
|