diff --git a/public/boardViewer.html b/public/boardViewer.html index 41c279a..0f62c1c 100644 --- a/public/boardViewer.html +++ b/public/boardViewer.html @@ -349,7 +349,7 @@ function buildSkeletonFK(robot, angles) { const [nx, ny, nz] = m.normal ?? [0, 0, 1]; const normalWorld = new THREE.Vector3(nx, nz, -ny).transformDirection(childFrame); gArmMarkers.add(makeMarkerSquareOriented(posWorld, normalWorld, markerSizeM, col)); - gArmMarkers.add(makeSphere(posWorld, 0.003, col)); + gArmMarkers.add(makeSphere(posWorld, 0.0006, col)); } } } diff --git a/public/client.js b/public/client.js index b1221c4..1258324 100755 --- a/public/client.js +++ b/public/client.js @@ -346,6 +346,17 @@ function setHomingProgress(step, total, text) { if (txt) txt.textContent = text || `Schritt ${step} / ${total}`; } +function writePartialGCode(state) { + const axisMap = { x: 'X', y: 'Y', z: 'Z', a: 'A', b: 'B', c: 'C', e: 'E' }; + const parts = []; + for (const [key, axis] of Object.entries(axisMap)) { + if (state[key] != null) parts.push(`${axis}${Number(state[key]).toFixed(2)}`); + } + if (!parts.length) return; + const el = document.getElementById('gcodePayload'); + if (el) el.value = `G92 ${parts.join(' ')}`; +} + function showHomingResult(state) { // Raw JSON const jsonEl = document.getElementById('result-json'); @@ -518,6 +529,14 @@ async function runHoming() { el.value += `${evt.key}:\n${JSON.stringify(evt.value, null, 2)}\n\n`; el.scrollTop = el.scrollHeight; } + // Progressiver Skeleton-Update: accumulated_state nach jedem Gelenk + if (evt.key?.startsWith('state_') && evt.value) { + const frame = document.getElementById('board-viewer-frame'); + if (frame?.contentWindow) { + frame.contentWindow.postMessage({ type: 'homing-state', state: evt.value }, '*'); + } + writePartialGCode(evt.value); + } break; }