CARLA ? C-Shenron based Simualtor for Sensor data generation.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

126 lines
2.9 KiB

import os
import json
import numpy as np
import matplotlib.pyplot as plt
PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
DATA_PATH = os.path.join(PROJECT_ROOT, "data")
# ---------------- LOAD FRAME METADATA ----------------
def load_frame(frame_id):
with open(os.path.join(DATA_PATH, "frames.jsonl")) as f:
for line in f:
data = json.loads(line)
if data["frame_id"] == frame_id:
return data
return None
# ---------------- RADAR ----------------
def inspect_radar(frame_id):
path = os.path.join(DATA_PATH, "radar", f"frame_{frame_id:06d}.npy")
data = np.load(path)
print("\n--- RADAR DATA ---")
print("Shape:", data.shape)
if len(data) > 0:
print("\nFirst 5 detections:")
for row in data[:5]:
print(f"Depth={row[0]:.2f} m | Azimuth={row[1]:.3f} rad | Vel={row[3]:.2f} m/s")
else:
print("No radar detections")
return data
# ---------------- LIDAR ----------------
def inspect_lidar(frame_id):
path = os.path.join(DATA_PATH, "lidar", f"frame_{frame_id:06d}.npy")
data = np.load(path)
print("\n--- LIDAR DATA ---")
print("Shape:", data.shape)
print("\nFirst 5 points:")
for row in data[:5]:
print(f"x={row[0]:.2f}, y={row[1]:.2f}, z={row[2]:.2f}")
return data
# ---------------- GROUND TRUTH ----------------
def inspect_gt(frame_id):
frame = load_frame(frame_id)
print("\n--- GROUND TRUTH ---")
gt = frame["ground_truth"]
print(f"Total vehicles: {len(gt)}")
for v in gt[:5]:
print(f"ID={v['id']} | x={v['x']:.2f}, y={v['y']:.2f} | speed={v['speed']:.2f}")
# ---------------- PLOT RADAR ----------------
def plot_radar(radar_data):
if len(radar_data) == 0:
print("No radar data to plot")
return
r = radar_data[:, 0]
az = radar_data[:, 1]
x = r * np.cos(az)
y = r * np.sin(az)
plt.figure()
plt.scatter(x, y, s=10)
plt.title("Radar XY")
plt.xlabel("X (m)")
plt.ylabel("Y (m)")
plt.axis("equal")
plt.grid()
plt.show()
# ---------------- PLOT LIDAR ----------------
def plot_lidar(lidar_data):
x = lidar_data[:, 0]
y = lidar_data[:, 1]
plt.figure()
plt.scatter(x, y, s=1)
plt.title("Lidar Top View")
plt.axis("equal")
plt.grid()
plt.show()
# ---------------- MAIN ----------------
if __name__ == "__main__":
frame_id = int(input("Enter frame number: "))
frame = load_frame(frame_id)
if frame is None:
print("Frame not found")
exit()
print("\n========== FRAME INFO ==========")
print("Frame ID:", frame["frame_id"])
print("Timestamp:", frame["timestamp"])
inspect_gt(frame_id)
radar = inspect_radar(frame_id)
lidar = inspect_lidar(frame_id)
# Optional plots
plot_choice = input("\nPlot data? (y/n): ").lower()
if plot_choice == "y":
plot_radar(radar)
plot_lidar(lidar)