Omniverse Radar Extension#
Introduction#
The Radar Sensor extension consists of models and OmniGraph nodes for various post-processing functions (e.g., transcoding Radar data into vendor-specific formats).
Currently, the extension supports one model:
WpmDmatApproxRadar
This model has its own parameterization and at least one post-processing OmniGraph definition that specifies the processing pipeline nodes with default parameters.
Multiple post-processing OmniGraphs can exist for the same Radar model, each with unique parameter values and/or different node configurations.
“WpmDmatApprox” stands for “Wave Propagation Model Detection Matrix Approximation”. It uses the Wave Propagation Model (WPM) to ensure high fidelity while maintaining real-time capability. Key features include:
Multiple bounces
Support for different materials and improved radiometry
Antenna gain patterns with separated Tx/Rx element support
Initial MIMO radar support with real and virtual receiving apertures (real aperture: 1 Tx, N Rx; virtual aperture: M Tx, N Rx → virtual: 1 Tx, M×N Rx). Real Tx and Rx elements are assumed to form an L-shape configuration so that the virtual receiving antenna array forms a 2D uniform planar array
Multiple scan configurations (e.g. near and far scan) per Radar instance
Radar Phenomenology#
The WPM DMAT approximation produces detections rather than ground-truth surface samples by populating a range-velocity-azimuth-elevation datacube with ray-tracing contributions.
FAST maps the contributions directly into detection-matrix bins, while WAVEFORM processes them using the configured waveform parameters.
As a result, WAVEFORM can model additional signal-processing effects, including those introduced by sampling a continuous signal and the main lobe and sidelobes produced by Fourier-transforming a finite-duration time-domain signal.
CFAR evaluates the resulting datacube using its configured 2D or 4D neighborhood and extracts detections from cells that pass the detection threshold.
Each detection can report range or position, radial velocity, azimuth, elevation, and radar cross section (RCS).
Whether a surface produces a detection depends on propagation geometry, antenna sensitivity, material response, return strength, discretization, configured noise, and detection filtering.
The reported range is derived from the round-trip propagation distance. An indirect path can therefore produce a detection at a different range from the direct geometric distance to an object. Radial velocity represents motion along the radar line of sight; transverse motion alone does not produce the same Doppler response. Moving or articulated surfaces can produce multiple velocity contributions when their motion is represented in the scene and the configured velocity resolution can separate them.
Resolution and accuracy are separate concepts.
In FAST mode with binsFromSpec = true, rangeResM, velResMps, boreAzResDeg, and boreElResDeg control detection-matrix resolution and target separation.
They do not add measurement error.
The range, velocity, azimuth, and elevation noise attributes control statistical measurement variation.
raysPerDeg controls geometric sampling density and is not an angular-resolution setting.
Phenomenon |
Observable effect |
Primary controls |
|---|---|---|
Field of view and antenna sensitivity |
Targets outside the configured angular interval are rejected unless angular aliasing is enabled. Within the interval, transmit and receive gain patterns change contribution strength with direction. |
|
Materials and radiometry |
Material assignment, incidence geometry, wavelength, antenna gain, and distance affect return strength and RCS. Incorrect or missing non-visual material data can change which objects pass detection filtering. |
SimReady non-visual materials, |
Multipath and ghost detections |
Indirect propagation paths can produce additional detections with shifted range, angle, velocity, or RCS. Scene geometry and material response determine whether those paths are significant. |
|
Motion and Doppler |
Sensor and target motion change radial velocity. Multiple moving surfaces can create a velocity spread when the motion and geometry are represented and resolvable. |
Scene motion, Motion BVH, |
Range, angle, and velocity ambiguity |
Values outside an unambiguous interval can be discarded or folded into that interval, producing a plausible detection at the wrong range, angle, or radial velocity. |
|
Detection and false alarms |
Weak contributions can be removed, while configured noise can vary the measured value or cause threshold crossings. |
|
Fidelity and performance |
Denser geometric sampling, more propagation depth, and larger datacubes can resolve more contributions but require more processing and memory. |
|
In FAST mode, valid contributions are mapped into configured range, velocity, azimuth, and elevation bins before detection processing.
With range or angular aliasing disabled, contributions outside the corresponding configured interval are discarded.
With aliasing enabled, out-of-interval values fold into the configured interval.
Radial velocity folds into the interval selected from maxVelMpsSequence.
In WAVEFORM mode, ambiguity follows the configured waveform and sampled spectrum.
Author material classifications with the public SimReady non-visual material specification.
Example Radar Prim
This is an example of how to define a Radar sensor in USD:
def OmniRadar "generic_radar" (
doc = """Defines an instance of a radar that uses WPM DMAT approximation model"""
prepend apiSchemas = ["OmniSensorGenericRadarWpmDmatAPI", "OmniSensorGenericRadarWpmDmatScanCfgAPI:s002"]
)
# Note: OmniSensorGenericRadarWpmDmatAPI automatically includes OmniSensorGenericRadarWpmDmatScanCfgAPI:s001
# by default, so this example configures two scans: s001 and s002
{
# Global radar parameters from OmniSensorGenericRadarWpmDmatAPI
float omni:sensor:tickRate = 20.0
token omni:sensor:WpmDmat:elementsCoordsType = "SPHERICAL"
token omni:sensor:WpmDmat:outputFrameOfReference = "SENSOR"
float[] omni:sensor:WpmDmat:customFrameOfReferenceTrafo = [0,0,0,0,0,0]
float omni:sensor:WpmDmat:waveLengthMm = 3.9
uint omni:sensor:WpmDmat:traceTreeDepth = 4
uint omni:sensor:WpmDmat:instanceTimeOffsetUsec = 5000
token omni:sensor:WpmDmat:cfarMode = "2D"
# First scan configuration (short range, wide angle)
token omni:sensor:WpmDmat:scan:s001:elevMode = "NO_EL"
token omni:sensor:WpmDmat:scan:s001:datacubeMode = "FAST"
float omni:sensor:WpmDmat:scan:s001:maxRangeM = 50
float omni:sensor:WpmDmat:scan:s001:maxAzAngDeg = 75
float omni:sensor:WpmDmat:scan:s001:maxElAngDeg = 20
float omni:sensor:WpmDmat:scan:s001:raysPerDeg = 8.0
uint omni:sensor:WpmDmat:scan:s001:timeOffsetUsec = 0
float omni:sensor:WpmDmat:scan:s001:powerFactor = 1.0
bool omni:sensor:WpmDmat:scan:s001:binsFromSpec = true
bool omni:sensor:WpmDmat:scan:s001:enAngAliasing = false
bool omni:sensor:WpmDmat:scan:s001:enableRangeAliasing = false
bool omni:sensor:WpmDmat:scan:s001:detValFromBinIdx = false
float omni:sensor:WpmDmat:scan:s001:rangeResM = 0.4
float omni:sensor:WpmDmat:scan:s001:velResMps = 0.147
float omni:sensor:WpmDmat:scan:s001:boreAzResDeg = 1.3
float omni:sensor:WpmDmat:scan:s001:boreElResDeg = 5.0
uint omni:sensor:WpmDmat:scan:s001:rBins = 112
uint omni:sensor:WpmDmat:scan:s001:vBins = 160
uint omni:sensor:WpmDmat:scan:s001:azBins = 12
uint omni:sensor:WpmDmat:scan:s001:elBins = 2
uint omni:sensor:WpmDmat:scan:s001:cfarRnT = 1
uint omni:sensor:WpmDmat:scan:s001:cfarRnG = 0
uint omni:sensor:WpmDmat:scan:s001:cfarVnT = 1
uint omni:sensor:WpmDmat:scan:s001:cfarVnG = 0
uint omni:sensor:WpmDmat:scan:s001:cfarAznT = 1
uint omni:sensor:WpmDmat:scan:s001:cfarAznG = 0
uint omni:sensor:WpmDmat:scan:s001:cfarElnT = 1
uint omni:sensor:WpmDmat:scan:s001:cfarElnG = 0
float omni:sensor:WpmDmat:scan:s001:cfarMinVal = 7e-17
float omni:sensor:WpmDmat:scan:s001:cfarOffset = 1.0
float omni:sensor:WpmDmat:scan:s001:cfarNoiseMean = 0.0
float omni:sensor:WpmDmat:scan:s001:cfarNoiseSDev = 0.0
float[] omni:sensor:WpmDmat:scan:s001:maxVelMpsSequence = [50.0, 55.0]
float[] omni:sensor:WpmDmat:scan:s001:rcsTuningCoefficients = [-12, 150, 0.0]
float omni:sensor:WpmDmat:scan:s001:azimuthRadNoiseMean = 0.0
float omni:sensor:WpmDmat:scan:s001:azimuthRadNoiseSDev = 0.0
float omni:sensor:WpmDmat:scan:s001:elevationRadNoiseMean = 0.0
float omni:sensor:WpmDmat:scan:s001:elevationRadNoiseSDev = 0.0
float omni:sensor:WpmDmat:scan:s001:velocityNoiseMean = 0.0
float omni:sensor:WpmDmat:scan:s001:velocityNoiseSDev = 0.0
float omni:sensor:WpmDmat:scan:s001:rangeNoiseMean = 0.0
float omni:sensor:WpmDmat:scan:s001:rangeNoiseSDev = 0.0
float omni:sensor:WpmDmat:scan:s001:exponentialDecayFactor = 1.0
# Window selections for waveform range and Doppler processing
token omni:sensor:WpmDmat:scan:s001:windowSlowTime = "RECT"
token omni:sensor:WpmDmat:scan:s001:windowFastTime = "RECT"
# Signal processing parameters (when datacubeMode = "WAVEFORM")
uint omni:sensor:WpmDmat:scan:s001:waveformMode = 0
uint omni:sensor:WpmDmat:scan:s001:slowTimeSamples = 379
uint omni:sensor:WpmDmat:scan:s001:fastTimeSamples = 625
uint omni:sensor:WpmDmat:scan:s001:azimuthPaddingSamples = 128
uint omni:sensor:WpmDmat:scan:s001:elevationPaddingSamples = 32
uint omni:sensor:WpmDmat:scan:s001:slowTimePaddingSamples = 512
uint omni:sensor:WpmDmat:scan:s001:fastTimePaddingSamples = 1024
float omni:sensor:WpmDmat:scan:s001:carrierFrequency = 77e9
float omni:sensor:WpmDmat:scan:s001:chirpDuration = 6.4e-05
float omni:sensor:WpmDmat:scan:s001:chirpBandwidth = 1.5e9
float omni:sensor:WpmDmat:scan:s001:chirpRepetitionTime = 35e-06
float omni:sensor:WpmDmat:scan:s001:frequencyStepBetweenChirps = 0.0
float omni:sensor:WpmDmat:scan:s001:supportFactor = 1.0
# Separate Tx/Rx element and (virtual) receiving aperture parameters (per-scan)
# Tx element
token omni:sensor:WpmDmat:scan:s001:txAntennaGainMode = "COSINE_FALLOFF"
uint omni:sensor:WpmDmat:scan:s001:txArrayAzimuthElements = 85
uint omni:sensor:WpmDmat:scan:s001:txArrayElevationElements = 14
float omni:sensor:WpmDmat:scan:s001:txAzimuthElementSpacing = 0.00236
float omni:sensor:WpmDmat:scan:s001:txElevationElementSpacing = 0.00332
token omni:sensor:WpmDmat:scan:s001:txWindowAzimuth = "RECT"
token omni:sensor:WpmDmat:scan:s001:txWindowElevation = "RECT"
float omni:sensor:WpmDmat:scan:s001:txAzimuthSteeringAngleDeg = 0.0
float omni:sensor:WpmDmat:scan:s001:txElevationSteeringAngleDeg = 0.0
# Rx element
token omni:sensor:WpmDmat:scan:s001:rxAntennaGainMode = "COSINE_FALLOFF"
uint omni:sensor:WpmDmat:scan:s001:rxArrayAzimuthElements = 85
uint omni:sensor:WpmDmat:scan:s001:rxArrayElevationElements = 14
float omni:sensor:WpmDmat:scan:s001:rxAzimuthElementSpacing = 0.00236
float omni:sensor:WpmDmat:scan:s001:rxElevationElementSpacing = 0.00332
token omni:sensor:WpmDmat:scan:s001:rxWindowAzimuth = "RECT"
token omni:sensor:WpmDmat:scan:s001:rxWindowElevation = "RECT"
float omni:sensor:WpmDmat:scan:s001:rxAzimuthSteeringAngleDeg = 0.0
float omni:sensor:WpmDmat:scan:s001:rxElevationSteeringAngleDeg = 0.0
# (Virtual) receiving aperture — governs waveform datacube sizes and FFT processing
uint omni:sensor:WpmDmat:scan:s001:apertureArrayAzimuthElements = 85
uint omni:sensor:WpmDmat:scan:s001:apertureArrayElevationElements = 14
float omni:sensor:WpmDmat:scan:s001:apertureAzimuthElementSpacing = 0.00236
float omni:sensor:WpmDmat:scan:s001:apertureElevationElementSpacing = 0.00332
token omni:sensor:WpmDmat:scan:s001:apertureWindowAzimuth = "RECT"
token omni:sensor:WpmDmat:scan:s001:apertureWindowElevation = "RECT"
# Debug parameters for development
bool omni:sensor:WpmDmat:scan:s001:debugForceDetection = false
float omni:sensor:WpmDmat:scan:s001:debugForceRange = 20.0
float omni:sensor:WpmDmat:scan:s001:debugForceV = 5.0
float omni:sensor:WpmDmat:scan:s001:debugForceAz = 0.0
float omni:sensor:WpmDmat:scan:s001:debugForceEl = 0.0
# Second scan configuration (long range, narrow angle)
token omni:sensor:WpmDmat:scan:s002:elevMode = "POS_EL"
token omni:sensor:WpmDmat:scan:s002:datacubeMode = "FAST"
float omni:sensor:WpmDmat:scan:s002:maxRangeM = 300
float omni:sensor:WpmDmat:scan:s002:maxAzAngDeg = 9
float omni:sensor:WpmDmat:scan:s002:maxElAngDeg = 7
# Define more parameters for s002 analogously to s001...
def RenderProduct "RenderedOutputs"
{
uniform int2 resolution = (1280, 720)
rel camera = <../../generic_radar>
rel orderedVars = [
<SupportedOutputs/RtxSensorGmo>,
<SupportedOutputs/RtxSensorMetadata>,
<SupportedOutputs/RadarPointCloud>,
]
def Scope "SupportedOutputs"
{
def RenderVar "RtxSensorGmo" (
prepend apiSchemas = ["RenderVarChannelsAPI"]
)
{
uniform string sourceName = "GenericModelOutput"
string[] channels = ["BASIC"]
}
def RenderVar "RtxSensorMetadata"
{
string sourceName = "RtxSensorMetadata"
}
def RenderVar "RadarPointCloud" (
prepend apiSchemas = ["RenderVarChannelsAPI"]
)
{
uniform string sourceName = "PointCloud"
string[] channels = ["Coordinates", "RCS", "TimeOffsetNs", "RadialVelocityMs", "Flags"]
}
}
}
}
Setting Radar attributes#
Defining Output#
Radar detections can be requested as a GenericModelOutput or a channel-selected PointCloud.
Apply RenderVarChannelsAPI to the RenderVar and author its channels attribute, as shown in the example above.
For GenericModelOutput, ["NONE"] omits radar auxiliary data and ["BASIC"] includes scan metadata and radial velocity.
If channels is empty, radar uses NONE.
For PointCloud, select any of Coordinates, RCS, TimeOffsetNs, RadialVelocityMs, and Flags.
The following sensor attributes define the coordinate representation and frame used by the output:
Attribute |
Type |
Description |
|---|---|---|
elementsCoordsType |
token |
Sets the desired coordinate system for the output basic elements. Allowed tokens: “CARTESIAN”, “SPHERICAL”. |
outputFrameOfReference |
token |
Sets the desired frame of reference for all outputs. Allowed tokens: “SENSOR”, “WORLD”, “CUSTOM”. |
customFrameOfReferenceTrafo |
float[] |
Used only if outputFrameOfReference = CUSTOM. Defines the transformation for the custom frame of reference. The array is structured as [x,y,z,roll,pitch,yaw]. |
General Configuration#
There are many attributes specific to OmniRadar prims that must be set to configure sensor behavior. The Radar sensor simulation supports multiple scan patterns, allowing a Radar to behave differently, e.g. in a near range and a far range scan. Usually, a configuration is supplied with the goal of bringing the simulated sensor’s behavior as close to the real sensor as possible.
Each scan uses one of two processing modes, selected by datacubeMode. The modes use different parameter sets:
FASTuses detection-matrix bin dimensions. WithbinsFromSpec = true, the bin dimensions are derived from the range, velocity, and angular resolution parameters; withbinsFromSpec = false, they are set explicitly withrBins,vBins,azBins, andelBins. Explicit waveform parameters are not used.WAVEFORMuses the explicit waveform, sampling, padding, window, and aperture parameters. The FAST bin-dimension and resolution parameters are not used.
<parameterType> omni:sensor:WpmDmat:<parameterName> = <value>uint omni:sensor:WpmDmat:traceTreeDepth = 4Sensor-Level Parameters#
To build a custom parameterization, there are some parameters that are set once for each sensor and are the same across all of the sensor’s scan patterns:
Attribute |
Description |
Unit |
Allowed Values |
|---|---|---|---|
waveLengthMm |
Operating wavelength used for radar propagation and material response |
mm |
Positive float |
traceTreeDepth |
Maximum propagation depth. Higher values allow more indirect paths and possible ghost detections, but increase tracing cost |
Non-negative integer |
|
instanceTimeOffsetUsec |
Offset of this radar instance for interleaved operation in a group of radars |
us |
Non-negative integer |
cfarMode |
2D: Only range and velocity dimensions are considered for CFAR processing 4D: Range, velocity, azimuth, and elevation dimensions are considered for CFAR processing |
“2D”, “4D” |
Parameter Selection#
Start with values published for the exact operating mode of the real sensor. Do not mix maximum-range, field-of-view, resolution, or waveform values from different modes in one scan configuration. Use multiple scan configurations when the real device interleaves near/far, wide/narrow, or otherwise distinct scans.
Values commonly available from a data sheet, user manual, integration guide, or antenna file can usually be mapped directly:
Real-sensor information |
Radar attributes |
Mapping guidance |
|---|---|---|
Frame, cycle, or scan rate |
|
Author the desired sensor update rate in Hz. This value is a scheduling hint; the application remains responsible for ticking the sensor at the requested rate. |
Scan modes and timing |
Scan API instances, |
Use one instance per published scan mode, preserve each scan’s timing offset, and use the instance offset when multiple radars are interleaved. |
Carrier frequency or wavelength |
|
Convert units carefully and keep the wavelength and carrier configuration physically consistent. |
Maximum range and field of view |
|
The angular attributes are positive half-angles; total symmetric field of view is twice each value. |
Range, velocity, and angular resolution |
|
These configure separation and bin resolution in |
Unambiguous velocity sequence |
|
Preserve the documented sequence when the limit varies across frames or chirp groups. |
Waveform timing and sampling |
Chirp, sample-count, padding, and window attributes |
Use the values for the selected waveform mode. Derived values should be checked against the published range and velocity behavior. |
Antenna pattern or array geometry |
Tx/Rx custom gain arrays or patch-array and aperture attributes |
Prefer measured gain grids and documented element spacing, steering, and windowing over generic defaults. |
Detection processing |
|
Map these only when the vendor publishes the processing dimensions, guard/test cells, and threshold behavior. |
Some controls describe the simulation approximation or depend on calibration data that product literature usually does not provide:
Tune
raysPerDegfor stable geometric coverage at an acceptable frame time; it is not obtained from angular resolution.Increase
traceTreeDepthonly when indirect paths are required by the validation scenario.Calibrate non-visual materials,
powerFactor,rcsTuningCoefficients, andexponentialDecayFactoragainst measured return strength or detection probability.Set measurement-noise and CFAR-noise attributes from error distributions or recordings, not from resolution alone.
Enable range or angular aliasing only when the real operating mode exhibits the corresponding ambiguity.
When measured antenna data is unavailable, treat analytic antenna modes and array geometry as an approximation and validate sensitivity across the field of view.
Multiple Scan Configurations#
The Radar sensor supports multiple scan patterns (e.g., near range and far range scans). The OmniSensorGenericRadarWpmDmatAPI schema automatically includes one scan configuration (s001) by default. To configure additional scans, apply the OmniSensorGenericRadarWpmDmatScanCfgAPI schema with additional instance names.
The sensor automatically detects the number of scans by identifying all applied scan configuration schemas.
Single Scan Configuration:
By default, the sensor has one scan (s001):
def OmniRadar "generic_radar" (
prepend apiSchemas = ["OmniSensorGenericRadarWpmDmatAPI"]
)
Multiple Scan Configurations:
To add a second scan, apply the schema with instance name s002. You can do this in two ways:
Option 1: Rely on the automatic s001 from OmniSensorGenericRadarWpmDmatAPI:
def OmniRadar "generic_radar" (
prepend apiSchemas = ["OmniSensorGenericRadarWpmDmatAPI", "OmniSensorGenericRadarWpmDmatScanCfgAPI:s002"]
)
Option 2: Explicitly list both s001 and s002 (more verbose but clearer):
def OmniRadar "generic_radar" (
prepend apiSchemas = ["OmniSensorGenericRadarWpmDmatAPI", "OmniSensorGenericRadarWpmDmatScanCfgAPI:s001", "OmniSensorGenericRadarWpmDmatScanCfgAPI:s002"]
)
Both approaches result in two scans. Explicitly listing s001 is redundant but commonly used in existing sensor definitions for clarity.
Scan Parameter Naming:
The parameters for each scan are defined using the following naming pattern:
<parameterType> omni:sensor:WpmDmat:scan:<instanceName>:<parameterName> = <value>
For example:
# First scan (s001) parameters
float omni:sensor:WpmDmat:scan:s001:raysPerDeg = 10.0
float omni:sensor:WpmDmat:scan:s001:maxRangeM = 50
# Second scan (s002) parameters
float omni:sensor:WpmDmat:scan:s002:raysPerDeg = 8.0
float omni:sensor:WpmDmat:scan:s002:maxRangeM = 300
The scan instance names (e.g., s001, s002) can be any valid identifier and are processed in lexicographic order.
General Scan Parameters#
The following parameters are provided once for each scan and influence
the general behavior of a Radar sensor. raysPerDeg influences how many
rays the sensor shoots per degree and together with the parameters that
determine the sensor’s field-of-view (FoV), the total number of rays is calculated.
Increasing this value can improve geometric coverage but decreases performance.
It does not change the configured angular resolution.
Attribute |
Description |
Unit |
Allowed Values |
|---|---|---|---|
raysPerDeg |
Geometric ray density per degree. Total ray count also depends on |
Positive float |
|
timeOffsetUsec |
Non-negative offset of this scan from the frame time |
us |
Non-negative integer |
powerFactor |
Unitless transmit-power scaling factor for this scan; changes contribution strength before detection |
Non-negative float |
|
enAngAliasing |
Controls angular aliasing. If false, out-of-FoV azimuth/elevation contributions are discarded. If true, FAST datacube mode wraps them into the configured angular interval. |
true, false |
|
enableRangeAliasing |
Controls range aliasing. If false, contributions beyond |
true, false |
|
detValFromBinIdx |
Report range and velocity from the detection-bin index when true; use contribution-weighted
values within the bin when false. Active only if |
true, false |
|
elevMode |
Elevation coverage: both signs, positive only, or zero elevation |
“FULL_EL”, “POS_EL”, “NO_EL” |
|
datacubeMode |
Detection processing mode: direct detection-matrix approximation or sampled waveform processing |
“FAST”, “WAVEFORM” |
|
waveformMode |
Waveform processing mode: 0 = per-contribution, 1 = per-bin, 2 = sampled.
The selected mode can affect performance and numerical output.
Active only if |
0, 1, 2 |
|
rxAntennaAzDeg |
Array of azimuth angles (in degrees) defining the antenna gain pattern grid for receiver. Active only if
|
deg |
Array of sorted floats |
rxAntennaElDeg |
Array of elevation angles (in degrees) defining the antenna gain pattern grid for receiver. Active only
if |
deg |
Array of sorted floats |
rxAntennaCoGain |
Array of co-polarization gains for receiver antenna (row-major order, size = ElSize * AzSize). Active
only if |
Array of floats |
|
rxAntennaCrossGain |
Array of cross-polarization gains for receiver antenna (row-major order, size = ElSize * AzSize). Active
only if |
Array of floats |
|
txAntennaAzDeg |
Array of azimuth angles (in degrees) defining the antenna gain pattern grid for transmitter. Active only
if |
deg |
Array of sorted floats |
txAntennaElDeg |
Array of elevation angles (in degrees) defining the antenna gain pattern grid for transmitter. Active
only if |
deg |
Array of sorted floats |
txAntennaCoGain |
Array of co-polarization gains for transmitter antenna (row-major order, size = ElSize * AzSize). Active
only if |
Array of floats |
|
txAntennaCrossGain |
Array of cross-polarization gains for transmitter antenna (row-major order, size = ElSize * AzSize).
Active only if |
Array of floats |
Range and Angle Parameters#
These values are set per scan and determine the detection range of the sensor as well as the FoV. These values are usually found in a Radar sensor’s spec sheet and can easily be set to approach the behavior of a given real sensor.
Attribute |
Description |
Unit |
Allowed Values |
|---|---|---|---|
maxRangeM |
Maximum unambiguous range of the scan |
m |
Positive float |
maxAzAngDeg |
Positive azimuth half-angle; symmetric azimuth field of view is twice this value |
deg |
Positive float |
maxElAngDeg |
Positive elevation half-angle; symmetric elevation field of view is twice this value |
deg |
Positive float |
rangeResM |
Range separation/bin resolution. Active only if |
m |
Positive float |
velResMps |
Radial-velocity separation/bin resolution. Active only if |
m/s |
Positive float |
boreAzResDeg |
Azimuth separation/bin resolution at boresight. Active only if |
deg |
Positive float |
boreElResDeg |
Elevation separation/bin resolution at boresight. Active only if |
deg |
Positive float |
Bin Parameters#
These values are set per scan as well. The number of bins that the Radar
sensor uses to bin the returns can either be calculated by the sensor
from the values in the previous table or explicit values can be given to
the sensor. If binsFromSpec is true, the values for rBins,
vBins, azBins and elBins are ignored.
Attribute |
Description |
Unit |
Allowed Values |
|---|---|---|---|
binsFromSpec |
Derives bin counts from range, angular limits, velocity limits, and resolution attributes.
Active only if |
true, false |
|
rBins |
Number of range bins. Active only if |
Positive integer |
|
vBins |
Number of velocity bins. Active only if |
Positive integer |
|
azBins |
Number of azimuth bins. Active only if |
Positive integer |
|
elBins |
Number of elevation bins. Active only if |
Positive integer |
CFAR (Constant False Alarm Rate) Parameters#
CFAR parameters are set per scan.
CFAR compares a candidate cell with neighboring test cells while excluding guard cells around the candidate.
cfarMode selects whether the neighborhood covers range and velocity only or all four detection-matrix dimensions.
Attribute |
Description |
Unit |
Allowed Values |
|---|---|---|---|
cfarRnT |
Number of range test cells used to estimate the local background |
Non-negative integer |
|
cfarRnG |
Number of range guard cells excluded around the candidate |
Non-negative integer |
|
cfarVnT |
Number of velocity test cells used to estimate the local background |
Non-negative integer |
|
cfarVnG |
Number of velocity guard cells excluded around the candidate |
Non-negative integer |
|
cfarAznT |
Number of azimuth test cells. Active only if |
Non-negative integer |
|
cfarAznG |
Number of azimuth guard cells. Active only if |
Non-negative integer |
|
cfarElnT |
Number of elevation test cells. Active only if |
Non-negative integer |
|
cfarElnG |
Number of elevation guard cells. Active only if |
Non-negative integer |
|
cfarMinVal |
Absolute minimum candidate value; lower-valued cells are discarded |
Non-negative float |
|
cfarOffset |
Multiplier applied to the estimated local background when forming the detection threshold |
Non-negative float |
|
cfarNoiseMean |
Mean of configured CFAR-cell noise |
Any float |
|
cfarNoiseSDev |
Standard deviation of configured CFAR-cell noise |
Non-negative float |
Window Parameters#
These parameters select separable window functions for slow-time and fast-time waveform processing.
Note
Active only if datacubeMode is WAVEFORM.
Both accept "RECT", "HANN", "HAMMING", or "BLACKMAN".
Attribute |
Description |
Unit |
Allowed Values |
|---|---|---|---|
windowSlowTime |
Window kind for slow-time (Doppler) processing |
See note above |
|
windowFastTime |
Window kind for fast-time (range) processing |
See note above |
Noise Parameters#
The noise parameters are set per scan. The Noise parameters category defines the characteristics of the noise affecting the Radar sensor’s measurements. These parameters help simulate real-world imperfections and variability in the sensor’s readings.
Attribute |
Description |
Unit |
Allowed Values |
|---|---|---|---|
azimuthRadNoiseMean |
Mean noise added to azimuth measurements |
rad |
Any float |
azimuthRadNoiseSDev |
Standard deviation of azimuth noise |
rad |
Non-negative float |
elevationRadNoiseMean |
Mean noise added to elevation measurements |
rad |
Any float |
elevationRadNoiseSDev |
Standard deviation of elevation noise |
rad |
Non-negative float |
velocityNoiseMean |
Mean noise added to radial-velocity measurements |
m/s |
Any float |
velocityNoiseSDev |
Standard deviation of noise added to radial-velocity measurements |
m/s |
Non-negative float |
rangeNoiseMean |
Mean noise added to range measurements |
m |
Any float |
rangeNoiseSDev |
Standard deviation of noise added to range measurements |
m |
Non-negative float |
Sequence and Coefficient Parameters#
The sequence parameters are set per scan.
Use maxVelMpsSequence to reproduce documented unambiguous-velocity limits.
Use rcsTuningCoefficients only as part of calibration against reference targets or recordings.
Attribute |
Description |
Unit |
Allowed Values |
|---|---|---|---|
maxVelMpsSequence |
Sequence of positive maximum unambiguous radial velocities. The active value advances across frames and defines the symmetric velocity interval into which Doppler values fold |
m/s |
Non-empty array of positive floats |
rcsTuningCoefficients |
Three RCS calibration values. Element 0 is the minimum accepted RCS in dBsm. Element 1 scales RCS before conversion to dBsm; use 1 for no scaling. Element 2 is the standard deviation of added RCS noise in dBsm; use 0 for no added RCS noise. |
Array of 3 floats |
|
exponentialDecayFactor |
Controls distance-dependent contribution decay. Higher values attenuate indirect and distant contributions more strongly |
Positive float |
Signal Processing Parameters#
These parameters configure sampled waveform processing when datacubeMode is WAVEFORM.
Note
Active only if datacubeMode is WAVEFORM.
Attribute |
Description |
Unit |
Allowed Values |
|---|---|---|---|
slowTimeSamples |
Number of slow-time samples |
Positive integer |
|
fastTimeSamples |
Number of fast-time samples |
Positive integer |
|
azimuthPaddingSamples |
Number of azimuth transform samples after zero padding |
Positive integer |
|
elevationPaddingSamples |
Number of elevation transform samples after zero padding |
Positive integer |
|
slowTimePaddingSamples |
Number of slow-time transform samples after zero padding |
Positive integer |
|
fastTimePaddingSamples |
Number of fast-time transform samples after zero padding |
Positive integer |
|
carrierFrequency |
Carrier frequency |
Hz |
Positive float |
chirpDuration |
Chirp duration |
s |
Positive float |
chirpBandwidth |
Chirp bandwidth |
Hz |
Positive float |
chirpRepetitionTime |
Chirp repetition time; must be at least |
s |
Positive float |
frequencyStepBetweenChirps |
Frequency step between chirps |
Hz |
Non-negative float |
supportFactor |
Spectral support in units of main-lobe width |
Positive float |
Tx Element Parameters#
These parameters control the transmit element pattern and array factor used to compute the Tx gain per scan.
Note
PATCH_ARRAY_MODEL models a rectangular patch array from the configured element count, spacing, steering, and windows.
This mode is available for both txAntennaGainMode and rxAntennaGainMode.
Attribute |
Description |
Unit |
Allowed Values |
|---|---|---|---|
txAntennaGainMode |
Antenna gain profile for Tx element |
“CONSTANT”,”COSINE_FALLOFF”, “CUSTOM”,”PATCH_ARRAY_MODEL” |
|
txArrayAzimuthElements |
Number of azimuth elements. Active only if |
Positive integer |
|
txArrayElevationElements |
Number of elevation elements. Active only if |
Positive integer |
|
txAzimuthElementSpacing |
Azimuth element spacing. Active only if |
m |
Positive float |
txElevationElementSpacing |
Elevation element spacing. Active only if |
m |
Positive float |
txWindowAzimuth |
Azimuth array-factor window. Active only if |
See Window Parameters note |
|
txWindowElevation |
Elevation array-factor window. Active only if |
See Window Parameters note |
|
txAzimuthSteeringAngleDeg |
Azimuth steering angle. Active only if |
deg |
Any float |
txElevationSteeringAngleDeg |
Elevation steering angle. Active only if |
deg |
Any float |
Rx Element Parameters#
When provided, these parameters control the receive element pattern and array factor used to compute the RX gain per scan.
Note
For PATCH_ARRAY_MODEL mode, see the PATCH_ARRAY_MODEL note in Tx Element Parameters above.
Attribute |
Description |
Unit |
Allowed Values |
|---|---|---|---|
rxAntennaGainMode |
Antenna gain profile for Rx element |
“CONSTANT”,”COSINE_FALLOFF”, “CUSTOM”,”PATCH_ARRAY_MODEL” |
|
rxArrayAzimuthElements |
Number of azimuth elements. Active only if |
Positive integer |
|
rxArrayElevationElements |
Number of elevation elements. Active only if |
Positive integer |
|
rxAzimuthElementSpacing |
Azimuth element spacing. Active only if |
m |
Positive float |
rxElevationElementSpacing |
Elevation element spacing. Active only if |
m |
Positive float |
rxWindowAzimuth |
Azimuth array-factor window. Active only if |
See Window Parameters note |
|
rxWindowElevation |
Elevation array-factor window. Active only if |
See Window Parameters note |
|
rxAzimuthSteeringAngleDeg |
Azimuth steering angle. Active only if |
deg |
Any float |
rxElevationSteeringAngleDeg |
Elevation steering angle. Active only if |
deg |
Any float |
(Virtual) Receiving Aperture Parameters#
These parameters govern the waveform datacube dimensions and aperture windowing independently of Tx/Rx element definitions.
Note
Active only if datacubeMode is WAVEFORM.
The virtual receiving aperture can be either a real aperture (1 Tx, N Rx) or a virtual aperture (M Tx, N Rx → virtual: 1 Tx, M×N Rx). Currently, the real Tx and Rx elements are assumed to form an L-shape configuration so that the virtual receiving antenna array forms a 2D uniform planar array (ULA).
Attribute |
Description |
Unit |
Allowed Values |
|---|---|---|---|
apertureArrayAzimuthElements |
Number of azimuth elements in virtual receiving aperture |
Positive integer |
|
apertureArrayElevationElements |
Number of elevation elements in virtual receiving aperture |
Positive integer |
|
apertureAzimuthElementSpacing |
Azimuth element spacing for virtual receiving aperture |
m |
Positive float |
apertureElevationElementSpacing |
Elevation element spacing for virtual receiving aperture |
m |
Positive float |
apertureWindowAzimuth |
Window kind for azimuth (aperture processing) |
See Window Parameters note |
|
apertureWindowElevation |
Window kind for elevation (aperture processing) |
See Window Parameters note |
Debug Parameters#
These parameters enable forced detection modes for development and testing purposes.
Attribute |
Description |
Unit |
Allowed Values |
|---|---|---|---|
debugForceDetection |
Enable forced detection mode for debugging |
true, false |
|
debugForceRange |
Forced range value. Active only if |
m |
Positive float |
debugForceV |
Forced velocity value. Active only if |
m/s |
Any float |
debugForceAz |
Forced azimuth value. Active only if |
deg |
Any float |
debugForceEl |
Forced elevation value. Active only if |
deg |
Any float |
Validating a Parameterization#
Validate each scan configuration in small, controlled scenes before evaluating a full traffic scenario. Record the radar detections and compare distributions across many frames when noise is enabled.
Coordinates and coverage: Place one strong reference target at known ranges and at boresight, field-of-view edges, and just outside the field of view. Verify range, angle, frame of reference, and rejection behavior.
Resolution and accuracy: Place two targets on either side of the published range, velocity, or angular separation limit. Test separation independently from measurement error, then enable noise and compare the error distribution.
Doppler and ambiguity: Move a target at known radial velocities below and beyond each value in
maxVelMpsSequence. Verify velocity sign, resolution, and folding. Repeat with transverse motion to distinguish speed from radial velocity.Materials and antenna response: Sweep a reference target across range, incidence angle, and field of view. Compare RCS and detection probability for calibrated non-visual materials and antenna data.
Multipath: Add a ground plane, wall, or other strong reflector and compare direct-path detections with
traceTreeDepthvalues appropriate to the intended scenario. Confirm that any ghost detections are physically plausible for the scene.Detection filtering: Adjust CFAR and noise only after geometry, materials, antenna response, and resolution are stable. Compare false alarms and missed detections against recordings or explicit acceptance criteria.
Timing and multiple scans: Verify frame rate, scan order, and
timeOffsetUsecfor every configured scan. For moving sensors or targets, enable Motion BVH and confirm the expected time-dependent geometry and Doppler.
Change one parameter group at a time and retain the scene, random seed, motion, and material assignments so results remain comparable.
Radar Point Cloud#
The Radar model outputs detection data as a GenericModelOutput (GMO) struct or as a PointCloud (RenderOutput) struct.
The GenericModelOutput provides a unified struct containing all detection data, including
coordinates, RCS, time offsets, flags, and radial velocity. It can optionally include auxiliary
data controlled via the channels attribute on the GenericModelOutput RenderVar
(e.g. string[] channels = ["BASIC"]). The buffer can reside on the CPU or GPU.
The PointCloud format provides a flexible output structure with user-selectable channels. When using the PointCloud RenderVar, you can request specific data channels to be included in the output:
Channel Name |
Data Type |
Buffer Semantics |
Description |
Unit |
|---|---|---|---|---|
Coordinates |
float |
2D Array |
3D position of detection (per point). Coordinate system
determined by |
m, rad |
RCS |
float |
1D Array |
Radar Cross Section in dBsm (decibel square meters). |
dBsm |
TimeOffsetNs |
int32 |
1D Array |
Time offset in nanoseconds relative to scan start. |
ns |
RadialVelocityMs |
float |
1D Array |
Radial velocity in meters per second (Doppler). |
m/s |
Flags |
uint8 |
1D Array |
Status flag bit field for the detection point that can represent multiple options. |
Arrays are of size N, where N is the number of detections in the scan that is reported in the metadata.
Glossary#
This section defines common abbreviations used throughout this documentation:
Abbreviation |
Full Term |
|---|---|
AOV |
Arbitrary Output Variable - individual data channels for sensor outputs |
CFAR |
Constant False Alarm Rate - algorithm for detecting targets in radar data while maintaining a constant false alarm rate |
dBsm |
Decibel square meters - logarithmic unit for Radar Cross Section |
DMAT |
Detection Matrix - discretized representation of radar returns |
FoV |
Field of View - the observable area covered by the sensor |
GMO |
GenericModelOutput - unified output format for sensor data |
RCS |
Radar Cross Section - measure of how detectable an object is by radar |
Rx |
Receiver - the receiving antenna system |
Tx |
Transmitter - the transmitting antenna system |
USD |
Universal Scene Description - file format for 3D scene representation |
WPM |
Wave Propagation Model - physics-based radar simulation approach |