copy of main files to this folder

This commit is contained in:
ChK
2025-12-22 15:55:36 +01:00
parent 0fd1e5d747
commit 05b35b22c8
703 changed files with 15299 additions and 0 deletions

View File

@@ -0,0 +1,110 @@
var isRunning = false;
var gamePadId = 0;
var gamepad = {};
let lastCheckTime = 0;
function checkGamePad() {
if(isRunning == false){return;}
const stepSize = "0.01";
const stepSizeXYZ = "0.5"; // 3 ist auch ok
const stepSizeE = "0.01";
var gp = navigator.getGamepads()[gamePadId]
var buttons = gp.buttons
var xyzSpeed = 10; // 100 geht auch
var psi = gp.axes[0];
var z = gp.axes[1];
var x = gp.axes[2];
var y = gp.axes[3];
// Dreieck zum Dreieck-Setzen
if (buttons[3].pressed) {
socketDriver.send(`G90 G1 X0 Y300 Z0 A${Math.PI/2} B${-1.0*Math.PI/2} C0 F${xyzSpeed}`);
}
if (buttons[4].pressed) {
//console.log("x=" + robot.x + " y=" + robot.y + " z=" + robot.z);
}
// X Button setzt eine Marke
if(buttons[0].pressed && (Date.now() - lastCheckTime > 500)){
lastCheckTime = Date.now()
console.log('FPoint!');
socketDriver.send('FPoint');
socketDriver.send('FShow');
}
// L1 und R1 Button to forward-backward in Point-List
if(gp.buttons[4].pressed && (Date.now() - lastCheckTime > 500)){
lastCheckTime = Date.now()
socketDriver.send('FMinus');
socketDriver.send('FShow');
}
if(gp.buttons[5].pressed && (Date.now() - lastCheckTime > 500)){
lastCheckTime = Date.now()
socketDriver.send('FPlus');
socketDriver.send('FShow');
}
if (x < -0.2) { socketDriver.send(`G91 G1 X+${stepSizeXYZ} F${xyzSpeed}`);}
if (x > 0.2) { socketDriver.send(`G91 G1 X-${stepSizeXYZ} F${xyzSpeed}`);}
if (y < -0.2) { socketDriver.send(`G91 G1 Y${stepSizeXYZ} F${xyzSpeed}`); }
if (y > 0.2) { socketDriver.send(`G91 G1 Y-${stepSizeXYZ} F${xyzSpeed}`);}
if (z < -0.2) { socketDriver.send(`G91 G1 Z${stepSizeXYZ} F${xyzSpeed}`); }
if (z > 0.2) { socketDriver.send(`G91 G1 Z-${stepSizeXYZ} F${xyzSpeed}`); }
// Greif-Richtung
// LeftRight
if(buttons[14].pressed){ socketDriver.send(`G91 G1 A${stepSize} F${xyzSpeed}`);}
if(buttons[15].pressed){ socketDriver.send(`G91 G1 A-${stepSize} F${xyzSpeed}`);}
// Up - Down
if(buttons[12].pressed){ socketDriver.send(`G91 G1 B${stepSize} F${xyzSpeed}`);}
if(buttons[13].pressed){ socketDriver.send(`G91 G1 B-${stepSize} F${xyzSpeed}`);}
// Drehung
if (psi < -0.2) { socketDriver.send(`G91 G1 C${stepSize} F${xyzSpeed}`); }
if (psi > 0.2) { socketDriver.send(`G91 G1 C-${stepSize} F${xyzSpeed}`); }
// Trigger-Buttons für Öffnen und Schliessen
if(buttons[6].pressed){socketDriver.send(`G91 G1 E-${stepSizeE} F${xyzSpeed}`);}
if(buttons[7].pressed){socketDriver.send(`G91 G1 E${stepSizeE} F${xyzSpeed}`);}
if (isRunning) { setTimeout(checkGamePad, 15);}
}
function gamepadHandler(event, connecting) {
gamepad = event.gamepad;
if (typeof gamepad === `undefined`) {
isRunning = false;
gamePadId = 0;
console.warn("GamePad kann nicht gefunden werden");
return;
}
if (connecting) {
console.log("GamePad " + event.gamepad.index + " connected");
gamePadId = gamepad.index;
isRunning = true;
setTimeout(checkGamePad, 20);
} else {
console.log("GamePad " +gamePadId +" disconnected");
isRunning = false;
gamePadId = 0;
}
}
window.addEventListener("gamepadconnected", function (e) { gamepadHandler(e, true); }, false);
window.addEventListener("gamepaddisconnected", function (e) { gamepadHandler(e, false); }, false);
document.addEventListener("touchstart", e => { console.log("TouchStart"); })

View File

@@ -0,0 +1,64 @@
document.onkeydown = checkKey;
function checkKey(e) {
e = e || window.event;
if(e.key == 'a' || e.key == 'A')
{
console.log("back to A position");
socketDriver.send(`G90 G1 X0 Y300 Z0 A${Math.PI/2} B-${Math.PI/2} C0 F100`);
}
// Hand-Winkel (Eulerwinkel)
else if(e.key == 'i' || e.key == 'I'){
socketDriver.send('G91 G1 B+0.1 F100');
}
else if(e.key == 'k' || e.key == 'K'){
socketDriver.send('G91 G1 B-0.1 F100');
}
else if(e.key == 'l' || e.key == 'L'){
socketDriver.send('G91 G1 A+0.1 F100');
}
else if(e.key == 'j' || e.key == 'J'){
socketDriver.send('G91 G1 A-0.1 F100');
}
else if(e.key == 'o' || e.key == 'O'){
socketDriver.send('G91 G1 C+0.1 F100');
}
else if(e.key == 'u' || e.key == 'U'){
socketDriver.send('G91 G1 C-0.1 F100');
}
// XYZ Koordinaten
else if(e.key == 'e' || e.key == 'E'){
socketDriver.send('G91 G1 Z+5 F100');
}
else if(e.key == 'd' || e.key == 'D'){
socketDriver.send('G91 G1 Z-5 F100');
}
else if(e.key == 's' || e.key == 'S'){
socketDriver.send('G91 G1 X5 F100');
}
else if(e.key == 'f' || e.key == 'S'){
socketDriver.send('G91 G1 X-5 F100');
}
else if(e.key == 'r' || e.key == 'R'){
socketDriver.send('G91 G1 Y5 F100');
}
else if(e.key == 'w' || e.key == 'W'){
socketDriver.send('G91 G1 Y-5 F100');
}
// File & Log-Operations
else if(e.key == ' '){
console.log('FPoint!')
socketDriver.send('FPoint');
}
else if(e.key == 'b'){
socketDriver.send('FMinus');
}
else if(e.key == 'n'){
socketDriver.send('FPlus');
}
}

View File

@@ -0,0 +1,25 @@
const protocolS = location.protocol === "https:" ? "wss://" : "ws://";
const robotURL = protocolS + location.host + "/ws/robot";
console.log("socketDriver try to connect to "+ robotURL);
const socketDriver = new WebSocket(robotURL);
socketDriver.onopen = () => { console.log("socketDriver WebSocket connected"); };
socketDriver.onmessage = (event) => {
if(event.data.toString().includes("position")){
console.log("Position: " + event.data);
}
else if(event.data.toString().includes("XYZ__FShow__XYZ")){
const content = event.data.toString().split("XYZ__FShow__XYZ")[1];
document.querySelectorAll("textarea#GCodeWindow.editor-look")[0].value = content;
}
else{
console.log('DATA SinceStartup: ' + (Date.now() - startTime).toString() +': ', event.data);
}
}
socketDriver.onclose = () => {console.log("socketDriver WebSocket is closing");};
socketDriver.onerror = (err) => { console.error("socketDriver socket error:", err); };

View File

@@ -0,0 +1,72 @@
// /public/app.js
// Small bootstrap moved out of index.html to satisfy CSP (`script-src 'self'`).
(function () {
const isSecure = location.protocol === 'https:';
const wsProto = isSecure ? 'wss' : 'ws';
const base = `${wsProto}://${location.host}`;
// Camera 0 with control channel
window.VideoService.attachStream({
url: `${base}/ws/video0`,
canvas: document.getElementById('canvas0'),
statusEl: document.getElementById('status0'),
control: {
resSelect: document.getElementById('res0'),
fpsSelect: document.getElementById('fps0'),
qSelect: document.getElementById('q0'),
applyBtn: document.getElementById('apply0'),
snapshotBtn: document.getElementById('snap0'),
startBtn: document.getElementById('start0'),
stopBtn: document.getElementById('stop0'),
snapshotOutEl: document.getElementById('snapshotLink'),
}
});
// Camera 1 (no control)
window.VideoService.attachStream({
url: `${base}/ws/video1`,
canvas: document.getElementById('canvas1'),
statusEl: document.getElementById('status1'),
});
// Run an automatic snapshot shortly after the page loads so the client
// receives the freshest annotated image/CSV on startup. This uses a
// synthetic click on the snapshot button; the handler will no-op if the
// WebSocket isn't open yet.
setTimeout(() => {
const snapBtn = document.getElementById('snap0');
if (snapBtn) snapBtn.click();
}, 200);
// Attach handlers for the Point/Up/Down buttons (no inline JS, CSP-safe)
const btnPoint = document.getElementById('btnPoint');
const btnDown = document.getElementById('btnDown');
const btnUp = document.getElementById('btnUp');
if (btnPoint) btnPoint.addEventListener('click', () => {
console.log('FPoint!');
try { socketDriver.send('FPoint'); socketDriver.send('FShow'); } catch (e) { console.error(e); }
});
if (btnDown) btnDown.addEventListener('click', () => {
console.log('FPlus');
try { socketDriver.send('FPlus'); socketDriver.send('FShow'); } catch (e) { console.error(e); }
});
if (btnUp) btnUp.addEventListener('click', () => {
console.log('FMinus');
try { socketDriver.send('FMinus'); socketDriver.send('FShow'); } catch (e) { console.error(e); }
});
// Other buttons that were previously using inline onclicks.
const btnInfo = document.getElementById('b_M114');
const btnNull = document.getElementById('b_G28');
const btnListFile = document.getElementById('btnListFile');
const btnSendGCode = document.getElementById('btnSendGCode');
if (btnInfo) btnInfo.addEventListener('click', () => { try { socketDriver.send('M114'); } catch (e) { console.error(e); } });
if (btnNull) btnNull.addEventListener('click', () => { try { socketDriver.send('G28'); } catch (e) { console.error(e); } });
if (btnListFile) btnListFile.addEventListener('click', () => { try { socketDriver.send('FShow'); } catch (e) { console.error(e); } });
if (btnSendGCode) btnSendGCode.addEventListener('click', () => {
try {
const input = document.getElementById('GKarth');
if (input && input.value) socketDriver.send(input.value);
} catch (e) { console.error(e); }
});
})();

