var ros = new ROSLIB.Ros(); ros.recording = false; // ros.connectionName = 'ws://192.168.1.105:9090'; ros.connectionName = 'ws://localhost: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 = "No Nodes Detected"; 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 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") } }