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:
BaseModelComplete radar sensor representation.
This class encapsulates all information about a radar sensor including its calibration, intrinsic parameters, trajectory, and captured point cloud data.
- extrinsics¶
4x4 transformation matrix from sensor frame to vehicle frame.
- Type:
SensorExtrinsic
- intrinsics¶
Internal radar parameters (FOV, resolution, range, velocity limits).
- Type:
- trajectory¶
Time-series of radar poses in world coordinates.
- Type:
- radar_pcds_data¶
List of captured radar point clouds with their metadata.
- Type:
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.
- 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.
- 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:
BaseModelInternal parameters for a radar sensor.
Defines the sensing characteristics of a radar including field of view, angular resolution, range, and velocity measurement capabilities.
- 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.
- elevation_resolution¶
Elevation (vertical) angular resolution for imaging radars. Same format as
azimuth_resolution.Nonefor non-imaging radars.
- min_speed_resolution¶
Minimum measurable radial (Doppler) velocity in m/s. Typically negative, representing approaching targets.
- Type:
- max_speed_resolution¶
Maximum measurable radial (Doppler) velocity in m/s. Typically positive, representing receding targets.
- Type:
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_resolutionparameter 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 )
- 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:
BaseModelMetadata and optional point cloud data for a single radar scan.
This class stores information about individual radar detections, including file location and timestamp.
- radar_pcd¶
Optional in-memory point cloud data. Not serialized to JSON.
- Type:
RadarPointCloud or None
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
- 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) |