Search Unity

  1. We are migrating the Unity Forums to Unity Discussions. On July 12, the Unity Forums will become read-only. On July 15, Unity Discussions will become read-only until July 18, when the new design and the migrated forum contents will go live. Read our full announcement for more information and let us know if you have any questions.

Connection version error for empty handshake.

Discussion in 'Robotics' started by Quique-Martinez, Mar 20, 2023.

  1. Quique-Martinez

    Quique-Martinez

    Joined:
    Oct 1, 2013
    Posts:
    141
    Hi all, I run ROS on windows and connect with TCP endpoint v7.0.0, ROS 1.15.9, and Unity 2021.3.12
    Everything was going fine, but suddenly I began to have this error.
    The same setup works perfectly on another PC. I've found that the content of the handshake on line 879 of ROSConnection is empty and the script interprets there is a version error.

    Code (CSharp):
    1.         static async Task ReaderThread(int readerIdx, NetworkStream networkStream, ConcurrentQueue<Tuple<string, byte[]>> queue, int sleepMilliseconds, CancellationToken token)
    2.         {
    3.             // First message should be the handshake
    4.             Tuple<string, byte[]> handshakeContent = await ReadMessageContents(networkStream, sleepMilliseconds, token);
    5.  
    6.             if (handshakeContent.Item1 == SysCommand.k_SysCommand_Handshake)
    7.             {
    8.                 ROSConnection.m_HasConnectionError = false;
    9.                 queue.Enqueue(handshakeContent);
    10.             }
    11.             else
    12.             {
    13.                 Debug.LogError($"Invalid ROS-TCP-Endpoint version detected: 0.6.0 or older. Expected: {k_Version}.");
    14.             }
    Actually, if I comment these lines as if the handshake was correct, I can send and receive the messages. Is it a known issue? I haven't found info about it.


    upload_2023-3-20_11-39-4.png
     
  2. ActiveSim

    ActiveSim

    Joined:
    May 10, 2019
    Posts:
    59
    Yes your Unity-ROS-bridge has not the same version as the ROS-TCP endpoint you are using in the editor. Did you made an update on any side?
     
  3. Quique-Martinez

    Quique-Martinez

    Joined:
    Oct 1, 2013
    Posts:
    141
    As I mentioned, the empty handshake content is triggering this error, but the version is the right one on both sides. The same code works perfectly on another machine.
    Btw, despite this error, I receive messages from the TCP endpoint in Unity, but I cannot send them.