var ros = new ROSLIB.Ros(); ros.topics = []; ros.nodes = []; ros.recording = false; ros.connectionName = 'ws://192.168.0.100:9090'; // If there is an error on the backend, an 'error' emit will be emitted. ros.on('error', function(error) { document.getElementById("ConnectionIPForm").className = "form-group has-warning has-feedback"; document.getElementById("ConnectionIPInput").value = ros.connectionName; document.getElementById("ConnectionIPLabel").innerHTML = 'No connection'; document.getElementById("ConnectionButton").className = "btn btn-warning" document.getElementById("rosbridgeconnection_badge").innerHTML = 'No connection'; document.getElementById("ROSNodes").innerHTML = ""; rosbridgeconnection_badge console.log(error);192 }); // Find out exactly when we made a connection. ros.on('connection', function() { console.log('Connection made!'); document.getElementById("ConnectionIPForm").className = "form-group has-success has-feedback"; document.getElementById("ConnectionIPInput").value = ros.connectionName; document.getElementById("ConnectionIPLabel").innerHTML = 'Connection made at:'; document.getElementById("rosbridgeconnection_badge").innerHTML = 'Connected'; document.getElementById("ConnectionButton").className = "btn btn-success" ros.nodes = []; ros.topics = []; }); ros.on('close', function() { console.log('Connection closed.'); document.getElementById("ConnectionIPForm").className = "form-group has-warning has-feedback"; document.getElementById("ConnectionIPLabel").innerHTML = 'Connection closed'; document.getElementById("ConnectionButton").className = "btn btn-warning" document.getElementById("rosbridgeconnection_badge").innerHTML = 'Connection closed'; ros.nodes = []; ros.topics = []; }); // Create a connection to the rosbridge WebSocket server. ros.connect(ros.connectionName); /////////////////////////////////////////////////////////////////////////////////// // Publishers /////////////////////////////////////////////////////////////////////////////////// function publishBagMessage(bagFilename) { var bagMessage = new ROSLIB.Message({ data : bagFilename }) bagPublisher.publish(bagMessage) } //////////////////////////////////////////////////////////////// // Topics //////////////////////////////////////////////////////////////// var bagPublisher = new ROSLIB.Topic({ ros : ros, name : 'bag_publisher', messageType : 'std_msgs/String' }); var bagNotifier = new ROSLIB.Topic({ ros : ros, name : 'bag_notifier', messageType : 'std_msgs/String' }); //////////////////////////////////////////////////////////////// // Subscribers //////////////////////////////////////////////////////////////// bagNotifier.subscribe(function(message) { if (message.data === "STARTED") { document.getElementById("recordButtonText").innerHTML = "Stop" document.getElementById("recordButton").className = "btn btn-danger" } else { document.getElementById("recordButtonText").innerHTML = "Start" document.getElementById("recordButton").className = "btn btn-primary" } }); /////////////////////////////////////////////////////////////////////////////////// // Functions /////////////////////////////////////////////////////////////////////////////////// // attept to connect to the ros master from the IP given orgrab it from the form ros.attemptConnection = function(ipAddress) { if( typeof ipAddress !== "undefined") { ros.connectionName = ipAddress; } else { ros.connectionName = document.getElementById("ConnectionIPInput").value } console.log('Connection = ' + ros.connectionName); ros.connect(ros.connectionName); } function getTopics() { var topicsClient = new ROSLIB.Service({ ros : ros, name : '/rosapi/topics', serviceType : '/rosapi/Topics' }); var request = new ROSLIB.ServiceRequest(); // ros.topics = []; topicsClient.callService(request, function(result) { ros.topics = result.topics; }); return ros.topics; }; function getNodes() { var topicsClient = new ROSLIB.Service({ ros : ros, name : '/rosapi/nodes', serviceType : '/rosapi/nodes' }); var request = new ROSLIB.ServiceRequest(); // ros.nodes = []; topicsClient.callService(request, function(result) { ros.nodes = result.nodes; }); return ros.nodes; }; function getTime() { var topicsClient = new ROSLIB.Service({ ros : ros, name : '/rosapi/get_time', serviceType : '/rosapi/GetTime' }); var request = new ROSLIB.ServiceRequest({}); topicsClient.callService(request, function(result) { console.log("Getting Time..."); console.log(result.time.secs); }); }; function toggleRecording() { document.getElementById("recordButtonText").innerHTML = "Wait" document.getElementById("recordButton").className = "btn btn-warning" if (!ros.recording) { ros.recording = true publishBagMessage(document.getElementById("recordText").value) } else { ros.recording = false publishBagMessage("STOP") } }