Search Unity

  1. Unity Asset Manager is now available in public beta. Try it out now and join the conversation here in the forums.
    Dismiss Notice

Question ROS2 Connection Queue Full

Discussion in 'Robotics' started by d_pepley, Feb 23, 2022.

  1. d_pepley

    d_pepley

    Joined:
    Oct 2, 2020
    Posts:
    18
    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?
     
  2. LaurieUnity

    LaurieUnity

    Unity Technologies

    Joined:
    Oct 23, 2020
    Posts:
    77
    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.
     
  3. cokumura

    cokumura

    Joined:
    Nov 14, 2023
    Posts:
    1
    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?