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.

maxAzAngDeg, maxElAngDeg, txAntennaGainMode, rxAntennaGainMode, custom gain arrays, steering, and aperture parameters

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, waveLengthMm, powerFactor, rcsTuningCoefficients, and exponentialDecayFactor

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.

traceTreeDepth, material assignments, antenna patterns, and CFAR controls

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, velResMps, maxVelMpsSequence, and velocity noise

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.

enableRangeAliasing, enAngAliasing, maxRangeM, angular limits, and maxVelMpsSequence

Detection and false alarms

Weak contributions can be removed, while configured noise can vary the measured value or cause threshold crossings.

cfarMode, CFAR test/guard cells, cfarMinVal, cfarOffset, CFAR noise, and measurement-noise attributes

Fidelity and performance

Denser geometric sampling, more propagation depth, and larger datacubes can resolve more contributions but require more processing and memory.

raysPerDeg, traceTreeDepth, datacubeMode, bin counts, sample counts, padding, and aperture dimensions

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:

  • FAST uses detection-matrix bin dimensions. With binsFromSpec = true, the bin dimensions are derived from the range, velocity, and angular resolution parameters; with binsFromSpec = false, they are set explicitly with rBins, vBins, azBins, and elBins. Explicit waveform parameters are not used.

  • WAVEFORM uses the explicit waveform, sampling, padding, window, and aperture parameters. The FAST bin-dimension and resolution parameters are not used.

In the Radar sensor’s prim, parameters of the Radar can be set by
prepending them with <parameterType> omni:sensor:WpmDmat:<parameterName> = <value>

For example
uint omni:sensor:WpmDmat:traceTreeDepth = 4

Sensor-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

omni:sensor:tickRate

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, instanceTimeOffsetUsec, and timeOffsetUsec

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

waveLengthMm and, in WAVEFORM mode, carrierFrequency

Convert units carefully and keep the wavelength and carrier configuration physically consistent.

Maximum range and field of view

maxRangeM, maxAzAngDeg, maxElAngDeg

The angular attributes are positive half-angles; total symmetric field of view is twice each value.

Range, velocity, and angular resolution

rangeResM, velResMps, boreAzResDeg, boreElResDeg

These configure separation and bin resolution in FAST mode with binsFromSpec = true; they are not accuracy values.

Unambiguous velocity sequence

maxVelMpsSequence

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

cfarMode and per-scan CFAR attributes

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 raysPerDeg for stable geometric coverage at an acceptable frame time; it is not obtained from angular resolution.

  • Increase traceTreeDepth only when indirect paths are required by the validation scenario.

  • Calibrate non-visual materials, powerFactor, rcsTuningCoefficients, and exponentialDecayFactor against 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 maxAzAngDeg and maxElAngDeg

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 maxRangeM are discarded. If true, FAST datacube mode wraps over-range contributions into the configured unambiguous range.

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 datacubeMode is FAST.

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 datacubeMode is WAVEFORM.

0, 1, 2

rxAntennaAzDeg

Array of azimuth angles (in degrees) defining the antenna gain pattern grid for receiver. Active only if rxAntennaGainMode is CUSTOM

deg

Array of sorted floats

rxAntennaElDeg

Array of elevation angles (in degrees) defining the antenna gain pattern grid for receiver. Active only if rxAntennaGainMode is CUSTOM

deg

Array of sorted floats

rxAntennaCoGain

Array of co-polarization gains for receiver antenna (row-major order, size = ElSize * AzSize). Active only if rxAntennaGainMode is CUSTOM

Array of floats

rxAntennaCrossGain

Array of cross-polarization gains for receiver antenna (row-major order, size = ElSize * AzSize). Active only if rxAntennaGainMode is CUSTOM

Array of floats

txAntennaAzDeg

Array of azimuth angles (in degrees) defining the antenna gain pattern grid for transmitter. Active only if txAntennaGainMode is CUSTOM

deg

Array of sorted floats

txAntennaElDeg

Array of elevation angles (in degrees) defining the antenna gain pattern grid for transmitter. Active only if txAntennaGainMode is CUSTOM

deg

Array of sorted floats

txAntennaCoGain

Array of co-polarization gains for transmitter antenna (row-major order, size = ElSize * AzSize). Active only if txAntennaGainMode is CUSTOM

Array of floats

txAntennaCrossGain