View File

@@ -0,0 +1,23 @@
document.getElementById("b_uparrow").addEventListener('click',() => { socketDriver.send(`G91 G1 Z10 F100`);});
document.getElementById("b_downarw").addEventListener('click',() => { socketDriver.send(`G90 G1 Z-10 F100`);});
document.getElementById("b_right").addEventListener('click',() => { socketDriver.send(`G90 G1 X10 F100`);});
document.getElementById("b_left").addEventListener('click',() => { socketDriver.send(`G90 G1 X-10 F100`);});
document.getElementById("b_forward").addEventListener('click',() => { socketDriver.send(`G90 G1 Y10 F100`);});
document.getElementById("b_backward").addEventListener('click',() => { socketDriver.send(`G90 G1 Y-10 F100`);});
document.getElementById("b_aPlus").addEventListener('click',() => { socketDriver.send(`G91 G1 A0.10 F100`);});
document.getElementById("b_aMinus").addEventListener('click',() => { socketDriver.send(`G91 G1 A-0.10 F100`);});
document.getElementById("b_bPlus").addEventListener('click',() => { socketDriver.send(`G91 G1 B0.10 F100`);});
document.getElementById("b_bMinus").addEventListener('click',() => { socketDriver.send(`G91 G1 B-0.10 F100`);});
document.getElementById("b_cPlus").addEventListener('click',() => { socketDriver.send(`G91 G1 C0.10 F100`);});
document.getElementById("b_cMinus").addEventListener('click',() => { socketDriver.send(`G91 G1 C-0.10 F100`);});
document.getElementById("b_ePlus").addEventListener('click',() => { socketDriver.send(`G91 G1 E0.10 F100`);});
document.getElementById("b_eMinus").addEventListener('click',() => { socketDriver.send(`G91 G1 E-0.10 F100`);});
document.getElementById("b_default").addEventListener('click',() => { socketDriver.send(`G90 G1 X0 Y300 Z0 A${Math.PI/2} B-${Math.PI/2} C0 F100`);});
document.getElementById("b_G28").addEventListener('click',() => { socketDriver.send(`G28`);});
document.getElementById("b_M114").addEventListener('click',() => { socketDriver.send(`M114`);});

View File

@@ -0,0 +1,108 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>Dual Camera Stream (HTTPS + WSS)</title>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<script src="WebSocket.js" defer></script>
<script src="buttonCmd.js" defer></script>
<script src="GamePad.js" defer></script>
<script src="KeyboardInput.js" defer></script>
<link rel="stylesheet" href="indexA.css">
</head>
<body>
<h1>Robot Control</h1>
<div class="grid">
<!-- Camera 0 -->
<section class="panel">
<h2>Camera 0</h2>
<div class="video-wrap">
<canvas id="canvas0" width="1280" height="720"></canvas>
<img id="overlayImg"
src="/snapshots/snapshot_video0_1765356085372_two_cam_overlay.png">
</div>
<div id="status0" class="status">Connecting…</div>
</section>
<!-- Camera 1 -->
<section class="panel">
<h2>Camera 1</h2>
<div class="video-wrap">
<canvas id="canvas1" width="1280" height="720"></canvas>
</div>
<div id="status1" class="status">Connecting…</div>
</section>
<section class="panel">
<div class="controls">
<div style="display:flex; gap:0.5rem; align-items:end;">
<button id="snap0">Snapshot</button>
</div>
</div>
<div id="snapshotLink" class="status"></div>
<div id="csvTable" class="status"></div>
</section>
<section class="panel">
<div id="divButtons">
<h3>Controls</h3>
<button id="b_uparrow">Up</button>
<button id="b_downarw">Down</button>
</br/>
<button id="b_right">Right</button>
<button id="b_left">Left</button>
<br/>
<button id="b_forward">Forward</button>
<button id="b_backward">Backward</button>
<br/>
<button id="b_M114">Info</button>
<button id="b_G28">Null</button>
<button id="b_default">△ Default</button>
<br/>
<br/>
<button id="b_aPlus" >a+</button>
<button id="b_aMinus">a-</button>
<br/>
<button id="b_bPlus" >B+</button>
<button id="b_bMinus">B-</button>
<br/>
<button id="b_cPlus" >C+</button>
<button id="b_cMinus">C-</button>
<br/>
<button id="b_ePlus" >E+</button>
<button id="b_eMinus">E-</button>
</div>
<div id="divGCodeWindow">
<div id="GCode">
<form onsubmit="return false;"><input id="GKarth"/><button id="btnSendGCode" type="button">Send GCode</button></form>
<br/>
</div>
<button id="btnListFile" type="button">ListFile</button>
<br/>
<textarea id="GCodeWindow" class="editor-look" readonly>
</textarea>
<br/>
<button id="btnPoint">🗙 Point</button>
<button id="btnDown"></button>
<button id="btnUp"></button>
</div>
</section>
</div>
<!-- External scripts only (CSP-safe, no inline JS) -->
<script src="/readCSV.js" defer></script>
<script src="/videoService.js" defer></script>
<script src="/app.js" defer></script>
</body>
</html>

View File

@@ -0,0 +1,203 @@
:root { color-scheme: dark light; }
/* Overlay opacity is configurable here. Set to 1 to let PNG alpha be authoritative */
:root {
--overlay-opacity: 1; /* default overlay alpha applied client-side */
}
body {
font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
margin: 0;
padding: 1rem;
background: #0b1020;
color: #e7eaf6;
}
h1, h2 {
margin: 0.5rem 0 0.25rem;
}
.grid {
display: grid;
gap: 1rem;
/*
grid-auto-flow: column;
grid-auto-columns: 1280px;
justify-content: start;
*/
grid-template-columns: repeat(auto-fit, minmax(1280px, 1fr));
align-items: start;
}
.panel {
background: #141b34;
border: 1px solid #242c4f;
border-radius: 12px;
padding: 1rem;
box-shadow: 0 10px 24px rgba(0,0,0,0.25);
}
.video-wrap {
position: relative;
background: #000;
border-radius: 8px;
overflow: hidden;
/* Keep a 16:9 box that doesn't stretch beyond the source resolution */
width: 100%;
max-width: 1280px;
aspect-ratio: 16 / 9;
margin: 0 auto;
}
/* Ensure canvas and overlay are sized identically and keep the same aspect ratio
so overlays align correctly when the window is resized. */
.video-wrap canvas,
.video-wrap img,
#overlayImg {
position: absolute;
inset: 0; /* top:0; right:0; bottom:0; left:0 */
width: 100%;
height: 100%;
/* Use `contain` so both layers scale uniformly and show letterboxing instead
of stretching or cropping when the container size differs from the image. */
object-fit: contain;
background: #000;
}
.video-wrap canvas {
z-index: 1;
}
.video-wrap img,
#overlayImg {
z-index: 2;
pointer-events: none; /* don't block interactions with the canvas */
opacity: var(--overlay-opacity);
}
.status {
font-size: 0.9rem;
opacity: 0.85;
margin: 0.5rem 0 0;
}
.controls {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
gap: 0.5rem;
margin-top: 0.75rem;
}
.controls label {
display: grid;
gap: 0.25rem;
font-size: 0.9rem;
}
select, input, button {
padding: 0.5rem 0.6rem;
border-radius: 8px;
border: 1px solid #2d3766;
background: #0d1530;
color: #e7eaf6;
}
button.primary {
background: #355dff;
border-color: #355dff;
}
a {
color: #9eb8ff;
}
footer {
margin-top: 1.25rem;
opacity: 0.7;
font-size: 0.9rem;
}
.muted {
opacity: 0.8;
}
/* Ensure overlay uses contain and respects alpha channel from the PNG
(the PNG's transparency is the authoritative source of which pixels
are transparent; CSS opacity only adjusts global alpha). */
#overlayImg {
position: absolute;
inset: 0; /* shorthand for top:0; right:0; bottom:0; left:0; */
width: 100%;
height: 100%;
pointer-events: none;
opacity: var(--overlay-opacity);
object-fit: contain; /* preserve aspect ratio and don't distort */
background: transparent;
}
/* CSV table styles */
.csv-table {
width: 440px; /* 4 columns * 200px each */
border-collapse: collapse;
margin-top: 0.5rem;
table-layout: fixed; /* use fixed layout so column widths are respected */
}
.csv-table th, .csv-table td {
border: 1px solid rgba(255,255,255,0.06);
padding: 0.35rem 0.5rem;
text-align: center;
font-size: 0.9rem;
width: 110px; /* fixed column width */
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.csv-table th {
background: rgba(255,255,255,0.02);
font-weight: 600;
}
.csv-table tr:nth-child(even) td {
background: rgba(255,255,255,0.01);
}
/* Right-align CSV numeric data and use tabular digits for stable column alignment */
.csv-table td { text-align: right; font-variant-numeric: tabular-nums; }
#GCodeWindow {
width: 100%;
height: 200px;
}
/* Layout: place the buttons and GCode window side-by-side in their panel.
- `#divButtons` gets a fixed ~300px width
- `#divGCodeWindow` uses the remaining width
- On small screens they stack vertically for usability */
/* Use floats for a predictable two-column layout inside the panel. */
#divButtons {
float: left;
width: 300px;
box-sizing: border-box;
margin-right: 1rem;
}
#divGCodeWindow {
display: block;
margin-left: 320px; /* 300px left column + 1rem gap */
box-sizing: border-box;
}
/* Clear floats inside panels so subsequent content flows correctly */
.panel::after {
content: "";
display: table;
clear: both;
}
@media (max-width: 800px) {
#divButtons, #divGCodeWindow {
display: block;
float: none;
width: 100%;
margin-left: 0;
margin-right: 0;
}
}

