ROS 2 Sensor Graph Migration#
Isaac Sim 6.0 changes several ROS 2 sensor helper and publisher node contracts. This guide covers Camera, CameraInfo, RTX Lidar, RTX Radar, and PointCloud2 graph migration. For TF, JointState, and Odometry publisher graph changes, use ROS 2 OmniGraph Nodes.
Isaac Sim 6.0 deprecates frameSkipCount on the ROS 2 camera, Camera Info,
and RTX Lidar helper nodes, and fullScan on the RTX Lidar helper node.
Leave those inputs at their defaults and control publish rate with the sensor
prim’s omni:sensor:tickRate attribute; see
Sensor Timing and RTX Lidar Asset Migration for the timing model. Prefer sensor-side tickRate when the Isaac Sim
render/sensor cadence is part of the simulation contract, and keep downstream
ROS-node throttling only for application-level bandwidth control.
Camera and CameraInfo#
Set frameSkipCount to 0 on ROS2 Camera Helper and
ROS2 Camera Info Helper, and set omni:sensor:tickRate on the camera
sensor prim to the desired publish rate.
The ROS 2 CameraInfo path now reads lens distortion from OpenCV lens
schemas authored on the camera prim. The CameraInfo path no longer reads legacy physicalDistortionModel and
physicalDistortionCoefficients values. When the camera prim has no OpenCV
lens schema, 6.0 computes pinhole intrinsics from the USD camera and publishes zero distortion coefficients instead of
reading the legacy physical attributes.
Migration actions:
Author pinhole or fisheye calibration with the relevant
OmniLensDistortionOpenCv*APIschema on the camera prim.Validate that CameraInfo
widthandheightmatch the render-product resolution, not only the camera prim’s nominal resolution.Validate that intrinsics are scaled when the render product resolution differs from the authored calibration resolution.
Update tests that checked legacy physical distortion attributes to subscribe to CameraInfo and assert the ROS
K,D,R, andPvalues.
RTX Lidar and Radar Helpers#
Saved graphs that use RTX Lidar or Radar should be validated against OmniSensor prims. Isaac Sim 6.0 no longer supports Camera prims used as RTX sensors with JSON configs. Convert those assets before validating ROS output. Refer to RTX Lidar JSON and Camera-Prim Assets.
For RTX Lidar:
Use an OmniLidar prim, not a Camera prim with RTX Lidar schemas.
Set
frameSkipCountto0onROS2 RTX Lidar Helperand setomni:sensor:tickRateon the OmniLidar prim.Do not use
fullScanas the scheduler. To publish accumulated full scans, setomni:sensor:Core:accumulateOutputson the OmniLidar prim directly.Validate whether the downstream stack expects one message per completed scan or can consume partial scans.
Validate
LaserScanangle bins and timestamps after migration. The 6.0 publisher bins rays into LaserScan slots by azimuth in float32 directly from the sensor output buffer, instead of consuming a precomputed flat scan, and can expose small (±1 bin) binning differences relative to old tests.
For RTX Radar:
Always enable Motion BVH.
RTX Radar is not multitick-aware and does not honor
omni:sensor:tickRate. Validate the observed message cadence with the target build.When a workflow runs Radar and Lidar together at startup, include a warmup period before asserting nonempty detections.
PointCloud2 Metadata#
In Isaac Sim 5.1, ROS2 Publish Point Cloud consumed a single XYZ point
buffer through the data/dataPtr/bufferSize inputs, with no
per-field metadata. In 6.0, point-cloud publishing consumes per-field pointer
inputs (intensityPtr, timestampPtr, hitNormalPtr, objectIdPtr,
and so on) populated by IsaacExtractRTXSensorPointCloud.
Metadata fields are opt-in. Supplying a pointer is not sufficient; the matching
output* boolean must also be enabled.
Desired PointCloud2 field |
Migration action |
|---|---|
|
Connect the intensity pointer and enable |
|
Connect the timestamp pointer and enable |
|
Connect the ID pointer and enable the matching |
Hit normals |
Use |
Point frame of reference is not a publisher output* boolean. It is the
sensor-prim attribute omni:sensor:Core:outputFrameOfReference (for Lidar) or
omni:sensor:WpmDmat:outputFrameOfReference (for Radar), whose value is an
enum such as WORLD or SENSOR. Set it on the sensor prim when the
published point coordinates must be in a specific frame, and verify the
subscriber’s frame_id and TF expectations. The ROS helper also uses this
attribute for debug-draw setup: WORLD output disables an extra sensor-to-world
transform, while SENSOR output enables it for visualization.
Validation Checklist#
Verify the following after migrating each sensor graph:
Saved USD Action Graphs open in Isaac Sim 6.0 without missing ROS 2 sensor node inputs.
Migrated helper nodes no longer use
frameSkipCountorfullScanas runtime publish-rate controls.CameraInfo subscribers receive the expected resolution, intrinsics, and distortion coefficients for each render product.
RTX Lidar and Radar publishers attach to OmniSensor prims and produce nonempty messages after warmup.
PointCloud2 fields match the enabled
output*booleans, and disabled fields do not appear in the ROS message.ROS
header.stampvalues advance with the simulation cadence expected by the application.