Stretch3 RealSense D435I Camera Stopped Working

I get following error when running the camera nodes with: ros2 launch stretch_core d435i_basic.launch.py and ros2 launch stretch_core d435i_high_resolution.launch.py

[realsense2_camera_node-1] [ERROR] [1768579442.038267808] [camera]: Given value, 1280x720x15 is invalid. Run 'ros2 param describe <your_node_name> depth_module.depth_profile' to get the list of supported profiles. Setting ROS param back to: 640x480x15
[realsense2_camera_node-1] [ERROR] [1768579442.038597226] [camera]: Given value, 1280x720x15 is invalid. Run 'ros2 param describe <your_node_name> depth_module.infra_profile' to get the list of supported profiles. Setting ROS param back to: 640x480x15
[realsense2_camera_node-1] [WARN] [1768579442.040460305] [camera]: re-enable the stream for the change to take effect.
[realsense2_camera_node-1] [ERROR] [1768579442.040728430] [camera]: Given value, 63 is invalid. Set ROS param back to: 100
[realsense2_camera_node-1] [INFO] [1768579442.043678593] [camera]: Stopping Sensor: Depth Module
[realsense2_camera_node-1] [INFO] [1768579442.043739321] [camera]: Stopping Sensor: RGB Camera
[realsense2_camera_node-1] [INFO] [1768579442.043767414] [camera]: Stopping Sensor: Motion Module
[realsense2_camera_node-1] [INFO] [1768579442.059787462] [camera]: Starting Sensor: Depth Module
[realsense2_camera_node-1] [INFO] [1768579442.062535992] [camera]: Open profile: stream_type: Depth(0), Format: Z16, Width: 640, Height: 480, FPS: 15
[realsense2_camera_node-1] [INFO] [1768579442.066484056] [camera]: Starting Sensor: RGB Camera
[realsense2_camera_node-1] [INFO] [1768579442.069969090] [camera]: Open profile: stream_type: Color(0), Format: RGB8, Width: 1280, Height: 720, FPS: 15
[realsense2_camera_node-1] [INFO] [1768579442.096392982] [camera]: Starting Sensor: Motion Module
[realsense2_camera_node-1] [INFO] [1768579442.098136710] [camera]: Open profile: stream_type: Accel(0)Format: MOTION_XYZ32F, FPS: 100
[realsense2_camera_node-1] [INFO] [1768579442.098159044] [camera]: Open profile: stream_type: Gyro(0)Format: MOTION_XYZ32F, FPS: 200
[realsense2_camera_node-1] [INFO] [1768579442.099690185] [camera]: RealSense Node Is Up!
[realsense2_camera_node-1] [WARN] [1768579448.763710503] [camera]: XXX Hardware Notification:Frames didn't arrived within 5 seconds,1.76858e+12,Warn,Frames Timeout
[realsense2_camera_node-1] [WARN] [1768579448.775212795] [camera]: XXX Hardware Notification:Frames didn't arrived within 5 seconds,1.76858e+12,Warn,Frames Timeout
[realsense2_camera_node-1] [WARN] [1768579453.768696235] [camera]: XXX Hardware Notification:Frames didn't arrived within 5 seconds,1.76858e+12,Warn,Frames Timeout

Sometimes, we get few image frames immediately after starting the above nodes, but then it stops working and we continuously get XXX Hardware Notification:Frames didn't arrived within 5 seconds,1.76858e+12,Warn,Frames Timeout error.

We thought it was the hardware issue and tested with another working RealSense D435I camera, but got the same behavior with same errors.

The camera works on low resolution mode with: ros2 launch stretch_core d435i_low_resolution.launch.py, still not very reliably, so we think it might not be a hardware issue after all.

Hi @nabin,

Thanks for sharing the logs, they suggest that the requested 1280x720x15 profile for depth/infra is being rejected on your system.

To help me pinpoint this quickly, could you please run these commands on your robot and share the outputs?

1) Check firmware details + librealsense (SDK) version

rs-enumerate-devices -s
rs-enumerate-devices --version

2) What ROS thinks is supported

ros2 launch stretch_core d435i_high_resolution.launch.py
ros2 param describe /camera depth_module.depth_profile
ros2 param describe /camera depth_module.infra_profile

3) What is currently set

ros2 param get /camera depth_module.depth_profile
ros2 param get /camera depth_module.infra_profile

4) RealSense ROS driver version

grep "<version>" $(ros2 pkg prefix realsense2_camera)/share/realsense2_camera/package.xml

If possible, could you also share the full camera launch log from startup?

Also, as a quick sanity check, would 640x480x15 work for your use case? If so, that may be a simple fix.

Thanks,
Jason

Hi @nabin,

Just wanted to follow up on my previous message to see if you had a chance to run the RealSense and ROS parameter checks I shared.

Those outputs will help confirm whether this is a profile / driver mismatch or something else. Whenever you have a moment, feel free to send them over and I’ll take a look.

Best,
Jason

Hi @Jason_Koubi ,

Likely Issue: The issue started after replacing the faulty camera cable. Although the camera was working fine for some time after the replacement. We get following log regarding the USB type:

[realsense2_camera_node-1] [WARN] [1769696657.424635103] [camera]: Device XXX is connected using a 2.1 port. Reduced performance is expected.

We reverted back to the old cable, and it seems to solve the issue.

Diagnostic Details:

1) Check firmware details + librealsense (SDK) version

hello-robot@stretch:~$ rs-enumerate-devices -s
Device Name                   Serial Number       Firmware Version
Intel RealSense D405          XXXXXXXXXXXX        5.12.14.100
Intel RealSense D435I         XXXXXXXXXXXX        5.15.1
hello-robot@stretch-se3-3046:~$ rs-enumerate-devices --version

rs-enumerate-devices  version: 2.55.1.0

hello-robot@stretch:~$ 

2) What ROS thinks is supported

hello-robot@stretch:~$ ros2 param describe /camera depth_module.depth_profile
Parameter name: depth_module.depth_profile
  Type: string
  Description: Available options are:
1280x720x6
256x144x90
480x270x15
480x270x30
480x270x6
480x270x60
640x360x30
640x480x15
640x480x30
640x480x6
848x480x10
848x480x6
848x480x8
  Constraints:
hello-robot@stretch:~$ ros2 param describe /camera depth_module.infra_profile
Parameter name: depth_module.infra_profile
  Type: string
  Description: Available options are:
1280x720x6
480x270x15
480x270x30
480x270x6
480x270x60
640x360x30
640x480x15
640x480x30
640x480x6
848x480x10
848x480x6
848x480x8
  Constraints:
hello-robot@stretch-se3-3046:~$ 

3) What is currently set

hello-robot@stretch:~$ ros2 param get /camera depth_module.depth_profile
String value is: 640x480x15
hello-robot@stretch:~$ ros2 param get /camera depth_module.infra_profile
String value is: 640x480x15
hello-robot@stretch-se3-3046:~$ 

4) RealSense ROS driver version

hello-robot@stretch:~$ grep "<version>" $(ros2 pkg prefix realsense2_camera)/share/realsense2_camera/package.xml
  <version>4.55.1</version>

Thanks!

Hi Nabin,

Thanks for the detailed logs, very helpful. I’m glad to hear that reverting to the original cable resolved the issue.

That warning about the D435i being detected on a USB 2.x connection explains the behavior. The D435i must be connected over USB 3 to reliably support higher-bandwidth depth/infra profiles, and a USB2 connection can cause profiles to be rejected.

Since reverting to the old cable resolves it, the replacement cable is likely negotiating as USB2.

Best,
Jason