View File

@@ -0,0 +1,76 @@
// public/readCSV.js
// Fetch a CSV file and render a small table into the given container.
// Usage: window.readCSV.renderCSV(containerOrId, csvUrl)
(function () {
async function renderCSV(container, csvUrl) {
console.log("readCSV should start");
console.log('readCSV.renderCSV', container, csvUrl);
const el = (typeof container === 'string') ? document.getElementById(container) : container;
if (!el) return;
if (!csvUrl) {
el.innerHTML = '<em>No CSV URL provided</em>';
return;
}
el.innerHTML = 'Loading CSV…';
try {
const res = await fetch(csvUrl, { cache: 'no-store' });
if (!res.ok) {
el.innerHTML = `<em>CSV not found (HTTP ${res.status})</em>`;
return;
}
const text = await res.text();
const lines = text.trim().split(/\r?\n/).filter(Boolean);
if (!lines.length) {
el.innerHTML = '<em>CSV is empty</em>';
return;
}
const headers = lines[0].split(',').map(h => h.trim());
// Look for id,x,y,z columns (case-insensitive)
const lower = headers.map(h => h.toLowerCase());
const ids = {
id: lower.indexOf('id'),
x: lower.indexOf('x_mm'),
y: lower.indexOf('y_mm'),
z: lower.indexOf('z_mm')
};
// If any of these are missing, show a helpful message
if (ids.id === -1 || ids.x === -1 || ids.y === -1 || ids.z === -1) {
el.innerHTML = `<em>CSV does not contain required columns: id, x, y, z</em> ${csvUrl}`;
return;
}
// Build table
const table = document.createElement('table');
table.className = 'csv-table';
const thead = table.createTHead();
const thr = thead.insertRow();
['id', 'x [mm]', 'y [mm]', 'z [mm]'].forEach(h => {
const th = document.createElement('th');
th.textContent = h;
thr.appendChild(th);
});
const tbody = table.createTBody();
for (let i = 1; i < lines.length; i++) {
const row = lines[i].split(',').map(c => c.trim());
// Skip if row doesn't have enough columns
if (row.length < headers.length) continue;
const tr = tbody.insertRow();
['id', 'x', 'y', 'z'].forEach(k => {
const td = tr.insertCell();
td.textContent = row[ids[k]] ?? '';
});
}
el.innerHTML = ''; // clear
el.appendChild(table);
} catch (err) {
console.error('readCSV error', err);
el.innerHTML = `<em>Error loading CSV</em>`;
}
}
window.readCSV = { renderCSV };
})();

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

View File

@@ -0,0 +1,9 @@
id,x_mm,y_mm,z_mm,roll_deg,pitch_deg,yaw_deg
camera1,461.226,163.150,208.814,-115.601,2.852,108.987
camera2,368.003,-324.025,849.279,-147.633,-3.697,60.975
20,-27.787,-370.901,-104.452,-0.238,-4.375,143.811
25,-67.077,-165.677,-12.623,-2.256,0.110,87.366
50,0.002,-0.008,-0.007,-0.557,-0.254,0.228
71,140.418,0.009,0.093,0.905,-2.137,1.508
76,-204.436,-90.385,-94.522,-52.679,39.273,-87.214
101,0.016,-80.028,-0.025,1.056,-2.213,0.260
1 id x_mm y_mm z_mm roll_deg pitch_deg yaw_deg
2 camera1 461.226 163.150 208.814 -115.601 2.852 108.987
3 camera2 368.003 -324.025 849.279 -147.633 -3.697 60.975
4 20 -27.787 -370.901 -104.452 -0.238 -4.375 143.811
5 25 -67.077 -165.677 -12.623 -2.256 0.110 87.366
6 50 0.002 -0.008 -0.007 -0.557 -0.254 0.228
7 71 140.418 0.009 0.093 0.905 -2.137 1.508
8 76 -204.436 -90.385 -94.522 -52.679 39.273 -87.214
9 101 0.016 -80.028 -0.025 1.056 -2.213 0.260

View File

