Time delays when using two high-res cameras
I have an application where I want to use two Basler cameras simultaneously. When I use a single camera, or set the region of interest to be low for both cameras, there is a small time delay associated with sending the image message from the camera node to a listener node (10 ms). When I use both however, there is a significant time delay in the received images (300 ms). I've created a small test node that listens on the image messages for verifying this:
delay_ms = (rospy.Time.now() - msg.header.stamp).to_nsec() / 1e6
Following previous answers, I've tried increasing the buff_size parameter in the subscribers but that doesn't help. I've also tried to increase the TCP window size in linux but that doesn't help either.
I'm wondering where the bottleneck is exactly. Is it in the TCP/IP stack itself or could it be the serialization of the large images that causes latency? How do I check for these?
Additional Info:
- I'm using the basler_camera package for reading images from the cameras.
- The computer has 4 cores and 8 GB of RAM
camera 1:
- 1280x960 RGB
- 20 MByte/s bw in rostopic
camera 2:
- 2048x1088 Mono
- 330 MByte/s bw in rostopic