deployment ready

This commit is contained in:
Rohit
2019-06-07 01:50:06 -04:00
parent 28f9d5041d
commit 622b0d9490
51 changed files with 25784 additions and 181 deletions

View File

@@ -1,5 +1,5 @@
<div>
<div id="coordinator">
<div class="col-md-6">
<div class="hand-panel panel panel-default">
<div class="panel-heading">
@@ -18,7 +18,7 @@
<ul class="list-group list-group-horizontal">
<li id="left_safetyRunning" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" />
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Running</label>
</div>
@@ -26,7 +26,7 @@
</li>
<li id="left_safetyStopped" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" />
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Stopped</label>
</div>
@@ -53,7 +53,7 @@
<ul class="list-group list-group-horizontal">
<li id="left_frankaModeOther" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" />
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Other</label>
</div>
@@ -61,7 +61,7 @@
</li>
<li id="left_frankaModeIdle" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" />
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Idle</label>
</div>
@@ -69,7 +69,7 @@
</li>
<li id="left_frankaModeMove" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" />
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Move</label>
</div>
@@ -77,7 +77,7 @@
</li>
<li id="left_frankaModeGuiding" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" />
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Guiding</label>
</div>
@@ -85,7 +85,7 @@
</li>
<li id="left_frankaModeReflex" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" />
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Reflex</label>
</div>
@@ -93,7 +93,7 @@
</li>
<li id="left_frankaModeUserStopped" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" />
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>User Stopped</label>
</div>
@@ -101,7 +101,7 @@
</li>
<li id="left_frankaModeErrorRecovery" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" />
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Automatic Error Recovery</label>
</div>
@@ -279,42 +279,27 @@
</div>
</div>
<div class="control-container col-md-6">
<div class="control-card panel panel-default">
<div class="control-card panel panel-default execution-control">
<div class="panel-heading">
Execution Mode Operations
Play Mode Operations
<i class="fas fa-info-circle"></i>
</div>
<div class="panel-body text-center">
<div class="button-area">
<button type="button" onclick="triggerService('/left/aescape/mode/activateReadyController')" class="btn col-md-4">
<button type="button" onclick="triggerService('/left/aescape/mode/activateReadyController')" class="btn col-md-3">
Activate Ready Mode
</button>
<!--<button id="executionLoadButton" type="button" onclick="triggerService('/aescape/bags/startPlayingLastRecording')" class="btn btn-primary">
<button id="executionLoadButton" type="button" onclick="triggerService('/aescape/bags/startPlayingLastRecording')" class="btn btn-primary col-md-3">
Load Last Recording
</button>-->
<button id="executionStartButton" type="button" onclick="triggerService('/left/aescape/mode/activateExecutionController'); triggerTopic('/left/run_trajectory')" class="btn btn-primary col-md-4">
</button>
<button id="executionStartButton" type="button" onclick="triggerService('/left/aescape/mode/activateExecutionController'); triggerTopic('/left/run_trajectory')" class="btn btn-primary col-md-3">
Play Last Recording
</button>
<button id="executionStopButton" type="button" onclick="triggerService('/aescape/bags/stopPlayingBag'); triggerService('/left/aescape/mode/activateReadyController')" class="btn btn-primary col-md-4">
<button id="executionStopButton" type="button" onclick="triggerService('/aescape/bags/stopPlayingBag'); triggerService('/left/aescape/mode/activateReadyController')" class="btn btn-primary col-md-3">
Stop Playing Recording
</button>
</div>
<div>
<div>
<!--Bagfile name must not start with "/" -->
<div class="row">
<div class="row-md-8">
<input type="text" id="bagNameText" class="form-control" placeholder="bag_filename">
</div>
<div class="row-md-4">
<button class="btn btn-primary" type="button" onclick="triggerMessageService('/aescape/bags/startPlayingRecording', 'bagNameText')">
<span>
Play Bag
</span>
</button>
</div>
</div>
</div>
<!-- <div class="row-md-4">
<<div class="col-md-3"> -->
<!-- Bagfile name must not start with "/"
@@ -322,33 +307,40 @@
Refresh List
</button>
</div> -->
<div>
<div>
<div class="list-group" id="bagList">
<button type="button" class="list-group-item list-group-item-action">Dapibus ac facilisis in</button>
<button type="button" class="list-group-item list-group-item-action">Morbi leo risus</button>
<button type="button" class="list-group-item list-group-item-action">Porta ac consectetur ac</button>
<button type="button" class="list-group-item list-group-item-action">Vestibulum at eros</button>
<button type="button" class="list-group-item list-group-item-action">Vestibulum at eros</button>
<button type="button" class="list-group-item list-group-item-action">Vestibulum at eros</button>
<button type="button" class="list-group-item list-group-item-action">Vestibulum at eros</button>
<button type="button" class="list-group-item list-group-item-action">Vestibulum at eros</button>
<button type="button" class="list-group-item list-group-item-action">Vestibulum at eros</button>
<button type="button" class="list-group-item list-group-item-action">Vestibulum at eros</button>
<button type="button" class="list-group-item list-group-item-action">Vestibulum at eros</button>
</div>
</div>
</div>
</div>
</div>
<div class="action-area panel-footer">
<div class="message" id="ExecutionStatusLabel">
<!--Bag manager not connected! -->
</div>
<div>
<!--Bagfile name must not start with "/" -->
<div class="row">
<div class="col-md-8">
<div class="dropdown">
<div>
<select id="bagList" placeholder="Select bag to play">
</select>
</div>
<!-- <i class="fas fa-sync-alt" onclick="updateRecordingsList()"></i> -->
</div>
</div>
<div class="col-md-4">
<button class="btn btn-primary" type="button" onclick="triggerMessageService('/aescape/bags/startPlayingRecording', 'bagNameText')">
<span>
Play Bag
</span>
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="panel-footer">
</div>
</div>
</div>
@@ -370,7 +362,7 @@
<ul class="list-group list-group-horizontal">
<li id="right_safetyRunning" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" />
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Running</label>
</div>
@@ -378,7 +370,7 @@
</li>
<li id="right_safetyStopped" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" />
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Stopped</label>
</div>
@@ -405,7 +397,7 @@
<ul class="list-group list-group-horizontal">
<li id="right_frankaModeOther" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" />
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Other</label>
</div>
@@ -413,7 +405,7 @@
</li>
<li id="right_frankaModeIdle" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" />
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Idle</label>
</div>
@@ -421,7 +413,7 @@
</li>
<li id="right_frankaModeMove" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" />
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Move</label>
</div>
@@ -429,7 +421,7 @@
</li>
<li id="right_frankaModeGuiding" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" />
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Guiding</label>
</div>
@@ -437,7 +429,7 @@
</li>
<li id="right_frankaModeReflex" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" />
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Reflex</label>
</div>
@@ -445,7 +437,7 @@
</li>
<li id="right_frankaModeUserStopped" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" />
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>User Stopped</label>
</div>
@@ -453,7 +445,7 @@
</li>
<li id="right_frankaModeErrorRecovery" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" />
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Automatic Error Recovery</label>
</div>
@@ -464,7 +456,7 @@
</div>
<div class="action-button panel-footer">
<button id="left_fixFrankaButton" type="button" onclick="triggerService('/left/aescape/hardware/resetFrankaError')" class="btn">
<button id="right_fixFrankaButton" type="button" onclick="triggerService('/left/aescape/hardware/resetFrankaError')" class="btn">
Fix Errors
</button>
</div>
@@ -552,6 +544,9 @@
</div>
</div> -->
</div>
<div class="panel-footer">
</div>
</div>
</div>

