-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Multiple Cameras: Only One Publishes #1487
Comments
Hi @civerachb-cpr Which computer are you using the cameras with, please? The behavior that you describe (getting a Failed to set power state with more than one camera attached but one camera alone works) reminds me of multicam behavior reported in the past on Nvidia Jetson boards. |
The computer is an ASROCK Z390M-ITX with an Intel i7 8700 |
The board's specification looks more than powerful enough to provide excellent performance with RealSense. If one camera works and the other does not, and each camera can work okay if used on its own, then I suspect that the problem may be that the serial number details necessary for ROS to identify the cameras as two separate cameras may not be set up correctly, and that once it detects one camera then it ignores the other camera. My understanding is that if your launch file is based on rs_camera then each camera should be launched from a separate terminal. Otherwise, you can use rs_multiple_devices.launch and define the serial numbers for all of the cameras in a single roslaunch instruction. This subject is discussed in the section of the RealSense ROS wrapper documentation in the link below: https://github.com/IntelRealSense/realsense-ros#work-with-multiple-cameras Intel also has a RealSense ROS tutorial for setting up two 400 Series cameras on the same computer in two separate terminals that use roslaunch realsense2_camera rs_camera.launch. https://github.com/IntelRealSense/realsense-ros/wiki/Showcase-of-using-2-cameras |
I just tried the rs_multiple_devices launch file and it also fails to launch both cameras:
The above test was done with the RealSense nodes being the only ROS nodes running on the robot. Similarly, running rs_camera.launch from two separate logins (the robot is headless, so SSH'ing in from two different terminals) doesn't reliably work either. |
I note that on your multiple devices roslaunch instruction you did not include the serial numbers of the two cameras in the launch statement by defining serial_no_camera1 and serial_no_camera2. Or was it cut off to redact serial numbers?
|
The result is the same if I specify the serial numbers. Omitting them causes the ROS node to auto-detect the serial numbers, which it appears to do correctly. Output when specifying both serial numbers:
|
Further research found a past ROS case where a range of computers were tested with two D435 cameras (mostly Intel NUC computers and one ASRock) and the ASRock was the one that gave the most problems. They list their results in a table at the bottom of the opening comment. |
Okay. So is there an actual solution to this problem? Or are you just saying "We know the cameras don't reliably work in some computers. Sorry." |
I was highlighting that there is a performance precedent with the type of hardware that you are using. There are some instances where a problem may not be easily solveable because of hardware design decisions that are outside of the control of RealSense. The main problem seems to be that rs-enumerate-devices was stating that the cameras could not be detected, according to your opening comment. Applying a method from problems with multiple cameras on Jetson to your ASRock system: is there any change is success of detection if you unplug both cameras, and then plug them in and check them with rs-enumerate devices. First plug in Front first and Rear second. If that does not work, unplug the cameras and this time plug Rear in first and Front second and check them with rs-enumerate-devices again. The rationale behind this was that with Jetson, the order in which cameras are inserted could influence whether they were detected successfully or had a Failed to set power state error. |
Hi @civerachb-cpr, |
I'm not sure if we have room inside this robot for a powered hub. I suspect not. But it's good to know in-future that we may need to budget the space for the additional hardware. Thanks! |
I could also suggest using a PCI-E extender as an alternative, to bypass the current USB controller. |
I'm working on a robot running ROS Melodic on Ubuntu 18.04 with 2 RealSense D435i cameras (one facing front, one facing rear). We're seeing a persistent problem where one camera (usually the rear one) never publishes any data. I'm not sure if this is a problem with librealsense2 or with the ROS driver, or with both.
First off, running rs-enumerate-devices simply says "No device detected. Is it plugged in?". Both cameras are connected to USB3 ports:
Output from dmesg after physically unplugging and reconnecting the cameras:
Launch files:
Front:
Rear:
Both of these files are included in a launch delay:
Whenever the camera(s) fail I see lots of these messages in dmesg:
And the output from ROS includes:
Output from starting ROS after rebooting:
ros-output-no-frames.txt
Output from starting ROS after rebooting with only 1 camera connected; the front camera has been physically unplugged:
ros-output-one-camera.txt
Why are my cameras only being detected intermittently, and why does unplugging one of them seem to fix the other? And what do I need to do to get both cameras to work all the time?
The text was updated successfully, but these errors were encountered: