X-Position
X-Position from Fotos. Kallibrierung
@@ -1,3 +1,3 @@
|
||||
|
||||
const { calculate } = require('./calculateAngles.js');
|
||||
module.exports = { calculate };
|
||||
const { calculate, optimizeRobot } = require('./calculateAngles.js');
|
||||
module.exports = { calculate, optimizeRobot };
|
||||
|
||||
@@ -4,24 +4,127 @@
|
||||
* Browser + Server + Jest (CJS) kompatibel
|
||||
*/
|
||||
|
||||
function calculate(foundMarkers, jsonRobot) {
|
||||
// --- X of the Hand-Joint ---
|
||||
const validOns = new Set(['Base', 'Arm1', 'Joint1']);
|
||||
const foundById = new Map(foundMarkers.map(f => [f.id, f]));
|
||||
function calculateXPos(listIdAndX, jsonRobot){
|
||||
const partsMovingFixedX = new Set(['Base', 'Arm1', 'Joint1']);
|
||||
const markersMovingFixedX = jsonRobot.Marker.filter(m => partsMovingFixedX.has(m.on));
|
||||
// Join: Robot-Marker ↔ Found-Marker
|
||||
|
||||
const markersMovingFixedX = jsonRobot.Marker.filter(m => validOns.has(m.on));
|
||||
const markersXPosition = new Map();
|
||||
|
||||
const xs = markersMovingFixedX
|
||||
const markersListeWithRobotInfo = jsonRobot.Marker
|
||||
.filter(m => partsMovingFixedX.has(m.on)) // nur relevante Teile
|
||||
.map(m => {
|
||||
const f = foundById.get(m.id);
|
||||
return f ? f.position[0] - m.relPos[0] : null;
|
||||
})
|
||||
.filter(x => x !== null);
|
||||
const found = listIdAndX.get(m.id);
|
||||
if (!found) return null;
|
||||
|
||||
const xAvg = xs.length
|
||||
? xs.reduce((a, b) => a + b, 0) / xs.length
|
||||
: 0;
|
||||
return {
|
||||
id: m.id,
|
||||
relPos: m.relPos, // oder m.relPos, je nach Struktur
|
||||
position: found,
|
||||
Px: found[0] - m.relPos[0]
|
||||
};
|
||||
})
|
||||
.filter(Boolean); // nulls entfernen
|
||||
|
||||
const pxValues = markersListeWithRobotInfo.map(m => m.Px);
|
||||
const meanPx = pxValues.reduce((sum, x) => sum + x, 0) / pxValues.length;
|
||||
|
||||
const variancePx = pxValues.reduce((sum, x) => sum + Math.pow(x - meanPx, 2), 0) / pxValues.length;
|
||||
const stdDevPx = Math.sqrt(variancePx);
|
||||
|
||||
return { meanPx, stdDevPx };
|
||||
}
|
||||
|
||||
|
||||
function optimizeRobot(listFoundMarkers, jsonRobot) {
|
||||
|
||||
const map = new Map();
|
||||
|
||||
for (const foundMarkers of listFoundMarkers) {
|
||||
var x_222_226 = null;
|
||||
var x_222_226_count = 0;
|
||||
|
||||
for (const mark of foundMarkers.markers.filter(m => m.id === 226).map(f => [f.id, f.position_mm])) {
|
||||
x_222_226 = mark[1][0];
|
||||
x_222_226_count++;
|
||||
}
|
||||
if (x_222_226_count > 0) {
|
||||
x_222_226 = x_222_226 / x_222_226_count;
|
||||
}
|
||||
else{
|
||||
continue; // Wenn weder 222 noch 226 gefunden wurden, überspringen
|
||||
}
|
||||
|
||||
for (const mark of foundMarkers.markers.map(f => [f.id, f.position_mm ])){
|
||||
const id = mark[0];
|
||||
const dx_222_226 = mark[1][0] - x_222_226;
|
||||
if (!map.has(id)) {
|
||||
map.set(id, []); // Initialisiere mit x_222_226, damit wir später die Abweichung berechnen können
|
||||
}
|
||||
map.get(id).push(dx_222_226);
|
||||
}
|
||||
}
|
||||
|
||||
const result = Array.from(map, ([id, mm]) => ({ id, mm })).filter(m => [198,200,204,229,243].includes(m.id));
|
||||
|
||||
|
||||
const withStats = result.map(entry => {
|
||||
const { mm } = entry;
|
||||
const n = mm.length;
|
||||
|
||||
if (n === 0) {
|
||||
return {
|
||||
...entry,
|
||||
n: 0,
|
||||
average: null,
|
||||
deviation: null
|
||||
};
|
||||
}
|
||||
|
||||
const average = mm.reduce((a, b) => a + b, 0) / n;
|
||||
|
||||
const deviation = Math.sqrt(
|
||||
mm.reduce((sum, x) => sum + Math.pow(x - average, 2), 0) / n
|
||||
);
|
||||
|
||||
return {
|
||||
...entry,
|
||||
n,
|
||||
average,
|
||||
deviation
|
||||
};
|
||||
});
|
||||
|
||||
return withStats;
|
||||
}
|
||||
function calculateRotAngle(listIdAndX, jsonRobot, jointName){
|
||||
// Achse finden
|
||||
const jointInfo = jsonRobot.Joints[jointName];
|
||||
if(!jointInfo){return null, null; }
|
||||
if(jointInfo.type !== 'revolute'){ return null, null; }
|
||||
if(!(jointInfo.origin)){ return null, null; }
|
||||
if(!(jointInfo.axis)){ return null, null; }
|
||||
if(!(jointInfo.child)){ return null, null; }
|
||||
|
||||
markerUsed = jsonRobot.Marker.filter(m => m.on === jointInfo.child)
|
||||
if(markerUsed.length === 0){ return null, null; }
|
||||
|
||||
var markerFound = []
|
||||
for (const m of markerUsed){
|
||||
markerFound.push(listIdAndX.get(m.id));
|
||||
}
|
||||
|
||||
|
||||
var angle = 0;
|
||||
var varAngle = 0;
|
||||
|
||||
return angle, varAngle;
|
||||
}
|
||||
|
||||
function calculate(foundMarkers, jsonRobot) {
|
||||
|
||||
const foundById = new Map(foundMarkers.markers.map(f => [f.id, f.position_mm ]));
|
||||
const { meanPx: x, stdDevPx: varx } = calculateXPos(foundById, jsonRobot);
|
||||
|
||||
const { meanY: y, stdDevY: vary } = calculateRotAngle(foundById, jsonRobot, "jointB");
|
||||
|
||||
return {
|
||||
meta: {
|
||||
@@ -34,10 +137,11 @@ function calculate(foundMarkers, jsonRobot) {
|
||||
},
|
||||
status: 'ok',
|
||||
result: {
|
||||
xAvg
|
||||
x: x,
|
||||
varx: varx
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
module.exports = { calculate };
|
||||
module.exports = { calculate, optimizeRobot };
|
||||
@@ -2,7 +2,7 @@
|
||||
"Elements":["Board","Base","Arm1","Joint1","Arm2","Finger1","Finger2"],
|
||||
"Joints":{
|
||||
"jointA":{"name":"Slider", "type":"lninear", "axis":[1,0,0],"parent":"Board","child":"Base"},
|
||||
"jointB":{"name":"Shoulder","type":"revolute","axis":[1,0,0],"parent":"Base","child":"Arm1","origin":[-89.5, 115, 61]},
|
||||
"jointB":{"name":"Shoulder","type":"revolute","axis":[1,0,0],"parent":"Base","child":"Arm1","origin":[-89.5, 115, 53], "originSource":[null, "229_198_Foto_5_2026", "229_198_Foto_5_2026"]},
|
||||
"jointC":{"name":"EllbowLift","type":"revolute","axis":[1,0,0],"parent":"Arm1","child":"Joint1"},
|
||||
"jointD":{"name":"EllbowTwist","type":"revolute","axis":[0,1,0],"parent":"Joint1","child":"Arm2"}
|
||||
},
|
||||
@@ -15,12 +15,13 @@
|
||||
{"id":214,"on":"Board","position":[0.40, 0.0, 0.0]},
|
||||
{"id":215,"on":"Board","position":[0.20, -0.090, 0.0]},
|
||||
|
||||
{"id":200,"on":"Base","relPos":[-166, 6.5, 55]},
|
||||
{"id":201,"on":"Base","relPos":[-190, 97.5, 74.5]},
|
||||
{"id":200,"on":"Base","relPos":[-163.8, 6.5, 55], "relPosSource":["226_FotoAverage_5_2026",null,null]},
|
||||
{"id":201,"on":"Base","relPos":[-164.8, 97.5, 74.5], "relPosSource":["226_FotoAverage_5_2026",null,null]},
|
||||
{"id":204,"on":"Base","relPos":[-158.5,152.5,111]},
|
||||
|
||||
{"id":198,"on":"Arm1", "relPos":[-89.5,-160, 35]},
|
||||
{"id":229,"on":"Arm1", "relPos":[-89.5,-250, 35]},
|
||||
{"id":198,"on":"Arm1", "relPos":[-93.4,-160, 35], "relPosSource":["226_FotoAverage_5_2026",null,null]},
|
||||
{"id":229,"on":"Arm1", "relPos":[-90.6,-250, 35], "relPosSource":["226_FotoAverage_5_2026",null,null]},
|
||||
{"id":242,"on":"Arm1", "relPos":[-89.5,-250,-35]},
|
||||
{"id":243,"on":"Arm1", "relPos":[-89.5,-285, 0]},
|
||||
|
||||
{"id":222,"on":"Joint1", "relPos":[0,0, -35]},
|
||||
|
||||
@@ -2,38 +2,7 @@ const fs = require('fs');
|
||||
const path = require('path');
|
||||
const { calculate } = require('../public/calculateAngles.cjs');
|
||||
|
||||
/* -------------------------
|
||||
Hilfsfunktionen
|
||||
------------------------- */
|
||||
|
||||
function loadMarkersFromCSV(filePath) {
|
||||
const text = fs.readFileSync(filePath, 'utf8');
|
||||
|
||||
const [header, ...lines] = text
|
||||
.split('\n')
|
||||
.map(l => l.trim())
|
||||
.filter(Boolean);
|
||||
|
||||
return lines.map(line => {
|
||||
const [
|
||||
id,
|
||||
x, y, z,
|
||||
roll, pitch, yaw,
|
||||
seen_by
|
||||
] = line.split(',');
|
||||
|
||||
return {
|
||||
id: Number(id),
|
||||
position: [Number(x), Number(y), Number(z)],
|
||||
rotation: [Number(roll), Number(pitch), Number(yaw)],
|
||||
seen_by: Number(seen_by)
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
function loadJSON(filePath) {
|
||||
return JSON.parse(fs.readFileSync(filePath, 'utf8'));
|
||||
}
|
||||
|
||||
/* -------------------------
|
||||
Tests
|
||||
@@ -41,11 +10,28 @@ function loadJSON(filePath) {
|
||||
|
||||
describe('calculateAngles.calculate', () => {
|
||||
test('berechnet X-Durchschnitt für Base / Arm1 / Joint1', async () => {
|
||||
const markersPath = path.resolve('./test/snapshots/snapshot_video0_1774805028717_two_cam.csv');
|
||||
//const markersPath = path.resolve('./test/snapshots/snapshot_video0_1774805028717_two_cam.json');
|
||||
const markersPath = path.resolve('./test/snapshots/snapshot_video0_1775406055428_two_cam.json');
|
||||
const robotPath = path.resolve('./public/robot.json');
|
||||
|
||||
const foundMarkers = loadMarkersFromCSV(markersPath);
|
||||
const jsonRobot = loadJSON(robotPath);
|
||||
const foundMarkers = JSON.parse(fs.readFileSync(markersPath, 'utf8'));
|
||||
const jsonRobot = JSON.parse(fs.readFileSync(robotPath, 'utf8'));
|
||||
|
||||
const result = await calculate(foundMarkers, jsonRobot);
|
||||
|
||||
expect(result.status).toBe('ok');
|
||||
expect(result.result).toBeDefined();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
describe('calculateAngles.y', () => {
|
||||
test('berechnet y-Durchschnitt für Base / Arm1 / Joint1', async () => {
|
||||
const markersPath = path.resolve('./test/snapshots/snapshot_video0_1778407171886_two_cam.json');
|
||||
const robotPath = path.resolve('./public/robot.json');
|
||||
|
||||
const foundMarkers = JSON.parse(fs.readFileSync(markersPath, 'utf8'));
|
||||
const jsonRobot = JSON.parse(fs.readFileSync(robotPath, 'utf8'));
|
||||
|
||||
const result = await calculate(foundMarkers, jsonRobot);
|
||||
|
||||
|
||||
34
test/optimizeRobot.test.js
Normal file
@@ -0,0 +1,34 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const { calculate, optimizeRobot } = require('../public/calculateAngles.cjs');
|
||||
|
||||
|
||||
|
||||
/* -------------------------
|
||||
Tests
|
||||
------------------------- */
|
||||
|
||||
describe('optimizeRobot.', () => {
|
||||
test('berechnet X-Durchschnitt für Base / Arm1 / Joint1', async () => {
|
||||
//const markersPath1 = path.resolve('./test/snapshots/snapshot_video0_1777958128576_two_cam.json');
|
||||
const markersPath1 = path.resolve('./test/snapshots/snapshot_video0_1778406635059_two_cam.json');
|
||||
//const markersPath2 = path.resolve('./test/snapshots/snapshot_video0_1777957783463_two_cam.json');
|
||||
const markersPath2 = path.resolve('./test/snapshots/snapshot_video0_1778406621349_two_cam.json');
|
||||
const markersPath3 = path.resolve('./test/snapshots/snapshot_video0_1778407153025_two_cam.json');
|
||||
const markersPath4 = path.resolve('./test/snapshots/snapshot_video0_1778407171886_two_cam.json');
|
||||
const robotPath = path.resolve('./public/robot.json');
|
||||
|
||||
const foundMarkers1 = JSON.parse(fs.readFileSync(markersPath1, 'utf8'));
|
||||
const foundMarkers2 = JSON.parse(fs.readFileSync(markersPath2, 'utf8'));
|
||||
const foundMarkers3 = JSON.parse(fs.readFileSync(markersPath3, 'utf8'));
|
||||
const foundMarkers4 = JSON.parse(fs.readFileSync(markersPath4, 'utf8'));
|
||||
|
||||
const list=[foundMarkers1, foundMarkers2, foundMarkers3, foundMarkers4];
|
||||
const jsonRobot = JSON.parse(fs.readFileSync(robotPath, 'utf8'));
|
||||
|
||||
const result = await optimizeRobot(list, jsonRobot);
|
||||
|
||||
//expect(result.status).toBe('ok');
|
||||
//expect(result.result).toBeDefined();
|
||||
});
|
||||
});
|
||||
BIN
test/snapshots/snapshot_video0_1777957783463.jpg
Normal file
|
After Width: | Height: | Size: 162 KiB |
21
test/snapshots/snapshot_video0_1777957783463_two_cam.csv
Normal file
@@ -0,0 +1,21 @@
|
||||
id,x_mm,y_mm,z_mm,roll_deg,pitch_deg,yaw_deg,seen_by
|
||||
camera 0,52.51,-848.87,600.02,-121.404,-2.306,-21.261
|
||||
camera 1,353.00,-480.56,1185.56,-166.739,1.583,0.395
|
||||
0,396.47,-42.96,-40.41,-0.938,-1.625,-1.286,1
|
||||
178,434.70,-346.30,161.82,14.660,-9.061,127.657,3
|
||||
179,410.47,-291.22,139.29,-4.164,55.412,-152.725,1
|
||||
187,397.52,-341.22,141.15,-27.505,19.727,93.759,3
|
||||
200,257.99,-24.24,118.95,-0.938,-0.465,2.088,3
|
||||
204,258.36,127.36,126.23,131.455,-8.390,-19.321,3
|
||||
205,805.33,-88.85,-1.77,-1.373,-0.755,-1.917,3
|
||||
208,498.96,-80.59,-31.57,-3.711,0.412,1.079,2
|
||||
210,-4.17,2.35,-2.53,-3.329,2.596,-0.816,3
|
||||
211,200.91,-0.39,0.35,112.239,-7.122,-11.633,3
|
||||
214,431.62,65.62,-47.50,114.928,-19.137,-29.993,1
|
||||
215,199.30,-89.61,-0.57,-2.325,-0.729,-2.726,3
|
||||
217,615.09,30.80,-73.14,-0.531,0.733,-1.364,2
|
||||
226,420.76,-77.03,270.10,26.782,2.029,-0.030,3
|
||||
228,400.09,-176.95,215.07,27.186,-28.754,-17.246,3
|
||||
229,333.70,-35.80,258.29,-46.300,1.911,1.507,2
|
||||
242,343.11,-34.31,190.43,135.274,0.085,-2.030,1
|
||||
243,329.38,-87.08,265.66,42.490,1.111,-1.823,3
|
||||
|
280
test/snapshots/snapshot_video0_1777957783463_two_cam.json
Normal file
@@ -0,0 +1,280 @@
|
||||
{
|
||||
"metadata": {
|
||||
"timestamp": "2026-05-05 05:09:43",
|
||||
"reference_markers": [
|
||||
210,
|
||||
211,
|
||||
215,
|
||||
205
|
||||
],
|
||||
"dict": "DICT_4X4_250",
|
||||
"marker_size_mm": 25.0,
|
||||
"rms_refs_px_cam1": 4.671353744091205,
|
||||
"rms_refs_px_cam2": 3.1040055485065166,
|
||||
"description": "Two-camera joint optimization with triangulation"
|
||||
},
|
||||
"cameras": [
|
||||
{
|
||||
"id": "camera1",
|
||||
"position_mm": [
|
||||
52.50705149143897,
|
||||
-848.8746743773831,
|
||||
600.0158350840767
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -121.40391168229475,
|
||||
"pitch": -2.306436189824197,
|
||||
"yaw": -21.260996144039062
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "camera2",
|
||||
"position_mm": [
|
||||
352.9965583411941,
|
||||
-480.5647619160942,
|
||||
1185.560920507425
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -166.73896963486465,
|
||||
"pitch": 1.5832050600381053,
|
||||
"yaw": 0.39465785124673575
|
||||
}
|
||||
}
|
||||
],
|
||||
"markers": [
|
||||
{
|
||||
"id": 0,
|
||||
"position_mm": [
|
||||
396.4664087076043,
|
||||
-42.96067455601671,
|
||||
-40.40681141345037
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -0.9375313569440544,
|
||||
"pitch": -1.6254708655757175,
|
||||
"yaw": -1.2864045600920857
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 178,
|
||||
"position_mm": [
|
||||
434.701416015625,
|
||||
-346.30255126953125,
|
||||
161.82244873046875
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 14.660044975945809,
|
||||
"pitch": -9.060615532311536,
|
||||
"yaw": 127.65722760442327
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 179,
|
||||
"position_mm": [
|
||||
410.4690229459951,
|
||||
-291.2238586627398,
|
||||
139.29182445163846
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -4.164149490729818,
|
||||
"pitch": 55.41156542149833,
|
||||
"yaw": -152.7245941169703
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 187,
|
||||
"position_mm": [
|
||||
397.520263671875,
|
||||
-341.2248229980469,
|
||||
141.1533203125
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -27.504707713464253,
|
||||
"pitch": 19.727305083968414,
|
||||
"yaw": 93.7587269029218
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 200,
|
||||
"position_mm": [
|
||||
257.988037109375,
|
||||
-24.238113403320312,
|
||||
118.95182037353516
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -0.9378750676447358,
|
||||
"pitch": -0.46498037079853055,
|
||||
"yaw": 2.088489211025033
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 204,
|
||||
"position_mm": [
|
||||
258.36309814453125,
|
||||
127.355712890625,
|
||||
126.2347412109375
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 131.45520428430584,
|
||||
"pitch": -8.390047805254406,
|
||||
"yaw": -19.32140480702805
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 205,
|
||||
"position_mm": [
|
||||
805.3345336914062,
|
||||
-88.8466796875,
|
||||
-1.772031307220459
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -1.3732577845338951,
|
||||
"pitch": -0.755221584659945,
|
||||
"yaw": -1.9174437143486767
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 208,
|
||||
"position_mm": [
|
||||
498.96205325263963,
|
||||
-80.58717235952845,
|
||||
-31.572839312099976
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -3.710891042088827,
|
||||
"pitch": 0.41201015735627716,
|
||||
"yaw": 1.0794999035785666
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 210,
|
||||
"position_mm": [
|
||||
-4.165961742401123,
|
||||
2.3509929180145264,
|
||||
-2.526089668273926
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -3.328954072289312,
|
||||
"pitch": 2.5958542701376963,
|
||||
"yaw": -0.8159059084027147
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 211,
|
||||
"position_mm": [
|
||||
200.90512084960938,
|
||||
-0.38677510619163513,
|
||||
0.34789878129959106
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 112.23902036479667,
|
||||
"pitch": -7.122227983034214,
|
||||
"yaw": -11.633422115111248
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 214,
|
||||
"position_mm": [
|
||||
431.6227926849502,
|
||||
65.62094846958766,
|
||||
-47.50279224705922
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 114.92780566359703,
|
||||
"pitch": -19.136547203279413,
|
||||
"yaw": -29.993356126435852
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 215,
|
||||
"position_mm": [
|
||||
199.30484008789062,
|
||||
-89.61498260498047,
|
||||
-0.5710603594779968
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -2.325372314878339,
|
||||
"pitch": -0.7287700728739313,
|
||||
"yaw": -2.7262640326032175
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 217,
|
||||
"position_mm": [
|
||||
615.0909335800857,
|
||||
30.80487435405388,
|
||||
-73.13761132332198
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -0.5312076724112325,
|
||||
"pitch": 0.733422156922922,
|
||||
"yaw": -1.3642012070521408
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 226,
|
||||
"position_mm": [
|
||||
420.7601623535156,
|
||||
-77.025390625,
|
||||
270.102783203125
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 26.781667281645746,
|
||||
"pitch": 2.0289279897051853,
|
||||
"yaw": -0.029585611475562927
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 228,
|
||||
"position_mm": [
|
||||
400.0892639160156,
|
||||
-176.95059204101562,
|
||||
215.06854248046875
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 27.18577804896399,
|
||||
"pitch": -28.75366590348638,
|
||||
"yaw": -17.246112881667592
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 229,
|
||||
"position_mm": [
|
||||
333.7011791401545,
|
||||
-35.8008587982585,
|
||||
258.2860495531072
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -46.30034850320603,
|
||||
"pitch": 1.9106830493551008,
|
||||
"yaw": 1.5074126579645082
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 242,
|
||||
"position_mm": [
|
||||
343.10525826663707,
|
||||
-34.30694513106547,
|
||||
190.4347424613153
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 135.27419902188078,
|
||||
"pitch": 0.08530734885954665,
|
||||
"yaw": -2.0299609451153673
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 243,
|
||||
"position_mm": [
|
||||
329.3802795410156,
|
||||
-87.07755279541016,
|
||||
265.6557312011719
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 42.49029610133165,
|
||||
"pitch": 1.1112401667954726,
|
||||
"yaw": -1.8231069586598487
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 255 KiB |
BIN
test/snapshots/snapshot_video0_1777957783463_two_cam_overlay.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
21
test/snapshots/snapshot_video0_1777958128576_two_cam.csv
Normal file
@@ -0,0 +1,21 @@
|
||||
id,x_mm,y_mm,z_mm,roll_deg,pitch_deg,yaw_deg,seen_by
|
||||
camera 0,256.17,-822.43,643.20,-123.532,-0.788,-9.098
|
||||
camera 1,629.68,-270.32,1205.64,-171.411,10.923,11.668
|
||||
0,385.87,-56.31,-33.55,100.596,-9.989,-12.304,1
|
||||
178,494.28,-336.90,276.53,16.619,-4.277,132.262,3
|
||||
179,425.50,-337.67,297.09,-14.032,53.897,-146.912,1
|
||||
187,456.07,-335.85,259.58,-115.447,-36.884,-147.096,3
|
||||
200,268.20,-14.01,117.32,-3.139,0.850,3.172,1
|
||||
204,272.97,143.23,115.44,-2.727,3.637,0.923,3
|
||||
205,804.71,-90.62,-1.30,-1.466,1.393,-0.486,3
|
||||
207,799.64,-5.60,0.22,-2.190,2.670,2.302,3
|
||||
208,499.89,-82.94,-54.66,29.194,-1.655,0.389,2
|
||||
210,-31.34,6.71,-22.45,36.767,44.126,13.395,2
|
||||
211,199.74,0.05,-0.18,107.619,3.693,4.245,3
|
||||
214,409.79,26.15,-22.96,-3.559,0.080,-0.908,1
|
||||
215,199.60,-89.94,-0.50,-2.825,0.115,0.368,3
|
||||
217,604.05,19.26,-100.39,-10.000,4.687,0.680,2
|
||||
226,461.88,-22.14,258.77,137.748,-9.547,-25.264,3
|
||||
228,471.30,-140.24,256.77,-9.794,-8.559,3.734,2
|
||||
229,383.65,-6.45,251.30,-52.687,10.507,3.203,2
|
||||
243,366.01,-50.21,251.71,41.338,1.927,-0.577,3
|
||||
|
279
test/snapshots/snapshot_video0_1777958128576_two_cam.json
Normal file
@@ -0,0 +1,279 @@
|
||||
{
|
||||
"metadata": {
|
||||
"timestamp": "2026-05-05 05:15:28",
|
||||
"reference_markers": [
|
||||
211,
|
||||
215,
|
||||
205
|
||||
],
|
||||
"dict": "DICT_4X4_250",
|
||||
"marker_size_mm": 25.0,
|
||||
"rms_refs_px_cam1": 4.6375655603331385,
|
||||
"rms_refs_px_cam2": 2.7443840845140404,
|
||||
"description": "Two-camera joint optimization with triangulation"
|
||||
},
|
||||
"cameras": [
|
||||
{
|
||||
"id": "camera1",
|
||||
"position_mm": [
|
||||
256.1736410256437,
|
||||
-822.4276726253502,
|
||||
643.2026671719713
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -123.5316900379821,
|
||||
"pitch": -0.7884129637642172,
|
||||
"yaw": -9.097970726569594
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "camera2",
|
||||
"position_mm": [
|
||||
629.6754325211745,
|
||||
-270.3191926197733,
|
||||
1205.6426460653051
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -171.41083174640656,
|
||||
"pitch": 10.922928735643563,
|
||||
"yaw": 11.668247833176194
|
||||
}
|
||||
}
|
||||
],
|
||||
"markers": [
|
||||
{
|
||||
"id": 0,
|
||||
"position_mm": [
|
||||
385.87069622396274,
|
||||
-56.31153562235403,
|
||||
-33.54904549877591
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 100.59635796327298,
|
||||
"pitch": -9.988991138734189,
|
||||
"yaw": -12.304433726646625
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 178,
|
||||
"position_mm": [
|
||||
494.27813720703125,
|
||||
-336.8986511230469,
|
||||
276.5267333984375
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 16.61888387917759,
|
||||
"pitch": -4.276930983519099,
|
||||
"yaw": 132.26226500097638
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 179,
|
||||
"position_mm": [
|
||||
425.50282620904954,
|
||||
-337.66631245337317,
|
||||
297.0947712329073
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -14.03207370980746,
|
||||
"pitch": 53.897382259538816,
|
||||
"yaw": -146.91173919479965
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 187,
|
||||
"position_mm": [
|
||||
456.0668029785156,
|
||||
-335.8484191894531,
|
||||
259.5787658691406
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -115.44727568007977,
|
||||
"pitch": -36.88432807413855,
|
||||
"yaw": -147.09594966123984
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 200,
|
||||
"position_mm": [
|
||||
268.19624900285766,
|
||||
-14.007162810458107,
|
||||
117.31979998476683
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -3.1391365497288004,
|
||||
"pitch": 0.849526608275676,
|
||||
"yaw": 3.1721064317497194
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 204,
|
||||
"position_mm": [
|
||||
272.970458984375,
|
||||
143.23162841796875,
|
||||
115.44142150878906
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -2.726554071240893,
|
||||
"pitch": 3.6374217353973566,
|
||||
"yaw": 0.9234750688709343
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 205,
|
||||
"position_mm": [
|
||||
804.7095336914062,
|
||||
-90.62186431884766,
|
||||
-1.299379825592041
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -1.4658959348870262,
|
||||
"pitch": 1.3933641879342518,
|
||||
"yaw": -0.4862554682096239
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 207,
|
||||
"position_mm": [
|
||||
799.6442260742188,
|
||||
-5.6020660400390625,
|
||||
0.22404810786247253
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -2.189789906214652,
|
||||
"pitch": 2.67045298129937,
|
||||
"yaw": 2.302090287657334
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 208,
|
||||
"position_mm": [
|
||||
499.8863711359788,
|
||||
-82.9365943571326,
|
||||
-54.661945244869784
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 29.194092496312926,
|
||||
"pitch": -1.6546496155382426,
|
||||
"yaw": 0.38917806200082566
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 210,
|
||||
"position_mm": [
|
||||
-31.340368831395793,
|
||||
6.7093997800957155,
|
||||
-22.44573483244117
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 36.76670266178536,
|
||||
"pitch": 44.1262498780372,
|
||||
"yaw": 13.394948310954723
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 211,
|
||||
"position_mm": [
|
||||
199.744384765625,
|
||||
0.05302027612924576,
|
||||
-0.17967739701271057
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 107.61913087124054,
|
||||
"pitch": 3.6929670477766554,
|
||||
"yaw": 4.244923292001919
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 214,
|
||||
"position_mm": [
|
||||
409.78569191526424,
|
||||
26.14888337450583,
|
||||
-22.95924977723651
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -3.5591880651619534,
|
||||
"pitch": 0.07958832800522347,
|
||||
"yaw": -0.908281512466989
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 215,
|
||||
"position_mm": [
|
||||
199.60459899902344,
|
||||
-89.9400405883789,
|
||||
-0.4983225464820862
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -2.8248904023375925,
|
||||
"pitch": 0.11546147778295654,
|
||||
"yaw": 0.3680811987678786
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 217,
|
||||
"position_mm": [
|
||||
604.0510107770316,
|
||||
19.25716435846797,
|
||||
-100.39204520392686
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -9.999857114318917,
|
||||
"pitch": 4.687411623510123,
|
||||
"yaw": 0.6798235392761715
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 226,
|
||||
"position_mm": [
|
||||
461.88153076171875,
|
||||
-22.143922805786133,
|
||||
258.7698059082031
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 137.74833212868913,
|
||||
"pitch": -9.546682190154835,
|
||||
"yaw": -25.26374103690034
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 228,
|
||||
"position_mm": [
|
||||
471.3025228843485,
|
||||
-140.24054627084377,
|
||||
256.76517144080714
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -9.794001434347695,
|
||||
"pitch": -8.559400619598163,
|
||||
"yaw": 3.7341109472929315
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 229,
|
||||
"position_mm": [
|
||||
383.6541118252914,
|
||||
-6.447470537112753,
|
||||
251.29615453599862
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -52.68677699532855,
|
||||
"pitch": 10.506929671117463,
|
||||
"yaw": 3.2028428302931338
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 243,
|
||||
"position_mm": [
|
||||
366.0063171386719,
|
||||
-50.20854949951172,
|
||||
251.70713806152344
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 41.337890377168854,
|
||||
"pitch": 1.9272769657975612,
|
||||
"yaw": -0.5767882855037844
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 260 KiB |
BIN
test/snapshots/snapshot_video0_1777958128576_two_cam_overlay.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
19
test/snapshots/snapshot_video0_1778054889025_two_cam.csv
Normal file
@@ -0,0 +1,19 @@
|
||||
id,x_mm,y_mm,z_mm,roll_deg,pitch_deg,yaw_deg,seen_by
|
||||
camera 0,147.42,-751.09,594.62,-121.791,-0.822,-16.558
|
||||
camera 1,393.29,-388.36,1179.31,-166.014,1.894,3.112
|
||||
0,372.49,-94.59,0.47,-1.368,-0.236,-0.161,3
|
||||
178,456.12,-359.81,245.47,50.538,-32.792,83.890,1
|
||||
179,435.62,-348.24,284.44,-52.619,25.235,147.081,3
|
||||
187,404.37,-362.35,274.95,13.506,10.207,73.990,3
|
||||
200,280.33,-27.04,118.17,-0.012,-0.778,3.812,3
|
||||
204,278.61,125.53,123.01,126.488,-7.084,-15.783,3
|
||||
208,518.66,-28.70,-54.78,105.248,-29.214,-36.129,1
|
||||
210,-4.16,1.46,-2.90,-0.317,2.970,-0.772,3
|
||||
211,199.76,0.13,-0.34,-3.856,1.306,-0.502,3
|
||||
214,426.36,88.57,-71.53,0.908,-0.975,-0.593,1
|
||||
215,199.65,-89.81,-0.78,-1.530,-0.638,-0.883,3
|
||||
217,612.39,25.75,-81.35,-1.901,-0.742,-2.150,2
|
||||
223,432.78,-177.96,275.89,-2.274,-14.074,0.887,3
|
||||
226,442.85,-63.87,268.88,-4.845,2.287,0.660,3
|
||||
229,357.96,-53.35,287.65,-47.898,1.975,2.923,2
|
||||
243,353.42,-92.26,263.01,44.821,2.132,0.166,3
|
||||
|
253
test/snapshots/snapshot_video0_1778054889025_two_cam.json
Normal file
@@ -0,0 +1,253 @@
|
||||
{
|
||||
"metadata": {
|
||||
"timestamp": "2026-05-06 08:08:09",
|
||||
"reference_markers": [
|
||||
210,
|
||||
211,
|
||||
215
|
||||
],
|
||||
"dict": "DICT_4X4_250",
|
||||
"marker_size_mm": 25.0,
|
||||
"rms_refs_px_cam1": 4.590816018090041,
|
||||
"rms_refs_px_cam2": 1.6240034592105381,
|
||||
"description": "Two-camera joint optimization with triangulation"
|
||||
},
|
||||
"cameras": [
|
||||
{
|
||||
"id": "camera1",
|
||||
"position_mm": [
|
||||
147.42494865275995,
|
||||
-751.0854570669217,
|
||||
594.6183586095766
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -121.79096706534146,
|
||||
"pitch": -0.8218092217060426,
|
||||
"yaw": -16.55800609169854
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "camera2",
|
||||
"position_mm": [
|
||||
393.2881919726487,
|
||||
-388.3550283648296,
|
||||
1179.3091897188835
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -166.0141656191962,
|
||||
"pitch": 1.89358083964142,
|
||||
"yaw": 3.111972751662505
|
||||
}
|
||||
}
|
||||
],
|
||||
"markers": [
|
||||
{
|
||||
"id": 0,
|
||||
"position_mm": [
|
||||
372.48663330078125,
|
||||
-94.5899429321289,
|
||||
0.47164931893348694
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -1.3681401980979884,
|
||||
"pitch": -0.23638593167529084,
|
||||
"yaw": -0.1613986718329691
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 178,
|
||||
"position_mm": [
|
||||
456.11608239895315,
|
||||
-359.80777627987607,
|
||||
245.4731644376812
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 50.538176524873926,
|
||||
"pitch": -32.79186919733686,
|
||||
"yaw": 83.89001220022
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 179,
|
||||
"position_mm": [
|
||||
435.61993408203125,
|
||||
-348.2384033203125,
|
||||
284.43634033203125
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -52.61873975144137,
|
||||
"pitch": 25.234584609200773,
|
||||
"yaw": 147.0807634416476
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 187,
|
||||
"position_mm": [
|
||||
404.3673095703125,
|
||||
-362.3518981933594,
|
||||
274.95159912109375
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 13.506344281555837,
|
||||
"pitch": 10.207437257161248,
|
||||
"yaw": 73.9895685873278
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 200,
|
||||
"position_mm": [
|
||||
280.331298828125,
|
||||
-27.04494857788086,
|
||||
118.17294311523438
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -0.012251456947055669,
|
||||
"pitch": -0.7775758584681589,
|
||||
"yaw": 3.8124863453082036
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 204,
|
||||
"position_mm": [
|
||||
278.6128234863281,
|
||||
125.52925872802734,
|
||||
123.01371765136719
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 126.48782678823211,
|
||||
"pitch": -7.083549530230612,
|
||||
"yaw": -15.782702355540186
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 208,
|
||||
"position_mm": [
|
||||
518.6632773344581,
|
||||
-28.697352192997517,
|
||||
-54.77502128181433
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 105.24776703452369,
|
||||
"pitch": -29.213657366588535,
|
||||
"yaw": -36.12852775174824
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 210,
|
||||
"position_mm": [
|
||||
-4.164219856262207,
|
||||
1.4597249031066895,
|
||||
-2.9007458686828613
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -0.31694418737468777,
|
||||
"pitch": 2.969889470432295,
|
||||
"yaw": -0.7718500078010664
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 211,
|
||||
"position_mm": [
|
||||
199.76065063476562,
|
||||
0.1294933259487152,
|
||||
-0.3412942886352539
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -3.8561307789129287,
|
||||
"pitch": 1.306318032876168,
|
||||
"yaw": -0.5015868400366902
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 214,
|
||||
"position_mm": [
|
||||
426.35580492728934,
|
||||
88.56616440062004,
|
||||
-71.52535523553838
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 0.9078878446492741,
|
||||
"pitch": -0.9747977726478123,
|
||||
"yaw": -0.5931841691660048
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 215,
|
||||
"position_mm": [
|
||||
199.64529418945312,
|
||||
-89.81466674804688,
|
||||
-0.7764945030212402
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -1.5304041632561065,
|
||||
"pitch": -0.6375461965750857,
|
||||
"yaw": -0.882874775136248
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 217,
|
||||
"position_mm": [
|
||||
612.3893168517301,
|
||||
25.752911347790675,
|
||||
-81.35457809472312
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -1.9014094956510394,
|
||||
"pitch": -0.7421121932072762,
|
||||
"yaw": -2.150141418143064
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 223,
|
||||
"position_mm": [
|
||||
432.781005859375,
|
||||
-177.96484375,
|
||||
275.8923645019531
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -2.274470910826712,
|
||||
"pitch": -14.074084979235563,
|
||||
"yaw": 0.8872004060360167
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 226,
|
||||
"position_mm": [
|
||||
442.849609375,
|
||||
-63.87300109863281,
|
||||
268.8798522949219
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -4.8454999463535655,
|
||||
"pitch": 2.2873307526536966,
|
||||
"yaw": 0.660174117408432
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 229,
|
||||
"position_mm": [
|
||||
357.96071174966926,
|
||||
-53.345881802605135,
|
||||
287.6518056414521
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -47.898354075997865,
|
||||
"pitch": 1.974847488204686,
|
||||
"yaw": 2.9226765105596173
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 243,
|
||||
"position_mm": [
|
||||
353.41839599609375,
|
||||
-92.26097106933594,
|
||||
263.00689697265625
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 44.821402430458285,
|
||||
"pitch": 2.1320756192699135,
|
||||
"yaw": 0.1658569371921932
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 264 KiB |
BIN
test/snapshots/snapshot_video0_1778054889025_two_cam_overlay.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
test/snapshots/snapshot_video0_1778406621349.jpg
Normal file
|
After Width: | Height: | Size: 190 KiB |
13
test/snapshots/snapshot_video0_1778406621349_two_cam.csv
Normal file
@@ -0,0 +1,13 @@
|
||||
id,x_mm,y_mm,z_mm,roll_deg,pitch_deg,yaw_deg,seen_by
|
||||
camera 0,264.84,-448.46,516.54,-140.171,-1.865,2.388
|
||||
camera 1,389.91,-409.85,935.42,-157.399,8.669,7.846
|
||||
198,379.47,-47.52,91.56,1.884,2.172,1.413,3
|
||||
200,310.61,-28.22,116.65,2.481,-1.302,2.910,3
|
||||
204,309.61,123.65,124.82,0.922,1.511,1.327,3
|
||||
210,-1.38,-0.36,0.53,2.268,0.168,0.630,3
|
||||
211,200.01,-0.03,0.03,1.212,0.080,1.086,3
|
||||
215,200.00,-90.02,0.01,0.329,0.082,1.119,3
|
||||
223,461.70,-239.97,68.70,-6.283,-26.057,3.143,2
|
||||
226,473.32,-128.20,82.36,-7.045,3.550,2.138,3
|
||||
229,382.10,-138.78,91.38,2.122,1.637,1.333,3
|
||||
243,384.75,-153.93,31.47,92.284,1.185,1.570,1
|
||||
|
175
test/snapshots/snapshot_video0_1778406621349_two_cam.json
Normal file
@@ -0,0 +1,175 @@
|
||||
{
|
||||
"metadata": {
|
||||
"timestamp": "2026-05-10 09:50:21",
|
||||
"reference_markers": [
|
||||
210,
|
||||
211,
|
||||
215
|
||||
],
|
||||
"dict": "DICT_4X4_250",
|
||||
"marker_size_mm": 25.0,
|
||||
"rms_refs_px_cam1": 3.24786159840821,
|
||||
"rms_refs_px_cam2": 0.35373435298091754,
|
||||
"description": "Two-camera joint optimization with triangulation"
|
||||
},
|
||||
"cameras": [
|
||||
{
|
||||
"id": "camera1",
|
||||
"position_mm": [
|
||||
264.8418896705653,
|
||||
-448.4588280097624,
|
||||
516.5430654974838
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -140.17119986117208,
|
||||
"pitch": -1.865223311233184,
|
||||
"yaw": 2.388475258105415
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "camera2",
|
||||
"position_mm": [
|
||||
389.91429402212697,
|
||||
-409.84642833812615,
|
||||
935.419816456442
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -157.39944112599088,
|
||||
"pitch": 8.668739432057341,
|
||||
"yaw": 7.84617553314689
|
||||
}
|
||||
}
|
||||
],
|
||||
"markers": [
|
||||
{
|
||||
"id": 198,
|
||||
"position_mm": [
|
||||
379.4744873046875,
|
||||
-47.51786804199219,
|
||||
91.5611801147461
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 1.883785213403855,
|
||||
"pitch": 2.172404640223496,
|
||||
"yaw": 1.4128404521411706
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 200,
|
||||
"position_mm": [
|
||||
310.6123352050781,
|
||||
-28.22052764892578,
|
||||
116.64888763427734
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 2.4805237147914183,
|
||||
"pitch": -1.3021544214965108,
|
||||
"yaw": 2.9096889693911945
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 204,
|
||||
"position_mm": [
|
||||
309.6077880859375,
|
||||
123.64892578125,
|
||||
124.82405853271484
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 0.9217037882864602,
|
||||
"pitch": 1.510909167972885,
|
||||
"yaw": 1.3270366048715656
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 210,
|
||||
"position_mm": [
|
||||
-1.3822473287582397,
|
||||
-0.35651564598083496,
|
||||
0.5323472619056702
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 2.2680841460779426,
|
||||
"pitch": 0.16754081520133732,
|
||||
"yaw": 0.6300169958322452
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 211,
|
||||
"position_mm": [
|
||||
200.0091094970703,
|
||||
-0.027147645130753517,
|
||||
0.029545657336711884
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 1.2120159665924424,
|
||||
"pitch": 0.07991626682053452,
|
||||
"yaw": 1.0861087648303256
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 215,
|
||||
"position_mm": [
|
||||
199.99989318847656,
|
||||
-90.02400207519531,
|
||||
0.011483968235552311
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 0.3291608166417733,
|
||||
"pitch": 0.08225944124668336,
|
||||
"yaw": 1.1185856551828588
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 223,
|
||||
"position_mm": [
|
||||
461.6983083182723,
|
||||
-239.9714317762591,
|
||||
68.7005685225841
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -6.283431761105847,
|
||||
"pitch": -26.057398472817134,
|
||||
"yaw": 3.1429438658960946
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 226,
|
||||
"position_mm": [
|
||||
473.31671142578125,
|
||||
-128.2008819580078,
|
||||
82.3624267578125
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -7.044637777230225,
|
||||
"pitch": 3.5502536437242425,
|
||||
"yaw": 2.1379181565828254
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 229,
|
||||
"position_mm": [
|
||||
382.09576416015625,
|
||||
-138.7764129638672,
|
||||
91.38326263427734
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 2.1223433653949817,
|
||||
"pitch": 1.636784042225621,
|
||||
"yaw": 1.3329059458000578
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 243,
|
||||
"position_mm": [
|
||||
384.7495384614813,
|
||||
-153.92526815108292,
|
||||
31.465031813878554
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 92.28432644230978,
|
||||
"pitch": 1.185328109849308,
|
||||
"yaw": 1.5702705780719146
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 285 KiB |
BIN
test/snapshots/snapshot_video0_1778406621349_two_cam_overlay.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
201
test/snapshots/snapshot_video0_1778406635059_two_cam.json
Normal file
@@ -0,0 +1,201 @@
|
||||
{
|
||||
"metadata": {
|
||||
"timestamp": "2026-05-10 09:50:35",
|
||||
"reference_markers": [
|
||||
210,
|
||||
211,
|
||||
215
|
||||
],
|
||||
"dict": "DICT_4X4_250",
|
||||
"marker_size_mm": 25.0,
|
||||
"rms_refs_px_cam1": 3.2482731059855747,
|
||||
"rms_refs_px_cam2": 0.3537390578212888,
|
||||
"description": "Two-camera joint optimization with triangulation"
|
||||
},
|
||||
"cameras": [
|
||||
{
|
||||
"id": "camera1",
|
||||
"position_mm": [
|
||||
265.397015887861,
|
||||
-448.6315082129522,
|
||||
515.3628550421728
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -140.09181177429903,
|
||||
"pitch": -1.842611823442935,
|
||||
"yaw": 2.450610543799479
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "camera2",
|
||||
"position_mm": [
|
||||
383.3214578496451,
|
||||
-385.83974146528055,
|
||||
953.5667818268885
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -159.08748070867932,
|
||||
"pitch": 8.461582940811079,
|
||||
"yaw": 7.425461023601154
|
||||
}
|
||||
}
|
||||
],
|
||||
"markers": [
|
||||
{
|
||||
"id": 198,
|
||||
"position_mm": [
|
||||
349.6740417480469,
|
||||
-44.07814407348633,
|
||||
88.61839294433594
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 2.5667577692881807,
|
||||
"pitch": 1.4580715758695812,
|
||||
"yaw": 1.4609442861632849
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 200,
|
||||
"position_mm": [
|
||||
280.2397155761719,
|
||||
-23.60141944885254,
|
||||
112.71051788330078
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 2.633060948359525,
|
||||
"pitch": -0.5171332067681839,
|
||||
"yaw": 3.8143400316997913
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 204,
|
||||
"position_mm": [
|
||||
279.1097717285156,
|
||||
127.85354614257812,
|
||||
122.40876007080078
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 0.11539855528707277,
|
||||
"pitch": 1.8119645874878296,
|
||||
"yaw": 1.2059489621885167
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 210,
|
||||
"position_mm": [
|
||||
-1.3366869688034058,
|
||||
-0.41581201553344727,
|
||||
0.6352185010910034
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 1.392657022348894,
|
||||
"pitch": -0.34765543020625655,
|
||||
"yaw": 0.9545639555981095
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 211,
|
||||
"position_mm": [
|
||||
200.00827026367188,
|
||||
-0.023877479135990143,
|
||||
0.02531452104449272
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 0.5726747013059821,
|
||||
"pitch": -0.4386454622262142,
|
||||
"yaw": 0.6785547309411363
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 214,
|
||||
"position_mm": [
|
||||
402.29820802367976,
|
||||
7.204420898576203,
|
||||
-21.035325233706548
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -4.430514955898216,
|
||||
"pitch": -3.1619089568308882,
|
||||
"yaw": 0.1308589144890069
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 215,
|
||||
"position_mm": [
|
||||
199.99966430664062,
|
||||
-90.02363586425781,
|
||||
0.01089040469378233
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 0.4079874268727783,
|
||||
"pitch": 0.10662199276007521,
|
||||
"yaw": 1.1834191807022583
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 223,
|
||||
"position_mm": [
|
||||
427.94940185546875,
|
||||
-240.49069213867188,
|
||||
92.17993927001953
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -7.682039212213371,
|
||||
"pitch": -28.31260565779191,
|
||||
"yaw": 5.048647103544987
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 226,
|
||||
"position_mm": [
|
||||
443.6652526855469,
|
||||
-125.32998657226562,
|
||||
79.9815902709961
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -5.654114523378114,
|
||||
"pitch": 3.6471568870248174,
|
||||
"yaw": 2.809074607780799
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 228,
|
||||
"position_mm": [
|
||||
481.57039719357545,
|
||||
-236.29591842142963,
|
||||
39.87178136845826
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -16.057635594680953,
|
||||
"pitch": 55.60127692022108,
|
||||
"yaw": -11.892761289401005
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 229,
|
||||
"position_mm": [
|
||||
352.33184814453125,
|
||||
-135.92752075195312,
|
||||
88.81539154052734
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 2.2601297965351503,
|
||||
"pitch": 0.9413138522933149,
|
||||
"yaw": 1.2921332576257998
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 243,
|
||||
"position_mm": [
|
||||
354.5863316838132,
|
||||
-150.94967446548407,
|
||||
26.990575716774543
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 92.20701707845971,
|
||||
"pitch": 2.043955224411742,
|
||||
"yaw": 1.9432810218927754
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 284 KiB |
BIN
test/snapshots/snapshot_video0_1778406635059_two_cam_overlay.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
test/snapshots/snapshot_video0_1778407153025.jpg
Normal file
|
After Width: | Height: | Size: 170 KiB |
17
test/snapshots/snapshot_video0_1778407153025_two_cam.csv
Normal file
@@ -0,0 +1,17 @@
|
||||
id,x_mm,y_mm,z_mm,roll_deg,pitch_deg,yaw_deg,seen_by
|
||||
camera 0,158.36,-593.39,578.95,-128.888,1.436,-15.566
|
||||
camera 1,387.25,-391.56,947.37,-158.603,8.621,7.638
|
||||
0,390.64,-42.76,-57.96,0.869,1.093,1.096,1
|
||||
198,334.11,-6.38,159.48,-30.514,0.703,2.172,2
|
||||
200,263.51,-25.92,115.97,1.396,0.003,3.587,3
|
||||
204,262.09,125.71,123.56,-1.138,2.084,1.523,3
|
||||
208,499.27,-81.15,-32.64,36.786,-9.918,-1.006,2
|
||||
210,-3.29,2.01,-3.86,-0.284,2.089,0.732,3
|
||||
211,199.97,0.04,-0.10,-0.360,0.282,-0.331,3
|
||||
214,416.92,55.17,-54.53,2.603,-0.313,0.497,1
|
||||
215,199.88,-89.84,-0.54,1.273,0.406,0.044,3
|
||||
217,642.91,84.41,-81.51,3.494,2.015,-0.760,1
|
||||
223,407.39,-219.71,161.30,24.607,-26.107,-13.137,3
|
||||
226,427.44,-115.61,205.02,22.093,3.594,0.933,3
|
||||
229,336.88,-83.96,194.87,-29.693,0.904,1.026,2
|
||||
243,336.42,-136.74,196.57,44.605,-22.045,-30.908,3
|
||||
|
227
test/snapshots/snapshot_video0_1778407153025_two_cam.json
Normal file
@@ -0,0 +1,227 @@
|
||||
{
|
||||
"metadata": {
|
||||
"timestamp": "2026-05-10 09:59:13",
|
||||
"reference_markers": [
|
||||
210,
|
||||
211,
|
||||
215
|
||||
],
|
||||
"dict": "DICT_4X4_250",
|
||||
"marker_size_mm": 25.0,
|
||||
"rms_refs_px_cam1": 4.037640585863036,
|
||||
"rms_refs_px_cam2": 0.35368062284827945,
|
||||
"description": "Two-camera joint optimization with triangulation"
|
||||
},
|
||||
"cameras": [
|
||||
{
|
||||
"id": "camera1",
|
||||
"position_mm": [
|
||||
158.3637652609236,
|
||||
-593.3933430814283,
|
||||
578.9501861619086
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -128.88780220793933,
|
||||
"pitch": 1.4363565503299847,
|
||||
"yaw": -15.565753425224687
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "camera2",
|
||||
"position_mm": [
|
||||
387.2468230079705,
|
||||
-391.55964302648147,
|
||||
947.3689579287991
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -158.60294191586274,
|
||||
"pitch": 8.621452909290047,
|
||||
"yaw": 7.638107369992987
|
||||
}
|
||||
}
|
||||
],
|
||||
"markers": [
|
||||
{
|
||||
"id": 0,
|
||||
"position_mm": [
|
||||
390.6387843924503,
|
||||
-42.7621855424406,
|
||||
-57.962717237959204
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 0.8692799659217282,
|
||||
"pitch": 1.0931707841628564,
|
||||
"yaw": 1.0964523562377044
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 198,
|
||||
"position_mm": [
|
||||
334.1105761644491,
|
||||
-6.383341988162982,
|
||||
159.47917099190266
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -30.513876703780277,
|
||||
"pitch": 0.7030511432366292,
|
||||
"yaw": 2.1723530299232174
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 200,
|
||||
"position_mm": [
|
||||
263.5056457519531,
|
||||
-25.92091941833496,
|
||||
115.9714584350586
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 1.3958934920738213,
|
||||
"pitch": 0.0030810830461071785,
|
||||
"yaw": 3.587025581205188
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 204,
|
||||
"position_mm": [
|
||||
262.0873107910156,
|
||||
125.70845794677734,
|
||||
123.56187438964844
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -1.1384989840329478,
|
||||
"pitch": 2.0838607039127384,
|
||||
"yaw": 1.5234662612083132
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 208,
|
||||
"position_mm": [
|
||||
499.2681534131064,
|
||||
-81.1536514000235,
|
||||
-32.6360145861917
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 36.78623735054579,
|
||||
"pitch": -9.917537883912583,
|
||||
"yaw": -1.0060423963714051
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 210,
|
||||
"position_mm": [
|
||||
-3.2904393672943115,
|
||||
2.0091781616210938,
|
||||
-3.8569560050964355
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -0.2844449975671197,
|
||||
"pitch": 2.088986796376549,
|
||||
"yaw": 0.7318757468677802
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 211,
|
||||
"position_mm": [
|
||||
199.96714782714844,
|
||||
0.036044832319021225,
|
||||
-0.10493536293506622
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -0.3596510701204492,
|
||||
"pitch": 0.2819800595592275,
|
||||
"yaw": -0.33064209912600223
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 214,
|
||||
"position_mm": [
|
||||
416.9196684070423,
|
||||
55.16722846050992,
|
||||
-54.53336540373432
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 2.6025596581543113,
|
||||
"pitch": -0.31274834760090375,
|
||||
"yaw": 0.4965197650165277
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 215,
|
||||
"position_mm": [
|
||||
199.87811279296875,
|
||||
-89.84262084960938,
|
||||
-0.537714421749115
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 1.272501125792174,
|
||||
"pitch": 0.4056540461945203,
|
||||
"yaw": 0.04380828051345797
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 217,
|
||||
"position_mm": [
|
||||
642.9125537201817,
|
||||
84.41179556964696,
|
||||
-81.51024043559329
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 3.4938631545234684,
|
||||
"pitch": 2.0153184255735406,
|
||||
"yaw": -0.7601476308219924
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 223,
|
||||
"position_mm": [
|
||||
407.3850402832031,
|
||||
-219.70761108398438,
|
||||
161.30087280273438
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 24.606665041324728,
|
||||
"pitch": -26.10740646159854,
|
||||
"yaw": -13.137366415947858
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 226,
|
||||
"position_mm": [
|
||||
427.4405822753906,
|
||||
-115.60576629638672,
|
||||
205.0249786376953
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 22.09290336947975,
|
||||
"pitch": 3.5938824646587535,
|
||||
"yaw": 0.9331204880248806
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 229,
|
||||
"position_mm": [
|
||||
336.87580740414757,
|
||||
-83.959242272582,
|
||||
194.86770890959903
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -29.692998825834785,
|
||||
"pitch": 0.9037989541452385,
|
||||
"yaw": 1.0260204426370985
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 243,
|
||||
"position_mm": [
|
||||
336.4207458496094,
|
||||
-136.7364959716797,
|
||||
196.57156372070312
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 44.6053999146273,
|
||||
"pitch": -22.04468899658641,
|
||||
"yaw": -30.908455971021343
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 267 KiB |
BIN
test/snapshots/snapshot_video0_1778407153025_two_cam_overlay.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
test/snapshots/snapshot_video0_1778407171886.jpg
Normal file
|
After Width: | Height: | Size: 175 KiB |
17
test/snapshots/snapshot_video0_1778407171886_two_cam.csv
Normal file
@@ -0,0 +1,17 @@
|
||||
id,x_mm,y_mm,z_mm,roll_deg,pitch_deg,yaw_deg,seen_by
|
||||
camera 0,158.04,-592.18,579.62,-128.975,1.364,-15.554
|
||||
camera 1,388.46,-401.39,943.65,-158.006,8.598,7.755
|
||||
0,390.69,-42.64,-58.10,0.765,1.049,1.109,1
|
||||
198,385.31,-8.17,159.76,-28.970,2.390,1.497,2
|
||||
200,312.76,-26.17,115.22,2.281,-0.327,3.654,3
|
||||
204,311.88,127.59,120.99,0.516,2.065,2.400,3
|
||||
208,523.91,-27.55,-70.87,4.376,1.392,3.328,1
|
||||
210,-3.34,2.13,-3.99,91.337,14.104,14.036,3
|
||||
211,199.97,0.04,-0.11,92.750,-3.786,-5.385,3
|
||||
214,433.21,95.07,-93.91,1.294,-1.762,0.048,1
|
||||
215,199.88,-89.83,-0.55,1.169,0.360,0.057,3
|
||||
223,457.00,-220.65,160.56,32.192,-28.164,-16.125,3
|
||||
226,477.70,-116.40,204.08,24.445,3.521,2.498,3
|
||||
228,507.31,-218.59,145.95,39.614,50.980,31.819,2
|
||||
229,388.41,-88.19,198.82,-28.626,1.389,1.347,2
|
||||
243,385.41,-138.00,196.06,60.074,3.006,0.942,3
|
||||
|
227
test/snapshots/snapshot_video0_1778407171886_two_cam.json
Normal file
@@ -0,0 +1,227 @@
|
||||
{
|
||||
"metadata": {
|
||||
"timestamp": "2026-05-10 09:59:32",
|
||||
"reference_markers": [
|
||||
210,
|
||||
211,
|
||||
215
|
||||
],
|
||||
"dict": "DICT_4X4_250",
|
||||
"marker_size_mm": 25.0,
|
||||
"rms_refs_px_cam1": 4.0379342194834145,
|
||||
"rms_refs_px_cam2": 0.3525640978340953,
|
||||
"description": "Two-camera joint optimization with triangulation"
|
||||
},
|
||||
"cameras": [
|
||||
{
|
||||
"id": "camera1",
|
||||
"position_mm": [
|
||||
158.03930225498664,
|
||||
-592.180367667669,
|
||||
579.6243862008779
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -128.9753618664107,
|
||||
"pitch": 1.3642445786373374,
|
||||
"yaw": -15.553542082518831
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "camera2",
|
||||
"position_mm": [
|
||||
388.4601350644073,
|
||||
-401.3948487989071,
|
||||
943.6529198481344
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -158.0062544707651,
|
||||
"pitch": 8.597964890026196,
|
||||
"yaw": 7.754523539624292
|
||||
}
|
||||
}
|
||||
],
|
||||
"markers": [
|
||||
{
|
||||
"id": 0,
|
||||
"position_mm": [
|
||||
390.6880896022262,
|
||||
-42.64412449230426,
|
||||
-58.0972316427476
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 0.7647269178228525,
|
||||
"pitch": 1.049185198054671,
|
||||
"yaw": 1.108848865155235
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 198,
|
||||
"position_mm": [
|
||||
385.3133827088088,
|
||||
-8.171522799495012,
|
||||
159.7637737468176
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -28.969920792916543,
|
||||
"pitch": 2.39030770057407,
|
||||
"yaw": 1.4968801274589405
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 200,
|
||||
"position_mm": [
|
||||
312.7627868652344,
|
||||
-26.1728572845459,
|
||||
115.22242736816406
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 2.2808890072502392,
|
||||
"pitch": -0.3274094066131204,
|
||||
"yaw": 3.6541782174556747
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 204,
|
||||
"position_mm": [
|
||||
311.876220703125,
|
||||
127.58633422851562,
|
||||
120.98774719238281
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 0.5158318086332035,
|
||||
"pitch": 2.06453002657979,
|
||||
"yaw": 2.400260110706478
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 208,
|
||||
"position_mm": [
|
||||
523.9084074808294,
|
||||
-27.546175716282264,
|
||||
-70.86775385107103
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 4.376126337936395,
|
||||
"pitch": 1.3924940964670567,
|
||||
"yaw": 3.328036024175951
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 210,
|
||||
"position_mm": [
|
||||
-3.338937520980835,
|
||||
2.1271181106567383,
|
||||
-3.9890851974487305
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 91.33725138238549,
|
||||
"pitch": 14.104010525793678,
|
||||
"yaw": 14.035641296225394
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 211,
|
||||
"position_mm": [
|
||||
199.96713256835938,
|
||||
0.037796709686517715,
|
||||
-0.10643231868743896
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 92.74967187358487,
|
||||
"pitch": -3.786197853433813,
|
||||
"yaw": -5.384933547204122
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 214,
|
||||
"position_mm": [
|
||||
433.21136641262757,
|
||||
95.07263850323223,
|
||||
-93.91074803910848
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 1.2942096661143863,
|
||||
"pitch": -1.7616427894502695,
|
||||
"yaw": 0.04798612599241947
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 215,
|
||||
"position_mm": [
|
||||
199.87725830078125,
|
||||
-89.83390045166016,
|
||||
-0.5476088523864746
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 1.1687892340044546,
|
||||
"pitch": 0.35975660897382916,
|
||||
"yaw": 0.05746662106150169
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 223,
|
||||
"position_mm": [
|
||||
457.0023193359375,
|
||||
-220.65341186523438,
|
||||
160.55662536621094
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 32.19215623582208,
|
||||
"pitch": -28.163885080615586,
|
||||
"yaw": -16.12513107176477
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 226,
|
||||
"position_mm": [
|
||||
477.6986999511719,
|
||||
-116.39785766601562,
|
||||
204.0816192626953
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 24.44540408786654,
|
||||
"pitch": 3.5209180259894635,
|
||||
"yaw": 2.498316767787566
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 228,
|
||||
"position_mm": [
|
||||
507.3054086247164,
|
||||
-218.5947100755589,
|
||||
145.95120715412878
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 39.61414520333383,
|
||||
"pitch": 50.97993589341308,
|
||||
"yaw": 31.81879176756129
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 229,
|
||||
"position_mm": [
|
||||
388.40604224907537,
|
||||
-88.1935956561397,
|
||||
198.81778665267646
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -28.62629432681035,
|
||||
"pitch": 1.3894110554484702,
|
||||
"yaw": 1.3473468463901406
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 243,
|
||||
"position_mm": [
|
||||
385.4113464355469,
|
||||
-137.99954223632812,
|
||||
196.05523681640625
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 60.07436472666781,
|
||||
"pitch": 3.005858013729151,
|
||||
"yaw": 0.9420958018669331
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 273 KiB |
BIN
test/snapshots/snapshot_video0_1778407171886_two_cam_overlay.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
test/snapshots/snapshot_video1_1777957783463.jpg
Normal file
|
After Width: | Height: | Size: 140 KiB |
|
After Width: | Height: | Size: 221 KiB |
BIN
test/snapshots/snapshot_video1_1777957783463_two_cam_overlay.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
test/snapshots/snapshot_video1_1777958128576.jpg
Normal file
|
After Width: | Height: | Size: 152 KiB |
|
After Width: | Height: | Size: 236 KiB |
BIN
test/snapshots/snapshot_video1_1777958128576_two_cam_overlay.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
test/snapshots/snapshot_video1_1778054889025.jpg
Normal file
|
After Width: | Height: | Size: 145 KiB |
BIN
test/snapshots/snapshot_video1_1778406621349.jpg
Normal file
|
After Width: | Height: | Size: 153 KiB |
|
After Width: | Height: | Size: 233 KiB |
BIN
test/snapshots/snapshot_video1_1778406621349_two_cam_overlay.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
test/snapshots/snapshot_video1_1778406635059.jpg
Normal file
|
After Width: | Height: | Size: 155 KiB |
|
After Width: | Height: | Size: 236 KiB |
BIN
test/snapshots/snapshot_video1_1778406635059_two_cam_overlay.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
test/snapshots/snapshot_video1_1778407153025.jpg
Normal file
|
After Width: | Height: | Size: 152 KiB |
|
After Width: | Height: | Size: 234 KiB |
BIN
test/snapshots/snapshot_video1_1778407171886.jpg
Normal file
|
After Width: | Height: | Size: 152 KiB |
|
After Width: | Height: | Size: 235 KiB |
BIN
test/snapshots/snapshot_video1_1778407171886_two_cam_overlay.png
Normal file
|
After Width: | Height: | Size: 30 KiB |