@@ -0,0 +1,123 @@
{
"metadata": {
"timestamp": "2025-12-17 12:29:14",
"reference_markers": [
50,
71,
101
],
"dict": "DICT_4X4_250",
"marker_size_mm": 25.0,
"rms_refs_px_cam1": 0.01816248951344627,
"rms_refs_px_cam2": 0.49688754115479944,
"description": "Two-camera joint optimization with triangulation"
},
"cameras": [
{
"id": "camera1",
"position_mm": [
461.2260243096291,
163.15047116357306,
208.81423321244827
],
"orientation_deg": {
"roll": -115.60069066047194,
"pitch": 2.8518474088280343,
"yaw": 108.98699397077662
}
},
{
"id": "camera2",
"position_mm": [
368.0032092105987,
-324.02483230064206,
849.2788823044326
],
"orientation_deg": {
"roll": -147.6328488975886,
"pitch": -3.697144586874371,
"yaw": 60.97510432458154
}
}
],
"markers": [
{
"id": 20,
"position_mm": [
-27.78722965547953,
-370.90144636184993,
-104.45169497289619
],
"orientation_deg": {
"roll": -0.23809413256188228,
"pitch": -4.374834208590023,
"yaw": 143.81085305206332
}
},
{
"id": 25,
"position_mm": [
-67.07681274414062,
-165.6768341064453,
-12.623200416564941
],
"orientation_deg": {
"roll": -2.2561967939168364,
"pitch": 0.10968211192904707,
"yaw": 87.36599578819637
}
},
{
"id": 50,
"position_mm": [
0.0022646484430879354,
-0.007531278766691685,
-0.006839004810899496
],
"orientation_deg": {
"roll": -0.5572651387919108,
"pitch": -0.2540478856154707,
"yaw": 0.22792865561204573
}
},
{
"id": 71,
"position_mm": [
140.41845703125,
0.009271804243326187,
0.092652328312397
],
"orientation_deg": {
"roll": 0.9053221063108222,
"pitch": -2.1366085994661774,
"yaw": 1.5077277441713781
}
},
{
"id": 76,
"position_mm": [
-204.43634100254326,
-90.3850951365776,
-94.52184634518557
],
"orientation_deg": {
"roll": -52.67872835725091,
"pitch": 39.27299014262584,
"yaw": -87.21449748201128
}
},
{
"id": 101,
"position_mm": [
0.01583130471408367,
-80.02842712402344,
-0.02530261129140854
],
"orientation_deg": {
"roll": 1.0558520137504372,
"pitch": -2.2130377151018776,
"yaw": 0.2601617066921372
}
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

View File

@@ -0,0 +1,7 @@
id,x_mm,y_mm,z_mm,roll_deg,pitch_deg,yaw_deg
camera1,744.393,-11.882,212.666,-115.660,2.222,96.551
camera2,527.995,-443.448,881.443,-149.405,-0.614,30.363
25,146.987,-219.644,-14.453,-1.475,-0.713,75.762
50,-1.518,0.089,-0.276,-0.596,-1.297,0.062
71,139.840,0.042,-0.031,0.036,-1.975,-0.196
101,-2.288,-80.358,-0.673,0.487,-1.568,-0.808
1 id x_mm y_mm z_mm roll_deg pitch_deg yaw_deg
2 camera1 744.393 -11.882 212.666 -115.660 2.222 96.551
3 camera2 527.995 -443.448 881.443 -149.405 -0.614 30.363
4 25 146.987 -219.644 -14.453 -1.475 -0.713 75.762
5 50 -1.518 0.089 -0.276 -0.596 -1.297 0.062
6 71 139.840 0.042 -0.031 0.036 -1.975 -0.196
7 101 -2.288 -80.358 -0.673 0.487 -1.568 -0.808

View File

@@ -0,0 +1,97 @@
{
"metadata": {
"timestamp": "2025-12-17 12:40:45",
"reference_markers": [
50,
71,
101
],
"dict": "DICT_4X4_250",
"marker_size_mm": 25.0,
"rms_refs_px_cam1": 0.45907110184149624,
"rms_refs_px_cam2": 1.8220535514255254,
"description": "Two-camera joint optimization with triangulation"
},
"cameras": [
{
"id": "camera1",
"position_mm": [
744.3932024096008,
-11.882499535240939,
212.66641344590275
],
"orientation_deg": {
"roll": -115.66036055568036,
"pitch": 2.2216915445453633,
"yaw": 96.55059294849401
}
},
{
"id": "camera2",
"position_mm": [
527.9947219168113,
-443.4476403624862,
881.4430227800225
],
"orientation_deg": {
"roll": -149.4054202299282,
"pitch": -0.6136995548592902,
"yaw": 30.363222205495898
}
}
],
"markers": [
{
"id": 25,
"position_mm": [
146.98660278320312,
-219.6441650390625,
-14.453299522399902
],
"orientation_deg": {
"roll": -1.4751980332876062,
"pitch": -0.7130443690892287,
"yaw": 75.76221922077491
}
},
{
"id": 50,
"position_mm": [
-1.5184317827224731,
0.08936363458633423,
-0.27635297179222107
],
"orientation_deg": {
"roll": -0.5960699180502376,
"pitch": -1.296579669039671,
"yaw": 0.06174649369085999
}
},
{
"id": 71,
"position_mm": [
139.83982849121094,
0.04223456606268883,
-0.03088134340941906
],
"orientation_deg": {
"roll": 0.03560029736445153,
"pitch": -1.9746336879120467,
"yaw": -0.1957084044000817
}
},
{
"id": 101,
"position_mm": [
-2.2875027656555176,
-80.35816192626953,
-0.673177182674408
],
"orientation_deg": {
"roll": 0.4866379194238045,
"pitch": -1.5677675033219693,
"yaw": -0.8081315765533771
}
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

View File

@@ -0,0 +1,8 @@
id,x_mm,y_mm,z_mm,roll_deg,pitch_deg,yaw_deg
camera1,498.210,88.623,206.052,-119.838,2.196,102.110
camera2,334.074,-396.876,854.525,-147.250,-0.513,39.282
25,-93.825,-211.994,-12.439,-1.046,-0.406,84.805
50,-0.004,0.003,0.012,-0.106,-0.397,-0.042
71,140.045,-0.037,-0.014,0.502,-1.471,0.890
76,-347.458,-82.554,-72.496,-4.794,0.320,-131.339
101,-0.044,-80.081,-0.025,1.333,-0.936,-0.171
1 id x_mm y_mm z_mm roll_deg pitch_deg yaw_deg
2 camera1 498.210 88.623 206.052 -119.838 2.196 102.110
3 camera2 334.074 -396.876 854.525 -147.250 -0.513 39.282
4 25 -93.825 -211.994 -12.439 -1.046 -0.406 84.805
5 50 -0.004 0.003 0.012 -0.106 -0.397 -0.042
6 71 140.045 -0.037 -0.014 0.502 -1.471 0.890
7 76 -347.458 -82.554 -72.496 -4.794 0.320 -131.339
8 101 -0.044 -80.081 -0.025 1.333 -0.936 -0.171

View File

@@ -0,0 +1,110 @@
{
"metadata": {
"timestamp": "2025-12-17 12:43:26",
"reference_markers": [
50,
71,
101
],
"dict": "DICT_4X4_250",
"marker_size_mm": 25.0,
"rms_refs_px_cam1": 0.0689596563850227,
"rms_refs_px_cam2": 0.15658089852267823,
"description": "Two-camera joint optimization with triangulation"
},
"cameras": [
{
"id": "camera1",
"position_mm": [
498.210011232767,
88.62307649604217,
206.05227415389444
],
"orientation_deg": {
"roll": -119.83827305973767,
"pitch": 2.1955471129077124,
"yaw": 102.10968938445795
}
},
{
"id": "camera2",
"position_mm": [
334.0739312137807,
-396.87615758651145,
854.5248655333136
],
"orientation_deg": {
"roll": -147.24989987242014,
"pitch": -0.5126818772143938,
"yaw": 39.28200265150137
}
}
],
"markers": [
{
"id": 25,
"position_mm": [
-93.8246078491211,
-211.99365234375,
-12.43923568725586
],
"orientation_deg": {
"roll": -1.0455208006289969,
"pitch": -0.405997221444331,
"yaw": 84.80479451113972
}
},
{
"id": 50,
"position_mm": [
-0.004142458084970713,
0.0031922683119773865,
0.011907931417226791
],
"orientation_deg": {
"roll": -0.10642453044301076,
"pitch": -0.3968296567842359,
"yaw": -0.04171026817406525
}
},
{
"id": 71,
"position_mm": [
140.0451202392578,
-0.037084344774484634,
-0.014320459216833115
],
"orientation_deg": {
"roll": 0.5023078026002353,
"pitch": -1.4710306891384899,
"yaw": 0.8898461679228588
}
},
{
"id": 76,
"position_mm": [
-347.4584356767253,
-82.55446010770595,
-72.49557614124402
],
"orientation_deg": {
"roll": -4.793917356113556,
"pitch": 0.3203544844260641,
"yaw": -131.3390863237459
}
},
{
"id": 101,
"position_mm": [
-0.043663639575242996,
-80.08061218261719,
-0.024777762591838837
],
"orientation_deg": {
"roll": 1.3330315657696694,
"pitch": -0.9363310058749773,
"yaw": -0.17089002041329374
}
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

View File

@@ -0,0 +1,8 @@
id,x_mm,y_mm,z_mm,roll_deg,pitch_deg,yaw_deg
camera1,499.822,88.859,207.627,-119.927,2.190,102.072
camera2,324.617,-392.143,862.639,-147.982,-0.790,39.250
25,-93.860,-212.481,-12.595,-1.949,-0.269,83.807
50,-0.004,0.003,0.012,-0.258,-0.650,0.428
71,140.046,-0.037,-0.013,0.306,-2.118,0.609
76,-340.361,-86.238,-67.321,-4.926,2.286,-131.705
101,-0.043,-80.081,-0.024,1.357,-1.022,-0.205
1 id x_mm y_mm z_mm roll_deg pitch_deg yaw_deg
2 camera1 499.822 88.859 207.627 -119.927 2.190 102.072
3 camera2 324.617 -392.143 862.639 -147.982 -0.790 39.250
4 25 -93.860 -212.481 -12.595 -1.949 -0.269 83.807
5 50 -0.004 0.003 0.012 -0.258 -0.650 0.428
6 71 140.046 -0.037 -0.013 0.306 -2.118 0.609
7 76 -340.361 -86.238 -67.321 -4.926 2.286 -131.705
8 101 -0.043 -80.081 -0.024 1.357 -1.022 -0.205

View File

@@ -0,0 +1,110 @@
{
"metadata": {
"timestamp": "2025-12-17 12:45:50",
"reference_markers": [
50,
71,
101
],
"dict": "DICT_4X4_250",
"marker_size_mm": 25.0,
"rms_refs_px_cam1": 0.06868263740095656,
"rms_refs_px_cam2": 0.15630357297595754,
"description": "Two-camera joint optimization with triangulation"
},
"cameras": [
{
"id": "camera1",
"position_mm": [
499.822142506545,
88.85939416980528,
207.62721199733437
],
"orientation_deg": {
"roll": -119.92745477596469,
"pitch": 2.190488293707874,
"yaw": 102.07241332921645
}
},
{
"id": "camera2",
"position_mm": [
324.6169326616307,
-392.1429491628629,
862.638817313126
],
"orientation_deg": {
"roll": -147.98179815319492,
"pitch": -0.7895678131424055,
"yaw": 39.24991008226242
}
}
],
"markers": [
{
"id": 25,
"position_mm": [
-93.85962677001953,
-212.4806365966797,
-12.594773292541504
],
"orientation_deg": {
"roll": -1.9485429121680113,
"pitch": -0.2687673923849189,
"yaw": 83.80737730916069
}
},
{
"id": 50,
"position_mm": [
-0.003994773142039776,
0.003109264886006713,
0.012178612872958183
],
"orientation_deg": {
"roll": -0.25790734082294964,
"pitch": -0.6498026480254269,
"yaw": 0.428441829560328
}
},
{
"id": 71,
"position_mm": [
140.04592895507812,
-0.03738624230027199,
-0.01319770235568285
],
"orientation_deg": {
"roll": 0.3055486706690755,
"pitch": -2.1177898361268723,
"yaw": 0.6091614832951404
}
},
{
"id": 76,
"position_mm": [
-340.36073770675137,
-86.23836578004335,
-67.32056820469123
],
"orientation_deg": {
"roll": -4.926387915431779,
"pitch": 2.2860961549797616,
"yaw": -131.70545931002823
}
},
{
"id": 101,
"position_mm": [
-0.04275330901145935,
-80.08077239990234,
-0.023683607578277588
],
"orientation_deg": {
"roll": 1.356930847634746,
"pitch": -1.0223328395484648,
"yaw": -0.20516192462359795
}
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

View File

@@ -0,0 +1,8 @@
id,x_mm,y_mm,z_mm,roll_deg,pitch_deg,yaw_deg
camera1,395.016,274.958,206.045,-119.984,2.814,119.358
camera2,359.471,-267.295,863.813,-147.768,-2.538,55.530
25,-78.352,-188.494,-11.881,-1.886,0.748,102.089
50,0.003,-0.035,-0.029,-0.393,-0.996,1.561
71,140.373,-0.216,-0.009,0.798,-1.562,1.944
76,-459.707,-170.694,-97.767,-2.463,3.181,-112.929
101,0.061,-80.295,0.055,0.729,-1.048,0.758
1 id x_mm y_mm z_mm roll_deg pitch_deg yaw_deg
2 camera1 395.016 274.958 206.045 -119.984 2.814 119.358
3 camera2 359.471 -267.295 863.813 -147.768 -2.538 55.530
4 25 -78.352 -188.494 -11.881 -1.886 0.748 102.089
5 50 0.003 -0.035 -0.029 -0.393 -0.996 1.561
6 71 140.373 -0.216 -0.009 0.798 -1.562 1.944
7 76 -459.707 -170.694 -97.767 -2.463 3.181 -112.929
8 101 0.061 -80.295 0.055 0.729 -1.048 0.758

View File

@@ -0,0 +1,110 @@
{
"metadata": {
"timestamp": "2025-12-17 12:51:11",
"reference_markers": [
50,
71,
101
],
"dict": "DICT_4X4_250",
"marker_size_mm": 25.0,
"rms_refs_px_cam1": 0.6323697652065153,
"rms_refs_px_cam2": 0.6489014675423443,
"description": "Two-camera joint optimization with triangulation"
},
"cameras": [
{
"id": "camera1",
"position_mm": [
395.01563676863606,
274.9583596464833,
206.04475397752364
],
"orientation_deg": {
"roll": -119.98431855701496,
"pitch": 2.8142321507417067,
"yaw": 119.35809543020302
}
},
{
"id": "camera2",
"position_mm": [
359.47129678000016,
-267.2947756235871,
863.8126650240622
],
"orientation_deg": {
"roll": -147.76809010492943,
"pitch": -2.5376982238056183,
"yaw": 55.52992636638746
}
}
],
"markers": [
{
"id": 25,
"position_mm": [
-78.35247802734375,
-188.4938201904297,
-11.880936622619629
],
"orientation_deg": {
"roll": -1.885989573087267,
"pitch": 0.7475050867613423,
"yaw": 102.08882951321951
}
},
{
"id": 50,
"position_mm": [
0.002867116592824459,
-0.034943774342536926,
-0.02899026684463024
],
"orientation_deg": {
"roll": -0.39255711964707385,
"pitch": -0.9959750123875623,
"yaw": 1.5614975288119828
}
},
{
"id": 71,
"position_mm": [
140.3726043701172,
-0.21625664830207825,
-0.00919211097061634
],
"orientation_deg": {
"roll": 0.7984134246053606,
"pitch": -1.562078718233375,
"yaw": 1.9439997964972604
}
},
{
"id": 76,
"position_mm": [
-459.70712987851766,
-170.69410468938494,
-97.76705043570367
],
"orientation_deg": {
"roll": -2.4626449410414946,
"pitch": 3.1808466940482707,
"yaw": -112.9286987372601
}
},
{
"id": 101,
"position_mm": [
0.06145252659916878,
-80.29531860351562,
0.055326566100120544
],
"orientation_deg": {
"roll": 0.7289847565857819,
"pitch": -1.0475664492494143,
"yaw": 0.7580539936823688
}
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

View File

@@ -0,0 +1,8 @@
id,x_mm,y_mm,z_mm,roll_deg,pitch_deg,yaw_deg
camera1,536.560,19.088,206.377,-106.622,2.737,89.850
camera2,265.697,-417.719,863.004,-147.946,-0.838,27.172
25,-105.950,-153.015,-13.182,-0.890,-0.149,73.247
50,-0.040,-0.018,-0.033,-0.879,-1.449,-0.958
71,140.010,-0.012,-0.131,0.402,-1.339,-0.189
76,-426.751,36.837,-80.533,-2.174,0.185,-140.318
101,-0.154,-80.157,-0.149,1.401,-1.417,-0.671
1 id x_mm y_mm z_mm roll_deg pitch_deg yaw_deg
2 camera1 536.560 19.088 206.377 -106.622 2.737 89.850
3 camera2 265.697 -417.719 863.004 -147.946 -0.838 27.172
4 25 -105.950 -153.015 -13.182 -0.890 -0.149 73.247
5 50 -0.040 -0.018 -0.033 -0.879 -1.449 -0.958
6 71 140.010 -0.012 -0.131 0.402 -1.339 -0.189
7 76 -426.751 36.837 -80.533 -2.174 0.185 -140.318
8 101 -0.154 -80.157 -0.149 1.401 -1.417 -0.671

View File

@@ -0,0 +1,110 @@
{
"metadata": {
"timestamp": "2025-12-17 12:52:57",
"reference_markers": [
50,
71,
101
],
"dict": "DICT_4X4_250",
"marker_size_mm": 25.0,
"rms_refs_px_cam1": 0.24427057867694885,
"rms_refs_px_cam2": 0.27827582635161247,
"description": "Two-camera joint optimization with triangulation"
},
"cameras": [
{
"id": "camera1",
"position_mm": [
536.5599698999005,
19.08812610913911,
206.37737338942568
],
"orientation_deg": {
"roll": -106.62238029916044,
"pitch": 2.73698636164054,
"yaw": 89.84958179049634
}
},
{
"id": "camera2",
"position_mm": [
265.696908061668,
-417.71859377662963,
863.0037755691174
],
"orientation_deg": {
"roll": -147.94607328148066,
"pitch": -0.8376675719210364,
"yaw": 27.17235921730388
}
}
],
"markers": [
{
"id": 25,
"position_mm": [
-105.95045471191406,
-153.015380859375,
-13.182010650634766
],
"orientation_deg": {
"roll": -0.8902363626829162,
"pitch": -0.14934531032116036,
"yaw": 73.24720041399077
}
},
{
"id": 50,
"position_mm": [
-0.040261898189783096,
-0.018160216510295868,
-0.032540079206228256
],
"orientation_deg": {
"roll": -0.8788475817184255,
"pitch": -1.4493986331576718,
"yaw": -0.9580865386218039
}
},
{
"id": 71,
"position_mm": [
140.0104522705078,
-0.011823506094515324,
-0.13130724430084229
],
"orientation_deg": {
"roll": 0.40245628021742036,
"pitch": -1.339452511723197,
"yaw": -0.18891338256930315
}
},
{
"id": 76,
"position_mm": [
-426.75066384529714,
36.836556193528715,
-80.53298420815302
],
"orientation_deg": {
"roll": -2.1735863467636007,
"pitch": 0.18540893221631718,
"yaw": -140.3178431469828
}
},
{
"id": 101,
"position_mm": [
-0.15381859242916107,
-80.15699005126953,
-0.14876669645309448
],
"orientation_deg": {
"roll": 1.401434331782987,
"pitch": -1.417352777188989,
"yaw": -0.6705647440036173
}
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

View File

@@ -0,0 +1,8 @@
id,x_mm,y_mm,z_mm,roll_deg,pitch_deg,yaw_deg
camera1,536.132,19.475,207.265,-106.720,2.751,89.881
camera2,268.384,-412.214,863.776,-148.162,-0.584,27.306
25,-106.039,-153.152,-13.340,148.790,18.375,132.294
50,-0.040,-0.018,-0.032,-0.891,-1.547,-0.922
71,140.010,-0.012,-0.133,0.607,-1.246,0.187
76,-427.186,35.671,-80.653,-2.018,-0.109,-140.186
101,-0.155,-80.158,-0.149,1.389,-1.515,-0.634
1 id x_mm y_mm z_mm roll_deg pitch_deg yaw_deg
2 camera1 536.132 19.475 207.265 -106.720 2.751 89.881
3 camera2 268.384 -412.214 863.776 -148.162 -0.584 27.306
4 25 -106.039 -153.152 -13.340 148.790 18.375 132.294
5 50 -0.040 -0.018 -0.032 -0.891 -1.547 -0.922
6 71 140.010 -0.012 -0.133 0.607 -1.246 0.187
7 76 -427.186 35.671 -80.653 -2.018 -0.109 -140.186
8 101 -0.155 -80.158 -0.149 1.389 -1.515 -0.634

View File

@@ -0,0 +1,110 @@
{
"metadata": {
"timestamp": "2025-12-17 12:53:12",
"reference_markers": [
50,
71,
101
],
"dict": "DICT_4X4_250",
"marker_size_mm": 25.0,
"rms_refs_px_cam1": 0.246809770178914,
"rms_refs_px_cam2": 0.27880768692475444,
"description": "Two-camera joint optimization with triangulation"
},
"cameras": [
{
"id": "camera1",
"position_mm": [
536.1318738587609,
19.474736168499103,
207.26462795091985
],
"orientation_deg": {
"roll": -106.7203897853097,
"pitch": 2.7507012808548144,
"yaw": 89.88105336644603
}
},
{
"id": "camera2",
"position_mm": [
268.3843515238169,
-412.2144214770623,
863.7760290780072
],
"orientation_deg": {
"roll": -148.1621979629559,
"pitch": -0.5838459897877972,
"yaw": 27.306333846282612
}
}
],
"markers": [
{
"id": 25,
"position_mm": [
-106.03853607177734,
-153.15234375,
-13.33987045288086
],
"orientation_deg": {
"roll": 148.7903066118052,
"pitch": 18.37471840944555,
"yaw": 132.29369679166456
}
},
{
"id": 50,
"position_mm": [
-0.04027938097715378,
-0.018168868497014046,
-0.03249623626470566
],
"orientation_deg": {
"roll": -0.8911896876960713,
"pitch": -1.5474788147950507,
"yaw": -0.9216004257713646
}
},
{
"id": 71,
"position_mm": [
140.00997924804688,
-0.011874680407345295,
-0.13304609060287476
],
"orientation_deg": {
"roll": 0.6066041335238053,
"pitch": -1.2456305272454657,
"yaw": 0.1873499158076866
}
},
{
"id": 76,
"position_mm": [
-427.1856256100377,
35.67064810704457,
-80.65343499481803
],
"orientation_deg": {
"roll": -2.0175816127635513,
"pitch": -0.10919350640776791,
"yaw": -140.1864457356773
}
},
{
"id": 101,
"position_mm": [
-0.15468710660934448,
-80.15770721435547,
-0.1492648720741272
],
"orientation_deg": {
"roll": 1.3886002098868537,
"pitch": -1.5153698095294952,
"yaw": -0.6340729479437016
}
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

View File

@@ -0,0 +1,8 @@
id,x_mm,y_mm,z_mm,roll_deg,pitch_deg,yaw_deg
camera1,536.611,18.820,206.461,-106.626,2.661,89.850
camera2,268.384,-412.214,863.776,-148.162,-0.584,27.306
25,-105.905,-153.052,-13.330,148.800,18.245,132.261
50,-0.040,-0.018,-0.032,-0.803,-1.452,-0.960
71,140.010,-0.012,-0.132,1.207,-1.367,-0.158
76,-427.186,35.671,-80.653,-2.018,-0.109,-140.186
101,-0.155,-80.158,-0.149,0.999,-1.889,-0.671
1 id x_mm y_mm z_mm roll_deg pitch_deg yaw_deg
2 camera1 536.611 18.820 206.461 -106.626 2.661 89.850
3 camera2 268.384 -412.214 863.776 -148.162 -0.584 27.306
4 25 -105.905 -153.052 -13.330 148.800 18.245 132.261
5 50 -0.040 -0.018 -0.032 -0.803 -1.452 -0.960
6 71 140.010 -0.012 -0.132 1.207 -1.367 -0.158
7 76 -427.186 35.671 -80.653 -2.018 -0.109 -140.186
8 101 -0.155 -80.158 -0.149 0.999 -1.889 -0.671

View File

@@ -0,0 +1,110 @@
{
"metadata": {
"timestamp": "2025-12-17 12:53:25",
"reference_markers": [
50,
71,
101
],
"dict": "DICT_4X4_250",
"marker_size_mm": 25.0,
"rms_refs_px_cam1": 0.2441583102735186,
"rms_refs_px_cam2": 0.27880768692475444,
"description": "Two-camera joint optimization with triangulation"
},
"cameras": [
{
"id": "camera1",
"position_mm": [
536.6112531658491,
18.81997611440784,
206.46065124784747
],
"orientation_deg": {
"roll": -106.6257561255132,
"pitch": 2.6610643225108683,
"yaw": 89.84975075090361
}
},
{
"id": "camera2",
"position_mm": [
268.3843515238169,
-412.2144214770623,
863.7760290780072
],
"orientation_deg": {
"roll": -148.1621979629559,
"pitch": -0.5838459897877972,
"yaw": 27.306333846282612
}
}
],
"markers": [
{
"id": 25,
"position_mm": [
-105.90450286865234,
-153.0524444580078,
-13.329595565795898
],
"orientation_deg": {
"roll": 148.80013975261303,
"pitch": 18.24478302172668,
"yaw": 132.26101573505235
}
},
{
"id": 50,
"position_mm": [
-0.04021511226892471,
-0.018157418817281723,
-0.032385922968387604
],
"orientation_deg": {
"roll": -0.8028611672479457,
"pitch": -1.4516990130367182,
"yaw": -0.9596821440114531
}
},
{
"id": 71,
"position_mm": [
140.010009765625,
-0.011915921233594418,
-0.13167670369148254
],
"orientation_deg": {
"roll": 1.20741490711664,
"pitch": -1.3669496548399305,
"yaw": -0.1576632529292416
}
},
{
"id": 76,
"position_mm": [
-427.1856256100377,
35.67064810704457,
-80.65343499481803
],
"orientation_deg": {
"roll": -2.0175816127635513,
"pitch": -0.10919350640776791,
"yaw": -140.1864457356773
}
},
{
"id": 101,
"position_mm": [
-0.15451067686080933,
-80.15750122070312,
-0.14881648123264313
],
"orientation_deg": {
"roll": 0.9986347088612523,
"pitch": -1.8894700986904136,
"yaw": -0.6714546601080824
}
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

View File

@@ -0,0 +1,8 @@
id,x_mm,y_mm,z_mm,roll_deg,pitch_deg,yaw_deg
camera1,536.485,18.839,206.779,-106.660,2.662,89.850
camera2,270.078,-416.213,861.643,-147.875,-0.599,27.290
25,-106.002,-152.845,-13.395,-1.656,-0.260,74.773
50,-0.040,-0.018,-0.033,-0.803,-1.486,-0.958
71,140.010,-0.012,-0.132,0.125,-0.986,-0.226
76,-427.338,36.154,-79.282,-2.295,-0.032,-140.199
101,-0.155,-80.157,-0.149,0.998,-1.924,-0.670
1 id x_mm y_mm z_mm roll_deg pitch_deg yaw_deg
2 camera1 536.485 18.839 206.779 -106.660 2.662 89.850
3 camera2 270.078 -416.213 861.643 -147.875 -0.599 27.290
4 25 -106.002 -152.845 -13.395 -1.656 -0.260 74.773
5 50 -0.040 -0.018 -0.033 -0.803 -1.486 -0.958
6 71 140.010 -0.012 -0.132 0.125 -0.986 -0.226
7 76 -427.338 36.154 -79.282 -2.295 -0.032 -140.199
8 101 -0.155 -80.157 -0.149 0.998 -1.924 -0.670

View File

@@ -0,0 +1,110 @@
{
"metadata": {
"timestamp": "2025-12-17 12:54:28",
"reference_markers": [
50,
71,
101
],
"dict": "DICT_4X4_250",
"marker_size_mm": 25.0,
"rms_refs_px_cam1": 0.24499340599673408,
"rms_refs_px_cam2": 0.27883589939730147,
"description": "Two-camera joint optimization with triangulation"
},
"cameras": [
{
"id": "camera1",
"position_mm": [
536.4845116439085,
18.839229807721747,
206.77874626303299
],
"orientation_deg": {
"roll": -106.65991480567813,
"pitch": 2.6616683186812895,
"yaw": 89.84996530221618
}
},
{
"id": "camera2",
"position_mm": [
270.0780494525769,
-416.21266285199596,
861.643153883761
],
"orientation_deg": {
"roll": -147.87452698748913,
"pitch": -0.598847887585048,
"yaw": 27.289970873393735
}
}
],
"markers": [
{
"id": 25,
"position_mm": [
-106.00161743164062,
-152.84478759765625,
-13.39499282836914
],
"orientation_deg": {
"roll": -1.6559759933266671,
"pitch": -0.2604845235747343,
"yaw": 74.7725286291638
}
},
{
"id": 50,
"position_mm": [
-0.040440429002046585,
-0.018118301406502724,
-0.03263949975371361
],
"orientation_deg": {
"roll": -0.8029835843019023,
"pitch": -1.4858259759073,
"yaw": -0.9578783681599231
}
},
{
"id": 71,
"position_mm": [
140.0098114013672,
-0.011588250286877155,
-0.13215307891368866
],
"orientation_deg": {
"roll": 0.12497030142085656,
"pitch": -0.9856255500173754,
"yaw": -0.2263123773485252
}
},
{
"id": 76,
"position_mm": [
-427.3379087741667,
36.154104540318976,
-79.28241714985451
],
"orientation_deg": {
"roll": -2.2951599547424033,
"pitch": -0.03224401177592252,
"yaw": -140.19949710822343
}
},
{
"id": 101,
"position_mm": [
-0.1550489366054535,
-80.1570816040039,
-0.14949001371860504
],
"orientation_deg": {
"roll": 0.9983404931317552,
"pitch": -1.9235960141180923,
"yaw": -0.6696442337381485
}
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

View File

@@ -0,0 +1,8 @@
id,x_mm,y_mm,z_mm,roll_deg,pitch_deg,yaw_deg
camera1,504.143,-126.269,207.847,-108.968,2.548,85.122
camera2,270.078,-416.213,861.643,-147.875,-0.599,27.290
25,-106.269,-152.549,-13.850,-1.588,-0.375,72.807
50,-0.060,0.071,-0.102,-0.330,-0.119,-0.470
71,139.927,0.527,-0.717,0.185,-1.331,-0.473
76,-427.338,36.154,-79.282,-2.295,-0.032,-140.199
101,-0.131,-80.113,-0.116,2.341,-2.488,-1.552
1 id x_mm y_mm z_mm roll_deg pitch_deg yaw_deg
2 camera1 504.143 -126.269 207.847 -108.968 2.548 85.122
3 camera2 270.078 -416.213 861.643 -147.875 -0.599 27.290
4 25 -106.269 -152.549 -13.850 -1.588 -0.375 72.807
5 50 -0.060 0.071 -0.102 -0.330 -0.119 -0.470
6 71 139.927 0.527 -0.717 0.185 -1.331 -0.473
7 76 -427.338 36.154 -79.282 -2.295 -0.032 -140.199
8 101 -0.131 -80.113 -0.116 2.341 -2.488 -1.552

View File

@@ -0,0 +1,110 @@
{
"metadata": {
"timestamp": "2025-12-17 12:56:33",
"reference_markers": [
50,
71,
101
],
"dict": "DICT_4X4_250",
"marker_size_mm": 25.0,
"rms_refs_px_cam1": 1.6352803769089361,
"rms_refs_px_cam2": 0.27883589939730147,
"description": "Two-camera joint optimization with triangulation"
},
"cameras": [
{
"id": "camera1",
"position_mm": [
504.1434070874974,
-126.26880184835102,
207.84717134607124
],
"orientation_deg": {
"roll": -108.96805282221369,
"pitch": 2.5480630503117383,
"yaw": 85.1220631505837
}
},
{
"id": "camera2",
"position_mm": [
270.0780494525769,
-416.21266285199596,
861.643153883761
],
"orientation_deg": {
"roll": -147.87452698748913,
"pitch": -0.598847887585048,
"yaw": 27.289970873393735
}
}
],
"markers": [
{
"id": 25,
"position_mm": [
-106.2688980102539,
-152.54945373535156,
-13.849575996398926
],
"orientation_deg": {
"roll": -1.5884234657772047,
"pitch": -0.3745665819559331,
"yaw": 72.80694636666057
}
},
{
"id": 50,
"position_mm": [
-0.0595768541097641,
0.07062801718711853,
-0.10162462294101715
],
"orientation_deg": {
"roll": -0.32981134855001165,
"pitch": -0.11945304564632257,
"yaw": -0.4700373514560054
}
},
{
"id": 71,
"position_mm": [
139.9272918701172,
0.5273333787918091,
-0.7168083786964417
],
"orientation_deg": {
"roll": 0.18548532711350751,
"pitch": -1.3314171147799696,
"yaw": -0.4728166142447713
}
},
{
"id": 76,
"position_mm": [
-427.3379087741667,
36.154104540318976,
-79.28241714985451
],
"orientation_deg": {
"roll": -2.2951599547424033,
"pitch": -0.03224401177592252,
"yaw": -140.19949710822343
}
},
{
"id": 101,
"position_mm": [
-0.13059137761592865,
-80.11270904541016,
-0.1164691299200058
],
"orientation_deg": {
"roll": 2.3411360398909618,
"pitch": -2.4881518135413483,
"yaw": -1.55157097952814
}
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

View File

@@ -0,0 +1,8 @@
id,x_mm,y_mm,z_mm,roll_deg,pitch_deg,yaw_deg
camera1,504.045,-125.440,208.438,-109.022,2.699,85.139
camera2,266.610,-418.486,860.306,-147.821,-0.848,27.232
25,-140.292,-125.449,-97.313,2.157,-0.941,71.251
50,-0.060,0.071,-0.102,-0.757,-0.797,-0.990
71,139.929,0.526,-0.716,-0.325,-1.431,0.182
76,-433.531,41.246,-90.204,-2.749,1.515,-141.240
101,-0.131,-80.112,-0.117,1.895,-2.234,-2.024
1 id x_mm y_mm z_mm roll_deg pitch_deg yaw_deg
2 camera1 504.045 -125.440 208.438 -109.022 2.699 85.139
3 camera2 266.610 -418.486 860.306 -147.821 -0.848 27.232
4 25 -140.292 -125.449 -97.313 2.157 -0.941 71.251
5 50 -0.060 0.071 -0.102 -0.757 -0.797 -0.990
6 71 139.929 0.526 -0.716 -0.325 -1.431 0.182
7 76 -433.531 41.246 -90.204 -2.749 1.515 -141.240
8 101 -0.131 -80.112 -0.117 1.895 -2.234 -2.024

View File

@@ -0,0 +1,110 @@
{
"metadata": {
"timestamp": "2025-12-17 12:59:31",
"reference_markers": [
50,
71,
101
],
"dict": "DICT_4X4_250",
"marker_size_mm": 25.0,
"rms_refs_px_cam1": 1.6293581246511548,
"rms_refs_px_cam2": 0.2788366800146409,
"description": "Two-camera joint optimization with triangulation"
},
"cameras": [
{
"id": "camera1",
"position_mm": [
504.04506476827214,
-125.43959602101629,
208.43800067135305
],
"orientation_deg": {
"roll": -109.02184112523827,
"pitch": 2.698848284001251,
"yaw": 85.13910561624756
}
},
{
"id": "camera2",
"position_mm": [
266.6103702868428,
-418.48644100540105,
860.3060088273107
],
"orientation_deg": {
"roll": -147.82070047743667,
"pitch": -0.8481476074566079,
"yaw": 27.231785358346894
}
}
],
"markers": [
{
"id": 25,
"position_mm": [
-140.29239613974138,
-125.4489603029717,
-97.31344559021105
],
"orientation_deg": {
"roll": 2.1567827057244413,
"pitch": -0.9412219288956468,
"yaw": 71.25097767397922
}
},
{
"id": 50,
"position_mm": [
-0.05961627885699272,
0.07056063413619995,
-0.10187845677137375
],
"orientation_deg": {
"roll": -0.7565047680938701,
"pitch": -0.7966906440544459,
"yaw": -0.9895245611569333
}
},
{
"id": 71,
"position_mm": [
139.9290313720703,
0.5259146094322205,
-0.7162161469459534
],
"orientation_deg": {
"roll": -0.32549591394932065,
"pitch": -1.4313243306475538,
"yaw": 0.18202150530705868
}
},
{
"id": 76,
"position_mm": [
-433.53071815447515,
41.246156509784306,
-90.20381677655665
],
"orientation_deg": {
"roll": -2.749193832463117,
"pitch": 1.5148995579585318,
"yaw": -141.24013438395986
}
},
{
"id": 101,
"position_mm": [
-0.13099518418312073,
-80.1122055053711,
-0.11726970225572586
],
"orientation_deg": {
"roll": 1.8945374923981935,
"pitch": -2.233677355990763,
"yaw": -2.0235970532528627
}
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

View File

@@ -0,0 +1,8 @@
id,x_mm,y_mm,z_mm,roll_deg,pitch_deg,yaw_deg
camera1,503.865,-126.022,208.384,-109.022,2.675,85.081
camera2,266.610,-418.486,860.306,-147.821,-0.848,27.232
25,-140.292,-125.449,-97.313,2.157,-0.941,71.251
50,-0.059,0.071,-0.102,-0.733,-0.798,-1.047
71,139.929,0.528,-0.718,0.055,-1.375,-0.508
76,-427.113,37.241,-81.727,-2.294,0.223,-140.257
101,-0.131,-80.112,-0.117,1.918,-2.235,-2.082
1 id x_mm y_mm z_mm roll_deg pitch_deg yaw_deg
2 camera1 503.865 -126.022 208.384 -109.022 2.675 85.081
3 camera2 266.610 -418.486 860.306 -147.821 -0.848 27.232
4 25 -140.292 -125.449 -97.313 2.157 -0.941 71.251
5 50 -0.059 0.071 -0.102 -0.733 -0.798 -1.047
6 71 139.929 0.528 -0.718 0.055 -1.375 -0.508
7 76 -427.113 37.241 -81.727 -2.294 0.223 -140.257
8 101 -0.131 -80.112 -0.117 1.918 -2.235 -2.082

View File

@@ -0,0 +1,110 @@
{
"metadata": {
"timestamp": "2025-12-17 12:59:34",
"reference_markers": [
50,
71,
101
],
"dict": "DICT_4X4_250",
"marker_size_mm": 25.0,
"rms_refs_px_cam1": 1.6351827813311057,
"rms_refs_px_cam2": 0.2788366800146409,
"description": "Two-camera joint optimization with triangulation"
},
"cameras": [
{
"id": "camera1",
"position_mm": [
503.86535377102757,
-126.0217865863354,
208.3841414025093
],
"orientation_deg": {
"roll": -109.02178853785225,
"pitch": 2.6749295016696792,
"yaw": 85.08147015056912
}
},
{
"id": "camera2",
"position_mm": [
266.6103702868428,
-418.48644100540105,
860.3060088273107
],
"orientation_deg": {
"roll": -147.82070047743667,
"pitch": -0.8481476074566079,
"yaw": 27.231785358346894
}
}
],
"markers": [
{
"id": 25,
"position_mm": [
-140.29239613974138,
-125.4489603029717,
-97.31344559021105
],
"orientation_deg": {
"roll": 2.1567827057244413,
"pitch": -0.9412219288956468,
"yaw": 71.25097767397922
}
},
{
"id": 50,
"position_mm": [
-0.05949229747056961,
0.07056579738855362,
-0.10178429633378983
],
"orientation_deg": {
"roll": -0.7326347017887312,
"pitch": -0.7982530830682991,
"yaw": -1.0474947170476723
}
},
{
"id": 71,
"position_mm": [
139.9291534423828,
0.5281545519828796,
-0.7181304693222046
],
"orientation_deg": {
"roll": 0.054832054132430294,
"pitch": -1.3751877946904352,
"yaw": -0.5078755386026013
}
},
{
"id": 76,
"position_mm": [
-427.1134884927447,
37.24098158486472,
-81.7265624325304
],
"orientation_deg": {
"roll": -2.2936996824272757,
"pitch": 0.22279528833380796,
"yaw": -140.257000521589
}
},
{
"id": 101,
"position_mm": [
-0.13077759742736816,
-80.11217498779297,
-0.11710629612207413
],
"orientation_deg": {
"roll": 1.9184477394460142,
"pitch": -2.2348086743383244,
"yaw": -2.0821671254702734
}
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

View File

@@ -0,0 +1,8 @@
id,x_mm,y_mm,z_mm,roll_deg,pitch_deg,yaw_deg
camera1,504.045,-125.440,208.438,-109.022,2.699,85.139
camera2,270.026,-416.227,861.637,-147.885,-0.610,27.284
25,-146.564,-122.019,-110.046,2.948,-3.094,70.681
50,-0.060,0.070,-0.102,-0.757,-0.797,-0.990
71,139.926,0.525,-0.717,-0.325,-1.431,0.182
76,-433.546,40.124,-87.968,-2.734,1.269,-141.188
101,-0.131,-80.113,-0.117,1.895,-2.234,-2.024
1 id x_mm y_mm z_mm roll_deg pitch_deg yaw_deg
2 camera1 504.045 -125.440 208.438 -109.022 2.699 85.139
3 camera2 270.026 -416.227 861.637 -147.885 -0.610 27.284
4 25 -146.564 -122.019 -110.046 2.948 -3.094 70.681
5 50 -0.060 0.070 -0.102 -0.757 -0.797 -0.990
6 71 139.926 0.525 -0.717 -0.325 -1.431 0.182
7 76 -433.546 40.124 -87.968 -2.734 1.269 -141.188
8 101 -0.131 -80.113 -0.117 1.895 -2.234 -2.024

View File

@@ -0,0 +1,110 @@
{
"metadata": {
"timestamp": "2025-12-17 13:00:43",
"reference_markers": [
50,
71,
101
],
"dict": "DICT_4X4_250",
"marker_size_mm": 25.0,
"rms_refs_px_cam1": 1.6293581246511548,
"rms_refs_px_cam2": 0.27874697491884515,
"description": "Two-camera joint optimization with triangulation"
},
"cameras": [
{
"id": "camera1",
"position_mm": [
504.04506476827214,
-125.43959602101629,
208.43800067135305
],
"orientation_deg": {
"roll": -109.02184112523827,
"pitch": 2.698848284001251,
"yaw": 85.13910561624756
}
},
{
"id": "camera2",
"position_mm": [
270.0255615833945,
-416.2266954181255,
861.6372832306015
],
"orientation_deg": {
"roll": -147.88471453889258,
"pitch": -0.6104471798882228,
"yaw": 27.284260513873207
}
}
],
"markers": [
{
"id": 25,
"position_mm": [
-146.56390653875772,
-122.01936830680177,
-110.04647490641418
],
"orientation_deg": {
"roll": 2.9478733960652317,
"pitch": -3.094005209248501,
"yaw": 70.68106227703957
}
},
{
"id": 50,
"position_mm": [
-0.05994195118546486,
0.07033900171518326,
-0.10183054953813553
],
"orientation_deg": {
"roll": -0.7565047680938701,
"pitch": -0.7966906440544459,
"yaw": -0.9895245611569333
}
},
{
"id": 71,
"position_mm": [
139.92623901367188,
0.5254115462303162,
-0.7173581123352051
],
"orientation_deg": {
"roll": -0.32549591394932065,
"pitch": -1.4313243306475538,
"yaw": 0.18202150530705868
}
},
{
"id": 76,
"position_mm": [
-433.54618946861825,
40.12437978999722,
-87.96843536493381
],
"orientation_deg": {
"roll": -2.7339747255490496,
"pitch": 1.2692023064376108,
"yaw": -141.18810429430917
}
},
{
"id": 101,
"position_mm": [
-0.1314823478460312,
-80.11257934570312,
-0.11714237183332443
],
"orientation_deg": {
"roll": 1.8945374923981935,
"pitch": -2.233677355990763,
"yaw": -2.0235970532528627
}
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

View File

@@ -0,0 +1,8 @@
id,x_mm,y_mm,z_mm,roll_deg,pitch_deg,yaw_deg
camera1,504.346,-126.088,208.972,-109.059,2.680,85.086
camera2,264.187,-418.808,860.711,-147.871,-0.997,27.225
25,-146.381,-120.960,-112.426,2.692,-3.384,70.637
50,-0.059,0.071,-0.102,-0.740,-0.835,-1.041
71,139.932,0.527,-0.717,-0.104,-1.611,-0.287
76,-433.323,41.407,-91.498,-2.671,1.651,-141.245
101,-0.130,-80.112,-0.117,1.765,-2.090,-1.611
1 id x_mm y_mm z_mm roll_deg pitch_deg yaw_deg
2 camera1 504.346 -126.088 208.972 -109.059 2.680 85.086
3 camera2 264.187 -418.808 860.711 -147.871 -0.997 27.225
4 25 -146.381 -120.960 -112.426 2.692 -3.384 70.637
5 50 -0.059 0.071 -0.102 -0.740 -0.835 -1.041
6 71 139.932 0.527 -0.717 -0.104 -1.611 -0.287
7 76 -433.323 41.407 -91.498 -2.671 1.651 -141.245
8 101 -0.130 -80.112 -0.117 1.765 -2.090 -1.611

View File

@@ -0,0 +1,110 @@
{
"metadata": {
"timestamp": "2025-12-17 13:00:46",
"reference_markers": [
50,
71,
101
],
"dict": "DICT_4X4_250",
"marker_size_mm": 25.0,
"rms_refs_px_cam1": 1.6322619128484837,
"rms_refs_px_cam2": 0.27891317247078307,
"description": "Two-camera joint optimization with triangulation"
},
"cameras": [
{
"id": "camera1",
"position_mm": [
504.3455544730708,
-126.08836092695347,
208.97212985670578
],
"orientation_deg": {
"roll": -109.05897102015024,
"pitch": 2.6798363329030015,
"yaw": 85.08587585610263
}
},
{
"id": "camera2",
"position_mm": [
264.18741185869976,
-418.8076518770778,
860.7107237997933
],
"orientation_deg": {
"roll": -147.87053756474188,
"pitch": -0.9967164816589582,
"yaw": 27.225288127020352
}
}
],
"markers": [
{
"id": 25,
"position_mm": [
-146.38069430769912,
-120.96003565972013,
-112.42579787439388
],
"orientation_deg": {
"roll": 2.6923433615306704,
"pitch": -3.3843807163200768,
"yaw": 70.63672737874518
}
},
{
"id": 50,
"position_mm": [
-0.05914720147848129,
0.07060958445072174,
-0.10182428359985352
],
"orientation_deg": {
"roll": -0.7400391639105726,
"pitch": -0.8349788551011907,
"yaw": -1.041246608486316
}
},
{
"id": 71,
"position_mm": [
139.931640625,
0.5272786021232605,
-0.7172355651855469
],
"orientation_deg": {
"roll": -0.10435540248426062,
"pitch": -1.6112172635894972,
"yaw": -0.28703867176603404
}
},
{
"id": 76,
"position_mm": [
-433.3229711848545,
41.40696043873204,
-91.49844947506591
],
"orientation_deg": {
"roll": -2.670645648451487,
"pitch": 1.650511846955434,
"yaw": -141.24526443651283
}
},
{
"id": 101,
"position_mm": [
-0.13022156059741974,
-80.1122055053711,
-0.11703384667634964
],
"orientation_deg": {
"roll": 1.764660977086649,
"pitch": -2.090428969194846,
"yaw": -1.6105724321001378
}
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

View File

@@ -0,0 +1,8 @@
id,x_mm,y_mm,z_mm,roll_deg,pitch_deg,yaw_deg
camera1,504.274,-125.421,208.038,-108.984,2.641,85.170
camera2,263.878,-413.788,865.140,-148.233,-0.840,27.182
25,-147.036,-121.390,-112.171,6.442,-4.982,69.632
50,-0.058,0.070,-0.101,-0.696,-0.763,-0.962
71,139.935,0.519,-0.709,-0.489,-1.163,-0.158
76,-426.418,36.499,-82.012,-1.893,0.125,-140.312
101,-0.130,-80.113,-0.116,2.376,-2.677,-1.947
1 id x_mm y_mm z_mm roll_deg pitch_deg yaw_deg
2 camera1 504.274 -125.421 208.038 -108.984 2.641 85.170
3 camera2 263.878 -413.788 865.140 -148.233 -0.840 27.182
4 25 -147.036 -121.390 -112.171 6.442 -4.982 69.632
5 50 -0.058 0.070 -0.101 -0.696 -0.763 -0.962
6 71 139.935 0.519 -0.709 -0.489 -1.163 -0.158
7 76 -426.418 36.499 -82.012 -1.893 0.125 -140.312
8 101 -0.130 -80.113 -0.116 2.376 -2.677 -1.947

View File

@@ -0,0 +1,110 @@
{
"metadata": {
"timestamp": "2025-12-17 13:01:36",
"reference_markers": [
50,
71,
101
],
"dict": "DICT_4X4_250",
"marker_size_mm": 25.0,
"rms_refs_px_cam1": 1.6245055926073846,
"rms_refs_px_cam2": 0.278832396834227,
"description": "Two-camera joint optimization with triangulation"
},
"cameras": [
{
"id": "camera1",
"position_mm": [
504.27431986771165,
-125.42139468012584,
208.03784733754605
],
"orientation_deg": {
"roll": -108.98423816059554,
"pitch": 2.6405808944061833,
"yaw": 85.16958065172916
}
},
{
"id": "camera2",
"position_mm": [
263.87845253528576,
-413.78822478509414,
865.1404125791126
],
"orientation_deg": {
"roll": -148.23340567731228,
"pitch": -0.839630205401846,
"yaw": 27.182039752587464
}
}
],
"markers": [
{
"id": 25,
"position_mm": [
-147.03627839622246,
-121.38963611944858,
-112.1706024225141
],
"orientation_deg": {
"roll": 6.441739640710501,
"pitch": -4.982096863310886,
"yaw": 69.63247132329899
}
},
{
"id": 50,
"position_mm": [
-0.0584297850728035,
0.06957601755857468,
-0.10077428072690964
],
"orientation_deg": {
"roll": -0.6958293982162046,
"pitch": -0.7631468591028222,
"yaw": -0.961626910653193
}
},
{
"id": 71,
"position_mm": [
139.9346160888672,
0.5189080834388733,
-0.7089385390281677
],
"orientation_deg": {
"roll": -0.48924402278605317,
"pitch": -1.1630519362635283,
"yaw": -0.15756567408554
}
},
{
"id": 76,
"position_mm": [
-426.41843705188467,
36.498682396519875,
-82.01192295215198
],
"orientation_deg": {
"roll": -1.8926776139424322,
"pitch": 0.1251018751932863,
"yaw": -140.31160702344877
}
},
{
"id": 101,
"position_mm": [
-0.12956561148166656,
-80.11343383789062,
-0.1155543327331543
],
"orientation_deg": {
"roll": 2.3760695955706534,
"pitch": -2.677028882500984,
"yaw": -1.9465300125030265
}
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

Some files were not shown because too many files have changed in this diff Show More