ROS2 Connection Queue Full

Hello,

I am having issues with the TCP Endpoint connection not being able to handle the amount of data I am sending through it. The error in Unity error is “Queue full! Messages are getting dropped! Try check your connection speed is fast enough to handle the traffic.”

I am sending a lot of data (640x480 pointcloud and a 1224x1024 color image). Are there any suggestions for alleviating this issue?

Hi, unfortunately our current implementation does have some performance limitations.

Some users have reported they got better throughput by having two separate ROSConnections connecting to two separate ros_tcp_endpoint nodes - in your case perhaps you could try using one to send the pointclouds and the other the color images?

You'd set this up by placing two GameObjects in your scene and attaching a ROSConnection script to each of them. That way you can configure the IP and port separately for each of them. Then instead of calling ROSConnection.GetOrCreateInstance you'd expose a ROSConnection variable on your publisher scripts and drag in the appropriate connection object in the inspector.

Just ended up on this thread after looking for a way to increase performance when streaming 5 HD images from ROS.

I think the multiple ROSConnection method would work very well as I sometimes get 150+ms compute/lag spikes on the singleton ROSConnection.Update() function. I'd imagine the ROS-TCP connector (I'm using the updated C++ version) is backed up and sends a couple of images at this, so when it hits Unity it has a ton of data to deserialize causing the 150+ms spike.

Currently the multiple ROSConnection objects method doesn't work, so I'd like to bump if there are any ways (possibly downgrading) to be able to support multiple ROSConnections?