Radar Module

The radar module provides data structures for representing radar sensors, including detection capabilities and Doppler velocity measurements.

Radar

class mimic_data_api.radar.Radar(*, id, name, extrinsics, intrinsics, trajectory, radar_pcds_data)[source]

Bases: BaseModel

Complete radar sensor representation.

This class encapsulates all information about a radar sensor including its calibration, intrinsic parameters, trajectory, and captured point cloud data.

id

Unique identifier for the radar within the sensor suite.

Type:

int

name

Human-readable name for the radar (e.g., “front_radar”, “corner_radar”).

Type:

str

extrinsics

4x4 transformation matrix from sensor frame to vehicle frame.

Type:

SensorExtrinsic

intrinsics

Internal radar parameters (FOV, resolution, range, velocity limits).

Type:

RadarIntrinsics

trajectory

Time-series of radar poses in world coordinates.

Type:

WorldTrajectory

radar_pcds_data

List of captured radar point clouds with their metadata.

Type:

list of RadarPointCloudData

Note

Radar sensors provide unique capabilities compared to LiDAR and cameras:

  • Direct velocity measurement via Doppler effect

  • Better performance in adverse weather (rain, fog, dust)

  • Longer detection range for some targets

  • Lower angular resolution compared to LiDAR

Example

>>> radar = Radar(
...     id=0,
...     name="front_long_range_radar",
...     extrinsics=np.eye(4),
...     intrinsics=intrinsics,
...     trajectory=trajectory,
...     radar_pcds_data=[pcd_data]
... )

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

id: int
name: str
extrinsics: float64'>)]
intrinsics: RadarIntrinsics
trajectory: WorldTrajectory
radar_pcds_data: list[RadarPointCloudData]
__eq__(other)[source]

Check equality with another Radar.

Performs deep comparison of all radar attributes including calibration parameters, trajectory, and point cloud data.

Parameters:

other (object) – The object to compare against.

Returns:

True if radars are equal, False otherwise.

Return type:

bool

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

RadarIntrinsics

class mimic_data_api.radar.RadarIntrinsics(*, range, azimuth_fov, elevation_fov, azimuth_resolution, elevation_resolution, min_speed_resolution, max_speed_resolution)[source]

Bases: BaseModel

Internal parameters for a radar sensor.

Defines the sensing characteristics of a radar including field of view, angular resolution, range, and velocity measurement capabilities.

range

Maximum detection range in meters. Must be >= 0.

Type:

float

azimuth_fov

Horizontal field of view in radians. Must be >= 0.

Type:

float

elevation_fov

Vertical field of view in radians. Must be >= 0.

Type:

float

azimuth_resolution

Azimuth (horizontal) angular resolution as a function of angle. Each tuple contains (angle_in_radians, resolution_in_radians). Resolution may vary across the field of view, hence the list format.

Type:

list of tuple[float, float]

elevation_resolution

Elevation (vertical) angular resolution for imaging radars. Same format as azimuth_resolution. None for non-imaging radars.

Type:

list of tuple[float, float] or None

min_speed_resolution

Minimum measurable radial (Doppler) velocity in m/s. Typically negative, representing approaching targets.

Type:

float

max_speed_resolution

Maximum measurable radial (Doppler) velocity in m/s. Typically positive, representing receding targets.

Type:

float

Note

Resolution parameters are specified as (angle, resolution) pairs because many radar sensors have angle-dependent resolution - typically better resolution near boresight and degraded resolution at the edges of FOV.

Example

>>> intrinsics = RadarIntrinsics(
...     range=200.0,  # 200m max range
...     azimuth_fov=2.09,  # 120 degrees
...     elevation_fov=0.35,  # 20 degrees
...     azimuth_resolution=[
...         (0.0, 0.017),   # 1 degree at boresight
...         (0.5, 0.026),   # 1.5 degrees at 30 degrees off-axis
...         (1.0, 0.035)    # 2 degrees at edge of FOV
...     ],
...     elevation_resolution=None,  # Non-imaging radar
...     min_speed_resolution=-70.0,
...     max_speed_resolution=70.0
... )

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

Resolution Specification

Radar resolution is often angle-dependent. The azimuth_resolution parameter is specified as a list of (angle, resolution) tuples:

intrinsics = RadarIntrinsics(
    range=200.0,
    azimuth_fov=2.0,
    elevation_fov=0.35,
    azimuth_resolution=[
        (0.0, 0.017),   # 1° at boresight
        (0.5, 0.026),   # 1.5° at 30° off-axis
        (1.0, 0.035)    # 2° at edge of FOV
    ],
    elevation_resolution=None,  # Non-imaging radar
    min_speed_resolution=-70.0,
    max_speed_resolution=70.0
)
range: float
azimuth_fov: float
elevation_fov: float
azimuth_resolution: list[tuple[float, float]]
elevation_resolution: list[tuple[float, float]] | None
min_speed_resolution: float
max_speed_resolution: float
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

RadarPointCloudData

class mimic_data_api.radar.RadarPointCloudData(*, filepath, radar_pcd=None, timestamp)[source]

Bases: BaseModel

Metadata and optional point cloud data for a single radar scan.

This class stores information about individual radar detections, including file location and timestamp.

filepath

Path to the point cloud file (PLY format).

Type:

str

radar_pcd

Optional in-memory point cloud data. Not serialized to JSON.

Type:

RadarPointCloud or None

timestamp

Timestamp in seconds corresponding to the middle of the scan.

Type:

float

Note

Radar point clouds typically include additional per-point attributes such as radial velocity (Doppler), radar cross-section (RCS), and signal-to-noise ratio (SNR).

Example

>>> pcd_data = RadarPointCloudData(
...     filepath="data/radar/scan_000.ply",
...     timestamp=0.0
... )

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

Note

Radar point clouds typically include per-point attributes such as:

  • Radial velocity: Doppler-measured velocity component

  • RCS: Radar cross-section (target reflectivity)

  • SNR: Signal-to-noise ratio

filepath: str
radar_pcd: RadarPointCloud | None
timestamp: float
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

Radar vs LiDAR Comparison

Property

Radar

LiDAR

Velocity

Direct Doppler measurement

Computed from tracking

Weather

Good in rain/fog/dust

Degraded in adverse conditions

Range

Up to 250m+ (long range)

Typically 100-200m

Angular resolution

Lower (degrees)

Higher (0.1° typical)

Point density

Sparse (hundreds)

Dense (millions)