robot.json neue Marker einfügen

This commit is contained in:
chk
2026-06-10 17:36:23 +02:00
parent aba07a5bca
commit 5d13b7685c
3 changed files with 82 additions and 29 deletions

View File

@@ -706,8 +706,23 @@ app.post('/api/robot/assign-by-z', async (req, res) => {
if (!set && !link) {
return res.status(400).json({ error: 'Mindestens set oder link muss angegeben werden' });
}
const result = await assignByZRange(ROBOT_JSON, { zMin, zMax, set, link });
console.log(`robot/assign-by-z z=[${zMin}..${zMax}] set="${set}" link="${link}" → ${result.numChanged} geändert`);
// Triangulierte Marker aus dem letzten Board-Run als Zusatzquelle für
// Marker, die noch nicht in robot.json stehen (z.B. neu entdeckte Marker)
let extraMarkers = [];
try {
const latestRun = await findLatestBoardRun();
if (latestRun) {
const posesPath = path.join(boardDataDir, latestRun, 'aruco_marker_poses.json');
const poses = JSON.parse(await fsPromises.readFile(posesPath, 'utf8'));
extraMarkers = poses.markers ?? [];
}
} catch { /* kein 3b-Output vorhanden nur bestehende robot.json-Marker bearbeiten */ }
const result = await assignByZRange(ROBOT_JSON, { zMin, zMax, set, link, extraMarkers });
const added = result.changes.filter(c => c.action === 'added').length;
const updated = result.changes.filter(c => c.action === 'updated').length;
console.log(`robot/assign-by-z z=[${zMin}..${zMax}] set="${set}" link="${link}" → ${updated} aktualisiert, ${added} neu (von ${extraMarkers.length} 3b-Markern)`);
return res.json(result);
} catch (err) {
console.error('robot/assign-by-z error:', err);