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
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 (per-dimension)
token omni:sensor:WpmDmat:scan:s001:windowAzimuth = "RECT"
token omni:sensor:WpmDmat:scan:s001:windowElevation = "RECT"
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:arrayAzimuthElements = 85
uint omni:sensor:WpmDmat:scan:s001:arrayElevationElements = 14
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:azimuthElementSpacing = 0.00236
float omni:sensor:WpmDmat:scan:s001:elevationElementSpacing = 0.00332
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
# Array steering parameters
float omni:sensor:WpmDmat:scan:s001:azimuthSteeringAngleDeg = 0.0
float omni:sensor:WpmDmat:scan:s001:elevationSteeringAngleDeg = 0.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>,
]
def Scope "SupportedOutputs"
{
def RenderVar "RtxSensorGmo"
{
uniform string sourceName = "GenericModelOutput"
}
def RenderVar "RtxSensorMetadata"
{
string sourceName = "RtxSensorMetadata"
}
}
}
}
Setting Radar attributes#
Defining Output#
Radar output is provided as a GenericModelOutput struct. The following Radar attributes define the output format:
Attribute |
Type |
Description |
|---|---|---|
auxOutputType |
token |
Controls whether auxiliary data is included in the
|
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.
<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 |
Wavelength of the Radar |
mm |
3.9 |
TraceTreeDepth |
Depth of the ray tree build while traversing the scene. A bigger depth allows for realistic effects like multi bounce, while a shallower depth will increase performance |
Positive integer |
|
InstanceTimeOffsetUsec |
Time offset of this Radar instance to simulate continuous firing in a group of Radars |
μs |
Any float |
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” |
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.
Changing this value increases fidelity but decreases performance.
Attribute |
Description |
Unit |
Allowed Values |
|---|---|---|---|
RaysPerDeg |
Ray density. The total number of rays is depended on |
Positive integer |
|
TimeOffsetUsec |
time offset of the scan from the frame time to simulate non-equidistant scans |
μs |
Any float |
PowerFactor |
Total output power of Radar |
W |
Positive float |
EnAngAliasing |
Enable angular aliasing |
true, false |
|
EnableRangeAliasing |
Enable range aliasing |
true, false |
|
DetValFromBinIdx |
If true, detection value derived from bin index; if false, more accurate inside cell |
true, false |
|
ElevMode |
Elevation mode; FULL_EL:pos neg elevation POS_EL:only pos elevation NO_EL: elevation=0 |
“FULL_EL”, “POS_EL”, “NO_EL” |
|
DatacubeMode |
Datacube processing mode; FAST: traditional DMAT computation WAVEFORM: waveform approximation |
“FAST”, “WAVEFORM” |
|
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 detection range of the scan |
m |
Positive float |
MaxAzAngDeg |
Maximum azimuth angle, FOV is 2x this value |
deg |
Positive float |
MaxElAngDeg |
Maximum elevation angle, FOV is 2x this value |
deg |
Positive float |
RangeResM |
Range resolution. Active only if |
m |
Positive float |
VelResMps |
Velocity resolution. Active only if |
m/s |
Positive float |
BoreAzResDeg |
Azimuth resolution at bore sight. Active only if |
deg |
Positive float |
BoreElResDeg |
Elevation resolution at bore sight. 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 will be ignored.
Attribute |
Description |
Unit |
Allowed Values |
|---|---|---|---|
BinsFromSpec |
Flag to determine if bins are derived from resolution parameters |
true, false |
|
RBins |
Number of range bins of this scan. Active only if |
Positive integer |
|
VBins |
Number of velocity bins of this scan. Active only if |
Positive integer |
|
AzBins |
Number of azimuth bins of this scan. Active only if |
Positive integer |
|
ElBins |
Number of elevation bins of this scan. Active only if |
Positive integer |
CFAR (Constant False Alarm Rate) Parameters#
The Cfar-parameters are set per scan. A Cfar-Implementation is used to filter all returns that the sensor received for only the ones that are targets of interest.
Attribute |
Description |
Unit |
Allowed Values |
|---|---|---|---|
CfarRnT |
CFAR number of range test cells |
Positive integer |
|
CfarRnG |
CFAR number of range guard cells |
Positive integer |
|
CfarVnT |
CFAR number of velocity test cells |
Positive integer |
|
CfarVnG |
CFAR number of velocity guard cells |
Positive integer |
|
CfarAznT |
CFAR number of azimuth test cells. Active only if |
Positive integer |
|
CfarAznG |
CFAR number of azimuth guard cells. Active only if |
Positive integer |
|
CfarElnT |
CFAR number of elevation test cells. Active only if |
Positive integer |
|
CfarElnG |
CFAR number of elevation guard cells. Active only if |
Positive integer |
|
CfarMinVal |
CFAR minimum value for detection, cells below are discarded |
Positive float |
|
CfarOffset |
Multiplied with raw CFAR noise level. Set to 1 if no scaling of noise is desired |
Positive float |
|
CfarNoiseMean |
Mean noise level used in CFAR |
Any float |
|
CfarNoiseSDev |
Standard deviation of noise in CFAR |
Positive float |
Window Parameters#
These parameters select separable window functions used for array-factor weighting and waveform processing (when DatacubeMode is “WAVEFORM”).
Note
All window parameters accept the same allowed values: "RECT", "HANN", "HAMMING", "BLACKMAN".
Attribute |
Description |
Unit |
Allowed Values |
|---|---|---|---|
WindowAzimuth |
Window kind for azimuth/array horizontal dimension |
See note above |
|
WindowElevation |
Window kind for elevation/array vertical dimension |
See note above |
|
WindowSlowTime |
Window kind for slow-time (Doppler). Active only if |
See note above |
|
WindowFastTime |
Window kind for fast-time (range). Active only if |
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 radial measurements |
rad |
Any float |
AzimuthRadNoiseSDev |
Standard deviation of azimuth radial noise at boresight |
rad |
Positive float |
ElevationRadNoiseMean |
Mean noise added to elevation radial measurements |
rad |
Any float |
ElevationRadNoiseSDev |
Standard deviation of elevation radial noise at boresight |
rad |
Positive float |
VelocityNoiseMean |
Mean noise added to velocity measurements |
m/s |
Any float |
VelocityNoiseSDev |
Standard deviation of noise added to velocity measurements |
m/s |
Positive float |
RangeNoiseMean |
Mean noise added to range measurements |
m |
Any float |
RangeNoiseSDev |
Standard deviation of noise added to range measurements |
m |
Positive float |
Sequence and Coefficient Parameters#
The sequence parameters are set per scan. The RcsTuningCoefficients array
is especially useful for tuning a Radar simulation to behave as similar as
possible to the real Radar.
Attribute |
Description |
Unit |
Allowed Values |
|---|---|---|---|
MaxVelMpsSequence |
An array representing the maximum unambiguous velocity sequence of the scan, expressed in meters per second. This parameter models the varying maximum velocity that the Radar can unambiguously measure over different time intervals. |
m/s |
Array of floats |
RcsTuningCoefficients |
The |
Array of 3 floats |
|
ExponentialDecayFactor |
Exponential decay factor for a contribution. The higher, the faster the contribution decreases with distance. Default should be 1.0. |
Positive float |
Signal Processing Parameters#
These parameters control advanced signal processing when DatacubeMode is set to “WAVEFORM”. They configure the waveform of a radar frame for enhanced processing.
Note
All parameters in this section are active only when DatacubeMode is WAVEFORM.
Attribute |
Description |
Unit |
Allowed Values |
|---|---|---|---|
SlowTimeSamples |
Slow-time number of samples |
Positive integer |
|
FastTimeSamples |
Fast-time number of samples |
Positive integer |
|
AzimuthPaddingSamples |
Number of zero-padding samples in azimuth |
Positive integer |
|
ElevationPaddingSamples |
Number of zero-padding samples in elevation |
Positive integer |
|
SlowTimePaddingSamples |
Number of zero-padding samples in slow-time |
Positive integer |
|
FastTimePaddingSamples |
Number of zero-padding samples in fast-time |
Positive integer |
|
CarrierFrequency |
Carrier frequency |
Hz |
Positive float |
ChirpDuration |
Chirp duration |
s |
Positive float |
ChirpBandwidth |
Chirp bandwidth |
Hz |
Positive float |
ChirpRepetitionTime |
Chirp repetition time (>= chirp duration) |
s |
Positive float |
FrequencyStepBetweenChirps |
Frequency step between chirps |
Hz |
Positive float |
SupportFactor |
Support factor in units of main lobe width (1 = one main lobe) |
Positive float |
Tx Element Parameters#
When provided, these parameters control the transmit element pattern and array factor used to compute the TX gain per scan. If not set, the legacy/scan-level parameters act as defaults.
Note
PATCH_ARRAY_MODEL: Models a rectangular patch microstrip antenna array. The total gain pattern is computed as Total Pattern = Array Factor × SubElement Factor, where the array factor accounts for the sub-element arrangement and spacing, and the sub-element factor models the individual patch antenna response. Configure sub-elements via array element parameters (azimuth/elevation elements and spacing). Supports beamsteering and windowing. This mode applies to 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 (Tx array). Active only if |
Positive integer |
|
TxArrayElevationElements |
Number of elevation elements (Tx array). Active only if |
Positive integer |
|
TxAzimuthElementSpacing |
Azimuth element spacing (Tx). Active only if |
m |
Positive float |
TxElevationElementSpacing |
Elevation element spacing (Tx). Active only if |
m |
Positive float |
TxWindowAzimuth |
Window kind for azimuth (Tx array-factor). Active only if |
See Window Parameters note |
|
TxWindowElevation |
Window kind for elevation (Tx array-factor). Active only if |
See Window Parameters note |
|
TxAzimuthSteeringAngleDeg |
Azimuth steering angle for Tx array. Active only if |
deg |
Any float |
TxElevationSteeringAngleDeg |
Elevation steering angle for Tx array. 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 for details on how these parameters define the antenna array pattern.
Attribute |
Description |
Unit |
Allowed Values |
|---|---|---|---|
RxAntennaGainMode |
Antenna gain profile for Rx element |
“CONSTANT”,”COSINE_FALLOFF”, “CUSTOM”,”PATCH_ARRAY_MODEL” |
|
RxArrayAzimuthElements |
Number of azimuth elements (Rx array). Active only if |
Positive integer |
|
RxArrayElevationElements |
Number of elevation elements (Rx array). Active only if |
Positive integer |
|
RxAzimuthElementSpacing |
Azimuth element spacing (Rx). Active only if |
m |
Positive float |
RxElevationElementSpacing |
Elevation element spacing (Rx). Active only if |
m |
Positive float |
RxWindowAzimuth |
Window kind for azimuth (Rx array-factor). Active only if |
See Window Parameters note |
|
RxWindowElevation |
Window kind for elevation (Rx array-factor). Active only if |
See Window Parameters note |
|
RxAzimuthSteeringAngleDeg |
Azimuth steering angle for Rx array. Active only if |
deg |
Any float |
RxElevationSteeringAngleDeg |
Elevation steering angle for Rx array. Active only if |
deg |
Any float |
(Virtual) Receiving Aperture Parameters#
These parameters govern the waveform datacube dimensions and FFT/windowing independently of Tx/Rx element definitions. These are required when using DatacubeMode = “WAVEFORM” and no legacy fallbacks are applied.
Note
All parameters in this section are active only when 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 |
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 GenericModelOutput provides a unified struct containing all detection data. Refer to the documentation of the Generic Model Output package for more information on GenericModelOutput.
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 |