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.
39 lines
1.5 KiB
39 lines
1.5 KiB
import numpy as np
|
|
import json
|
|
from pathlib import Path
|
|
|
|
def get_peak_tracking(session_path):
|
|
session_path = Path(session_path)
|
|
radar_types = ['awrl1432', 'radarbook']
|
|
|
|
results = {}
|
|
for r in radar_types:
|
|
rd_dir = session_path / r / "metrology" / "rd"
|
|
if not rd_dir.exists(): continue
|
|
|
|
frames = sorted(list(rd_dir.glob("*.npy")))
|
|
track = []
|
|
for f_path in frames:
|
|
rd = np.load(f_path)
|
|
# Find coordinates of the max energy
|
|
idx = np.unravel_index(np.argmax(rd), rd.shape)
|
|
val = 10 * np.log10(np.max(rd) + 1e-9)
|
|
track.append({"frame": f_path.stem, "range_bin": int(idx[0]), "doppler_bin": int(idx[1]), "db": float(val)})
|
|
results[r] = track
|
|
|
|
print("\n--- Peak Tracking Comparison (First 20 frames) ---")
|
|
header = f"{'Frame':<15} | {'1432 R-Bin':<12} | {'RB R-Bin':<12} | {'1432 dB':<10} | {'RB dB':<10}"
|
|
print(header)
|
|
print("-" * len(header))
|
|
|
|
for i in range(min(20, len(results.get('awrl1432', [])))):
|
|
f14 = results['awrl1432'][i]
|
|
frb = results['radarbook'][i]
|
|
print(f"{f14['frame']:<15} | {f14['range_bin']:<12} | {frb['range_bin']:<12} | {f14['db']:<10.1f} | {frb['db']:<10.1f}")
|
|
|
|
if __name__ == "__main__":
|
|
target_session = Path("data/braking_20260414_142359")
|
|
if target_session.exists():
|
|
get_peak_tracking(target_session)
|
|
else:
|
|
print(f"Session {target_session} not found.")
|