1 Commits
layout ... ati

Author SHA1 Message Date
Rohit
804abcb49f changed calibrate robotiq to ati 2019-07-10 14:06:09 -04:00
8 changed files with 53 additions and 1236 deletions

View File

@@ -1,6 +1,4 @@
<div class="status-bar" style="width:100%;height:30px;background:red;">
</div>
<div id="coordinator">
<div class="col-md-6">
<div class="hand-panel hand-panel-left panel panel-default">
@@ -129,7 +127,7 @@
<div class="status-list">
<div class="commanded">
<div class="progress">
<!-- <div class="progress-bar-label">Commanded</div> -->
<div class="progress-bar-label">Commanded</div>
<div class="progress-bar bg-success" role="progressbar" id="frankaForceCommandedLeft" aria-valuenow="25" aria-valuemin="0" aria-valuemax="200">N/A</div>
</div>
<ul class="list-group list-group-horizontal text-center">
@@ -146,7 +144,7 @@
</div>
<div class="observed">
<div class="progress">
<!-- <div class="progress-bar-label">Observed</div> -->
<div class="progress-bar-label">Observed</div>
<div class="progress-bar bg-success" role="progressbar" id="frankaForceObservedLeft" aria-valuenow="25" aria-valuemin="0" aria-valuemax="200">
<span>N/A</span>
<div>
@@ -198,7 +196,7 @@
</div>
<div class="action-button panel-footer">
<button id="calibrateButton" type="button" onclick="triggerService('/left/aescape/hardware/calibrateRobotiq')" class="btn">
<button id="calibrateButton" type="button" onclick="triggerService('/left/aescape/hardware/calibrateATI')" class="btn">
Calibrate
</button>
</div>
@@ -353,16 +351,13 @@
</div>
<div class="panel-body text-center">
<div class="button-area">
<button id="executionLoadButton" type="button" onclick="displayLoadingOptions()" class="btn btn-primary col-md-3">
<button id="executionLoadButton" type="button" onclick="displayLoadingOptions()" class="btn btn-primary col-md-4">
Load Recording
</button>
<button id="executionLoadButton" type="button" onclick="triggerService('/aescape/massageReady')" class="btn btn-primary col-md-3">
Complete Body Scaling
</button>
<button id="executionStartButton" type="button" onclick="playLoadedRecording()" class="btn btn-primary col-md-3">
<button id="executionStartButton" type="button" onclick="playLoadedRecording()" class="btn btn-primary col-md-4">
Play Loaded Recording
</button>
<button id="executionStopButton" type="button" onclick="stopPlayingRecording()" class="btn btn-primary col-md-3">
<button id="executionStopButton" type="button" onclick="stopPlayingRecording()" class="btn btn-primary col-md-4">
Stop Playing Recording
</button>
</div>
@@ -550,7 +545,7 @@
<div class="status-list">
<div class="commanded">
<div class="progress">
<!-- <div class="progress-bar-label">Commanded</div> -->
<div class="progress-bar-label">Commanded</div>
<div class="progress-bar bg-success" role="progressbar" id="frankaForceCommandedRight" aria-valuenow="25" aria-valuemin="0" aria-valuemax="200">N/A</div>
</div>
<ul class="list-group list-group-horizontal text-center">
@@ -567,7 +562,7 @@
</div>
<div class="observed">
<div class="progress">
<!-- <div class="progress-bar-label">Observed</div> -->
<div class="progress-bar-label">Observed</div>
<div class="progress-bar bg-success" role="progressbar" id="frankaForceObservedRight" aria-valuenow="25" aria-valuemin="0" aria-valuemax="200">
<span>N/A</span>
<div>

View File

