public ActionClient(TAction action, string actionName, string serverURL, Protocol protocol = Protocol.WebSocketSharp, RosSocket.SerializerEnum serializer = RosSocket.SerializerEnum.JSON, float secondsTimeout = 5f, float secondsTimestep = 0.2f) { this.action = action; this.actionName = actionName; this.millisecondsTimeout = (int)(secondsTimeout * 1000); this.millisecondsTimestep = (int)(secondsTimestep * 1000); this.serverURL = serverURL; socket = new RosSocket(ProtocolInitializer.GetProtocol(protocol, serverURL), serializer); }
public static RosSocket ConnectToRos(Protocols protocolType, string serverUrl, EventHandler onConnected = null, EventHandler onClosed = null, RosSocket.SerializerEnum serializer = RosSocket.SerializerEnum.JSON) { RosBridgeClient.Protocols.IProtocol protocol = GetProtocol(protocolType, serverUrl); protocol.OnConnected += onConnected; protocol.OnClosed += onClosed; return(new RosSocket(protocol, serializer)); }
public static RosSocket ConnectToRos(Protocol protocolType, string serverUrl, EventHandler onConnected = null, EventHandler onClosed = null, RosSocket.SerializerEnum serializer = RosSocket.SerializerEnum.Microsoft) { IProtocol protocol = ProtocolInitializer.GetProtocol(protocolType, serverUrl); protocol.OnConnected += onConnected; protocol.OnClosed += onClosed; return(new RosSocket(protocol, serializer)); }
private void TransferAsync(Protocols.Protocol protocolType, string serverUrl, int timeout, string urdfPath, string rosPackage, RosSocket.SerializerEnum serializer) { RosSocket = RosConnector.ConnectToRos(protocolType, serverUrl, OnConnected, OnClose, serializer); if (!StatusEvents["connected"].WaitOne(timeout * 1000)) { Debug.LogWarning("Failed to connect to " + serverUrl + " before timeout."); RosSocket.Close(); return; } string robotName = Path.GetFileName(urdfPath); UrdfTransferToRos urdfTransferToRos = new UrdfTransferToRos(RosSocket, robotName, urdfPath, rosPackage); StatusEvents["robotNamePublished"] = urdfTransferToRos.Status["robotNamePublished"]; StatusEvents["robotDescriptionPublished"] = urdfTransferToRos.Status["robotDescriptionPublished"]; StatusEvents["resourceFilesSent"] = urdfTransferToRos.Status["resourceFilesSent"]; urdfTransferToRos.Transfer(); }
public void TransferUrdf(Protocols.Protocol protocolType, string serverUrl, int timeout, string assetPath, string urdfParameter, RosSocket.SerializerEnum serializer) { this.timeout = timeout; this.assetPath = assetPath; this.urdfParameter = urdfParameter; // initialize ResetStatusEvents(); rosSocket = RosConnector.ConnectToRos(protocolType, serverUrl, OnConnected, OnClosed, serializer); if (!StatusEvents["connected"].WaitOne(timeout * 1000)) { Debug.LogWarning("Failed to connect to ROS before timeout"); return; } ImportAssets(); }
public ActionClient(TAction action, string actionName, string serverURL, Protocol protocol = Protocol.WebSocketSharp, RosSocket.SerializerEnum serializer = RosSocket.SerializerEnum.JSON, float timeStep = 0.2f) { this.action = action; this.actionName = actionName; this.timeStep = timeStep; this.serverURL = serverURL; socket = new RosSocket(ProtocolInitializer.GetProtocol(protocol, serverURL), serializer); }
public void Transfer(Protocols.Protocol protocolType, string serverUrl, int timeout, string urdfPath, string rosPackage, RosSocket.SerializerEnum serializer) { if (Path.GetExtension(urdfPath)?.ToLowerInvariant() != ".urdf") { Debug.LogWarning("Please select a valid URDF file to publish."); return; } Thread transferToRos = new Thread(() => TransferAsync(protocolType, serverUrl, timeout, urdfPath, rosPackage, serializer)); transferToRos.Start(); }
public FibonacciActionServer(FibonacciAction action, string actionName, Protocol protocol, string serverURL, RosSocket.SerializerEnum serializer, int timeout, float timeStep) : base(action, actionName, protocol, serverURL, serializer, timeout, timeStep) { }
private void OnGUI() { GUILayout.Label("URDF Transfer (From ROS to Unity)", EditorStyles.boldLabel); EditorGUILayout.BeginHorizontal(); address = EditorGUILayout.TextField("Address", address); EditorGUILayout.EndHorizontal(); showSettings = EditorGUILayout.Foldout(showSettings, "Settings"); if (showSettings) { EditorGUILayout.BeginHorizontal(); EditorGUIUtility.labelWidth = 100; protocolType = (Protocols.Protocol)EditorGUILayout.EnumPopup("Protocol", protocolType); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUIUtility.labelWidth = 100; serializerType = (RosSocket.SerializerEnum)EditorGUILayout.EnumPopup("Serializer", serializerType); EditorGUILayout.EndHorizontal(); //TODO URDF Parameter EditorGUILayout.BeginHorizontal(); urdfParameter = EditorGUILayout.TextField("URDF Parameter", urdfParameter); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); timeout = EditorGUILayout.IntField("Timeout [s]", timeout); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); assetPath = EditorGUILayout.TextField("Asset Path", assetPath); EditorGUILayout.EndHorizontal(); } EditorGUILayout.BeginHorizontal(); EditorGUILayout.Space(); if (GUILayout.Button("Reset to Default", GUILayout.Width(150))) { DeleteEditorPrefs(); GetEditorPrefs(); } EditorGUILayout.EndHorizontal(); GUILayout.Space(20); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Read Robot Description")) { SetEditorPrefs(); Thread rosSocketConnectThread = new Thread(() => transferHandler.TransferUrdf(protocolType, address, timeout, assetPath, urdfParameter, serializerType)); rosSocketConnectThread.Start(); } EditorGUILayout.EndHorizontal(); GUILayout.Space(20); EditorGUIUtility.labelWidth = 300; DrawLabelField("Connected:", "connected"); DrawLabelField("Robot Name Received:", "robotNameReceived"); DrawLabelField("Robot Description Received:", "robotDescriptionReceived"); DrawLabelField("Resource Files Received:", "resourceFilesReceived"); DrawLabelField("Disconnected:", "disconnected"); DrawLabelField("Import Complete:", "importComplete"); }
private void OnGUI() { GUILayout.Label("URDF Transfer (From Unity to ROS)", EditorStyles.boldLabel); EditorGUILayout.BeginHorizontal(); serverUrl = EditorGUILayout.TextField("Server URL", serverUrl); EditorGUILayout.EndHorizontal(); showSettings = EditorGUILayout.Foldout(showSettings, "Settings"); if (showSettings) { EditorGUILayout.BeginHorizontal(); EditorGUIUtility.labelWidth = 100; protocolType = (Protocols.Protocol)EditorGUILayout.EnumPopup("Protocol", protocolType); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUIUtility.labelWidth = 100; serializerType = (RosSocket.SerializerEnum)EditorGUILayout.EnumPopup("Serializer", serializerType); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); urdfPath = EditorGUILayout.TextField("URDF to export", urdfPath); if (GUILayout.Button("Select", new GUIStyle(EditorStyles.miniButtonRight) { fixedWidth = 75 })) { urdfPath = EditorUtility.OpenFilePanel("Select a URDF file", urdfPath, "urdf"); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); timeout = EditorGUILayout.IntField("Timeout [s]", timeout); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); rosPackage = EditorGUILayout.TextField( new GUIContent("ROS package", "The package where all meshes and resources files will be exported to in ROS."), rosPackage); EditorGUILayout.EndHorizontal(); } EditorGUILayout.BeginHorizontal(); EditorGUILayout.Space(); if (GUILayout.Button("Reset to Default", GUILayout.Width(150))) { DeleteEditorPrefs(); GetEditorPrefs(); } EditorGUILayout.EndHorizontal(); GUILayout.Space(10); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Publish Robot Description")) { SetEditorPrefs(); transferHandler.Transfer(protocolType, serverUrl, timeout, urdfPath, rosPackage, serializerType); } EditorGUILayout.EndHorizontal(); GUILayout.Space(20); EditorGUIUtility.labelWidth = 225; DrawLabelField("Connected: ", "connected"); DrawLabelField("Robot name published: ", "robotNamePublished"); DrawLabelField("Robot description published: ", "robotDescriptionPublished"); DrawLabelField("All resources files published: ", "resourceFilesSent"); GUILayout.Space(10); EditorGUI.BeginDisabledGroup(transferHandler.RosSocket == null || !transferHandler.RosSocket.protocol.IsAlive()); if (GUILayout.Button("Close Connection")) { transferHandler.RosSocket?.Close(); } EditorGUI.EndDisabledGroup(); }
public FileTransferFromRosConsoleClient(FileTransferFromRosAction action, string outPath, string serverURL, Protocol protocol = Protocol.WebSocketSharp, RosSocket.SerializerEnum serializer = RosSocket.SerializerEnum.JSON, float timeStep = 0.2f, int serverWaitTimeout = 3) : base(action, "file_transfer_from_ros", serverURL, protocol, serializer, timeStep) { this.outPath = outPath; this.serverWaitTimeout = serverWaitTimeout; files = new ConcurrentQueue <FileTransferFromRosFeedback>(); }
public ActionServer(TAction action, string actionName, Protocol protocol, string serverURL, RosSocket.SerializerEnum serializer = RosSocket.SerializerEnum.JSON, int timeout = 10, float timeStep = 0.1f) { this.action = action; this.actionName = actionName; this.timeStep = timeStep; this.serverURL = serverURL; socket = new RosSocket(ProtocolInitializer.GetProtocol(protocol, serverURL), serializer); }