set basic layout. adding status bar
This commit is contained in:
@@ -1,131 +1,190 @@
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body text-center">
|
||||
<div class="col-lg-6">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
Left Arm Controls
|
||||
<div>
|
||||
<div class="col-md-6">
|
||||
<div class="hand-panel panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="far fa-2x fa-hand-point-left"></i>
|
||||
Left Arm
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
EEF Configuration
|
||||
</div>
|
||||
<div class="panel-body text-center">
|
||||
You must be in "Stopped Mode" to change the EEF configuration!
|
||||
<button type="button" onclick="triggerService('/left/aescape/hardware/setTrainingEEF')" class="btn btn-primary">
|
||||
Recording EEF
|
||||
</button>
|
||||
<button type="button" onclick="triggerService('/left/aescape/hardware/setExecutionEEF')" class="btn btn-primary">
|
||||
Massage EEF
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
Select Operation Mode
|
||||
</div>
|
||||
<div class="panel-body text-center">
|
||||
<div class="col-md-6">
|
||||
<button id="left_teachingModeButton" type="button" onclick="triggerService('/left/aescape/mode/activateTeachingController')" class="btn btn-primary">
|
||||
Teaching Mode
|
||||
</button>
|
||||
<button id="left_executionModeButton" type="button" onclick="triggerService('/left/aescape/mode/activateExecutionController')" class="btn btn-primary">
|
||||
Massage Mode
|
||||
</button>
|
||||
<button id="left_readyModeButton" type="button" onclick="triggerService('/left/aescape/mode/activateReadyController')" class="btn btn-primary">
|
||||
Ready Mode
|
||||
</button>
|
||||
<button id="left_standbyModeButton" type="button" onclick="triggerService('/left/aescape/mode/activateStandbyController')" class="btn btn-primary">
|
||||
Standby Mode
|
||||
</button>
|
||||
<button id="left_stoppedModeButton" type="button" onclick="triggerService('/left/aescape/mode/stopControllers')" class="btn btn-primary">
|
||||
Stopped Mode
|
||||
</button>
|
||||
<div class="panel-body">
|
||||
|
||||
<div class="status-bar">
|
||||
<div class="status-container">
|
||||
<div class="safety-monitor">
|
||||
<div class="heading">
|
||||
Safety Monitor Status
|
||||
</div>
|
||||
<div class="status-list">
|
||||
<ul class="list-group list-group-horizontal">
|
||||
<li id="left_safetyRunning" class="list-group-item">Running</li>
|
||||
<li id="left_safetyStopped" class="list-group-item">Stopped</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="action-button">
|
||||
<button type="button" onclick="triggerService('/left/aescape/mode/activateSafetyController')" class="btn btn-sm btn-default">
|
||||
Activate Safety Monitor
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</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 btn-default">
|
||||
Activate Safety Monitor
|
||||
</button>
|
||||
<div class="status-container">
|
||||
<div class="franka">
|
||||
<div class="heading">
|
||||
Franka Arm Status
|
||||
</div>
|
||||
<div class="status-list">
|
||||
<ul class="list-group list-group-horizontal">
|
||||
<li id="left_safetyRunning" class="list-group-item">Running</li>
|
||||
<li id="left_safetyStopped" class="list-group-item">Stopped</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="action-button">
|
||||
<button type="button" onclick="triggerService('/left/aescape/mode/activateSafetyController')" class="btn btn-sm btn-default">
|
||||
Activate Safety Monitor
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
Franka Arm Status
|
||||
|
||||
<div class="control-container col-md-6">
|
||||
<div class="control-card panel panel-default">
|
||||
<div class="panel-heading">
|
||||
EEF Configuration
|
||||
<i class="far fa-hand-point-left pull-right"></i>
|
||||
</div>
|
||||
<div class="panel-body text-center">
|
||||
<div class="button-area">
|
||||
<button type="button" onclick="triggerService('/left/aescape/hardware/setTrainingEEF')" class="btn btn-primary col-md-6">
|
||||
Recording EEF
|
||||
</button>
|
||||
<button type="button" onclick="triggerService('/left/aescape/hardware/setExecutionEEF')" 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="panel-body text-center">
|
||||
<div class="col-md-4">
|
||||
Current Robot Status:
|
||||
<div class="row-md-3">
|
||||
<h4><span id="left_frankaModeOther" class="label label-default">Other</span></h4>
|
||||
<div class="control-container col-md-6">
|
||||
<div class="control-card-six control-card panel panel-default">
|
||||
<div class="panel-heading">
|
||||
Select Operation Mode
|
||||
</div>
|
||||
<div class="row-md-3">
|
||||
<h4><span id="left_frankaModeIdle" class="label label-default">Idle</span></h4>
|
||||
<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-lg-4">
|
||||
Teaching Mode
|
||||
</button>
|
||||
<button id="left_executionModeButton" type="button" onclick="triggerService('/left/aescape/mode/activateExecutionController')" class="btn btn-primary col-lg-4">
|
||||
Massage Mode
|
||||
</button>
|
||||
<button id="left_readyModeButton" type="button" onclick="triggerService('/left/aescape/mode/activateReadyController')" class="btn btn-primary col-lg-4">
|
||||
Ready Mode
|
||||
</button>
|
||||
<button id="left_standbyModeButton" type="button" onclick="triggerService('/left/aescape/mode/activateStandbyController')" class="btn btn-primary col-lg-4">
|
||||
Standby Mode
|
||||
</button>
|
||||
<button id="left_stoppedModeButton" type="button" onclick="triggerService('/left/aescape/mode/stopControllers')" class="btn btn-primary col-lg-4">
|
||||
Stopped Mode
|
||||
</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 btn-default">
|
||||
Activate Safety Monitor
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
-->
|
||||
</div>
|
||||
<div class="row-md-3">
|
||||
<h4><span id="left_frankaModeMove" class="label label-default">Move</span></h4>
|
||||
</div>
|
||||
<div class="row-md-3">
|
||||
<h4><span id="left_frankaModeGuiding" class="label label-default">Guiding</span></h4>
|
||||
</div>
|
||||
<div class="row-md-3">
|
||||
<h4><span id="left_frankaModeReflex" class="label label-default">Reflex</span></h4>
|
||||
</div>
|
||||
<div class="row-md-3">
|
||||
<h4><span id="left_frankaModeUserStopped" class="label label-default">User Stopped</span></h4>
|
||||
</div>
|
||||
<div class="row-md-3">
|
||||
<h4><span id="left_frankaModeErrorRecovery" class="label label-default">Automatic Error Recovery</span></h4>
|
||||
<div class="action-area panel-footer">
|
||||
<div class="message">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<button id="left_fixFrankaButton" type="button" onclick="triggerService('/left/aescape/hardware/resetFrankaError')" class="btn btn-primary">
|
||||
Fix Franka Errors
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
Robotiq
|
||||
</div>
|
||||
<div class="panel-body text-center">
|
||||
<div class="row-md-3">
|
||||
<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="control-card panel panel-default col-md-6">
|
||||
<div class="panel-heading">
|
||||
Franka Arm Status
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="panel-body text-center">
|
||||
<div class="col-md-4">
|
||||
Current Robotiq Values:
|
||||
Current Robot Status:
|
||||
<div class="row-md-3">
|
||||
<h4>X: <span id="robotiqX" class="label label-default">0.0</span></h4>
|
||||
<h4><span id="left_frankaModeOther" class="label label-default">Other</span></h4>
|
||||
</div>
|
||||
<div class="row-md-3">
|
||||
<h4>Y: <span id="robotiqY" class="label label-default">0.0</span></h4>
|
||||
<h4><span id="left_frankaModeIdle" class="label label-default">Idle</span></h4>
|
||||
</div>
|
||||
<div class="row-md-3">
|
||||
<h4>Z: <span id="robotiqZ" class="label label-default">0.0</span></h4>
|
||||
<h4><span id="left_frankaModeMove" class="label label-default">Move</span></h4>
|
||||
</div>
|
||||
<div class="row-md-3">
|
||||
<h4><span id="left_frankaModeGuiding" class="label label-default">Guiding</span></h4>
|
||||
</div>
|
||||
<div class="row-md-3">
|
||||
<h4><span id="left_frankaModeReflex" class="label label-default">Reflex</span></h4>
|
||||
</div>
|
||||
<div class="row-md-3">
|
||||
<h4><span id="left_frankaModeUserStopped" class="label label-default">User Stopped</span></h4>
|
||||
</div>
|
||||
<div class="row-md-3">
|
||||
<h4><span id="left_frankaModeErrorRecovery" class="label label-default">Automatic Error Recovery</span></h4>
|
||||
</div>
|
||||
</div>
|
||||
<button id="left_fixFrankaButton" type="button" onclick="triggerService('/left/aescape/hardware/resetFrankaError')" class="btn btn-primary">
|
||||
Fix Franka Errors
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-card panel panel-default col-md-6">
|
||||
<div class="panel-heading">
|
||||
Robotiq
|
||||
</div>
|
||||
<div class="panel-body text-center">
|
||||
<div class="row-md-3">
|
||||
<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>
|
||||
<div class="row">
|
||||
<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="col-md-4">
|
||||
<button id="calibrateButton" type="button" onclick="triggerService('/left/aescape/hardware/calibrateRobotiq')" class="btn btn-primary">
|
||||
Calibrate Robotiq
|
||||
</button>
|
||||
<div class="col-md-4">
|
||||
<button id="calibrateButton" type="button" onclick="triggerService('/left/aescape/hardware/calibrateRobotiq')" class="btn btn-primary">
|
||||
Calibrate Robotiq
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="control-card panel panel-default col-md-6">
|
||||
<div class="panel-heading">
|
||||
Teaching Mode Operations
|
||||
</div>
|
||||
@@ -146,73 +205,74 @@
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
Execution Mode Operations
|
||||
</div>
|
||||
|
||||
|
||||
<div class="panel-body text-center">
|
||||
|
||||
<span class="row">
|
||||
<label id="ExecutionStatusLabel" class="label-warning">
|
||||
Bag manager not connected!
|
||||
</label>
|
||||
</span>
|
||||
|
||||
Last Bag Playing:
|
||||
<span id="lastbagText">
|
||||
None
|
||||
</span>
|
||||
<div class="row-md-4">
|
||||
<button type="button" onclick="triggerService('/left/aescape/mode/activateReadyController')" class="btn btn-default">
|
||||
Activate Ready Mode
|
||||
</button>
|
||||
<button id="executionLoadButton" type="button" onclick="triggerService('/aescape/bags/startPlayingLastRecording')" class="btn btn-primary">
|
||||
Load Last Recording
|
||||
</button>
|
||||
<button id="executionStartButton" type="button" onclick="triggerService('/left/aescape/mode/activateExecutionController'); triggerTopic('/left/run_trajectory')" class="btn btn-primary">
|
||||
Play Last Recording
|
||||
</button>
|
||||
<button id="executionStopButton" type="button" onclick="triggerService('/aescape/bags/stopPlayingBag'); triggerService('/left/aescape/mode/activateReadyController')" class="btn btn-primary">
|
||||
Stop Playing Recording
|
||||
</button>
|
||||
<div class="row-md-4">
|
||||
Bagfile name must not start with "/"
|
||||
<div class="input-group">
|
||||
<input type="text" id="bagNameText" class="form-control" placeholder="bag_filename">
|
||||
<span class="input-group-btn">
|
||||
<button class="btn btn-primary" type="button" onclick="triggerMessageService('/aescape/bags/startPlayingRecording', 'bagNameText')">
|
||||
<span>
|
||||
Start Playing Bag
|
||||
</span>
|
||||
</button>
|
||||
</span>
|
||||
<div class="control-card panel panel-default col-md-6">
|
||||
<div class="panel-heading">
|
||||
Execution Mode Operations
|
||||
</div>
|
||||
|
||||
|
||||
<div class="panel-body text-center">
|
||||
|
||||
<span class="row">
|
||||
<label id="ExecutionStatusLabel" class="label-warning">
|
||||
Bag manager not connected!
|
||||
</label>
|
||||
</span>
|
||||
|
||||
Last Bag Playing:
|
||||
<span id="lastbagText">
|
||||
None
|
||||
</span>
|
||||
<div class="row-md-4">
|
||||
<button type="button" onclick="triggerService('/left/aescape/mode/activateReadyController')" class="btn btn-default">
|
||||
Activate Ready Mode
|
||||
</button>
|
||||
<button id="executionLoadButton" type="button" onclick="triggerService('/aescape/bags/startPlayingLastRecording')" class="btn btn-primary">
|
||||
Load Last Recording
|
||||
</button>
|
||||
<button id="executionStartButton" type="button" onclick="triggerService('/left/aescape/mode/activateExecutionController'); triggerTopic('/left/run_trajectory')" class="btn btn-primary">
|
||||
Play Last Recording
|
||||
</button>
|
||||
<button id="executionStopButton" type="button" onclick="triggerService('/aescape/bags/stopPlayingBag'); triggerService('/left/aescape/mode/activateReadyController')" class="btn btn-primary">
|
||||
Stop Playing Recording
|
||||
</button>
|
||||
<div class="row-md-4">
|
||||
Bagfile name must not start with "/"
|
||||
<div class="input-group">
|
||||
<input type="text" id="bagNameText" class="form-control" placeholder="bag_filename">
|
||||
<span class="input-group-btn">
|
||||
<button class="btn btn-primary" type="button" onclick="triggerMessageService('/aescape/bags/startPlayingRecording', 'bagNameText')">
|
||||
<span>
|
||||
Start Playing Bag
|
||||
</span>
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</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 class="row-md-3 pt-4">
|
||||
<!-- <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 class="row-md-3 pt-4">
|
||||
|
||||
<div style="height:300px;width:300px;overflow:auto">
|
||||
<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 style="height:300px;width:300px;overflow:auto">
|
||||
<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>
|
||||
@@ -221,121 +281,150 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6">
|
||||
<div class="panel panel-default">
|
||||
<div class="col-md-6">
|
||||
<div class="hand-panel panel panel-default">
|
||||
<div class="panel-heading">
|
||||
Right Arm Controls
|
||||
Right Arm
|
||||
<i class="far fa-2x fa-hand-point-right"></i>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
EEF Configuration
|
||||
</div>
|
||||
<div class="panel-body text-center">
|
||||
You must be in "Stopped Mode" to change the EEF configuration!
|
||||
<button type="button" onclick="triggerService('/right/aescape/hardware/setTrainingEEF')" class="btn btn-primary">
|
||||
Recording EEF
|
||||
</button>
|
||||
<button type="button" onclick="triggerService('/right/aescape/hardware/setExecutionEEF')" class="btn btn-primary">
|
||||
Massage EEF
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
Select Operation Mode
|
||||
</div>
|
||||
<div class="panel-body text-center">
|
||||
<div class="col-md-6">
|
||||
<button id="right_teachingModeButton" type="button" onclick="triggerService('/right/aescape/mode/activateTeachingController')" class="btn btn-primary">
|
||||
Teaching Mode
|
||||
</button>
|
||||
<button id="right_executionModeButton" type="button" onclick="triggerService('/right/aescape/mode/activateExecutionController')" class="btn btn-primary">
|
||||
Massage Mode
|
||||
</button>
|
||||
<button id="right_readyModeButton" type="button" onclick="triggerService('/right/aescape/mode/activateReadyController')" class="btn btn-primary">
|
||||
Ready Mode
|
||||
</button>
|
||||
<button id="right_standbyModeButton" type="button" onclick="triggerService('/right/aescape/mode/activateStandbyController')" class="btn btn-primary">
|
||||
Standby Mode
|
||||
</button>
|
||||
<button id="right_stoppedModeButton" type="button" onclick="triggerService('/right/aescape/mode/stopControllers')" class="btn btn-primary">
|
||||
Stopped Mode
|
||||
</button>
|
||||
<div class="panel-body">
|
||||
<div class="control-container col-md-6">
|
||||
<div class="control-card panel panel-default">
|
||||
<div class="panel-heading">
|
||||
EEF Configuration
|
||||
<i class="far fa-hand-point-left pull-right"></i>
|
||||
</div>
|
||||
<div class="panel-body text-center">
|
||||
<div class="button-area">
|
||||
<button type="button" onclick="triggerService('/right/aescape/hardware/setTrainingEEF')" class="btn btn-primary col-md-6">
|
||||
Recording EEF
|
||||
</button>
|
||||
<button type="button" onclick="triggerService('/right/aescape/hardware/setExecutionEEF')" 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="col-md-6">
|
||||
Safety Monitor Status:
|
||||
<div class="row-md-3">
|
||||
<h4><span id="right_safetyRunning" class="label label-default">Running</span></h4>
|
||||
<div class="control-container col-md-6">
|
||||
<div class="control-card-six control-card panel panel-default">
|
||||
<div class="panel-heading">
|
||||
Select Operation Mode
|
||||
</div>
|
||||
<div class="panel-body text-center">
|
||||
<div class="button-area">
|
||||
<button id="left_teachingModeButton" type="button" onclick="triggerService('/right/aescape/mode/activateTeachingController')" class="btn btn-primary col-lg-4">
|
||||
Teaching Mode
|
||||
</button>
|
||||
<button id="left_executionModeButton" type="button" onclick="triggerService('/right/aescape/mode/activateExecutionController')" class="btn btn-primary col-lg-4">
|
||||
Massage Mode
|
||||
</button>
|
||||
<button id="left_readyModeButton" type="button" onclick="triggerService('/right/aescape/mode/activateReadyController')" class="btn btn-primary col-lg-4">
|
||||
Ready Mode
|
||||
</button>
|
||||
<button id="left_standbyModeButton" type="button" onclick="triggerService('/right/aescape/mode/activateStandbyController')" class="btn btn-primary col-lg-4">
|
||||
Standby Mode
|
||||
</button>
|
||||
<button id="left_stoppedModeButton" type="button" onclick="triggerService('/right/aescape/mode/stopControllers')" class="btn btn-primary col-lg-4">
|
||||
Stopped Mode
|
||||
</button>
|
||||
</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">
|
||||
Safety Monitor Status
|
||||
</div>
|
||||
<div class="panel-body text-center">
|
||||
<div class="button-area">
|
||||
<button type="button" onclick="triggerService('/right/aescape/hardware/setTrainingEEF')" class="btn btn-primary col-md-6">
|
||||
Recording EEF
|
||||
</button>
|
||||
<button type="button" onclick="triggerService('/right/aescape/hardware/setExecutionEEF')" class="btn btn-primary col-md-6">
|
||||
Massage EEF
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="action-area panel-footer">
|
||||
<div class="action-button">
|
||||
<button type="button" onclick="triggerService('/right/aescape/mode/activateSafetyController')" class="btn btn-sm btn-default">
|
||||
Activate Safety Monitor
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-card panel panel-default col-md-6">
|
||||
<div class="panel-heading">
|
||||
Franka Arm Status
|
||||
</div>
|
||||
<div class="panel-body text-center">
|
||||
<div class="col-md-4">
|
||||
Current Robot Status:
|
||||
<div class="row-md-3">
|
||||
<h4><span id="right_frankaModeOther" class="label label-default">Other</span></h4>
|
||||
</div>
|
||||
<div class="row-md-3">
|
||||
<h4><span id="right_frankaModeIdle" class="label label-default">Idle</span></h4>
|
||||
</div>
|
||||
<div class="row-md-3">
|
||||
<h4><span id="right_frankaModeMove" class="label label-default">Move</span></h4>
|
||||
</div>
|
||||
<div class="row-md-3">
|
||||
<h4><span id="right_frankaModeGuiding" class="label label-default">Guiding</span></h4>
|
||||
</div>
|
||||
<div class="row-md-3">
|
||||
<h4><span id="right_frankaModeReflex" class="label label-default">Reflex</span></h4>
|
||||
</div>
|
||||
<div class="row-md-3">
|
||||
<h4><span id="right_frankaModeUserStopped" class="label label-default">User Stopped</span></h4>
|
||||
</div>
|
||||
<div class="row-md-3">
|
||||
<h4><span id="right_frankaModeErrorRecovery" class="label label-default">Automatic Error Recovery</span></h4>
|
||||
</div>
|
||||
</div>
|
||||
<button id="right_fixFrankaButton" type="button" onclick="triggerService('/right/aescape/hardware/resetFrankaError')" class="btn btn-primary">
|
||||
Fix Franka Errors
|
||||
</button>
|
||||
</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">
|
||||
<h4><span id="right_safetyStopped" class="label label-default">Stopped</span></h4>
|
||||
</div>
|
||||
<div class="row-md-3">
|
||||
<button type="button" onclick="triggerService('/right/aescape/mode/activateSafetyController')" class="btn btn-sm btn-default">
|
||||
Activate Safety Monitor
|
||||
<button id="calibrateButton" type="button" onclick="triggerService('/right/aescape/hardware/calibrateRobotiq')" class="btn btn-primary">
|
||||
Calibrate Robotiq
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
Franka Arm Status
|
||||
</div>
|
||||
<div class="panel-body text-center">
|
||||
<div class="col-md-4">
|
||||
Current Robot Status:
|
||||
<div class="row-md-3">
|
||||
<h4><span id="right_frankaModeOther" class="label label-default">Other</span></h4>
|
||||
</div>
|
||||
<div class="row-md-3">
|
||||
<h4><span id="right_frankaModeIdle" class="label label-default">Idle</span></h4>
|
||||
</div>
|
||||
<div class="row-md-3">
|
||||
<h4><span id="right_frankaModeMove" class="label label-default">Move</span></h4>
|
||||
</div>
|
||||
<div class="row-md-3">
|
||||
<h4><span id="right_frankaModeGuiding" class="label label-default">Guiding</span></h4>
|
||||
</div>
|
||||
<div class="row-md-3">
|
||||
<h4><span id="right_frankaModeReflex" class="label label-default">Reflex</span></h4>
|
||||
</div>
|
||||
<div class="row-md-3">
|
||||
<h4><span id="right_frankaModeUserStopped" class="label label-default">User Stopped</span></h4>
|
||||
</div>
|
||||
<div class="row-md-3">
|
||||
<h4><span id="right_frankaModeErrorRecovery" class="label label-default">Automatic Error Recovery</span></h4>
|
||||
</div>
|
||||
</div>
|
||||
<button id="right_fixFrankaButton" type="button" onclick="triggerService('/right/aescape/hardware/resetFrankaError')" class="btn btn-primary">
|
||||
Fix Franka Errors
|
||||
</button>
|
||||
</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>
|
||||
|
||||
|
||||
@@ -260,6 +260,13 @@ 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)
|
||||
{
|
||||
@@ -268,6 +275,20 @@ function triggerService(serviceName)
|
||||
name : serviceName,
|
||||
serviceType : 'std_srvs/Trigger'
|
||||
});
|
||||
|
||||
console.log("hello biatch");
|
||||
$(document).ready(function(){
|
||||
$.notify({
|
||||
message: "ROS request didn't go through!"
|
||||
}, {
|
||||
"placement" : {
|
||||
from: "bottom",
|
||||
align: "right"
|
||||
},
|
||||
type: 'danger',
|
||||
delay: 1000
|
||||
});
|
||||
});
|
||||
|
||||
var request = new ROSLIB.ServiceRequest({});
|
||||
|
||||
@@ -276,6 +297,8 @@ function triggerService(serviceName)
|
||||
+ serviceName
|
||||
+ ': '
|
||||
+ result.sum);
|
||||
}, function(error){
|
||||
console.log("errorored");
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
var bagList = Array();
|
||||
|
||||
function getBagList()
|
||||
@@ -44,4 +45,6 @@ function updateRecordingsList()
|
||||
|
||||
window.setInterval(function(){
|
||||
updateRecordingsList();
|
||||
}, 1000);
|
||||
}, 1000);
|
||||
|
||||
|
||||
|
||||
@@ -4,32 +4,39 @@
|
||||
<meta charset="utf-8" />
|
||||
<title>Lab UI</title>
|
||||
|
||||
<link rel="stylesheet" href="include/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="../include/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="../include/css/fontawesome-free-5.8.2-web/css/all.css">
|
||||
|
||||
|
||||
<script type="text/javascript" src="include/js/eventemitter2.min.js"></script>
|
||||
<script type="text/javascript" src="../include/js/eventemitter2.min.js"></script>
|
||||
|
||||
<script src="include/js/jquery.min.js"></script>
|
||||
<script src="include/js/bootstrap.min.js"></script>
|
||||
<script src="include/js/math.min.js"></script>
|
||||
<script src="../include/js/jquery.min.js"></script>
|
||||
<script src="../include/js/bootstrap.min.js"></script>
|
||||
<script src="../include/js/math.min.js"></script>
|
||||
|
||||
<script src="include/js/roslib.js"></script>
|
||||
<script type="text/javascript" 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="backend/js/ros_scripts.js"></script>
|
||||
<script type="text/javascript" src="backend/js/update_guis.js"></script>
|
||||
<script type="text/javascript" src="utilities/ros_scripts.js"></script>
|
||||
<script type="text/javascript" src="utilities/update_guis.js"></script>
|
||||
<script type="text/javascript" src="utilities/Topic.js"></script>
|
||||
|
||||
<script type="text/javascript" src="backend/js/Topic.js"></script>
|
||||
<script type="text/javascript" src="../../bower_components/remarkable-bootstrap-notify/dist/bootstrap-notify.js"></script>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<link rel="stylesheet" href="main.css">
|
||||
|
||||
<script>
|
||||
$(function(){
|
||||
$("#coordinatorContent").load("coordinator/coordinator.html");
|
||||
$("#coordinatorContent").load("components/coordinator/coordinator.html");
|
||||
});
|
||||
$(function(){
|
||||
$("#connectorContent").load("components/connect/connect.html");
|
||||
});
|
||||
</script>
|
||||
<script type="text/javascript" src="coordinator/js/ros_scripts.js"></script>
|
||||
<script type="text/javascript" src="coordinator/js/update_guis.js"></script>
|
||||
<script type="text/javascript" src="components/coordinator/js/ros_scripts.js"></script>
|
||||
<script type="text/javascript" src="components/coordinator/js/update_guis.js"></script>
|
||||
|
||||
|
||||
<!-- <script>
|
||||
@@ -44,29 +51,24 @@
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div id="jumbotronTitle" class="jumbotron text-center">
|
||||
<h1 id="Title">Lab UI</h1>
|
||||
|
||||
<div class="header">
|
||||
<div class="logo">
|
||||
<img src="../include/images/aescape-logo-v3_square_300_white.webp"/>
|
||||
</div>
|
||||
<div class="container">
|
||||
<div class="col-md-1">
|
||||
Master:
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label id="MasterName"></label>
|
||||
<script>
|
||||
getMasterName();
|
||||
</script>
|
||||
</div>
|
||||
<div class="title">
|
||||
<h1>Aescape Lab</h1>
|
||||
</div>
|
||||
<div class="user">
|
||||
<i class="far fa-user"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main-tabs-container">
|
||||
<div class="row-md-3">
|
||||
<ul id="tabs" class="nav nav-pills" data-tabs="tabs" >
|
||||
<li> <a href="#rosbridgeconnection" data-toggle="tab">
|
||||
ROS Bridge Connection
|
||||
<span id="rosbridgeconnection_badge" class="badge">
|
||||
Not Connected
|
||||
</span></a>
|
||||
<li>
|
||||
<a href="#Connect" data-toggle="tab">
|
||||
Connect
|
||||
</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<a href="#Coordinator" data-toggle="tab">
|
||||
@@ -74,15 +76,21 @@
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="vision/vision.html">
|
||||
<a target="_blank" href="vision/vision.html">
|
||||
Vision
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="task-connection-message">
|
||||
Teaching Phoebe
|
||||
</div>
|
||||
|
||||
<div id="my-tab-content" class="tab-content">
|
||||
|
||||
<div class="tab-pane" id="Connect">
|
||||
<div id="connectorContent"></div>
|
||||
</div>
|
||||
<div class="tab-pane active" id="Coordinator">
|
||||
<div id="coordinatorContent"></div>
|
||||
</div>
|
||||
@@ -92,7 +100,5 @@
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
219
client/app/main.css
Normal file
219
client/app/main.css
Normal file
@@ -0,0 +1,219 @@
|
||||
@import url(http://fonts.googleapis.com/css?family=Roboto:400,400italic,500,500italic,700,700italic,900,900italic,300italic,300,100italic,100);
|
||||
|
||||
html, body {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
font-size: 16pt;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
background: #020625;
|
||||
color: #EDF0F4;
|
||||
}
|
||||
|
||||
.fill-container {
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.transparent-button {
|
||||
background-color: Transparent;
|
||||
background-repeat:no-repeat;
|
||||
border: none;
|
||||
cursor:pointer;
|
||||
overflow: hidden;
|
||||
outline:none;
|
||||
}
|
||||
|
||||
.font-roboto-regular {
|
||||
font-family: 'Roboto';
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.font-roboto-thin {
|
||||
font-family: 'Roboto';
|
||||
font-weight: 100;
|
||||
}
|
||||
|
||||
.font-roboto-light {
|
||||
font-family: 'Roboto';
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.font-roboto-medium {
|
||||
font-family: 'Roboto';
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.font-roboto-medium-italic {
|
||||
font-family: 'Roboto';
|
||||
font-weight: 500;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.dialog {
|
||||
position: fixed;
|
||||
left: 0px;
|
||||
top: 0px;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: #020625;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: "Roboto";
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-family: "Roboto";
|
||||
font-size: 22pt;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.header {
|
||||
width: 100vw;
|
||||
display: flex;
|
||||
overflow: hidden;
|
||||
flex-wrap: nowrap;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
background-color: #182048;
|
||||
padding: 0 40px 0 40px;
|
||||
}
|
||||
|
||||
.header .logo img {
|
||||
width: 101px;
|
||||
height: 68px;
|
||||
}
|
||||
|
||||
.header .title {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.header .user {
|
||||
width: 101px;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.header .user i {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.main-tabs-container {
|
||||
margin-top: 10px;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.tab-content {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.task-connection-message {
|
||||
position: relative;
|
||||
margin: auto;
|
||||
left: -10%;
|
||||
font-weight: 600;
|
||||
font-size: 19pt;
|
||||
}
|
||||
|
||||
.panel{
|
||||
background: #182048;
|
||||
border: 1px solid;
|
||||
border-radius: 30px;
|
||||
border-color: #3573FB;
|
||||
}
|
||||
|
||||
.hand-panel .panel-body{
|
||||
background: #020625;
|
||||
}
|
||||
|
||||
.panel-heading, .panel-footer {
|
||||
background-color: #020625 !important;
|
||||
color: #EDF0F4 !important;
|
||||
text-align: center;
|
||||
font-size: 14pt;
|
||||
}
|
||||
|
||||
.panel-heading {
|
||||
border: 1px solid;
|
||||
border-radius: 30px 30px 0 0;
|
||||
border-color: #3573FB !important;
|
||||
|
||||
}
|
||||
|
||||
.panel-footer {
|
||||
border: 1px solid;
|
||||
border-radius: 0 0 30px 30px;
|
||||
border-color: #3573FB;
|
||||
}
|
||||
|
||||
.control-container {
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
.control-card > .panel-body {
|
||||
height: 150px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.control-card .button-area {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.control-card .button-area > button {
|
||||
height: 100%;
|
||||
border-radius: 0;
|
||||
color: #EDF0F4;
|
||||
font-size : 14pt;
|
||||
background: #182048;
|
||||
}
|
||||
|
||||
.control-card-six .button-area > button {
|
||||
height: 50%;
|
||||
font-size: 12pt;
|
||||
}
|
||||
|
||||
.nav-pills li a {
|
||||
border-radius: 0;
|
||||
color: #EDF0F4;
|
||||
font-size : 16pt;
|
||||
font-weight: 600;
|
||||
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{
|
||||
color: #EDF0F4;
|
||||
background: #182048;
|
||||
}
|
||||
|
||||
.hand-panel .panel-heading {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.hand-panel .panel-heading i{
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.panel-footer .message {
|
||||
font-size : 12pt;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
31
client/app/utilities/config.js
Normal file
31
client/app/utilities/config.js
Normal file
@@ -0,0 +1,31 @@
|
||||
commonControls = [{
|
||||
title : "EEF Configuration",
|
||||
buttons : [
|
||||
{
|
||||
name : "Recording",
|
||||
clickAction : "/aescape/hardware/setTrainingEEF",
|
||||
clickAttributes : {
|
||||
includeArm : true,
|
||||
},
|
||||
},
|
||||
{
|
||||
name : "Recording",
|
||||
clickAction : "/aescape/hardware/setTrainingEEF",
|
||||
clickAttributes : {
|
||||
includeArm : true,
|
||||
},
|
||||
}
|
||||
]
|
||||
}]
|
||||
|
||||
sharedControls = {
|
||||
|
||||
}
|
||||
|
||||
leftArmControls = {
|
||||
|
||||
}
|
||||
|
||||
rightArmControls = {
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user