added timeout and safety button
This commit is contained in:
@@ -547,7 +547,11 @@
|
|||||||
<div class="panel-footer">
|
<div class="panel-footer">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
<button type="button" onclick="triggerService('/aescape/safety_activate')" class="safety-button danger btn">
|
||||||
|
Stop Now!
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -314,6 +314,7 @@ bagPlayingTopic.subscribe(function(message) {
|
|||||||
// Services
|
// Services
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
function triggerService(serviceName)
|
function triggerService(serviceName)
|
||||||
{
|
{
|
||||||
var service = new ROSLIB.Service({
|
var service = new ROSLIB.Service({
|
||||||
@@ -323,7 +324,8 @@ function triggerService(serviceName)
|
|||||||
});
|
});
|
||||||
|
|
||||||
var request = new ROSLIB.ServiceRequest({});
|
var request = new ROSLIB.ServiceRequest({});
|
||||||
|
var serviceCallTimeStamp = Date.now();
|
||||||
|
var serviceCallReturned = false;
|
||||||
service.callService(request, function(result) {
|
service.callService(request, function(result) {
|
||||||
console.log('Result for service call on '
|
console.log('Result for service call on '
|
||||||
+ serviceName
|
+ serviceName
|
||||||
@@ -357,8 +359,7 @@ function triggerService(serviceName)
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
console.log(result);
|
serviceCallReturned = true;
|
||||||
|
|
||||||
}, function(error){
|
}, function(error){
|
||||||
console.log("errored");
|
console.log("errored");
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
@@ -373,7 +374,30 @@ function triggerService(serviceName)
|
|||||||
delay: 1000
|
delay: 1000
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
serviceCallReturned = true;
|
||||||
});
|
});
|
||||||
|
var responseCheckInterval = setInterval(function() {
|
||||||
|
var timeElapsedSinceServiceCall = Date.now() - serviceCallTimeStamp; // milliseconds elapsed since start
|
||||||
|
if(serviceCallReturned) {
|
||||||
|
clearInterval(responseCheckInterval);
|
||||||
|
return;
|
||||||
|
} else if (timeElapsedSinceServiceCall > 3000){
|
||||||
|
$(document).ready(function(){
|
||||||
|
$.notify({
|
||||||
|
message: "Timeout on " + serviceName
|
||||||
|
}, {
|
||||||
|
"placement" : {
|
||||||
|
from: "bottom",
|
||||||
|
align: "right"
|
||||||
|
},
|
||||||
|
type: 'danger',
|
||||||
|
delay: 1000
|
||||||
|
});
|
||||||
|
});
|
||||||
|
clearInterval(responseCheckInterval);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}, 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -390,6 +414,9 @@ function triggerMessageService(serviceName, textInput)
|
|||||||
var request = new ROSLIB.ServiceRequest({
|
var request = new ROSLIB.ServiceRequest({
|
||||||
message : text
|
message : text
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var serviceCallTimeStamp = Date.now();
|
||||||
|
var serviceCallReturned = false;
|
||||||
|
|
||||||
service.callService(request, function(result) {
|
service.callService(request, function(result) {
|
||||||
console.log('Result for service call on '
|
console.log('Result for service call on '
|
||||||
@@ -424,7 +451,7 @@ function triggerMessageService(serviceName, textInput)
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
console.log(result);
|
serviceCallReturned = true;
|
||||||
|
|
||||||
}, function(error){
|
}, function(error){
|
||||||
console.log("errored");
|
console.log("errored");
|
||||||
@@ -440,7 +467,30 @@ function triggerMessageService(serviceName, textInput)
|
|||||||
delay: 1000
|
delay: 1000
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
serviceCallReturned = true;
|
||||||
});
|
});
|
||||||
|
var responseCheckInterval = setInterval(function() {
|
||||||
|
var timeElapsedSinceServiceCall = Date.now() - serviceCallTimeStamp; // milliseconds elapsed since start
|
||||||
|
if(serviceCallReturned) {
|
||||||
|
clearInterval(responseCheckInterval);
|
||||||
|
return;
|
||||||
|
} else if (timeElapsedSinceServiceCall > 3000){
|
||||||
|
$(document).ready(function(){
|
||||||
|
$.notify({
|
||||||
|
message: "Timeout on " + serviceName
|
||||||
|
}, {
|
||||||
|
"placement" : {
|
||||||
|
from: "bottom",
|
||||||
|
align: "right"
|
||||||
|
},
|
||||||
|
type: 'danger',
|
||||||
|
delay: 1000
|
||||||
|
});
|
||||||
|
});
|
||||||
|
clearInterval(responseCheckInterval);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}, 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -452,3 +502,16 @@ function playselectedBag() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
document.addEventListener("keydown", invokeSafetyController);
|
||||||
|
function invokeSafetyController(event)
|
||||||
|
{
|
||||||
|
var keyID = event.keyCode;
|
||||||
|
//8 == backspace, 46 == delete
|
||||||
|
if(keyID == 8 || keyID == 46) {
|
||||||
|
triggerService('/aescape/safety_activate')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -106,8 +106,20 @@ html, body {
|
|||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
.main-tabs-container {
|
.header-bar {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
|
padding: 0px 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-circle {
|
||||||
|
background: -webkit-gradient(linear, left top, left bottom, from(#bf9000), to(#7f6000));
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.main-tabs-container {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
}
|
}
|
||||||
@@ -119,7 +131,7 @@ html, body {
|
|||||||
#task-connection-message {
|
#task-connection-message {
|
||||||
position: relative;
|
position: relative;
|
||||||
margin: auto;
|
margin: auto;
|
||||||
left: -10%;
|
left: -8%;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
font-size: 19pt;
|
font-size: 19pt;
|
||||||
text-transform: capitalize;
|
text-transform: capitalize;
|
||||||
@@ -214,9 +226,6 @@ html, body {
|
|||||||
background: #020625;
|
background: #020625;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-pills {
|
|
||||||
margin-left: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-pills>li.active>a, .nav-pills>li.active>a:focus, .nav-pills>li.active>a:hover, .nav>li>a:focus, .nav>li>a:hover{
|
.nav-pills>li.active>a, .nav-pills>li.active>a:focus, .nav-pills>li.active>a:hover, .nav>li>a:focus, .nav>li>a:hover{
|
||||||
//color: #EDF0F4;
|
//color: #EDF0F4;
|
||||||
@@ -352,6 +361,12 @@ html, body {
|
|||||||
color: grey;
|
color: grey;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.safety-button {
|
||||||
|
width: 100%;
|
||||||
|
height: 200px;
|
||||||
|
font-size: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -19,6 +19,25 @@
|
|||||||
<script src="../include/js/roslib.js"></script>
|
<script src="../include/js/roslib.js"></script>
|
||||||
<script type="text/javascript" src="include/js/roslib.js"></script>
|
<script type="text/javascript" src="include/js/roslib.js"></script>
|
||||||
|
|
||||||
|
<script src="//cdnjs.cloudflare.com/ajax/libs/annyang/2.6.0/annyang.min.js"></script>
|
||||||
|
<script>
|
||||||
|
if (annyang) {
|
||||||
|
// Let's define our first command. First the text we expect, and then the function it should call
|
||||||
|
var commands = {
|
||||||
|
'stop': function() {
|
||||||
|
$('#task-connection-message').animate({bottom: '-100px'});
|
||||||
|
console.log("stop")
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Add our commands to annyang
|
||||||
|
annyang.addCommands(commands);
|
||||||
|
|
||||||
|
// Start listening. You can call this here, or attach this call to an event, button, etc.
|
||||||
|
annyang.start();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
$(function(){
|
$(function(){
|
||||||
$("#coordinatorContent").load("app/components/coordinator/coordinator.html");
|
$("#coordinatorContent").load("app/components/coordinator/coordinator.html");
|
||||||
@@ -67,31 +86,39 @@
|
|||||||
<i class="far fa-user"></i>
|
<i class="far fa-user"></i>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="header-bar">
|
||||||
|
<div class="row-md-3">
|
||||||
|
<ul id="tabs" class="nav nav-pills" data-tabs="tabs" >
|
||||||
|
<li>
|
||||||
|
<a href="#Connect" data-toggle="tab">
|
||||||
|
Connect
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="active">
|
||||||
|
<a href="#Coordinator" data-toggle="tab">
|
||||||
|
Coordinator
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a target="_blank" href="vision/vision.html">
|
||||||
|
Vision
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="task-connection-message">
|
||||||
|
Disconnected
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<!--
|
||||||
|
<i class="fas fa-2x fa-circle" data-toggle="modal" data-target="#exampleModal"></i>
|
||||||
|
-->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
<div class="main-tabs-container">
|
<div class="main-tabs-container">
|
||||||
<div class="row-md-3">
|
|
||||||
<ul id="tabs" class="nav nav-pills" data-tabs="tabs" >
|
|
||||||
<li>
|
|
||||||
<a href="#Connect" data-toggle="tab">
|
|
||||||
Connect
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="active">
|
|
||||||
<a href="#Coordinator" data-toggle="tab">
|
|
||||||
Coordinator
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a target="_blank" href="vision/vision.html">
|
|
||||||
Vision
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="task-connection-message">
|
|
||||||
Disconnected
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="my-tab-content" class="tab-content">
|
<div id="my-tab-content" class="tab-content">
|
||||||
<div class="tab-pane" id="Connect">
|
<div class="tab-pane" id="Connect">
|
||||||
<div id="connectorContent"></div>
|
<div id="connectorContent"></div>
|
||||||
|
|||||||
Reference in New Issue
Block a user