Significant and unstable frame rate degradation is observed when using Intel RealSense D455 with realsense-ros (v4.56.3) inside the Isaac ROS environment, despite matching the officially recommended versions (firmware, librealsense, and realsense-ros).
The issue appears to be caused by USB controller (xHCI) contention rather than software version mismatch, and is highly dependent on enabled streams and USB topology.
Environment
-
Platform: x86_64 workstation
-
OS: Ubuntu 24.04 (host), Isaac ROS Docker container
-
ROS 2: Jazzy
-
Camera: Intel RealSense D455
-
Firmware: 5.16.0.1
-
librealsense: v2.56.3
-
realsense-ros: v4.56.3
-
Connection: USB 3.x (direct, no external hub)
-
Isaac ROS: Using isaac_ros_dev workspace and container
All versions strictly follow the official Isaac ROS RealSense compatibility documentation.
Reproduction Steps
Launch RealSense node with default or common configurations:
ros2 launch realsense2_camera rs_launch.py
Monitor depth frame rate:
ros2 topic hz /camera/camera/depth/image_rect_raw
Vary enabled streams and profiles, for example:
Case A: Low resolution
ros2 launch realsense2_camera rs_launch.py
enable_color:=false
enable_pointcloud:=false
align_depth.enable:=false
depth_module.depth_profile:=424x240x30
Case B: Common resolution
ros2 launch realsense2_camera rs_launch.py
enable_color:=false
enable_pointcloud:=false
align_depth.enable:=false
depth_module.depth_profile:=848x480x30
Observed Behavior
424×240 @ 30 FPS (depth only)
→ Stable ~30 FPS
848×480 @ 30 FPS (depth only)
→ Drops to ~8–12 FPS
Depth + Color enabled
→ Drops further to ~1–2 FPS
Depth + Pointcloud enabled
→ ~10–12 FPS
Frequent warnings appear in logs:
control_transfer returned error, index: 768,
error: Resource temporarily unavailable (11)
rs-enumerate-devices and realsense-viewer work correctly outside ROS.
Significant and unstable frame rate degradation is observed when using Intel RealSense D455 with realsense-ros (v4.56.3) inside the Isaac ROS environment, despite matching the officially recommended versions (firmware, librealsense, and realsense-ros).
The issue appears to be caused by USB controller (xHCI) contention rather than software version mismatch, and is highly dependent on enabled streams and USB topology.
Environment
Platform: x86_64 workstation
OS: Ubuntu 24.04 (host), Isaac ROS Docker container
ROS 2: Jazzy
Camera: Intel RealSense D455
Firmware: 5.16.0.1
librealsense: v2.56.3
realsense-ros: v4.56.3
Connection: USB 3.x (direct, no external hub)
Isaac ROS: Using isaac_ros_dev workspace and container
All versions strictly follow the official Isaac ROS RealSense compatibility documentation.
Reproduction Steps
Launch RealSense node with default or common configurations:
ros2 launch realsense2_camera rs_launch.py
Monitor depth frame rate:
ros2 topic hz /camera/camera/depth/image_rect_raw
Vary enabled streams and profiles, for example:
Case A: Low resolution
ros2 launch realsense2_camera rs_launch.py
enable_color:=false
enable_pointcloud:=false
align_depth.enable:=false
depth_module.depth_profile:=424x240x30
Case B: Common resolution
ros2 launch realsense2_camera rs_launch.py
enable_color:=false
enable_pointcloud:=false
align_depth.enable:=false
depth_module.depth_profile:=848x480x30
Observed Behavior
424×240 @ 30 FPS (depth only)
→ Stable ~30 FPS
848×480 @ 30 FPS (depth only)
→ Drops to ~8–12 FPS
Depth + Color enabled
→ Drops further to ~1–2 FPS
Depth + Pointcloud enabled
→ ~10–12 FPS
Frequent warnings appear in logs:
control_transfer returned error, index: 768,
error: Resource temporarily unavailable (11)
rs-enumerate-devices and realsense-viewer work correctly outside ROS.