Streaming Multiple Camera Simultaneosly

Hello! My team and I are using Stretch RE1 for our project. I have been able to use WebRTC to achieve a three camera streaming with my devices (MacOS and AndroidOS) but it fails on the robot when the third camera (always the gripper/navigation camera). However, when having these cameras to connect externally to my Macbook, they stream perfectly fine. I was wondering if this could be a hardware limitation or are there any workaround to this?

Note: getUserMedia() is able to detect all cameras (with its deviceId and label) but gives error (not readable) when streaming.

Hi @YC_LEE , welcome to the forum. Thank you for posting this question. I want to know which USB ports the three cameras are connected to?

We learned from testing that accessing more than two USB cameras plugged into the USB hub causes a bandwidth issue. Stretch RE1’s trunk has 6 USB ports belonging to a single USB hub connected to NUC. Therefore, accessing more than two USB cameras plugged into the trunk might not be possible. Alternatively, if your application allows, you could try switching one of the cameras to the USB 2.0 ports in the robot’s head or in the wrist.

Also, can you send the DMESG output when you are trying to access all three cameras simultaneously?
You can run the tool REx_dmesg_monitor.py in a separate terminal, which will output the live DMESG messages.

I tried reproducing your issue by connecting three USB 2.0 cameras to the same USB hub. Accessing the third camera failed and produced the following output in the DMESG.

Hi @Mohamed_Fazil, thank you for your response. To answer your first question, my team has an RE1 robot with the teleop kit. The 3 cameras that are plugged in are the gripper camera, navigator camera and the Intel Real Sense camera.

After some testing and troubleshooting, we found out that all usb ports in the trunk, on the head and wrist belong to the same bus (USB Bus 001). I have been able to connect up to 4 cameras (3 from the trunk + 1 of the navigation/gripper camera all connected to the same Bus) with lowered resolution to cope with bandwidth limitations. However, the system is not able to receive video feed from both of the navigation and gripper camera at the same time (only 1 of them works even when these 2 cameras are the only ones that are connected to the same bus as opposed to 4 cameras that worked as mentioned earlier).

From lsusb, I was able to see that all cameras were detected by the Bus so there is probably no problem with the ports themselves. A few things that I troubleshooted with: cameras connected to the same bus, cameras with the same id, cameras with the same name, cameras that satisfy all the above. In all cases, they work as long as they are not on the head AND the wrist (with all cameras of same name and id connected to the trunk works, but cameras of different names and ids doesn’t work when connected to the head and wrist).

Hi @YC_LEE, I think it would be better to try debugging this issue over a support call. Then, I can post a follow-up on our debug. Please reach out to us at support@hello-robot.com to schedule a support call.