@@ -372,11 +372,9 @@ var playbackStatus = new ROSLIB.Topic({
playbackStatus.subscribe(function(message) {
message = JSON.parse(message.data);
console.log("message");
console.log(message);
status = message.status;
bagName = message.bag_file;
if (true) {
if (status != lastPlaybackStatus) {
if (status === "playing") {
@@ -390,6 +388,7 @@ playbackStatus.subscribe(function(message) {
triggerService('/right/aescape/mode/activateReadyController');
displayMessage(true, "Loaded the selected bag file!")
}
lastPlaybackStatus = status;
}
});
@@ -578,8 +577,7 @@ function startTeachRecoding() {
async.waterfall([
function(callback) {
triggerService('/left/aescape/hardware/calibrateRobotiq', false, function(err, res){
//callback(err, res);
callback(null, null);
callback(err, res);
});
},
function(response, callback) {

View File

@@ -89,9 +89,11 @@ function displayTaggingOptions(mode) {
fileNameSelectize.clearOptions()
// /aescape/bags/getBagList
getBagList(function(results){
fileNameSelectize.addOption(results)
fileNameSelectize.addOption(results.map(function(element){
return {name : element.filename}
}));
if(results[0]) {
fileNameSelectize.setValue(results[0]._id);
fileNameSelectize.setValue(results[0].filename);
}
})
@@ -139,7 +141,7 @@ function hideTaggingOptions(mode, updateValues=false) {
}
var modeTag = '#' + mode + 'Tags';
var bagLabelSelector = '#' + mode + 'BagFileName';
var fileNameSelector = '#' + mode + 'BagFileName';
var categorySelector = '#' + mode + 'BagCategory';
var tagSelector = '#' + mode + 'BagTags';
var errorSelector = '#' + mode + 'TagError';
@@ -147,23 +149,24 @@ function hideTaggingOptions(mode, updateValues=false) {
if(updateValues) {
var bagLabel = $(bagLabelSelector).val();
var filename = $(fileNameSelector).val();
var category = $(categorySelector).val();
var tags = $(tagSelector).val() || [];
var tags = $(tagSelector).val();
getBagList(function(results){
if(!(results && results[0] && results[0]._id)) {
if(!(results && results[0] && results[0].filename)) {
console.log(results);
displayMessage(false, "Could not retrieve the last recorded bag :(");
return;
}
bag_id = results[0]._id;
updateBagMetadata(mode, bag_id, bagLabel, category, tags, function(updateError) {
bag_name = results[0].filename;
updateBagMetadata(mode, bag_name, filename, category, tags, function(updateError) {
if(updateError) {
displayMessage(flase, updateError);
} else {
displayMessage("Bag data saved successfully!");
//clear selectize
$(bagLabelSelector).selectize()[0].selectize.destroy();
$(fileNameSelector).selectize()[0].selectize.destroy();
$(categorySelector).selectize()[0].selectize.destroy();
$(tagSelector).selectize()[0].selectize.destroy();
}
@@ -175,18 +178,18 @@ function hideTaggingOptions(mode, updateValues=false) {
document.querySelector(modeTag).classList.remove('open');
}
function updateBagMetadata(mode, bag_id, bag_label, category, tags, callback) {
function updateBagMetadata(mode, bag_name, modified_bag_name, category, tags, callback) {
if(!mode) {
return callback();
}
if(!bag_id) {
if(!bag_name) {
return callback();
}
var toSend = {
mode : mode,
bag_id : bag_id,
bag_label : bag_label,
bag_name : bag_name,
modified_bag_name : modified_bag_name,
category : category,
tags : tags
}
@@ -211,33 +214,32 @@ function displayLoadingOptions() {
//Putting this in a timeout to wait for the animation to finish completing
setTimeout(function(){
document.querySelector(selector).style.overflow = "visible";
}, 420) //This is not a Hitchhiker's reference. This is not a 420 reference. This value has been computed to match the speed of the larger drop down.
}, 420)
var $select = $('#loadBagList').selectize({
valueField: '_id',
labelField: 'name',
searchField: ['name', 'category', 'tags'],
valueField: 'filename',
labelField: 'filename',
searchField: ['filename', 'category', 'tags'],
options: [],
create: false,
placeholder : "Select bag to play",
render : {
item: function(item, escape) {
name = item.name;
filename = item.filename;
category = item.category || 'None';
return '<div class="bag-select-element">' +
'<div class="bag-select-element">' +
'<span class="filename">' + escape(name) + '</span>' +
'<span class="filename">' + escape(filename) + '</span>' +
'<span class="category">' + ' (' + escape(category) + ') ' + '</span>' +
'</div>' +
'</div>';
},
option: function(item, escape) {
name = item.name;
filename = item.filename;
category = item.category || 'None';
return '<div class="bag-select-element bag-option">' +
'<div class="primary">' +
'<div class="filename">' + escape(name) + '</div>' +
'<div class="filename">' + escape(filename) + '</div>' +
'<div class="category">' + escape(category) + '</div>' +
'</div>' +
'<div class="secondary">' +
@@ -246,7 +248,7 @@ function displayLoadingOptions() {
return '<span class="tag label label-info">' + escape(tag) + '</span>'
}).join(' ') +
'</div>' +
'<div class="timestamp">' + escape(item.created_at) + '</div>' +
'<div class="timestamp">' + escape('27 Jun 10:10am') + '</div>' +
'</div>' +
'</div>';
}
@@ -261,7 +263,6 @@ function displayLoadingOptions() {
var selectize = $select[0].selectize;
selectize.clearOptions();
//results = [{filename : 'testfile', category: 'testcategory', tags : ['testtag1', 'testtag2', 'testtag3']}, {filename : 'testfile2', category: 'testcategory2', tags : ['testtag21', 'testtag22', 'testtag23']}]
console.log(results);
selectize.addOption(results);
if(results[0]) {
selectize.setValue(results[0].filename);
@@ -292,10 +293,12 @@ function hideLoadingOptions(loadBag) {
singleArmMode = false
}
console.log("singleArmMode");
console.log(singleArmMode)
if(loadBag) {
var selectedBagId = $('#loadBagList').val();
var selectedBagName = $('#loadBagList').val();
disableUI();
loadSelectedBagFile(selectedBagId, singleArmMode, function(updateError){
loadSelectedBagFile(selectedBagName, singleArmMode, function(updateError){
// if(updateError) {
// displayMessage(false, "Something went wrong in the backend while fetching the bag files :(")
// } else {
@@ -311,9 +314,9 @@ function hideLoadingOptions(loadBag) {
function loadSelectedBagFile(selectedBagId, singleArmMode, callback) {
function loadSelectedBagFile(selectedBagName, singleArmMode, callback) {
var toSend = {
bag_id : selectedBagId,
bag_name : selectedBagName,
single_arm : singleArmMode
}

View File

@@ -1,636 +0,0 @@
<div id="coordinator">
<div class="col-md-6">
<div class="hand-panel hand-panel-left panel panel-default">
<div class="panel-heading">
<i class="far fa-2x fa-hand-point-left"></i>
Left Arm
</div>
<div class="panel-body">
<div class="status-bar">
<div class="status-container">
<div class="safety-monitor panel panel-default panel-horizontal">
<div class="panel-heading">
Safety Monitor
</div>
<div class="panel-body text-center">
<div class="status-list">
<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" class="disabled"/>
<div class="state p-success-o">
<label>Running</label>
</div>
</div>
</li>
<li id="left_safetyStopped" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Stopped</label>
</div>
</div>
</li>
</ul>
</div>
</div>
<div class="action-button panel-footer">
<button type="button" onclick="triggerService('/left/aescape/mode/activateSafetyController')" class="btn">
Activate
</button>
</div>
</div>
</div>
<div class="status-container">
<div class="franka panel panel-default panel-horizontal">
<div class="panel-heading">
Franka Arm
</div>
<div class="panel-body text-center">
<div class="status-list">
<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" class="disabled"/>
<div class="state p-success-o">
<label>Other</label>
</div>
</div>
</li>
<li id="left_frankaModeIdle" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Idle</label>
</div>
</div>
</li>
<li id="left_frankaModeMove" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Move</label>
</div>
</div>
</li>
<li id="left_frankaModeGuiding" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Guiding</label>
</div>
</div>
</li>
<li id="left_frankaModeReflex" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Reflex</label>
</div>
</div>
</li>
<li id="left_frankaModeUserStopped" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>User Stopped</label>
</div>
</div>
</li>
<li id="left_frankaModeErrorRecovery" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Automatic Error Recovery</label>
</div>
</div>
</li>
</ul>
</div>
</div>
<div class="action-button panel-footer">
<button id="left_fixFrankaButton" type="button" onclick="triggerService('/left/aescape/hardware/resetFrankaError')" class="btn">
Fix Errors
</button>
</div>
</div>
</div>
<div class="status-container">
<div class="franka-force force-bar panel panel-default panel-horizontal">
<div class="panel-heading">
Franka Force
</div>
<div class="panel-body text-center">
<div class="status-list">
<div class="commanded">
<div class="progress">
<!-- <div class="progress-bar-label">Commanded</div> -->
<div class="progress-bar bg-success" role="progressbar" id="frankaForceCommandedLeft" aria-valuenow="25" aria-valuemin="0" aria-valuemax="200">N/A</div>
</div>
<ul class="list-group list-group-horizontal text-center">
<li class="list-group-item force-value">
<h4>X: <span id="frankaForceLeftCommandedX">0.0</span></h4>
</li>
<li class="list-group-item force-value">
<h4>Y: <span id="frankaForceLeftCommandedY">0.0</span></h4>
</li>
<li class="list-group-item force-value">
<h4>Z: <span id="frankaForceLeftCommandedZ">0.0</span></h4>
</li>
</ul>
</div>
<div class="observed">
<div class="progress">
<!-- <div class="progress-bar-label">Observed</div> -->
<div class="progress-bar bg-success" role="progressbar" id="frankaForceObservedLeft" aria-valuenow="25" aria-valuemin="0" aria-valuemax="200">
<span>N/A</span>
<div>
<span>Observed</span>
</div>
</div>
</div>
<ul class="list-group list-group-horizontal text-center">
<li class="list-group-item force-value">
<h4>X: <span id="frankaForceLeftObservedX">0.0</span></h4>
</li>
<li class="list-group-item force-value">
<h4>Y: <span id="frankaForceLeftObservedY">0.0</span></h4>
</li>
<li class="list-group-item force-value">
<h4>Z: <span id="frankaForceLeftObservedZ">0.0</span></h4>
</li>
</ul>
</div>
</div>
</div>
<div class="action-button panel-footer">
</div>
</div>
</div>
</div>
<div class="control-container col-md-6">
<div class="control-card panel panel-default">
<div class="panel-heading">
EEF Configuration
<i class="fas fa-info-circle" tabindex="0" data-toggle="popover" data-trigger="focus" data-content="This selects the end-effector attached to the left arm."></i>
</div>
<div class="panel-body text-center">
<div class="button-area">
<button type="button" onclick="setEEFConfig('left', 'teach')" active class="btn btn-primary col-md-6">
Recording EEF
</button>
<button type="button" onclick="setEEFConfig('left', 'play')" class="btn btn-primary col-md-6">
Massage EEF
</button>
</div>
</div>
<div class="action-area panel-footer">
<div class="message">
<!--You must be in "Stopped Mode" to change the EEF configuration! -->
</div>
</div>
</div>
</div>
<div class="control-container col-md-6">
<div id="left-operation-mode" class="control-card-six control-card panel panel-default">
<div class="panel-heading">
Operation Mode
<i class="fas fa-info-circle" tabindex="0" data-toggle="popover" data-trigger="focus" data-content="This selects the operation mode of the left arm."></i>
</div>
<div class="panel-body text-center">
<div class="button-area">
<button id="left_teachingModeButton" type="button" onclick="triggerService('/left/aescape/mode/activateTeachingController')" class="btn btn-primary col-md-4">
Teaching
</button>
<button id="left_executionModeButton" type="button" onclick="triggerService('/left/aescape/mode/activateExecutionController')" class="btn btn-primary col-md-4">
Massage
</button>
<button id="left_readyModeButton" type="button" onclick="triggerService('/left/aescape/mode/activateReadyController')" class="btn btn-primary col-md-4">
Ready
</button>
<button id="left_standbyModeButton" type="button" onclick="triggerService('/left/aescape/mode/activateStandbyController')" class="btn btn-primary col-md-4">
Standby
</button>
<button id="left_stoppedModeButton" type="button" onclick="triggerService('/left/aescape/mode/stopControllers')" class="btn btn-primary col-md-4">
Stopped
</button>
</div>
<!--
<div class="col-md-6">
Safety Monitor Status:
<div class="row-md-3">
<h4><span id="left_safetyRunning" class="label label-default">Running</span></h4>
</div>
<div class="row-md-3">
<h4><span id="left_safetyStopped" class="label label-default">Stopped</span></h4>
</div>
<div class="row-md-3">
<button type="button" onclick="triggerService('/left/aescape/mode/activateSafetyController')" class="btn btn-sm">
Activate Safety Monitor
</button>
</div>
</div>
-->
</div>
<div class="action-area panel-footer">
<div class="message">
</div>
</div>
</div>
</div>
<!--
<div class="control-container col-md-6">
<div class="control-card panel panel-default">
<div class="panel-heading">
Robotiq
<i class="fas fa-info-circle"></i>
</div>
<div class="panel-body text-center">
<div class="progress" id="robotiqForce">
<div class="progress-bar bg-success" role="progressbar" id="robotiqForceBar" aria-valuenow="25" aria-valuemin="0" aria-valuemax="200">N/A</div>
</div>
<div class="button-area">
Current Robotiq Values:
<h4>X: <span id="robotiqX" class="label label-default">0.0</span></h4>
<h4>Y: <span id="robotiqY" class="label label-default">0.0</span></h4>
<h4>Z: <span id="robotiqZ" class="label label-default">0.0</span></h4>
</div>
</div>
<div class="action-area panel-footer">
<div class="button">
<button id="calibrateButton" type="button" onclick="triggerService('/left/aescape/hardware/calibrateRobotiq')" class="btn btn-primary">
Calibrate Robotiq
</button>
</div>
</div>
</div>
</div>
-->
<div class="control-container play-mode-operations col-md-10">
<div class="control-card panel panel-default execution-control">
<div class="panel-heading">
Play Mode Operations
<i class="fas fa-info-circle" tabindex="0" data-toggle="popover" data-trigger="focus" data-content="This helps selecting and playback of recorded massages!"></i>
</div>
<div class="panel-body text-center">
<div class="button-area">
<button id="executionLoadButton" type="button" onclick="displayLoadingOptions()" class="btn btn-primary col-md-3">
Load Recording
</button>
<button id="executionLoadButton" type="button" onclick="triggerService('/aescape/massageReady')" class="btn btn-primary col-md-3">
Complete Body Scaling
</button>
<button id="executionStartButton" type="button" onclick="playLoadedRecording()" class="btn btn-primary col-md-3">
Play Loaded Recording
</button>
<button id="executionStopButton" type="button" onclick="stopPlayingRecording()" class="btn btn-primary col-md-3">
Stop Playing Recording
</button>
</div>
<div>
<!-- <div class="row-md-4">
<<div class="col-md-3"> -->
<!-- Bagfile name must not start with "/"
<button class="btn btn-primary" type="button" onclick="updateRecordingsList()">
Refresh List
</button>
</div> -->
</div>
</div>
<div class="action-area panel-footer">
<div class="message" id="ExecutionStatusLabel">
<!-- TO DO: Show errors in bag manager -->
</div>
<!-- TO DO: Bagfile name must not start with "/" -->
<div class="slider-options tagging-options" id="playTags">
<div class="col-md-10">
<!--full with naming box search:no new:yes-->
<select id="playBagFileName" placeholder="Filename"></select>
<!--full width category box search:yes new:yes-->
<select id="playBagCategory" placeholder="Category"></select>
<!--full width tags box search:yes new:yes-->
<select id="playBagTags" placeholder="Tags"></select>
</div>
<div class="col-md-2">
<button class="btn btn-primary" onclick="hideTaggingOptions('play', true)">Tag</button>
<button class="btn btn-primary" onclick="hideTaggingOptions('play', false)">Cancel</button>
</div>
</div>
<div class="slider-options loading-options" id="loadBags">
<div class="col-md-10">
<div class="dropdown">
<div>
<select id="loadBagList" placeholder="Select bag to play"></select>
<select id="armMode"></select>
</div>
<!-- <i class="fas fa-sync-alt" onclick="updateRecordingsList()"></i> -->
</div>
</div>
<div class="col-md-2">
<!-- <i class="fas fa-check-circle" onclick="hideLoadingOptions(true)"></i> -->
<button class="btn btn-primary" onclick="hideLoadingOptions(true)">Load</button>
<button class="btn btn-primary" onclick="hideLoadingOptions(false)">Cancel</button>
</div>
</div>
<div id="playTagError" class="col-md-10 error"></div>
<div class="clearfix"></div>
</div>
</div>
</div>
</div>
<div class="panel-footer">
</div>
</div>
</div>
<div class="col-md-6">
<div class="hand-panel hand-panel-right panel panel-default">
<div class="panel-heading">
Right Arm
<i class="far fa-2x fa-hand-point-right"></i>
</div>
<div class="panel-body">
<div class="status-bar">
<div class="status-container">
<div class="safety-monitor panel panel-default panel-horizontal">
<div class="panel-heading">
Safety Monitor
</div>
<div class="panel-body text-center">
<div class="status-list">
<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" class="disabled"/>
<div class="state p-success-o">
<label>Running</label>
</div>
</div>
</li>
<li id="right_safetyStopped" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Stopped</label>
</div>
</div>
</li>
</ul>
</div>
</div>
<div class="action-button panel-footer">
<button type="button" onclick="triggerService('/left/aescape/mode/activateSafetyController')" class="btn">
Activate
</button>
</div>
</div>
</div>
<div class="status-container">
<div class="franka panel panel-default panel-horizontal">
<div class="panel-heading">
Franka Arm
</div>
<div class="panel-body text-center">
<div class="status-list">
<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" class="disabled"/>
<div class="state p-success-o">
<label>Other</label>
</div>
</div>
</li>
<li id="right_frankaModeIdle" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Idle</label>
</div>
</div>
</li>
<li id="right_frankaModeMove" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Move</label>
</div>
</div>
</li>
<li id="right_frankaModeGuiding" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Guiding</label>
</div>
</div>
</li>
<li id="right_frankaModeReflex" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Reflex</label>
</div>
</div>
</li>
<li id="right_frankaModeUserStopped" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>User Stopped</label>
</div>
</div>
</li>
<li id="right_frankaModeErrorRecovery" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Automatic Error Recovery</label>
</div>
</div>
</li>
</ul>
</div>
</div>
<div class="action-button panel-footer">
<button id="right_fixFrankaButton" type="button" onclick="triggerService('/right/aescape/hardware/resetFrankaError')" class="btn">
Fix Errors
</button>
</div>
</div>
</div>
<div class="status-container">
<div class="franka-force force-bar panel panel-default panel-horizontal">
<div class="panel-heading">
Franka Force
</div>
<div class="panel-body text-center">
<div class="status-list">
<div class="commanded">
<div class="progress">
<!-- <div class="progress-bar-label">Commanded</div> -->
<div class="progress-bar bg-success" role="progressbar" id="frankaForceCommandedRight" aria-valuenow="25" aria-valuemin="0" aria-valuemax="200">N/A</div>
</div>
<ul class="list-group list-group-horizontal text-center">
<li class="list-group-item force-value">
<h4>X: <span id="frankaForceRightCommandedX">0.0</span></h4>
</li>
<li class="list-group-item force-value">
<h4>Y: <span id="frankaForceRightCommandedY">0.0</span></h4>
</li>
<li class="list-group-item force-value">
<h4>Z: <span id="frankaForceRightCommandedZ">0.0</span></h4>
</li>
</ul>
</div>
<div class="observed">
<div class="progress">
<!-- <div class="progress-bar-label">Observed</div> -->
<div class="progress-bar bg-success" role="progressbar" id="frankaForceObservedRight" aria-valuenow="25" aria-valuemin="0" aria-valuemax="200">
<span>N/A</span>
<div>
<span>Observed</span>
</div>
</div>
</div>
<ul class="list-group list-group-horizontal text-center">
<li class="list-group-item force-value">
<h4>X: <span id="frankaForceRightObservedX">0.0</span></h4>
</li>
<li class="list-group-item force-value">
<h4>Y: <span id="frankaForceRightObservedY">0.0</span></h4>
</li>
<li class="list-group-item force-value">
<h4>Z: <span id="frankaForceRightObservedZ">0.0</span></h4>
</li>
</ul>
</div>
</div>
</div>
<div class="action-button panel-footer">
</div>
</div>
</div>
</div>
<div class="control-container col-md-6">
<div class="control-card panel panel-default">
<div class="panel-heading">
EEF Configuration
<i class="fas fa-info-circle" tabindex="0" data-toggle="popover" data-trigger="focus" data-content="This selects the end-effector attached to the right arm."></i>
</div>
<div class="panel-body text-center">
<div class="button-area">
<button type="button" onclick="setEEFConfig('right', 'teach')" class="btn btn-primary col-md-6">
Recording EEF
</button>
<button type="button" onclick="setEEFConfig('right', 'play')" class="btn btn-primary col-md-6">
Massage EEF
</button>
</div>
</div>
<div class="action-area panel-footer">
<div class="message">
<!--You must be in "Stopped Mode" to change the EEF configuration! -->
</div>
</div>
</div>
</div>
<div class="control-container col-md-6">
<div id="right-operation-mode" class="control-card-six control-card panel panel-default">
<div class="panel-heading">
Operation Mode
<i class="fas fa-info-circle" tabindex="0" data-toggle="popover" data-trigger="focus" data-placement="bottom" data-content="This selects the operation mode of the right arm."></i>
</div>
<div class="panel-body text-center">
<div class="button-area">
<button id="right_teachingModeButton" type="button" onclick="triggerService('/right/aescape/mode/activateTeachingController')" class="btn btn-primary col-md-4">
Teaching
</button>
<button id="right_executionModeButton" type="button" onclick="triggerService('/right/aescape/mode/activateExecutionController')" class="btn btn-primary col-md-4">
Massage
</button>
<button id="right_readyModeButton" type="button" onclick="triggerService('/right/aescape/mode/activateReadyController')" class="btn btn-primary col-md-4">
Ready
</button>
<button id="right_standbyModeButton" type="button" onclick="triggerService('/right/aescape/mode/activateStandbyController')" class="btn btn-primary col-md-4">
Standby
</button>
<button id="right_stoppedModeButton" type="button" onclick="triggerService('/right/aescape/mode/stopControllers')" class="btn btn-primary col-md-4">
Stopped
</button>
</div>
</div>
<div class="action-area panel-footer">
<div class="message">
</div>
</div>
</div>
</div>
<!-- <div class="panel panel-default">
<div class="panel-heading">
Robotiq
</div>
<div class="panel-body text-center">
<div class="col-md-4">
Current Robotiq Values:
<div class="row-md-3">
<h4>X: <span id="robotiqX" class="label label-default">0.0</span></h4>
</div>
<div class="row-md-3">
<h4>Y: <span id="robotiqY" class="label label-default">0.0</span></h4>
</div>
<div class="row-md-3">
<h4>Z: <span id="robotiqZ" class="label label-default">0.0</span></h4>
</div>
</div>
<div class="row-md-3">
<button id="calibrateButton" type="button" onclick="triggerService('/right/aescape/hardware/calibrateRobotiq')" class="btn btn-primary">
Calibrate Robotiq
</button>
</div>
</div>
</div> -->
</div>
<div class="panel-footer">
</div>
</div>
<button type="button" onclick="triggerService('/aescape/safety_activate')" class="safety-button danger btn">
Stop Now!
</button>
</div>
</div>
</div>
<!-- <div class="panel panel-default">
<div class="panel-heading">
Execution Recording Operations
</div>
<div class="panel-body text-center">
<button id="executionStartButton" type="button" onclick="triggerService('/startExecutionRecording')" class="btn btn-primary">
Start Recording Execution
</button>
<button id="executionRecordingStopButton" type="button" onclick="triggerService('/stopExecutionRecording')" class="btn btn-primary">
Stop Recording Execution
</button>
</div>
</div> -->

View File

@@ -1,529 +0,0 @@
<div id="coordinator">
<div class="col-md-6">
<div class="hand-panel hand-panel-left panel panel-default">
<div class="panel-heading">
<i class="far fa-2x fa-hand-point-left"></i>
Left Arm
</div>
<div class="panel-body">
<div class="status-bar">
<div class="status-container">
<div class="safety-monitor panel panel-default panel-horizontal">
<div class="panel-heading">
Safety Monitor
</div>
<div class="panel-body text-center">
<div class="status-list">
<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" class="disabled"/>
<div class="state p-success-o">
<label>Running</label>
</div>
</div>
</li>
<li id="left_safetyStopped" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Stopped</label>
</div>
</div>
</li>
</ul>
</div>
</div>
<div class="action-button panel-footer">
<button type="button" onclick="triggerService('/left/aescape/mode/activateSafetyController')" class="btn">
Activate
</button>
</div>
</div>
</div>
<div class="status-container">
<div class="franka panel panel-default panel-horizontal">
<div class="panel-heading">
Franka Arm
</div>
<div class="panel-body text-center">
<div class="status-list">
<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" class="disabled"/>
<div class="state p-success-o">
<label>Other</label>
</div>
</div>
</li>
<li id="left_frankaModeIdle" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Idle</label>
</div>
</div>
</li>
<li id="left_frankaModeMove" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Move</label>
</div>
</div>
</li>
<li id="left_frankaModeGuiding" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Guiding</label>
</div>
</div>
</li>
<li id="left_frankaModeReflex" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Reflex</label>
</div>
</div>
</li>
<li id="left_frankaModeUserStopped" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>User Stopped</label>
</div>
</div>
</li>
<li id="left_frankaModeErrorRecovery" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Automatic Error Recovery</label>
</div>
</div>
</li>
</ul>
</div>
</div>
<div class="action-button panel-footer">
<button id="left_fixFrankaButton" type="button" onclick="triggerService('/left/aescape/hardware/resetFrankaError')" class="btn">
Fix Errors
</button>
</div>
</div>
</div>
<div class="status-container">
<div class="robotiq force-bar panel panel-default panel-horizontal">
<div class="panel-heading">
Robotiq
</div>
<div class="panel-body text-center">
<div class="status-list">
<div class="progress" id="robotiqForce">
<div class="progress-bar bg-success" role="progressbar" id="robotiqForceBar" aria-valuenow="25" aria-valuemin="0" aria-valuemax="200">N/A</div>
</div>
<ul class="list-group list-group-horizontal text-center">
<li class="list-group-item force-value">
<h4>X: <span id="robotiqX">0.0</span></h4>
</li>
<li class="list-group-item force-value">
<h4>Y: <span id="robotiqY">0.0</span></h4>
</li>
<li class="list-group-item force-value">
<h4>Z: <span id="robotiqZ">0.0</span></h4>
</li>
</ul>
</div>
</div>
<div class="action-button panel-footer">
<button id="calibrateButton" type="button" onclick="triggerService('/left/aescape/hardware/calibrateRobotiq')" class="btn">
Calibrate
</button>
</div>
</div>
</div>
</div>
<div class="control-container col-md-6">
<div class="control-card panel panel-default">
<div class="panel-heading">
EEF Configuration
<i class="fas fa-info-circle" tabindex="0" data-toggle="popover" data-trigger="focus" data-content="This selects the end-effector attached to the left arm."></i>
</div>
<div class="panel-body text-center">
<div class="button-area">
<button type="button" onclick="setEEFConfig('left', 'teach')" active class="btn btn-primary col-md-6">
Recording EEF
</button>
<button type="button" onclick="setEEFConfig('left', 'play')" class="btn btn-primary col-md-6">
Massage EEF
</button>
</div>
</div>
<div class="action-area panel-footer">
<div class="message">
<!--You must be in "Stopped Mode" to change the EEF configuration! -->
</div>
</div>
</div>
</div>
<div class="control-container col-md-6">
<div id="left-operation-mode" class="control-card-six control-card panel panel-default">
<div class="panel-heading">
Operation Mode
<i class="fas fa-info-circle" tabindex="0" data-toggle="popover" data-trigger="focus" data-content="This selects the operation mode of the left arm."></i>
</div>
<div class="panel-body text-center">
<div class="button-area">
<button id="left_teachingModeButton" type="button" onclick="triggerService('/left/aescape/mode/activateTeachingController')" class="btn btn-primary col-md-4">
Teaching
</button>
<button id="left_executionModeButton" type="button" onclick="triggerService('/left/aescape/mode/activateExecutionController')" class="btn btn-primary col-md-4">
Massage
</button>
<button id="left_readyModeButton" type="button" onclick="triggerService('/left/aescape/mode/activateReadyController')" class="btn btn-primary col-md-4">
Ready
</button>
<button id="left_standbyModeButton" type="button" onclick="triggerService('/left/aescape/mode/activateStandbyController')" class="btn btn-primary col-md-4">
Standby
</button>
<button id="left_stoppedModeButton" type="button" onclick="triggerService('/left/aescape/mode/stopControllers')" class="btn btn-primary col-md-4">
Stopped
</button>
</div>
<!--
<div class="col-md-6">
Safety Monitor Status:
<div class="row-md-3">
<h4><span id="left_safetyRunning" class="label label-default">Running</span></h4>
</div>
<div class="row-md-3">
<h4><span id="left_safetyStopped" class="label label-default">Stopped</span></h4>
</div>
<div class="row-md-3">
<button type="button" onclick="triggerService('/left/aescape/mode/activateSafetyController')" class="btn btn-sm">
Activate Safety Monitor
</button>
</div>
</div>
-->
</div>
<div class="action-area panel-footer">
<div class="message">
</div>
</div>
</div>
</div>
<!--
<div class="control-container col-md-6">
<div class="control-card panel panel-default">
<div class="panel-heading">
Robotiq
<i class="fas fa-info-circle"></i>
</div>
<div class="panel-body text-center">
<div class="progress" id="robotiqForce">
<div class="progress-bar bg-success" role="progressbar" id="robotiqForceBar" aria-valuenow="25" aria-valuemin="0" aria-valuemax="200">N/A</div>
</div>
<div class="button-area">
Current Robotiq Values:
<h4>X: <span id="robotiqX" class="label label-default">0.0</span></h4>
<h4>Y: <span id="robotiqY" class="label label-default">0.0</span></h4>
<h4>Z: <span id="robotiqZ" class="label label-default">0.0</span></h4>
</div>
</div>
<div class="action-area panel-footer">
<div class="button">
<button id="calibrateButton" type="button" onclick="triggerService('/left/aescape/hardware/calibrateRobotiq')" class="btn btn-primary">
Calibrate Robotiq
</button>
</div>
</div>
</div>
</div>
-->
<div class="control-container teaching-mode-operations col-md-7">
<div class="control-card panel panel-default">
<div class="panel-heading">
Teaching Mode Operations
<i class="fas fa-info-circle" tabindex="0" data-toggle="popover" data-trigger="focus" data-content="This helps recoding a new massage!"></i>
</div>
<div class="panel-body text-center">
<div class="button-area">
<button id="recordingStartButton" type="button" onclick="startTeachRecoding()" class="btn btn-primary col-md-6">
Start Recording
</button>
<button id="recordingStopButton" type="button" onclick="stopTeachRecording()" class="btn btn-primary col-md-6">
Stop Recording
</button>
</div>
</div>
<div class="action-area panel-footer">
<div id="RecordingStatusLabel" class="message">
<!-- TO DO: Show errors in bag manager -->
</div>
<div class="slider-options tagging-options" id="teachTags">
<div class="col-md-10">
<!--full with naming box search:no new:yes-->
<select id="teachBagFileName" placeholder="Filename"></select>
<!--full width category box search:yes new:yes-->
<select id="teachBagCategory" placeholder="Category"></select>
<!--full width tags box search:yes new:yes-->
<select id="teachBagTags" placeholder="Tags"></select>
</div>
<div class="col-md-2">
<button class="btn btn-primary" onclick="hideTaggingOptions('teach', true)">Tag</button>
<button class="btn btn-primary" onclick="hideTaggingOptions('teach', false)">Cancel</button>
</div>
</div>
<div id="teachTagError" class="col-md-10 error"></div>
<div class="clearfix"></div>
</div>
</div>
</div>
</div>
<div class="panel-footer">
</div>
</div>
</div>
<div class="col-md-6">
<div class="hand-panel hand-panel-right panel panel-default">
<div class="panel-heading">
Right Arm
<i class="far fa-2x fa-hand-point-right"></i>
</div>
<div class="panel-body">
<div class="status-bar">
<div class="status-container">
<div class="safety-monitor panel panel-default panel-horizontal">
<div class="panel-heading">
Safety Monitor
</div>
<div class="panel-body text-center">
<div class="status-list">
<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" class="disabled"/>
<div class="state p-success-o">
<label>Running</label>
</div>
</div>
</li>
<li id="right_safetyStopped" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Stopped</label>
</div>
</div>
</li>
</ul>
</div>
</div>
<div class="action-button panel-footer">
<button type="button" onclick="triggerService('/left/aescape/mode/activateSafetyController')" class="btn">
Activate
</button>
</div>
</div>
</div>
<div class="status-container">
<div class="franka panel panel-default panel-horizontal">
<div class="panel-heading">
Franka Arm
</div>
<div class="panel-body text-center">
<div class="status-list">
<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" class="disabled"/>
<div class="state p-success-o">
<label>Other</label>
</div>
</div>
</li>
<li id="right_frankaModeIdle" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Idle</label>
</div>
</div>
</li>
<li id="right_frankaModeMove" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Move</label>
</div>
</div>
</li>
<li id="right_frankaModeGuiding" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Guiding</label>
</div>
</div>
</li>
<li id="right_frankaModeReflex" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Reflex</label>
</div>
</div>
</li>
<li id="right_frankaModeUserStopped" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>User Stopped</label>
</div>
</div>
</li>
<li id="right_frankaModeErrorRecovery" class="list-group-item">
<div class="pretty p-default p-round">
<input type="checkbox" class="disabled"/>
<div class="state p-success-o">
<label>Automatic Error Recovery</label>
</div>
</div>
</li>
</ul>
</div>
</div>
<div class="action-button panel-footer">
<button id="right_fixFrankaButton" type="button" onclick="triggerService('/right/aescape/hardware/resetFrankaError')" class="btn">
Fix Errors
</button>
</div>
</div>
</div>
</div>
<div class="control-container col-md-6">
<div class="control-card panel panel-default">
<div class="panel-heading">
EEF Configuration
<i class="fas fa-info-circle" tabindex="0" data-toggle="popover" data-trigger="focus" data-content="This selects the end-effector attached to the right arm."></i>
</div>
<div class="panel-body text-center">
<div class="button-area">
<button type="button" onclick="setEEFConfig('right', 'teach')" class="btn btn-primary col-md-6">
Recording EEF
</button>
<button type="button" onclick="setEEFConfig('right', 'play')" class="btn btn-primary col-md-6">
Massage EEF
</button>
</div>
</div>
<div class="action-area panel-footer">
<div class="message">
<!--You must be in "Stopped Mode" to change the EEF configuration! -->
</div>
</div>
</div>
</div>
<div class="control-container col-md-6">
<div id="right-operation-mode" class="control-card-six control-card panel panel-default">
<div class="panel-heading">
Operation Mode
<i class="fas fa-info-circle" tabindex="0" data-toggle="popover" data-trigger="focus" data-placement="bottom" data-content="This selects the operation mode of the right arm."></i>
</div>
<div class="panel-body text-center">
<div class="button-area">
<button id="right_teachingModeButton" type="button" onclick="triggerService('/right/aescape/mode/activateTeachingController')" class="btn btn-primary col-md-4">
Teaching
</button>
<button id="right_executionModeButton" type="button" onclick="triggerService('/right/aescape/mode/activateExecutionController')" class="btn btn-primary col-md-4">
Massage
</button>
<button id="right_readyModeButton" type="button" onclick="triggerService('/right/aescape/mode/activateReadyController')" class="btn btn-primary col-md-4">
Ready
</button>
<button id="right_standbyModeButton" type="button" onclick="triggerService('/right/aescape/mode/activateStandbyController')" class="btn btn-primary col-md-4">
Standby
</button>
<button id="right_stoppedModeButton" type="button" onclick="triggerService('/right/aescape/mode/stopControllers')" class="btn btn-primary col-md-4">
Stopped
</button>
</div>
</div>
<div class="action-area panel-footer">
<div class="message">
</div>
</div>
</div>
</div>
<!-- <div class="panel panel-default">
<div class="panel-heading">
Robotiq
</div>
<div class="panel-body text-center">
<div class="col-md-4">
Current Robotiq Values:
<div class="row-md-3">
<h4>X: <span id="robotiqX" class="label label-default">0.0</span></h4>
</div>
<div class="row-md-3">
<h4>Y: <span id="robotiqY" class="label label-default">0.0</span></h4>
</div>
<div class="row-md-3">
<h4>Z: <span id="robotiqZ" class="label label-default">0.0</span></h4>
</div>
</div>
<div class="row-md-3">
<button id="calibrateButton" type="button" onclick="triggerService('/right/aescape/hardware/calibrateRobotiq')" class="btn btn-primary">
Calibrate Robotiq
</button>
</div>
</div>
</div> -->
</div>
<div class="panel-footer">
</div>
</div>
<button type="button" onclick="triggerService('/aescape/safety_activate')" class="safety-button danger btn">
Stop Now!
</button>
</div>
</div>
</div>
<!-- <div class="panel panel-default">
<div class="panel-heading">
Execution Recording Operations
</div>
<div class="panel-body text-center">
<button id="executionStartButton" type="button" onclick="triggerService('/startExecutionRecording')" class="btn btn-primary">
Start Recording Execution
</button>
<button id="executionRecordingStopButton" type="button" onclick="triggerService('/stopExecutionRecording')" class="btn btn-primary">
Stop Recording Execution
</button>
</div>
</div> -->

View File

@@ -480,11 +480,6 @@ html, body {
background : #3671F9;
width: 100%;
margin-bottom: 10px;
height: 30px;
}
.slider-options .col-md-2 {
padding: 0px;
}
.progress-bar {

View File

@@ -66,7 +66,15 @@ function disableUI() {
}
document.querySelector('.dropdown').classList.add("disabled");
document.querySelectorAll('.force-bar .force-value span').forEach(function(element){
element.innerHTML = 0.0
});
document.querySelectorAll('.force-bar .progress-bar').forEach(function(element){
element.style.width = totalForcePercent + "%";
element.innerHTML = totalForce + " N";
element.setAttribute('aria-valuenow', totalForce);
});
} catch(err) {
console.log(err);

View File

@@ -38,12 +38,11 @@
}
</script>
<!-- TO DO: Use requirejs to reliably load these all the dependancies in order -->
<script>
$(function(){
$("#coordinatorContent").load("app/components/coordinator/coordinator.html");
$("#teachContent").load("app/components/coordinator/teach.html");
$("#playContent").load("app/components/coordinator/play.html");
});
$(function(){
$("#connectorContent").load("app/components/connect/connect.html");
});
</script>
@@ -100,16 +99,6 @@
Coordinator
</a>
</li>
<li>
<a href="#Teach" data-toggle="tab">
Teach
</a>
</li>
<li>
<a href="#Play" data-toggle="tab">
Play
</a>
</li>
<li>
<a target="_blank" href="vision/vision.html">
Vision
@@ -137,12 +126,6 @@
<div class="tab-pane active" id="Coordinator">
<div id="coordinatorContent"></div>
</div>
<div class="tab-pane" id="Teach">
<div id="teachContent"></div>
</div>
<div class="tab-pane" id="Play">
<div id="playContent"></div>
</div>
<!-- <div class="tab-pane" id="Vision">
<div id="visionContent"></div>
</div> -->