public static void Main(string[] args)
        {
            string uri = "ws://192.168.56.102:9090";

            RosBridgeClient.Protocols.WebSocketNetProtocol webSocketNetProtocol;
            RosSocket rosSocket;

            for (int i = 1; i < 3; i++)
            {
                webSocketNetProtocol = new RosBridgeClient.Protocols.WebSocketNetProtocol(uri);
                rosSocket            = new RosSocket(webSocketNetProtocol);

                // Publication:
                UrdfImporter urdfImporter = new UrdfImporter(rosSocket, System.IO.Directory.GetCurrentDirectory());
                urdfImporter.Import();

                urdfImporter.Status["robotNameReceived"].WaitOne();
                Console.WriteLine("Robot Name Received: " + urdfImporter.RobotName);

                urdfImporter.Status["robotDescriptionReceived"].WaitOne();
                Console.WriteLine("Robot Description received... ");

                urdfImporter.Status["resourceFilesReceived"].WaitOne();
                Console.WriteLine("Resource Files received " + urdfImporter.RequestedResourceFiles.Count);

                rosSocket.Close();
            }

            Console.WriteLine("Press any key to close...");
            Console.ReadKey(true);
        }
    private void rosSocketConnect()
    {
        // intialize
        foreach (ManualResetEvent manualResetEvent in status.Values)
        {
            manualResetEvent.Reset();
        }

        // connectto ROSbridge
        RosSocket rosSocket = new RosSocket(address);

        status["connected"].Set();

        // setup urdfImporter
        urdfImporter = new UrdfImporter(rosSocket, urdfAssetPath);
        status["robotNameReceived"]        = urdfImporter.Status["robotNameReceived"];
        status["robotDescriptionReceived"] = urdfImporter.Status["robotDescriptionReceived"];
        status["resourceFilesReceived"]    = urdfImporter.Status["resourceFilesReceived"];
        urdfImportThread = new Thread(() => urdfImporter.Import());
        urdfImportThread.Start();

        // import URDF assets:
        if (status["resourceFilesReceived"].WaitOne(int.Parse(timeout) * 1000))
        {
            Debug.Log("Imported urdf resources to " + urdfImporter.LocalDirectory);
        }
        else
        {
            Debug.LogWarning("Not all resource files have been received before timeout.");
        }

        // close the ROSBridge socket
        rosSocket.Close();
        status["disconnected"].Set();
    }
        public static void Main(string[] args)
        {
            //RosSocket rosSocket = new RosSocket(new RosBridgeClient.Protocols.WebSocketSharpProtocol(uri));

            for (int i = 0; i < 2; i++)
            {
                RosSocket    rosSocket    = new RosSocket(new RosBridgeClient.Protocols.WebSocketNetProtocol(uri));
                UrdfImporter urdfImporter = new UrdfImporter(rosSocket, System.IO.Directory.GetCurrentDirectory().ToString());
                urdfImporter.Import();
                Console.WriteLine("Press any key to close...");
                Console.ReadKey(true);
                rosSocket.Close();
            }
        }