private void ImportAssets() { if (!statusEvents["connected"].WaitOne(timeout * 1000)) { Debug.LogWarning("Failed to connect to ROS before timeout"); return; } // setup urdfImporter RosBridgeClient.UrdfImporter urdfImporter = new RosBridgeClient.UrdfImporter(rosSocket, assetPath); statusEvents["robotNameReceived"] = urdfImporter.Status["robotNameReceived"]; statusEvents["robotDescriptionReceived"] = urdfImporter.Status["robotDescriptionReceived"]; statusEvents["resourceFilesReceived"] = urdfImporter.Status["resourceFilesReceived"]; urdfImporter.Import(); if (statusEvents["robotNameReceived"].WaitOne(timeout * 1000)) { robotName = urdfImporter.RobotName; localDirectory = urdfImporter.LocalDirectory; } // import URDF assets: if (statusEvents["resourceFilesReceived"].WaitOne(timeout * 1000)) { Debug.Log("Imported urdf resources to " + urdfImporter.LocalDirectory); } else { Debug.LogWarning("Not all resource files have been received before timeout."); } rosSocket.Close(); }
private void rosSocketConnect() { // initialize foreach (ManualResetEvent manualResetEvent in status.Values) { manualResetEvent.Reset(); } // connect to rosbrige_suite: RosBridgeClient.Protocols.IProtocol protocol = GetProtocol(); RosSocket rosSocket = new RosSocket(protocol); CheckConnection(protocol); if (!status["connected"].WaitOne(0)) { rosSocket.Close(); return; } // setup urdfImporter RosBridgeClient.UrdfImporter urdfImporter = new RosBridgeClient.UrdfImporter(rosSocket, assetPath); status["robotNameReceived"] = urdfImporter.Status["robotNameReceived"]; status["robotDescriptionReceived"] = urdfImporter.Status["robotDescriptionReceived"]; status["resourceFilesReceived"] = urdfImporter.Status["resourceFilesReceived"]; urdfImporter.Import(); if (status["robotNameReceived"].WaitOne(timeout * 1000)) { robotName = urdfImporter.RobotName; localDirectory = urdfImporter.LocalDirectory; } // import URDF assets: if (status["resourceFilesReceived"].WaitOne(timeout * 1000)) { Debug.Log("Imported urdf resources to " + urdfImporter.LocalDirectory); } else { Debug.LogWarning("Not all resource files have been received before timeout."); } status["disconnected"].Set(); rosSocket.Close(); }
private void rosSocketConnect() { // intialize foreach (ManualResetEvent manualResetEvent in status.Values) { manualResetEvent.Reset(); } // connect to ROSbridge RosSocket rosSocket = new RosSocket(address); status["connected"].Set(); // setup urdfImporter urdfImporter = new RosBridgeClient.UrdfImporter(rosSocket, urdfAssetPath); status["robotNameReceived"] = urdfImporter.Status["robotNameReceived"]; status["robotDescriptionReceived"] = urdfImporter.Status["robotDescriptionReceived"]; status["resourceFilesReceived"] = urdfImporter.Status["resourceFilesReceived"]; Thread 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(); }