Add simple experimental web gcs

This commit is contained in:
Oleg Kalachev
2019-02-21 15:58:41 +03:00
parent af244973c3
commit 21b753ad16
2 changed files with 98 additions and 0 deletions

29
clever/www/gcs.html Normal file
View File

@@ -0,0 +1,29 @@
<html>
<head>
<title>Disconnected</title>
<script src="js/roslib.js"></script>
<style>
body {
font-family: sans-serif;
background: rgba(0, 0, 0, 0.8);
color: rgba(255, 255, 255, 0.9);
}
.dash {
font-size: 30px;
text-align: center;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
line-height: 150%;
}
</style>
</head>
<body>
<div class="dash">
<div class="mode">&nbsp;</div>
<div class="battery">&nbsp;</div>
</div>
</body>
<script src="js/gcs.js"></script>
</html>

69
clever/www/js/gcs.js Normal file
View File

@@ -0,0 +1,69 @@
var body = document.querySelector('body');
var titleEl = document.querySelector('title');
var modeEl = document.querySelector('.mode');
var batteryEl = document.querySelector('.battery');
var url = 'ws://' + location.host + ':9090';
var ros = new ROSLIB.Ros({ url: url });
function speak(txt) {
var utterance = new SpeechSynthesisUtterance(txt);
window.speechSynthesis.speak(utterance);
}
ros.on('connection', function () {
body.classList.add('connected');
titleEl.innerText = 'Connected';
});
ros.on('close', function () {
titleEl.innerText = 'Disconnected';
modeEl.innerHTML = '';
body.classList.remove('connected');
setTimeout(function() {
titleEl.innerText = 'Reconnecting';
ros.connect(url);
}, 2000);
});
var fcuState = {};
new ROSLIB.Topic({
ros: ros,
name: '/mavros/state',
messageType: 'mavros_msgs/State'
}).subscribe(function(msg) {
modeEl.innerHTML = msg.mode;
if (fcuState.mode != msg.mode) {
// mode changed
speak(msg.mode + ' flight mode');
}
fcuState = msg;
});
new ROSLIB.Topic({
ros: ros,
name: '/mavros/statustext/recv',
messageType: 'mavros_msgs/StatusText'
}).subscribe(function(message) {
var BLACKLIST = [];
if (message.severity <= 4) {
if (BLACKLIST.some(function(e) {
return message.text.indexOf(e) != -1;
})) {
console.log('Filtered out message ' + message.text);
return;
}
speak(message.text);
}
});
new ROSLIB.Topic({
ros: ros,
name: '/mavros/battery',
messageType: 'sensor_msgs/BatteryState',
throttle_rate: 5000
}).subscribe(function(message) {
var LOW_BATTERY = 3.8;
batteryEl.innerHTML = (message.cell_voltage[0].toFixed(2) + ' V') || '';
});