var ros = new ROSLIB.Ros(); ros.topics = Array(); ros.nodes = Array(); ros.recording = false; ros.connected = false; // ros.connectionName = 'ws://192.168.1.105:9090'; // ros.connectionName = 'ws://localhost:9090'; // ros.connectionName = 'ws://titan.aescape.co:9090'; ros.connectionName = 'ws://atlas.local: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() { ros.connected = true; 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 = Array(); ros.topics = Array(); }); ros.on('close', function() { console.log('Connection closed.'); ros.connected = false; 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 = Array(); ros.topics = Array(); }); // Create a connection to the rosbridge WebSocket server. //ros.connect(ros.connectionName); /////////////////////////////////////////////////////////////////////////////////// // Publishers /////////////////////////////////////////////////////////////////////////////////// function publishBagMessage(bagFilename) { var bag_file_message = "" bag_file_message += bagFilename; if (bagFilename != "STOP") { for (topic in ros.topics) { if(ros.topics[topic].bag) { bag_file_message += " " + ros.topics[topic].name } } } 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 if (message.data === "STOPPED") { document.getElementById("recordButtonText").innerHTML = "Start" document.getElementById("recordButton").className = "btn btn-primary" } console.log("bagNotifier: " +message.data) }); /////////////////////////////////////////////////////////////////////////////////// // 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() { if(ros.connected) { document.getElementById("recordButtonText").innerHTML = "Wait" document.getElementById("recordButton").className = "btn btn-warning" if (!ros.recording) { ros.recording = true topicstobag = " " for (i = 0; i < ros.topics.length; i ++) { if (ros.topics[i].bag == true) { topicstobag = topicstobag.concat(ros.topics[i].name + " ") } } publishBagMessage(document.getElementById("recordText").value + topicstobag) } else { ros.recording = false publishBagMessage("STOP") } } }