IMU Norden kann kalibriert werden
This commit is contained in:
+12
-2
@@ -323,6 +323,7 @@ var imuOverlayState = {
|
||||
rollDeg: 0,
|
||||
pitchDeg: 0,
|
||||
yawDeg: 0,
|
||||
yawOffsetDeg: 0,
|
||||
lastUpdateAt: 0
|
||||
};
|
||||
|
||||
@@ -364,6 +365,10 @@ function normalizeHeadingDeg(value) {
|
||||
return heading;
|
||||
}
|
||||
|
||||
function applyImuHeadingOffset(yawDeg) {
|
||||
return normalizeHeadingDeg(Number(yawDeg || 0) + Number(imuOverlayState.yawOffsetDeg || 0));
|
||||
}
|
||||
|
||||
function updateImuOverlaySvg() {
|
||||
var group = document.getElementById("imu-horizon-group");
|
||||
var frame = document.getElementById("imu-horizon-frame");
|
||||
@@ -381,7 +386,7 @@ function updateImuOverlaySvg() {
|
||||
|
||||
var rollDeg = Number(imuOverlayState.rollDeg || 0);
|
||||
var pitchDeg = Number(imuOverlayState.pitchDeg || 0);
|
||||
var headingDeg = normalizeHeadingDeg(imuOverlayState.yawDeg);
|
||||
var headingDeg = applyImuHeadingOffset(imuOverlayState.yawDeg);
|
||||
var pitchOffset = Math.max(-55, Math.min(55, pitchDeg * 2.2));
|
||||
|
||||
group.setAttribute("opacity", "1");
|
||||
@@ -986,8 +991,13 @@ function updateUndervoltageDisplay(text, state) {
|
||||
function updateServiceState(payload) {
|
||||
var system = payload.system || {};
|
||||
var services = payload.services || {};
|
||||
var imuHeading = payload.imu_heading || {};
|
||||
var cameraServiceState = String(services.camera || "");
|
||||
var cameraSettingsVersion = Number(services.camera_settings_version || 0);
|
||||
if (typeof imuHeading.offset_deg === "number" && !isNaN(imuHeading.offset_deg)) {
|
||||
imuOverlayState.yawOffsetDeg = Number(imuHeading.offset_deg);
|
||||
updateImuOverlaySvg();
|
||||
}
|
||||
updateUndervoltageDisplay(system.undervoltage || "unbekannt", system.undervoltage_state || "unknown");
|
||||
if (cameraServiceState === "active" && lastCameraServiceState && lastCameraServiceState !== "active") {
|
||||
setText("cam-state", "Verbinde...");
|
||||
@@ -1114,7 +1124,7 @@ function drawImuHorizonOverlay(context, canvasWidth, canvasHeight, size) {
|
||||
var unit = size / 220;
|
||||
var rollRad = Number(imuOverlayState.rollDeg || 0) * Math.PI / 180;
|
||||
var pitchOffsetPx = Math.max(-55, Math.min(55, Number(imuOverlayState.pitchDeg || 0) * 2.2)) * unit;
|
||||
var headingDeg = normalizeHeadingDeg(imuOverlayState.yawDeg);
|
||||
var headingDeg = applyImuHeadingOffset(imuOverlayState.yawDeg);
|
||||
var rollDeg = Number(imuOverlayState.rollDeg || 0);
|
||||
var pitchDeg = Number(imuOverlayState.pitchDeg || 0);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user