Files
old-lab_ui/ProjectFiles/js/ros_scripts.js

181 lines
5.1 KiB
JavaScript
Raw Normal View History

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")
}
}