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.
 
 
 
 
 

88 lines
3.0 KiB

import numpy as np
import os
import sys
from pathlib import Path
# Add project root and ISOLATE paths
project_root = Path(__file__).parent.parent.parent
sys.path.append(str(project_root))
sys.path.append(str(project_root / 'scripts' / 'ISOLATE'))
try:
from scripts.ISOLATE.model_wrapper import ShenronRadarModel
print("✅ Model Import: SUCCESS")
except Exception as e:
print(f"❌ Model Import: FAILED ({e})")
sys.exit(1)
def verify_signal_flow(frame_idx=190):
print(f"\n--- 🛰️ Radar Lab Verification (Frame {frame_idx}) ---")
# 1. Initialize Engine
try:
model = ShenronRadarModel(radar_type='awrl1432')
print(f"✅ Engine Init: awrl1432 (Gain: {model.radar_obj.gain}dB)")
except Exception as e:
print(f"❌ Engine Init: FAILED ({e})")
return
# 2. Load Real LiDAR Data
lidar_path = project_root / 'Shenron_debug' / 'logs' / 'lidar' / f"frame_{frame_idx:06d}.npy"
if not lidar_path.exists():
print(f"❌ Lidar Data: NOT FOUND at {lidar_path}")
return
data = np.load(lidar_path)
# Pad to 7-col [x,y,z,int,cos,obj,tag] if old 6-col format
if data.shape[1] == 6:
padded = np.zeros((data.shape[0], 7), dtype=np.float32)
padded[:, 0:3] = data[:, 0:3]
padded[:, 4:7] = data[:, 3:6]
data = padded
print(f"✅ Lidar Data Loaded: {data.shape[0]} points")
# 3. Process Frame
try:
pcd = model.process(data)
print(f"✅ Signal Process: SUCCESS ({len(pcd)} detections)")
except Exception as e:
print(f"❌ Signal Process: FAILED ({e})")
return
# 4. Verify Metrology Extraction
try:
met = model.get_last_metrology()
keys = met.keys()
expected = ["rd_heatmap", "ra_heatmap", "threshold_matrix"]
status = True
for k in expected:
if k not in keys:
print(f"❌ Metrology Key Missing: {k}")
status = False
else:
val = met[k]
if np.max(val) <= 0:
print(f"❌ Metrology Data Null: {k} (Max: {np.max(val)})")
status = False
if status:
print("✅ Metrology Extraction: ALL KEYS VALID")
print(f" -> RD Heatmap: {met['rd_heatmap'].shape} (Peak Power: {np.max(met['rd_heatmap']):.2e})")
print(f" -> RA Heatmap: {met['ra_heatmap'].shape} (Peak Power: {np.max(met['ra_heatmap']):.2e})")
print(f" -> CFAR Threshold: {met['threshold_matrix'].shape} (Mean: {np.mean(met['threshold_matrix']):.2e})")
except Exception as e:
print(f"❌ Metrology Extraction: FAILED ({e})")
# 5. Verify Signal Metrics
try:
metrics = model.get_signal_metrics()
print(f"✅ Signal Metrics: {metrics}")
if metrics['peak_snr_db'] <= 0:
print("⚠️ WARNING: Very low SNR detected (< 0dB). Check gain.")
except Exception as e:
print(f"❌ Signal Metrics: FAILED ({e})")
if __name__ == "__main__":
verify_signal_flow(190)