Frames didn't arrive within 5000 - 30 m distance with 2 active cables
I have been making depth and infrared measurements for some months in a row using the D435, covering a distance between the target and the computer of 31 meters. To do this, I used, sequentially:
- 1 USB-C (M) - USB 3 (M) cable of less than 1 meter
- 1 USB 3 (F) - USB 3 (M) active cable of 15 meter with connection to a power source, and
- 1 USB 3 (F) - USB 3 (M) active cable of 15 meter with connection to a power source
The cable is provided by Aten (https://www.newnex.com/usb-3-active-cable-a-to-a-female.php) and up to 3 cables of this type can be connected to each other.
However, recently the system stopped working, with the error message: 'Frames didn't arrived within 5000' regularly showing up. Changing the sequential order of the cables didn't solve the issue.
Nevertheless, the live stream in the RealSense Viewer program does work when using this configuration. Also data transfer using e.g. a USB 3-stick is no problem.
I tested the system using only one USB extender cable (testing both cables), and the error didn't appear when running my Python (v 2.7) script in both cases.
Weirdly, the system using both cables is now recording again and I don't know why as I didn't change anything to the original configuration.
Does anyone have an idea what might (have) be(en) the issue?
Here is the first part of my code:
import pyrealsense2 as rs
import numpy as np
from numpy import newaxis
import cv2
import logging
import keyboard
import matplotlib.pyplot as plt
from datetime import datetime
# identify different devices
ctx = rs.context()
devices = ctx.query_devices()
print(devices[0])
# Configure depth and color streams...
pipeline_1 = rs.pipeline()
config_1 = rs.config()
config_1.enable_device('832112072362')
config_1.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30)
config_1.enable_stream(rs.stream.infrared, 1, 640, 480, rs.format.y8, 30)
# Start streaming
pipeline_1_profile = pipeline_1.start(config_1)
set_laser = 160
device = pipeline_1_profile.get_device()
depth_sensor = device.query_sensors()[0]
depth_sensor.set_option(rs.option.laser_power,set_laser)
-
The 'frames did not arrive' error suggests that the camera is experiencing problems with USB controller communication.
In Newnex's YouTube video about extending, they use a single 20 meter active (repeater) cable. For lengths beyond that (up to 100 meters), they use a reel of fiber cable.
https://www.youtube.com/watch?v=GLQgR1jT04M
Having said that, your two-repeater setup does seem to be working for you in your particular case.
It is not unusual to experience differences in how the RealSense Viewer works compared to a self-created application, especially a Python one. So there is not necessarily a flaw in your code.
An alternative to USB cable to achieve a 30 meter range is using ethernet cable, like in the 'EtherSense' project that an Intel RealSense employee created.
https://github.com/krejov100/EtherSense
The new FRAMOS D435e industrial RealSense camera, meanwhile, can use ethernet to a length of 100 meters, though the camera costs $1200 USD due to its industrial nature and additional features not in the standard Intel D435.
Please sign in to leave a comment.
Comments
1 comment