kleinigkeiten
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
# ExoMy CUNO — Software
|
||||
|
||||
`CUNO` steht für `Celestian Unified Navigation and Observation`.
|
||||
|
||||
ExoMy Mars-Rover auf Basis eines Raspberry Pi mit ROS1 Melodic, betrieben vollständig in einem Docker-Container.
|
||||
|
||||
---
|
||||
|
||||
+33
-1
@@ -33,7 +33,7 @@
|
||||
<path d="M12 12C13.5 9.2 17.8 8.2 21 10" stroke="#1B120F" stroke-width="2.8" stroke-linecap="round"/>
|
||||
<path d="M29 7.5C31.8 6.2 35.6 7.1 37.6 9.7" stroke="#1B120F" stroke-width="2.8" stroke-linecap="round"/>
|
||||
</svg>
|
||||
<span class="hdr-title">CUNO <em>ADMIN</em></span>
|
||||
<span class="hdr-title" title="CUNO = Celestian Unified Navigation and Observation">CUNO <em>ADMIN</em></span>
|
||||
<div class="hdr-div"></div>
|
||||
<div class="hdr-badge">System Control</div>
|
||||
<div class="hdr-gap"></div>
|
||||
@@ -806,7 +806,9 @@
|
||||
roverMapState.lastFixAt = null;
|
||||
roverMapState.gpsStatusText = 'Offline';
|
||||
roverMapState.satellites = '--';
|
||||
roverMapState.trackPoints = [];
|
||||
updateMapTelemetryPanel();
|
||||
updateRoverMapVisibility();
|
||||
|
||||
setDriveEstimatorState('offline', 'state_inactive');
|
||||
setText('drive_estimator_speed', '--');
|
||||
@@ -1389,6 +1391,32 @@
|
||||
renderWaypointList();
|
||||
}
|
||||
|
||||
function updateRoverMapVisibility() {
|
||||
var fallback = document.getElementById('rover_map_fallback');
|
||||
if (fallback) {
|
||||
var showFallback = !roverMapState.hasFix || typeof roverMapState.roverLat !== 'number' || typeof roverMapState.roverLon !== 'number';
|
||||
fallback.textContent = showFallback
|
||||
? 'Keine GPS-Position verfügbar. Auf der Karte wird erst etwas angezeigt, wenn ein gültiger Fix vorliegt.'
|
||||
: 'Kartenbibliothek nicht geladen. GPS-Daten sind trotzdem unten sichtbar.';
|
||||
fallback.hidden = !showFallback;
|
||||
fallback.classList.toggle('map-hidden', !showFallback);
|
||||
}
|
||||
|
||||
if (!roverMapState.mapReady) return;
|
||||
|
||||
var hasVisiblePosition = roverMapState.hasFix && typeof roverMapState.roverLat === 'number' && typeof roverMapState.roverLon === 'number';
|
||||
if (roverMapState.roverMarker) {
|
||||
roverMapState.roverMarker.setStyle({opacity: hasVisiblePosition ? 1 : 0, fillOpacity: hasVisiblePosition ? 1 : 0});
|
||||
}
|
||||
if (roverMapState.roverAccuracyCircle) {
|
||||
roverMapState.roverAccuracyCircle.setStyle({opacity: hasVisiblePosition ? 0.7 : 0, fillOpacity: hasVisiblePosition ? 0.1 : 0});
|
||||
roverMapState.roverAccuracyCircle.setRadius(hasVisiblePosition ? (roverMapState.accuracyMeters || 0) : 0);
|
||||
}
|
||||
if (roverMapState.roverTrackLine) {
|
||||
roverMapState.roverTrackLine.setLatLngs(hasVisiblePosition ? roverMapState.trackPoints : []);
|
||||
}
|
||||
}
|
||||
|
||||
function getWaypointInsertIndexFromRouteClick(latlng) {
|
||||
if (!roverMapState.waypoints.length) return 0;
|
||||
|
||||
@@ -1685,6 +1713,7 @@
|
||||
applyWaypointPlanningState();
|
||||
renderWaypointMarkers();
|
||||
updateMapTelemetryPanel();
|
||||
updateRoverMapVisibility();
|
||||
}
|
||||
|
||||
function updateRoverPositionOnMap() {
|
||||
@@ -1704,6 +1733,7 @@
|
||||
roverMapState.trackPoints.push(latlng);
|
||||
if (roverMapState.trackPoints.length > 60) roverMapState.trackPoints.shift();
|
||||
roverMapState.roverTrackLine.setLatLngs(roverMapState.trackPoints);
|
||||
updateRoverMapVisibility();
|
||||
|
||||
if (!roverMapState.hasCenteredOnFix) {
|
||||
roverMapState.map.setView(latlng, 17);
|
||||
@@ -1731,7 +1761,9 @@
|
||||
roverMapState.roverLon = null;
|
||||
roverMapState.roverAlt = null;
|
||||
roverMapState.accuracyMeters = null;
|
||||
roverMapState.trackPoints = [];
|
||||
updateMapTelemetryPanel();
|
||||
updateRoverMapVisibility();
|
||||
renderPlannedRoute();
|
||||
return;
|
||||
}
|
||||
|
||||
+1
-69
@@ -31,7 +31,7 @@
|
||||
<path d="M29 7.5C31.8 6.2 35.6 7.1 37.6 9.7" stroke="#1B120F" stroke-width="2.8" stroke-linecap="round"/>
|
||||
</svg>
|
||||
|
||||
<span class="hdr-title">EXO<em>MY</em> GROUND CTRL</span>
|
||||
<span class="hdr-title" title="CUNO = Celestian Unified Navigation and Observation">CU<em>NO</em> GROUND CTRL</span>
|
||||
<div class="hdr-div"></div>
|
||||
<div class="hdr-badge">Mission Ops</div>
|
||||
<div class="hdr-gap"></div>
|
||||
@@ -167,53 +167,6 @@
|
||||
<span class="sr-key">Eingabe</span>
|
||||
<span class="sr-val b" id="stat-input">Joystick</span>
|
||||
</div>
|
||||
|
||||
<div class="ss-hdr"><div class="ss-hdr-line"></div><span class="ss-hdr-txt">Telemetrie</span><div class="ss-hdr-line"></div></div>
|
||||
|
||||
<div class="sr sr-gauge gauge-cpu">
|
||||
<span class="sr-key">CPU</span>
|
||||
<div class="gauge"><div class="gauge-fill" id="bar-cpu"></div></div>
|
||||
<span class="gauge-num" id="val-cpu">--</span>
|
||||
</div>
|
||||
<div class="sr sr-gauge gauge-temp">
|
||||
<span class="sr-key">Temp</span>
|
||||
<div class="gauge"><div class="gauge-fill" id="bar-temp"></div></div>
|
||||
<span class="gauge-num" id="val-temp">--</span>
|
||||
</div>
|
||||
<div class="sr sr-gauge gauge-mem">
|
||||
<span class="sr-key">RAM</span>
|
||||
<div class="gauge"><div class="gauge-fill" id="bar-mem"></div></div>
|
||||
<span class="gauge-num" id="val-mem">--</span>
|
||||
</div>
|
||||
|
||||
<div class="ss-hdr"><div class="ss-hdr-line"></div><span class="ss-hdr-txt">Netzwerk</span><div class="ss-hdr-line"></div></div>
|
||||
|
||||
<div class="sr">
|
||||
<span class="sr-led led-ok"></span>
|
||||
<span class="sr-key">WLAN</span>
|
||||
<span class="sr-val b" id="stat-wifi">--</span>
|
||||
</div>
|
||||
<div class="sr">
|
||||
<span class="sr-led led-blue"></span>
|
||||
<span class="sr-key">IP</span>
|
||||
<span class="sr-val b" id="stat-ips">--</span>
|
||||
</div>
|
||||
<div class="sr">
|
||||
<span class="sr-led led-blue"></span>
|
||||
<span class="sr-key">Uptime</span>
|
||||
<span class="sr-val b" id="stat-uptime">--</span>
|
||||
</div>
|
||||
<div class="sr">
|
||||
<span class="sr-led led-blue"></span>
|
||||
<span class="sr-key">Disk</span>
|
||||
<span class="sr-val b" id="stat-disk">--</span>
|
||||
</div>
|
||||
<div class="sr">
|
||||
<span class="sr-led led-off"></span>
|
||||
<span class="sr-key">Spannung</span>
|
||||
<span class="sr-val b" id="stat-undervoltage">--</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -736,17 +689,7 @@ function updateControlAvailability() {
|
||||
}
|
||||
|
||||
function clearSystemStatusDisplay() {
|
||||
setText("stat-wifi", "--");
|
||||
setText("stat-ips", "--");
|
||||
updateUndervoltageDisplay("--");
|
||||
setText("stat-uptime", "--");
|
||||
setText("stat-disk", "--");
|
||||
setText("val-cpu", "--");
|
||||
setText("val-temp", "--");
|
||||
setText("val-mem", "--");
|
||||
document.getElementById("bar-cpu").style.width = "0%";
|
||||
document.getElementById("bar-mem").style.width = "0%";
|
||||
document.getElementById("bar-temp").style.width = "0%";
|
||||
}
|
||||
|
||||
function clearRosLiveDisplay() {
|
||||
@@ -921,17 +864,7 @@ function updateServiceState(payload) {
|
||||
var services = payload.services || {};
|
||||
var cameraServiceState = String(services.camera || "");
|
||||
var cameraSettingsVersion = Number(services.camera_settings_version || 0);
|
||||
setText("stat-wifi", system.wifi || "unbekannt");
|
||||
setText("stat-ips", system.ips || "unbekannt");
|
||||
updateUndervoltageDisplay(system.undervoltage || "unbekannt", system.undervoltage_state || "unknown");
|
||||
setText("stat-uptime", system.uptime || "unbekannt");
|
||||
setText("stat-disk", system.disk_free || "unbekannt");
|
||||
setText("val-cpu", system.cpu_usage || "--");
|
||||
setText("val-temp", system.cpu_temperature || "--");
|
||||
setText("val-mem", system.memory_usage || "--");
|
||||
document.getElementById("bar-cpu").style.width = percentTextToWidth(system.cpu_usage);
|
||||
document.getElementById("bar-mem").style.width = percentTextToWidth(system.memory_usage);
|
||||
document.getElementById("bar-temp").style.width = temperatureTextToWidth(system.cpu_temperature);
|
||||
if (cameraServiceState === "active" && lastCameraServiceState && lastCameraServiceState !== "active") {
|
||||
setText("cam-state", "Verbinde...");
|
||||
triggerCameraRecovery();
|
||||
@@ -958,7 +891,6 @@ function fetchSystemStatus() {
|
||||
updateServiceState(payload);
|
||||
}).catch(function () {
|
||||
markApiConnection(false);
|
||||
setText("stat-wifi", "nicht erreichbar");
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user