View File

@@ -61,36 +61,13 @@ class ArmControls
this.safetyStatusTopic.subscribe(this.safetyStatus.bind(this));
this.lastActiveButton = {
operationMode : null
safetyMode : null,
frankaMode : null,
operationMode : null,
};
}
// FrankaState
frankaStatus(message) {
var frankaModeToButtonMap = {
0 : "frankaModeOther",
1 : "frankaModeIdle",
2 : "frankaModeMove",
3 : "frankaModeGuiding",
4 : "frankaModeReflex",
5 : "frankaModeUserStopped",
6 : "frankaModeErrorRecovery"
}
if(frankaModeLastActive && frankaModeLastActive != message.robot_mode) {
var frankaButton = frankaModeToButtonMap[frankaModeLastActive];
if (frankaButton) {
document.getElementById(this.namespace+"_"+frankaButton).getElementsByTagName("input")[0].checked = false;
document.getElementById(this.namespace+"_"+frankaButton).getElementsByTagName("input")[0].disabled = true;
}
}
var frankaButton = frankaModeToButtonMap[message.robot_mode];
if (frankaButton) {
document.getElementById(this.namespace+"_"+frankaButton).getElementsByTagName("input")[0].disabled = false;
document.getElementById(this.namespace+"_"+frankaButton).getElementsByTagName("input")[0].checked = true;
}
var frankaModeLastActive = message.robot_mode;
}
// Operation Mode
modeStatus(message) {
@@ -118,7 +95,7 @@ class ArmControls
}
var operationModeLastActive = this.operationModeLastActive;
var operationModeLastActive = this.lastActiveButton.operationMode;
if(operationModeLastActive && operationModeLastActive != message.data) {
var operationModeButton = operationModeToButtonMap[operationModeLastActive];
@@ -132,16 +109,61 @@ class ArmControls
document.getElementById(this.namespace+"_"+operationModeButton).classList.add('active');
}
this.operationModeLastActive = message.data;
this.lastActiveButton.operationMode = message.data;
}
// FrankaState
frankaStatus(message) {
var frankaModeToButtonMap = {
0 : "frankaModeOther",
1 : "frankaModeIdle",
2 : "frankaModeMove",
3 : "frankaModeGuiding",
4 : "frankaModeReflex",
5 : "frankaModeUserStopped",
6 : "frankaModeErrorRecovery"
}
var frankaModeLastActive = this.lastActiveButton.frankaMode;
if(frankaModeLastActive && frankaModeLastActive != message.robot_mode) {
var frankaButton = frankaModeToButtonMap[frankaModeLastActive];
if (frankaButton) {
document.getElementById(this.namespace+"_"+frankaButton).getElementsByTagName("input")[0].checked = false;
document.getElementById(this.namespace+"_"+frankaButton).getElementsByTagName("input")[0].disabled = true;
}
}
var frankaButton = frankaModeToButtonMap[message.robot_mode];
if (frankaButton) {
document.getElementById(this.namespace+"_"+frankaButton).getElementsByTagName("input")[0].disabled = false;
document.getElementById(this.namespace+"_"+frankaButton).getElementsByTagName("input")[0].checked = true;
}
if(message.robot_mode == 0 || message.robot_mode == 4) {
document.getElementById(this.namespace+"_"+"fixFrankaButton").classList.add("danger");
} else {
document.getElementById(this.namespace+"_"+"fixFrankaButton").classList.remove("danger");
}
//if(message.robot_mode == 1) {
// document.getElementById(this.namespace+"_"+"fixFrankaButton").classList.add("warning");
//} else {
// document.getElementById(this.namespace+"_"+"fixFrankaButton").classList.remove("warning");
//}
this.lastActiveButton.frankaMode = message.robot_mode;
}
safetyStatus(message) {
var safetyStatusToButtonMap = {
"stopped" : "safetyStopped",
"running" : "safetyRunning"
}
var safetyButtonLastActive = this.lastActiveButton.safetyMode;
if(safetyButtonLastActive && safetyButtonLastActive != message.data) {
var safetyButton = safetyStatusToButtonMap[safetyButtonLastActive];
if(safetyButton) {
@@ -156,13 +178,17 @@ class ArmControls
document.getElementById(this.namespace+"_"+safetyButton).getElementsByTagName("input")[0].checked = true;
}
var safetyButtonLastActive = message.data;
this.lastActiveButton.safetyMode = message.data;
}
}
var leftArmControls = new ArmControls('left');
var rightArmControls = new ArmControls('right');
var lastActiveButton = {
teachingMode : null,
executionMode : null
}
// Robotiq Data
var robotiqDataTopic = new ROSLIB.Topic({
@@ -195,7 +221,6 @@ robotiqDataTopic.subscribe(function(message) {
}
});
// Recording Bag
var recordingBagTopic = new ROSLIB.Topic({
ros : ros,
@@ -218,6 +243,8 @@ recordingBagTopic.subscribe(function(message) {
"running" : "recordingStartButton"
}
var teachingModeLastActive = lastActiveButton.teachingMode;
if(teachingModeLastActive && teachingModeLastActive != message.data) {
var teachingModeButton = teachingModeToButtonMap[teachingModeLastActive];
if (teachingModeButton) {
@@ -230,7 +257,7 @@ recordingBagTopic.subscribe(function(message) {
document.getElementById(teachingModeButton).classList.add("active");
}
var teachingModeLastActive = message.data;
lastActiveButton.teachingMode = message.data;
});
// Executing Bag
@@ -254,8 +281,10 @@ executingBagTopic.subscribe(function(message) {
"running" : "executionStartButton"
}
var executionModeLastActive = lastActiveButton.executionMode;
if(executionModeLastActive && executionModeLastActive != message.data) {
var executionModeButton = teachingModeToButtonMap[executionModeLastActive];
var executionModeButton = executionModeToButtonMap[executionModeLastActive];
if (executionModeButton) {
document.getElementById(executionModeButton).classList.remove("active");
}
@@ -266,7 +295,7 @@ executingBagTopic.subscribe(function(message) {
document.getElementById(executionModeButton).classList.add("active");
}
var executionModeLastActive = message.data;
lastActiveButton.executionMode = message.data;
});
@@ -285,14 +314,6 @@ bagPlayingTopic.subscribe(function(message) {
// Services
////////////////////////////////////////////////////////////////
var notify = $.notify('<strong>Saving</strong> Do not close this page...', {
type: 'success',
allow_dismiss: false,
showProgressbar: true
});
function triggerService(serviceName)
{
var service = new ROSLIB.Service({
@@ -307,24 +328,42 @@ function triggerService(serviceName)
console.log('Result for service call on '
+ serviceName
+ ': '
+ result.sum);
$(document).ready(function(){
$.notify({
message: "Request error: " + serviceName + ". " + result.sum
}, {
"placement" : {
from: "bottom",
align: "right"
},
type: 'success',
delay: 1000
+ result);
//check for result.success == false
if(result.success == true) {
$(document).ready(function(){
$.notify({
message: "Going good! "+ serviceName
}, {
"placement" : {
from: "bottom",
align: "right"
},
type: 'success',
delay: 1000
});
});
});
} else {
$(document).ready(function(){
$.notify({
message: "Something went wrong :( " + serviceName
}, {
"placement" : {
from: "bottom",
align: "right"
},
type: 'danger',
delay: 1000
});
});
}
console.log(result);
}, function(error){
console.log("errored");
$(document).ready(function(){
$.notify({
message: "Request error: " + serviceName + ". " + result.sum
message: "Something went wrong :( " + serviceName
}, {
"placement" : {
from: "bottom",
@@ -356,14 +395,60 @@ function triggerMessageService(serviceName, textInput)
console.log('Result for service call on '
+ serviceName
+ ': '
+ result.sum);
+ result);
//check for result.success == false
if(result.success == true) {
$(document).ready(function(){
$.notify({
message: "Going good! "+ serviceName
}, {
"placement" : {
from: "bottom",
align: "right"
},
type: 'success',
delay: 1000
});
});
} else {
$(document).ready(function(){
$.notify({
message: "Something went wrong :( " + serviceName
}, {
"placement" : {
from: "bottom",
align: "right"
},
type: 'danger',
delay: 1000
});
});
}
console.log(result);
}, function(error){
console.log("errored");
$(document).ready(function(){
$.notify({
message: "Something went wrong :( " + serviceName
}, {
"placement" : {
from: "bottom",
align: "right"
},
type: 'danger',
delay: 1000
});
});
});
}
// function executeBagForm()
function updateSelectedBagFile(newFile)
{
// var newFile = document.getElementById(newFileInput).innerHTML
document.getElementById("bagNameText").value = newFile
function playselectedBag() {
var selectedBagName = $('#bagList').val();
triggerMessageService('/aescape/bags/startPlayingRecording', selectedBagName)
}

View File

@@ -1,7 +1,7 @@
var bagList = Array();
function getBagList()
function getBagList(callback)
{
var service = new ROSLIB.Service({
ros : ros,
@@ -12,39 +12,43 @@ function getBagList()
var request = new ROSLIB.ServiceRequest({});
service.callService(request, function(result) {
// console.log('Result for service call on '
// + serviceName
// + ': '
// + result.message);
bagList = result.message;
callback(result.message);
});
}
function updateRecordingsList()
{
getBagList();
setTimeout(function(){
var $select = $('#bagList').selectize({
valueField: 'name',
labelField: 'name',
searchField: ['name'],
options: [],
create: false,
placeholder : "Select bag to play"
});
if(bagList != null){
var innerHTML = "";
for (var i = 0; i < bagList.length; i++ )
{
// innerHTML = innerHTML.concat(bagList[i]);
// innerHTML = innerHTML.concat("<br>");
function updateRecordingsList()
{
getBagList(function(results){
var selectize = $select[0].selectize;
selectize.clearOptions()
selectize.addOption(results.map(function(bagName){
return {name : bagName}
}));
})
};
innerHTML += "<button type=\"button\" class=\"list-group-item list-group-item-action\" onclick=\"updateSelectedBagFile('" + bagList[i] + "')\">" + bagList[i] + "</button>";
// innerHTML += "<button type=\"button\" class=\"list-group-item list-group-item-action\" onclick=\"triggerMessageService('/aescape/bags/startPlayingRecording', '" + bagList[i] + "')\">" + bagList[i] + "</button>";
}
document.getElementById("bagList").innerHTML = innerHTML;
}
document.getElementById("bagNameText").value = message.data
};
window.setInterval(function(){
updateRecordingsList()
}, 1000);
window.setInterval(function(){
updateRecordingsList();
}, 1000);