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

261 lines
8.0 KiB
JavaScript
Raw Normal View History

2019-02-28 20:18:22 -05:00
2019-02-25 16:54:05 -05:00
///////////////////////////////////////////////////////////////////////////////////
// Publishers
///////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
// Topics
////////////////////////////////////////////////////////////////
2019-02-28 20:18:22 -05:00
2019-02-25 16:54:05 -05:00
////////////////////////////////////////////////////////////////
// Subscribers
////////////////////////////////////////////////////////////////
2019-02-28 20:18:22 -05:00
// Operation Mode
var modeStatus = new ROSLIB.Topic({
ros : ros,
name : '/aescape/mode/status',
2019-03-28 14:58:11 -04:00
messageType : 'std_msgs/String',
throttle_rate : 500 // 2Hz
2019-02-28 20:18:22 -05:00
});
modeStatus.subscribe(function(message) {
2019-03-24 23:52:04 -04:00
document.getElementById("stoppedModeButton").className = "btn btn-secondary"
2019-02-28 20:18:22 -05:00
document.getElementById("standbyModeButton").className = "btn btn-primary"
2019-04-17 11:26:08 -04:00
document.getElementById("readyModeButton").className = "btn btn-primary"
2019-02-28 20:18:22 -05:00
document.getElementById("teachingModeButton").className = "btn btn-primary"
document.getElementById("executionModeButton").className = "btn btn-primary"
2019-04-17 11:26:08 -04:00
document.getElementById("recordingStartButton").disabled = true
document.getElementById("executionStartButton").disabled = true
2019-02-28 20:18:22 -05:00
2019-04-17 11:26:08 -04:00
if (message.data == "stopped")
{
2019-03-24 23:52:04 -04:00
document.getElementById("stoppedModeButton").className = "btn btn-warning"
2019-04-17 11:26:08 -04:00
}
else if (message.data == "standby")
2019-03-24 23:52:04 -04:00
{
document.getElementById("standbyModeButton").className = "btn btn-primary btn-success"
2019-04-17 11:26:08 -04:00
}
else if (message.data == "teach")
2019-02-28 20:18:22 -05:00
{
document.getElementById("teachingModeButton").className = "btn btn-primary btn-success"
2019-04-17 11:26:08 -04:00
}
else if (message.data == "execution")
2019-02-28 20:18:22 -05:00
{
document.getElementById("executionModeButton").className = "btn btn-primary btn-success"
}
2019-04-17 11:26:08 -04:00
else if (message.data == "ready")
{
document.getElementById("readyModeButton").className = "btn btn-primary btn-success"
document.getElementById("recordingStartButton").disabled = false
document.getElementById("executionStartButton").disabled = false
}
2019-02-28 20:18:22 -05:00
});
2019-04-19 18:29:16 -04:00
// Safety Status
var safetyStatusTopic = new ROSLIB.Topic({
ros : ros,
name : '/aescape/mode/safety_status',
messageType : 'std_msgs/String',
throttle_rate : 500 // 2Hz
});
safetyStatusTopic.subscribe(function(message) {
2019-04-19 19:18:08 -04:00
document.getElementById("safetyRunning").className = 'label label-default';
document.getElementById("safetyStopped").className = 'label label-default';
2019-04-19 18:29:16 -04:00
if (message.data == "stopped")
{
2019-04-19 19:18:08 -04:00
document.getElementById("safetyStopped").className = 'label label-danger';
2019-04-19 18:29:16 -04:00
}
else if (message.data == "running")
{
2019-04-19 19:18:08 -04:00
document.getElementById("safetyRunning").className = 'label label-success';
2019-04-19 18:29:16 -04:00
}
});
2019-04-16 18:23:23 -04:00
// Recording Bag
var recordingBagTopic = new ROSLIB.Topic({
ros : ros,
name : '/aescape/bags/recording_status',
messageType : 'std_msgs/String'
});
recordingBagTopic.subscribe(function(message) {
if (message.data == "stopped")
{
document.getElementById("RecordingStatusLabel").innerHTML = 'Not Running';
2019-04-19 19:18:08 -04:00
document.getElementById("RecordingStatusLabel").className = 'label label-warning';
2019-04-16 18:23:23 -04:00
}
else if (message.data == "running")
{
document.getElementById("RecordingStatusLabel").innerHTML = 'RUNNING!';
2019-04-19 19:18:08 -04:00
document.getElementById("RecordingStatusLabel").className = 'label label-success';
2019-04-16 18:23:23 -04:00
}
});
// Executing Bag
var executingBagTopic = new ROSLIB.Topic({
ros : ros,
name : '/aescape/bags/execution_status',
messageType : 'std_msgs/String'
});
executingBagTopic.subscribe(function(message) {
if (message.data == "stopped")
{
document.getElementById("ExecutionStatusLabel").innerHTML = 'Not Running';
2019-04-19 19:18:08 -04:00
document.getElementById("ExecutionStatusLabel").className = 'label label-warning';
2019-04-16 18:23:23 -04:00
}
else if (message.data == "running")
{
document.getElementById("ExecutionStatusLabel").innerHTML = 'RUNNING!';
2019-04-19 19:18:08 -04:00
document.getElementById("ExecutionStatusLabel").className = 'label label-success';
2019-04-16 18:23:23 -04:00
}
});
// Last Bag
2019-02-28 21:17:37 -05:00
var bagPlayingTopic = new ROSLIB.Topic({
ros : ros,
2019-04-16 18:23:23 -04:00
name : '/aescape/bags/last_played',
2019-02-28 21:17:37 -05:00
messageType : 'std_msgs/String'
});
bagPlayingTopic.subscribe(function(message) {
2019-04-16 18:23:23 -04:00
document.getElementById("lastbagText").innerHTML = message.data
2019-02-28 21:17:37 -05:00
});
2019-03-28 12:04:54 -04:00
// FrankaState
var frankaStatus = new ROSLIB.Topic({
ros : ros,
name : '/franka_state_controller/franka_states',
2019-03-28 14:58:11 -04:00
messageType : 'franka_msgs/FrankaState',
throttle_rate : 500 // 2Hz
2019-03-28 12:04:54 -04:00
});
frankaStatus.subscribe(function(message) {
document.getElementById("frankaModeOther").className = "label label-default"
document.getElementById("frankaModeIdle").className = "label label-default"
document.getElementById("frankaModeMove").className = "label label-default"
document.getElementById("frankaModeGuiding").className = "label label-default"
document.getElementById("frankaModeReflex").className = "label label-default"
document.getElementById("frankaModeUserStopped").className = "label label-default"
document.getElementById("frankaModeErrorRecovery").className = "label label-default"
document.getElementById("fixFrankaButton").className = "btn btn-primary"
if (message.robot_mode == 0)
{
document.getElementById("frankaModeOther").className = "label label-warning"
document.getElementById("fixFrankaButton").className = "btn btn-danger"
}
else if (message.robot_mode == 1)
{
document.getElementById("frankaModeIdle").className = "label label-warning"
document.getElementById("fixFrankaButton").className = "btn btn-danger"
}
else if (message.robot_mode == 2)
{
document.getElementById("frankaModeMove").className = "label label-warning"
document.getElementById("fixFrankaButton").className = "btn btn-success"
}
else if (message.robot_mode == 3)
{
document.getElementById("frankaModeGuiding").className = "label label-warning"
document.getElementById("fixFrankaButton").className = "btn btn-default"
}
else if (message.robot_mode == 4)
{
document.getElementById("frankaModeReflex").className = "label label-warning"
document.getElementById("fixFrankaButton").className = "btn btn-danger"
2019-02-25 16:54:05 -05:00
2019-03-28 12:04:54 -04:00
}
else if (message.robot_mode == 5)
{
document.getElementById("frankaModeUserStopped").className = "label label-warning"
document.getElementById("fixFrankaButton").className = "btn btn-default"
}
else if (message.robot_mode == 6)
{
document.getElementById("frankaModeErrorRecovery").className = "label label-warning"
document.getElementById("fixFrankaButton").className = "btn btn-default"
2019-03-28 13:30:56 -04:00
}
});
// Robotiq Data
var robotiqDataTopic = new ROSLIB.Topic({
ros : ros,
name : '/robotiq_ft_wrench',
2019-03-28 14:58:11 -04:00
messageType : 'geometry_msgs/WrenchStamped',
throttle_rate : 500 // 2Hz
2019-03-28 13:30:56 -04:00
});
robotiqDataTopic.subscribe(function(message) {
var force = message.wrench.force
document.getElementById("robotiqX").innerHTML = force.x.toFixed(1)
document.getElementById("robotiqY").innerHTML = force.y.toFixed(1)
document.getElementById("robotiqZ").innerHTML = force.z.toFixed(1)
2019-03-28 14:58:11 -04:00
2019-03-28 13:30:56 -04:00
if ((Math.abs(force.x) > 0.5) || (Math.abs(force.y) > 0.5) || (Math.abs(force.z) > 0.5))
{
document.getElementById("calibrateButton").className = "btn btn-danger"
} else {
document.getElementById("calibrateButton").className = "btn btn-default"
2019-03-28 12:04:54 -04:00
}
});
2019-02-25 16:54:05 -05:00
////////////////////////////////////////////////////////////////
// Services
////////////////////////////////////////////////////////////////
function triggerService(serviceName)
{
var service = new ROSLIB.Service({
ros : ros,
name : serviceName,
serviceType : 'std_srvs/Trigger'
});
var request = new ROSLIB.ServiceRequest({});
2019-02-28 20:37:13 -05:00
service.callService(request, function(result) {
console.log('Result for service call on '
+ serviceName
+ ': '
+ result.sum);
});
}
function triggerMessageService(serviceName, textInput)
{
var text = document.getElementById(textInput).value
var service = new ROSLIB.Service({
ros : ros,
name : serviceName,
serviceType : 'demobot.TriggerMessage'
});
var request = new ROSLIB.ServiceRequest({
message : text
});
2019-02-25 16:54:05 -05:00
service.callService(request, function(result) {
console.log('Result for service call on '
+ serviceName
+ ': '
+ result.sum);
});
}