Configuring Radar Sensors
When to Use
Use this skill when the user asks to create a radar scene, configure an OmniRadar prim, choose radar output frame/coordinate behavior, configure radar scan outputs, or request radar PointCloud channels.
Inputs
Resolve inputs in this order: existing repository files and referenced snippets, explicit user request, then broader agent context.
- Target API surface: Python, C/C++, USD, or a combination.
- Radar sensor prim path, pose, frame rate, scan configuration, and output format attributes.
- RenderProduct path, PointCloud RenderVar path, requested output channels, coordinate representation, and output frame.
- Whether the user needs USD authoring only or an end-to-end example that steps and reads the configured output.
- Repository source snippets referenced below. Treat these snippets as the API source of truth.
Prerequisites
- Use an ovrtx checkout that contains the referenced examples and docs tests.
- Read the relevant
> **Source:** snippet before writing or explaining API usage.
- Use
reading-sensor-pointclouds for map/read code after the configured scene renders.
- Use
interpreting-radar-pointclouds for channel units, signed radial velocity, validity, and visualization semantics.
Instructions
- Identify the radar prim, RenderProduct, PointCloud RenderVar, requested channels, scan behavior, coordinate behavior, and output frame.
- Read the matching USD, Python, or C/C++ source snippet before writing API usage.
- Author the
OmniRadar prim and PointCloud RenderVar channel set explicitly; do not imply channels are available unless requested or auto-enabled.
- Combine configuration, reading, and interpretation skills only when the user asks for an end-to-end radar workflow.
- When changing code, run the narrow docs test or example that owns the snippet whenever practical.
Output Format
- For explanations, cite the relevant API names, source snippets, and caveats.
- For code changes, summarize the files changed, snippets affected, and validation run.
Scripts
This skill has no scripts.
Limitations
- The referenced snippets remain the source of truth; update or add tested snippets before documenting new API usage.
Overview
An ovrtx radar setup has two parts:
- An
OmniRadar prim with OmniSensorGenericRadarWpmDmatAPI that defines the sensor model, pose, frame rate, and output format.
- A
RenderProduct pointing at that radar plus a PointCloud RenderVar that selects the radar output channels to expose.
The same USDA scene pattern is used from Python and C; the language-specific code only loads the scene, steps the render product, and maps the output.
Minimal Radar Prim
Python example scene
Source: examples/python/sensors/radar/radar_example.usda snippet configure-radar-sensor
C example scene
Source: examples/c/sensors/radar/radar_example.usda snippet configure-radar-sensor
Use OmniSensorGenericRadarWpmDmatAPI for the generic WPM DMAT radar model. The schema automatically includes scan configuration s001; apply OmniSensorGenericRadarWpmDmatScanCfgAPI:s002, s003, and so on only when authoring additional scan patterns.
In Z-up scenes, keep the physical scene Z-up and rotate the radar prim so sensor +X points along the intended forward direction. Prefer authoring that transform in USD instead of relying on renderer settings that change the coordinate frame globally.
Output Attributes
These output-defining attributes, among others, live on the radar prim with the omni:sensor:WpmDmat: prefix.
| Attribute |
Values / Shape |
Use |
auxOutputType |
NONE, BASIC, EXTRA, FULL |
Controls auxiliary data in GenericModelOutput. It does not add PointCloud channels. |
elementsCoordsType |
CARTESIAN, SPHERICAL |
Coordinate representation for detection coordinates. |
outputFrameOfReference |
SENSOR, WORLD, CUSTOM |
Frame of reference for outputs. Prefer SENSOR when downstream consumers expect sensor-frame detections. |
customFrameOfReferenceTrafo |
[x, y, z, roll, pitch, yaw] |
Custom transform used only with outputFrameOfReference = CUSTOM. |
OmniRadar prims expose many additional WPM DMAT sensor and scan attributes for wavelength, ray depth, CFAR behavior, range/velocity/angular bins, noise, RCS tuning, and antenna/aperture configuration. Preserve existing attributes when editing a tuned sensor, and author model-specific values from the schema.
For the full schema-derived attribute list, read schemas/omni_sensors/schema.usda.
Scan Configuration
The default scan is s001, and scan attributes use the omni:sensor:WpmDmat:scan:<scanName>: prefix. Use scan attributes such as max range, angular limits, resolution, bin counts, CFAR settings, noise settings, and RCS tuning to match the target radar model.
For concise examples, keep one scan unless the behavior being demonstrated requires near/far or otherwise distinct scan patterns.
PointCloud Render Output
Python example scene
Source: examples/python/sensors/radar/radar_example.usda snippet configure-radar-pointcloud-output
C example scene
Source: examples/c/sensors/radar/radar_example.usda snippet configure-radar-pointcloud-output
For public ovrtx examples, prefer sourceName = "PointCloud" when the application only needs selected detection channels. Request only the channels needed by the consumer to keep memory use down.
Common radar channels:
| Channel |
Meaning |
Coordinates |
3D detection coordinates in the configured coordinate representation and output frame. |
RCS |
Radar cross section in dBsm. |
RadialVelocityMs |
Doppler radial velocity in meters per second. Approaching objects can have negative velocity, so use magnitude when checking only for motion. |
TimeOffsetNs |
Per-detection time offset in nanoseconds relative to scan start. |
Flags |
Model-delivered per-detection status flags. The model auto-enables this channel even when it is not requested explicitly. |
Counts |
Model-delivered valid detection count used before reading per-point tensors. The model auto-enables this channel even when it is not requested explicitly. |
Use GenericModelOutput only when a consumer specifically needs the traditional packed radar output. For composite tensor workflows, PointCloud is the clearer default.
Troubleshooting
- Output-defining attributes are not intended for runtime mutation; author them in USD before loading the scene.
Counts defines the valid range in per-point tensors. Do not iterate over the full tensor allocation.
PointCloud only needs requested payload channels; the model auto-enables Counts and Flags and delivers them like ordinary channel tensors.
auxOutputType affects GenericModelOutput, not PointCloud.
- Radar output frame and visualizer frame are separate concerns. If output is in
SENSOR frame, configure the visualizer to interpret that frame instead of changing the sensor to WORLD unless world-frame output is actually desired.
Related Skills
reading-render-output for mapping render variables and composite tensors.
reading-sensor-pointclouds for point-cloud tensor access patterns.
interpreting-radar-pointclouds for radar channel units and visualization.
References
- Use the
> **Source:** directives in this skill to locate tested snippets before reusing API patterns.
- Keep related skills, docs, and snippets synchronized when changing the workflow.
1---2name: configuring-radar-sensors3description: Authoring and configuring OmniRadar sensor prims and radar PointCloud render outputs. Use when user asks to create a radar scene, configure an OmniRadar prim, choose radar output frame/coordinate behavior, configure radar scan outputs, or request radar PointCloud channels.4license: LicenseRef-NvidiaProprietary5---67# Configuring Radar Sensors89## When to Use1011Use this skill when the user asks to create a radar scene, configure an OmniRadar prim, choose radar output frame/coordinate behavior, configure radar scan outputs, or request radar PointCloud channels.1213## Inputs1415Resolve inputs in this order: existing repository files and referenced snippets, explicit user request, then broader agent context.1617- Target API surface: Python, C/C++, USD, or a combination.18- Radar sensor prim path, pose, frame rate, scan configuration, and output format attributes.19- RenderProduct path, PointCloud RenderVar path, requested output channels, coordinate representation, and output frame.20- Whether the user needs USD authoring only or an end-to-end example that steps and reads the configured output.21- Repository source snippets referenced below. Treat these snippets as the API source of truth.2223## Prerequisites2425- Use an ovrtx checkout that contains the referenced examples and docs tests.26- Read the relevant `> **Source:**` snippet before writing or explaining API usage.27- Use `reading-sensor-pointclouds` for map/read code after the configured scene renders.28- Use `interpreting-radar-pointclouds` for channel units, signed radial velocity, validity, and visualization semantics.2930## Instructions31321. Identify the radar prim, RenderProduct, PointCloud RenderVar, requested channels, scan behavior, coordinate behavior, and output frame.332. Read the matching USD, Python, or C/C++ source snippet before writing API usage.343. Author the `OmniRadar` prim and `PointCloud` RenderVar channel set explicitly; do not imply channels are available unless requested or auto-enabled.354. Combine configuration, reading, and interpretation skills only when the user asks for an end-to-end radar workflow.365. When changing code, run the narrow docs test or example that owns the snippet whenever practical.3738## Output Format3940- For explanations, cite the relevant API names, source snippets, and caveats.41- For code changes, summarize the files changed, snippets affected, and validation run.4243## Scripts4445This skill has no scripts.4647## Limitations4849- The referenced snippets remain the source of truth; update or add tested snippets before documenting new API usage.5051## Overview5253An ovrtx radar setup has two parts:5455- An `OmniRadar` prim with `OmniSensorGenericRadarWpmDmatAPI` that defines the sensor model, pose, frame rate, and output format.56- A `RenderProduct` pointing at that radar plus a `PointCloud` `RenderVar` that selects the radar output channels to expose.5758The same USDA scene pattern is used from Python and C; the language-specific code only loads the scene, steps the render product, and maps the output.5960## Minimal Radar Prim6162### Python example scene6364> **Source:** `examples/python/sensors/radar/radar_example.usda` snippet `configure-radar-sensor`6566### C example scene6768> **Source:** `examples/c/sensors/radar/radar_example.usda` snippet `configure-radar-sensor`6970Use `OmniSensorGenericRadarWpmDmatAPI` for the generic WPM DMAT radar model. The schema automatically includes scan configuration `s001`; apply `OmniSensorGenericRadarWpmDmatScanCfgAPI:s002`, `s003`, and so on only when authoring additional scan patterns.7172In Z-up scenes, keep the physical scene Z-up and rotate the radar prim so sensor `+X` points along the intended forward direction. Prefer authoring that transform in USD instead of relying on renderer settings that change the coordinate frame globally.7374## Output Attributes7576These output-defining attributes, among others, live on the radar prim with the `omni:sensor:WpmDmat:` prefix.7778| Attribute | Values / Shape | Use |79|---|---|---|80| `auxOutputType` | `NONE`, `BASIC`, `EXTRA`, `FULL` | Controls auxiliary data in `GenericModelOutput`. It does not add `PointCloud` channels. |81| `elementsCoordsType` | `CARTESIAN`, `SPHERICAL` | Coordinate representation for detection coordinates. |82| `outputFrameOfReference` | `SENSOR`, `WORLD`, `CUSTOM` | Frame of reference for outputs. Prefer `SENSOR` when downstream consumers expect sensor-frame detections. |83| `customFrameOfReferenceTrafo` | `[x, y, z, roll, pitch, yaw]` | Custom transform used only with `outputFrameOfReference = CUSTOM`. |8485OmniRadar prims expose many additional WPM DMAT sensor and scan attributes for wavelength, ray depth, CFAR behavior, range/velocity/angular bins, noise, RCS tuning, and antenna/aperture configuration. Preserve existing attributes when editing a tuned sensor, and author model-specific values from the schema.8687For the full schema-derived attribute list, read `schemas/omni_sensors/schema.usda`.8889## Scan Configuration9091The default scan is `s001`, and scan attributes use the `omni:sensor:WpmDmat:scan:<scanName>:` prefix. Use scan attributes such as max range, angular limits, resolution, bin counts, CFAR settings, noise settings, and RCS tuning to match the target radar model.9293For concise examples, keep one scan unless the behavior being demonstrated requires near/far or otherwise distinct scan patterns.9495## PointCloud Render Output9697### Python example scene9899> **Source:** `examples/python/sensors/radar/radar_example.usda` snippet `configure-radar-pointcloud-output`100101### C example scene102103> **Source:** `examples/c/sensors/radar/radar_example.usda` snippet `configure-radar-pointcloud-output`104105For public ovrtx examples, prefer `sourceName = "PointCloud"` when the application only needs selected detection channels. Request only the channels needed by the consumer to keep memory use down.106107Common radar channels:108109| Channel | Meaning |110|---|---|111| `Coordinates` | 3D detection coordinates in the configured coordinate representation and output frame. |112| `RCS` | Radar cross section in dBsm. |113| `RadialVelocityMs` | Doppler radial velocity in meters per second. Approaching objects can have negative velocity, so use magnitude when checking only for motion. |114| `TimeOffsetNs` | Per-detection time offset in nanoseconds relative to scan start. |115| `Flags` | Model-delivered per-detection status flags. The model auto-enables this channel even when it is not requested explicitly. |116| `Counts` | Model-delivered valid detection count used before reading per-point tensors. The model auto-enables this channel even when it is not requested explicitly. |117118Use `GenericModelOutput` only when a consumer specifically needs the traditional packed radar output. For composite tensor workflows, `PointCloud` is the clearer default.119120## Troubleshooting121122- Output-defining attributes are not intended for runtime mutation; author them in USD before loading the scene.123- `Counts` defines the valid range in per-point tensors. Do not iterate over the full tensor allocation.124- `PointCloud` only needs requested payload channels; the model auto-enables `Counts` and `Flags` and delivers them like ordinary channel tensors.125- `auxOutputType` affects `GenericModelOutput`, not `PointCloud`.126- Radar output frame and visualizer frame are separate concerns. If output is in `SENSOR` frame, configure the visualizer to interpret that frame instead of changing the sensor to `WORLD` unless world-frame output is actually desired.127128## Related Skills129130- `reading-render-output` for mapping render variables and composite tensors.131- `reading-sensor-pointclouds` for point-cloud tensor access patterns.132- `interpreting-radar-pointclouds` for radar channel units and visualization.133134## References135136- Use the `> **Source:**` directives in this skill to locate tested snippets before reusing API patterns.137- Keep related skills, docs, and snippets synchronized when changing the workflow.