diff --git a/ExoMy_Software-master/docker/entrypoint.sh b/ExoMy_Software-master/docker/entrypoint.sh index 493e931..9d52866 100644 --- a/ExoMy_Software-master/docker/entrypoint.sh +++ b/ExoMy_Software-master/docker/entrypoint.sh @@ -36,6 +36,8 @@ then rosparam set /controller logitech-F710 rosparam set /delay_seconds 0.0 echo 0.0 > /tmp/exomy_delay.txt + rosparam set /speed_limit_percent 100 + echo 100 > /tmp/exomy_speed_limit.txt /opt/ros/melodic/lib/rosbridge_server/rosbridge_websocket > /tmp/rosbridge.log 2>&1 & ROSBRIDGE_PID=$! diff --git a/ExoMy_Software-master/gui/admin.html b/ExoMy_Software-master/gui/admin.html index ec070ff..ce6d244 100644 --- a/ExoMy_Software-master/gui/admin.html +++ b/ExoMy_Software-master/gui/admin.html @@ -101,6 +101,33 @@ +
Geschwindigkeit
+Begrenzt die Höchstgeschwindigkeit des Rovers für Controller und Web-GUI.
+Systemstatus
@@ -304,6 +331,33 @@ if (sel) sel.value = String(seconds); } + async function fetchSpeedLimit() { + try { + var response = await fetch(adminApiBase + '/api/speed-limit'); + if (!response.ok) return; + var data = await response.json(); + var sel = document.getElementById('speed_limit_select'); + if (sel) sel.value = String(data.speed_limit_percent); + } catch (e) {} + } + + async function setSpeedLimit(percent) { + var statusEl = document.getElementById('speed_limit_status'); + if (statusEl) statusEl.textContent = 'Setze…'; + try { + var response = await fetch(adminApiBase + '/api/speed-limit', { + method: 'POST', + headers: {'Content-Type': 'application/json'}, + body: JSON.stringify({speed_limit_percent: percent}) + }); + var data = await response.json(); + if (statusEl) statusEl.textContent = data.status || 'Gesetzt'; + window.setTimeout(function() { if (statusEl) statusEl.textContent = ''; }, 2000); + } catch (e) { + if (statusEl) statusEl.textContent = 'Fehler'; + } + } + async function fetchDelay() { try { var response = await fetch(adminApiBase + '/api/delay'); @@ -351,8 +405,10 @@ fetchStatus(); fetchDelay(); + fetchSpeedLimit(); window.setInterval(fetchStatus, 10000); window.setInterval(fetchDelay, 5000); + window.setInterval(fetchSpeedLimit, 5000); });