Array of cross-polarization gains for transmitter antenna (row-major order, size = ElSize * AzSize). Active only if txAntennaGainMode is CUSTOM

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 datacubeMode is FAST and binsFromSpec is true

m

Positive float

velResMps

Radial-velocity separation/bin resolution. Active only if datacubeMode is FAST and binsFromSpec is true

m/s

Positive float

boreAzResDeg

Azimuth separation/bin resolution at boresight. Active only if datacubeMode is FAST and binsFromSpec is true

deg

Positive float

boreElResDeg

Elevation separation/bin resolution at boresight. Active only if datacubeMode is FAST and binsFromSpec is true

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 datacubeMode is FAST.

true, false

rBins

Number of range bins. Active only if datacubeMode is FAST and binsFromSpec is false

Positive integer

vBins

Number of velocity bins. Active only if datacubeMode is FAST and binsFromSpec is false

Positive integer

azBins

Number of azimuth bins. Active only if datacubeMode is FAST and binsFromSpec is false

Positive integer

elBins

Number of elevation bins. Active only if datacubeMode is FAST and binsFromSpec is false

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 cfarMode is 4D

Non-negative integer

cfarAznG

Number of azimuth guard cells. Active only if cfarMode is 4D

Non-negative integer

cfarElnT

Number of elevation test cells. Active only if cfarMode is 4D

Non-negative integer

cfarElnG

Number of elevation guard cells. Active only if cfarMode is 4D

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 chirpDuration

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 txAntennaGainMode is PATCH_ARRAY_MODEL

Positive integer

txArrayElevationElements

Number of elevation elements. Active only if txAntennaGainMode is PATCH_ARRAY_MODEL

Positive integer

txAzimuthElementSpacing

Azimuth element spacing. Active only if txAntennaGainMode is PATCH_ARRAY_MODEL

m

Positive float

txElevationElementSpacing

Elevation element spacing. Active only if txAntennaGainMode is PATCH_ARRAY_MODEL

m

Positive float

txWindowAzimuth

Azimuth array-factor window. Active only if txAntennaGainMode is PATCH_ARRAY_MODEL

See Window Parameters note

txWindowElevation

Elevation array-factor window. Active only if txAntennaGainMode is PATCH_ARRAY_MODEL

See Window Parameters note

txAzimuthSteeringAngleDeg

Azimuth steering angle. Active only if txAntennaGainMode is PATCH_ARRAY_MODEL

deg

Any float

txElevationSteeringAngleDeg

Elevation steering angle. Active only if txAntennaGainMode is PATCH_ARRAY_MODEL

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 rxAntennaGainMode is PATCH_ARRAY_MODEL

Positive integer

rxArrayElevationElements

Number of elevation elements. Active only if rxAntennaGainMode is PATCH_ARRAY_MODEL

Positive integer

rxAzimuthElementSpacing

Azimuth element spacing. Active only if rxAntennaGainMode is PATCH_ARRAY_MODEL

m

Positive float

rxElevationElementSpacing

Elevation element spacing. Active only if rxAntennaGainMode is PATCH_ARRAY_MODEL

m

Positive float

rxWindowAzimuth

Azimuth array-factor window. Active only if rxAntennaGainMode is PATCH_ARRAY_MODEL

See Window Parameters note

rxWindowElevation

Elevation array-factor window. Active only if rxAntennaGainMode is PATCH_ARRAY_MODEL

See Window Parameters note

rxAzimuthSteeringAngleDeg

Azimuth steering angle. Active only if rxAntennaGainMode is PATCH_ARRAY_MODEL

deg

Any float

rxElevationSteeringAngleDeg

Elevation steering angle. Active only if rxAntennaGainMode is PATCH_ARRAY_MODEL

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 debugForceDetection is true

m

Positive float

debugForceV

Forced velocity value. Active only if debugForceDetection is true

m/s

Any float

debugForceAz

Forced azimuth value. Active only if debugForceDetection is true

deg

Any float

debugForceEl

Forced elevation value. Active only if debugForceDetection is true

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. Multipath: Add a ground plane, wall, or other strong reflector and compare direct-path detections with traceTreeDepth values appropriate to the intended scenario. Confirm that any ghost detections are physically plausible for the scene.

  6. 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.

  7. Timing and multiple scans: Verify frame rate, scan order, and timeOffsetUsec for 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 omni:sensor:Core:elementsCoordsType (Cartesian or Spherical). Array is a 3xN packing (xxx…, yyy…, zzz…).

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