Gripper D405 camera not detected

Hello,

Our research group recently ordered and received a Stretch3 robot. We have been setting it up following the instructions in the Hello Robot Docs (Stretch Docs). However, we have been consistently getting a failure message when running stretch_system_check.py: “Sensors not ready (missing D405 camera).”

Additionally, when running stretch_camera_streams_check.py, we get the message “Unable to find Realsense D405…”

Through our debugging process, we believe we have isolated the issue to hardware, as the D405 is not listed by Ubuntu in the devices connected to the Hello Robot PC (missing from output of lsusb and ls /dev/video*), see screenshot below.

The other two cameras appear to be working, as we can stream live video feeds from both and don’t receive any errors about missing cameras. We have also been able to run web teleop with the D435 camera, in addition to gamepad teleop.

Could you please provide some direction on what may be causing our issue with the D405 and how to fix it? Any guidance would be much appreciated.

Some additional context that may be relevant:

  1. We have noticed that there is a scratch and rip in the insulation of the wire leading to the D405 camera. We have only had the robot for three days and have been handling it very gently, so we do not think this was caused by our team. However, we did notice that the box in which the robot was shipped was a little banged up, so the wire could have been damaged during transport. Do you think this could be causing the camera’s connection issue?

  2. The wrist has been shaking intermittently when the robot is powered on (even when we are not actively sending commands), which does not seem normal. If you could also provide some insights into why this may be happening, that would be very helpful.

I am unable to include more than one photo in this post since I am a new user, but please let me know if you would like to see more screenshots/photos and how I can post them.

Thank you very much,
Zoe K.

Hi @zktlks and welcome to the Stretch forum! Damage to the D405 cable could explain why the camera isn’t populating properly. If this were the case, we can ship you a replacement cable. Would you take a picture of the rip on the wire, as well as the damage to the box?

One other thing to try: would you use the REx_dmesg_monitor.py tool and try unplugging and replugging the cable from it’s USB port.

When you exit the tool using q, a log should be saved. Could you send it here?

q: Quit
-------------------
q
Exiting....
Ending DMESG capture....
DMESG Log saved to: /tmp/dmesg_log_1717610862.log

Regarding the wrist shaking, I believe I know what may be causing the issue. Would you upload a video of the shaking behavior here?

Thank you, @bshah ! Please find my answers to your questions below:

Looking forward to hearing your insights on these issues!

Thanks @zktlks! This is really helpful! Regarding the shaking of the wrist, we’ve pushed an update to our library to solve it. You can use the following command to update: pip3 install -U hello-robot-stretch-body. Then, you can home the robot and the shaking behavior should disappear.

Regarding the dmesg log capture, it’s great to see that replugging the D405 made no change, while replugging the Arducam did. This points to either the cable or the USB port being problematic. To isolate the problem further, would you try plugging some other device into the wrist USB port (e.g. a flash drive) and seeing if it is registered in dmesg? One additional test we can run is plugging the D405 cable into an external Linux PC and monitoring dmesg to see if the camera is detected.

Thanks! We’re currently experiencing another issue with the robot (thread) but we will try these steps as soon as the booting up issue is fixed.

Here’s an update for future readers, the issue ended up being that the micro-usb connection on the camera side of the D405 cable was disconnected. You can check if this has happened to your camera by peeling back the D405 ArUco tag. There’s a window underneath we can use to verify that the camera side connection is secure.