Documentation
A comprehensive guide to the LAMBDA: Data Pipeline, System Configuration, and Usage.
Data Collection Pipeline
LAMBDA utilizes a sophisticated Sim-to-Real pipeline. We leverage Unreal Engine 5 for photorealistic visuals and AirSim for sensor extraction, while combining Sionna's ray tracing with CADFEKO's electromagnetic simulations.
System Configuration
We simulate a multi-sensor UAV platform equipped with visual, laser, and radio-frequency sensors.
- Camera
- LiDAR
- Wireless
RGB & Depth Cameras are physically aligned to provide pixel-level correspondence via AirSim.
- Resolution: 1920 × 1080
- FOV: 110°
- Frame Rate: 100 Hz
A mechanical spinning LiDAR simulation for dense 3D mapping.
- Channels: 128 lines
- Range: 150 m
- Horizontal FOV:
[-60°, +60°] - Horizontal Res.: 1024 points
- Vertical FOV:
[0°, 90°] - Scan Rate: 30 Hz
Wireless Channel State Information (4.9 GHz) based on Sionna Ray Tracing. The data preserves Sparse Multipath Components.
1. Channel Physics (Per Path)
- Complex Gain:
a_real,a_imag(Includes weather attenuation) - Amplitude:
sqrt(a_real^2 + a_imag^2) - Phase:
atan2(a_imag, a_real)(radians) - Delay:
tau(Propagation delay in seconds) - Doppler:
doppler(Doppler shift in Hz, derived from UAV velocity)
2. Geometric Angles
- AoD (Tx):
theta_t(Zenith),phi_t(Azimuth) - AoA (Rx):
theta_r(Zenith),phi_r(Azimuth)
3. Interaction History
- Interactions: List of interaction types (LoS, Reflection, Diffraction, Scattering).
- Valid: Boolean flag for path validation.
4. Receiver State & Metadata
- State:
t(Timestamp),uav_pos[x,y,z],uav_vel[vx,vy,vz]. - Config:
carrier_frequency(4.9GHz),weather_kind(rain/fog/clear).
File Structure
The dataset follows a structured hierarchy organized by Scenario, Weather, and Trajectory.
Dataset_Root/
├── San Francisco (Urban)/ # Scenario Name
│ ├── Scene 1/ # Sub-scene ID
│ │ ├── sunny/ # Weather Condition
│ │ │ ├── 1_uav_z_trace_1/ # [Num_UAVs]_[Trace_Type]_[Trace_ID]
│ │ │ │ ├── multipath/
│ │ │ │ │ └── f4p9GHz_V/ # Carrier Freq & Polarization
│ │ │ │ │ └── ... (.npz files)
│ │ │ │ ├── lidar/ # .pcd files
│ │ │ │ ├── rgb/ # .png files
│ │ │ │ ├── depth/ # .npz files
│ │ │ │ ├── imu/ # .json files
│ │ │ │ └── poses/ # .json/.npz files
│ │ │ ├── 1_uav_z_trace_2/
│ │ │ └── ...
│ │ ├── rainy/
│ │ └── ...
│ ├── Scene 2/
│ └── ...
├── San Francisco Style City (Suburban)/
├── SJTU IEEE/
└── ...
Usage
The LAMBDA dataset strictly follows Sionna's Right-Handed Coordinate System to align with mathematical intuition in wireless communications.
- X: Forward
- Y: Left
- Z: Up
Loading CSI Data (Python)
import numpy as np
# Load the compressed CSI file
data = np.load("path/to/csi_sample.npz")
# 1. Access Multipath Components
a_real = data['a_real']
a_imag = data['a_imag']
delays = data['tau']
doppler = data['doppler']
# 2. Reconstruct Complex Gain
complex_gain = a_real + 1j * a_imag
# 3. Access Angles (AoD / AoA)
theta_t, phi_t = data['theta_t'], data['phi_t']
theta_r, phi_r = data['theta_r'], data['phi_r']
print(f"Detected {len(delays)} paths.")
print(f"Max Doppler Shift: {np.max(np.abs(doppler)):.2f} Hz")