Kaynağa Gözat

修改pitch、roll以及pitch_rate、roll_rate信号没有值的bug

XGJ_zhaoyuan 1 hafta önce
ebeveyn
işleme
4644648f3c
1 değiştirilmiş dosya ile 16 ekleme ve 7 silme
  1. 16 7
      core/processors/built_in/lst.py

+ 16 - 7
core/processors/built_in/lst.py

@@ -66,15 +66,15 @@ class ZipCSVProcessor:
     # Define column mappings more clearly
     EGO_COLS_NEW = [
         "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
     ]
     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"
     ]
     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):
         self.config = config
@@ -111,8 +111,10 @@ class ZipCSVProcessor:
                 "speedY": "y_speed",
                 "speedX": "x_speed",
                 "posH": "yaw",
-                "pitch": "pitch",
+                "pitch": "tilt",
                 "roll": "roll",
+                "roll_rate": "roll_rate",
+                "pitch_rate": "tilt_rate",
                 "speedH": "yaw_rate",
                 "posX": "latitude_dd",  # Source before projection
                 "posY": "longitude_dd",  # Source before projection
@@ -127,9 +129,9 @@ class ZipCSVProcessor:
                 "y_relative_dist": "y_distance",
                 "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):
@@ -146,6 +148,8 @@ class ZipCSVProcessor:
                 "posH": "VUT_Heading",
                 "pitch": "VUT_Pitch",
                 "roll": "VUT_Roll",
+                "pitch_rate": None,
+                "roll_rate": None,
                 "accelX": "VUT_Acc_X",
                 "accelY": "VUT_Acc_Y",
                 "accelZ": "VUT_Acc_Z",
@@ -159,6 +163,8 @@ class ZipCSVProcessor:
                 "posH_obj": "Heading",
                 "pitch_obj": None,
                 "roll_obj": None,
+                "pitch_rate_obj": None,
+                "roll_rate_obj": None,
                 "accelX_obj": "Acc_X",
                 "accelY_obj": "Acc_Y",
                 "accelZ_obj": "Acc_Z",
@@ -436,6 +442,7 @@ class ZipCSVProcessor:
 
             # Sort and clean up
             df_merged.sort_values(by=["simTime", "simFrame", "playerId"], inplace=True)
+            df_merged.fillna(0, inplace = True)
             df_merged.reset_index(drop=True, inplace=True)
 
             # 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["playerId"] = int(player_id)
             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:
             print(f"{ve}")
         except TypeError as te: