diff --git a/doc/Homing.md b/doc/Homing.md index e9db23f..567ccb2 100644 --- a/doc/Homing.md +++ b/doc/Homing.md @@ -21,6 +21,7 @@ Dieses Dokument ist der **allgemeine Ablauf**. Technische Detail-Doku je Teilstr | [`Homing_0_Camera.md`](Homing_0_Camera.md) | Foto → Kamera-Pose → trianguliertes `aruco_marker_poses.json` (Schritte 1–3b) | | [`Homing_1_StepByStep.md`](Homing_1_StepByStep.md) | `aruco_marker_poses.json` → Gelenkwinkel je Link (4b-Kette, Schätz-Methoden/Fallbacks) | | `Homing_2_improvement.md` *(geplant)* | Bekannte Probleme, Genauigkeits-Befunde, Verbesserungsideen | +| [`Homing_5_Pose.md`](Homing_5_Pose.md) | Verfeinerungsschritt NACH der 4b-Kette (Bundle-Adjustment, `5_pose_estimation.py`) — noch nicht verdrahtet | --- diff --git a/doc/Homing_1_StepByStep.md b/doc/Homing_1_StepByStep.md index b7117df..a3b13e0 100644 --- a/doc/Homing_1_StepByStep.md +++ b/doc/Homing_1_StepByStep.md @@ -80,4 +80,5 @@ Weitere/künftige Befunde: siehe `Homing_2_improvement.md` (geplant). - Allgemeiner Ablauf: [`Homing.md`](Homing.md) - Vorheriger Schritt (Kamera/Triangulation): [`Homing_0_Camera.md`](Homing_0_Camera.md) +- Nächster Schritt (Verfeinerung nach 4b): [`Homing_5_Pose.md`](Homing_5_Pose.md) - Bekannte Probleme / Ideen: `Homing_2_improvement.md` (geplant) diff --git a/scripts/robot_1781069752019.json b/scripts/robot_1781069752019.json index 58ca3d1..022faff 100644 --- a/scripts/robot_1781069752019.json +++ b/scripts/robot_1781069752019.json @@ -334,11 +334,11 @@ "markers": [ {"id": 116, "name": "aruco_116", "position": [125, 0, 0], "normal": [1, 0, 0], "size": 25, "spin": 0}, {"id": 245, "name": "aruco_245", "position": [90, 0, -35], "normal": [0, 0, -1], "size": 25, "spin": 0}, - {"id": 129, "name": "aruco_129", "position": [90, 0, 35], "normal": [0, 0, 1], "size": 25}, - {"id": 132, "name": "aruco_132", "position": [52.5, 0, 35], "normal": [0, 0, 1], "size": 25}, - {"id": 248, "name": "aruco_248", "position": [52.5, 0, -35], "normal": [0, 0, -1], "size": 25}, - {"id": 232, "name": "aruco_232", "position": [90, 24.75, -24.75], "normal": [0, 1, -1], "size": 25}, - {"id": 121, "name": "aruco_121", "position": [90, 24.75, 24.75], "normal": [0, 1, 1], "size": 25} + {"id": 129, "name": "aruco_129", "position": [90, 0, 35], "normal": [0, 0, 1], "size": 25, "spin": 90}, + {"id": 132, "name": "aruco_132", "position": [52.5, 0, 35], "normal": [0, 0, 1], "size": 25, "spin": 90}, + {"id": 248, "name": "aruco_248", "position": [52.5, 0, -35], "normal": [0, 0, -1], "size": 25, "spin": 90}, + {"id": 232, "name": "aruco_232", "position": [90, 24.75, -24.75], "normal": [0, 1, -1], "size": 25, "spin": 90}, + {"id": 121, "name": "aruco_121", "position": [90, 24.75, 24.75], "normal": [0, 1, 1], "size": 25, "spin": 90} ] }, "Arm2": { @@ -363,10 +363,10 @@ } ], "markers": [ - {"id": 148, "name": "aruco_148", "position": [-35, -219, 0], "normal": [-1,0,0], "size": 25}, - {"id": 144, "name": "aruco_144", "position": [-35, -112, 0], "normal": [-1,0,0], "size": 25}, - {"id": 146, "name": "aruco_146", "position": [-24.75, -112, 24.75], "normal": [-1,0,1], "size": 25}, - {"id": 143, "name": "aruco_143", "position": [-24.75, -182, 24.75], "normal": [-1,0,1], "size": 25} + {"id": 148, "name": "aruco_148", "position": [-35, -219, 0], "normal": [-1,0,0], "size": 25, "spin": 90}, + {"id": 144, "name": "aruco_144", "position": [-35, -112, 0], "normal": [-1,0,0], "size": 25, "spin": 90}, + {"id": 146, "name": "aruco_146", "position": [-24.75, -112, 24.75], "normal": [-1,0,1], "size": 25, "spin": 90}, + {"id": 143, "name": "aruco_143", "position": [-24.75, -182, 24.75], "normal": [-1,0,1], "size": 25, "spin": 90} ] }, "Hand": { diff --git a/test/homing/20260616_133151/aruco_marker_poses.csv b/test/homing/20260616_133151/aruco_marker_poses.csv new file mode 100644 index 0000000..36601c1 --- /dev/null +++ b/test/homing/20260616_133151/aruco_marker_poses.csv @@ -0,0 +1,36 @@ +marker_id,link,set,num_cameras,x_mm,y_mm,z_mm,nx,ny,nz,model_x_mm,model_y_mm,model_z_mm,dist_to_model_mm,delta_z_mm,edge_length_mm +47,Board,A0,3,344.07,-286.3,-27.25,-0.00046,0.04835,0.99883,344.23,-286.54,-27.3,0.29,0.049,23.64 +48,Board,A0,2,689.52,-321.32,-28.55,0.01818,0.02703,0.99947,688.69,-320.72,-27.3,1.616,-1.254,23.78 +50,Board,A0,2,571.33,211.68,-25.85,0.00822,0.04745,0.99884,573.41,211.86,-27.3,2.541,1.448,23.82 +54,Board,A0,3,342.21,-330.38,-27.07,-0.0045,-0.03292,0.99945,342.27,-330.59,-27.3,0.316,0.232,23.88 +55,Board,A0,2,283.85,-262.4,-26.76,-0.01527,0.02358,0.99961,283.72,-262.58,-27.3,0.584,0.539,23.51 +56,Board,A0,2,497.11,168.6,-25.78,-0.01905,0.05595,0.99825,498.68,168.67,-27.3,2.185,1.521,23.56 +57,Board,A0,2,601.71,-363.5,-26.19,0.08577,0.00861,0.99628,602.86,-364.05,-27.3,1.694,1.114,24.87 +62,Board,A0,2,403.89,-175.17,-26.78,0.05288,0.02731,0.99823,404.7,-175.1,-27.3,0.961,0.516,23.82 +65,Board,A0,2,804.08,-298.54,-28.26,0.00387,0.04132,0.99914,803.39,-297.37,-27.3,1.663,-0.96,23.39 +68,Board,A0,2,571.76,170.66,-26.3,-0.02368,0.08555,0.99605,573.73,170.64,-27.3,2.214,1.002,23.99 +71,Board,A0,2,749.94,-284.72,-27.83,-0.01828,-0.03647,0.99917,749.75,-284.01,-27.3,0.907,-0.531,23.66 +76,Board,A0,2,682.81,166.72,-25.42,-0.05902,0.09056,0.99414,685.21,166.8,-27.3,3.051,1.881,23.55 +78,Board,A0,2,823.93,-345.77,-28.33,-0.08861,0.04663,0.99497,823.11,-344.38,-27.3,1.915,-1.026,22.6 +80,Board,A0,2,865.26,-337.13,-28.53,0.04092,0.04275,0.99825,863.59,-335.92,-27.3,2.401,-1.232,23.61 +87,Board,A0,2,944.69,-246.96,-28.14,0.02302,0.04013,0.99893,943.63,-245.76,-27.3,1.81,-0.837,23.78 +93,Board,A0,2,932.11,143.72,-23.95,0.06718,0.06443,0.99566,934.88,143.6,-27.3,4.343,3.346,25.06 +94,Board,A0,2,873.49,174.05,-24.98,0.05325,0.0697,0.99615,875.7,173.65,-27.3,3.229,2.323,24.42 +96,Board,A0,2,369.02,-186.37,-26.89,-0.04231,0.05761,0.99744,369.77,-186.49,-27.3,0.864,0.406,23.31 +97,Board,A0,3,304.13,-359.31,-26.85,0.04194,0.01906,0.99894,304.35,-359.67,-27.3,0.616,0.45,23.99 +99,Board,A0,2,961.74,-323.22,-29.1,0.04681,0.01859,0.99873,959.16,-321.55,-27.3,3.561,-1.797,24.0 +129,Ellbow,,3,393.47,-110.57,207.56,0.00825,0.0056,0.99995,,,,,,23.63 +132,Ellbow,,3,356.94,-110.62,208.02,0.00671,0.01225,0.9999,,,,,,24.03 +143,Arm2,,3,371.09,-292.28,195.24,-0.70987,-0.0132,0.70421,,,,,,24.23 +144,Arm2,,3,359.12,-222.05,171.29,-0.99909,0.03674,0.02153,,,,,,24.42 +146,Arm2,,3,370.78,-222.38,195.96,-0.66898,-0.00514,0.74326,,,,,,24.13 +148,Arm2,,3,360.2,-328.6,169.11,-0.99937,0.02225,0.02756,,,,,,24.15 +198,Arm1,,2,300.76,-14.03,160.54,0.02386,0.50667,0.86181,,,,,,24.53 +205,unknown,,2,934.74,-97.18,-5.56,-0.00513,0.04577,0.99894,,,,,,23.15 +207,unknown,,2,933.91,-7.47,-5.45,-0.07244,0.04588,0.99632,,,,,,21.75 +229,Arm1,,2,303.05,-92.5,205.63,0.01472,0.48131,0.87642,,,,,,24.21 + +camera_id,x_mm,y_mm,z_mm,dir_x,dir_y,dir_z +cam0,-162.87,22.94,405.51,0.8496,-0.39087,-0.35411 +cam1,-231.98,-599.98,855.31,0.51773,0.43658,-0.73577 +cam2,1.29,141.6,837.2,0.63268,-0.31236,-0.70863 diff --git a/test/homing/20260616_133151/aruco_marker_poses.json b/test/homing/20260616_133151/aruco_marker_poses.json new file mode 100644 index 0000000..cad0b63 --- /dev/null +++ b/test/homing/20260616_133151/aruco_marker_poses.json @@ -0,0 +1,1387 @@ +{ + "schema_version": "1.1", + "stage": "corner_marker_poses", + "created_utc": "2026-06-16T13:32:03Z", + "summary": { + "num_cameras": 3, + "num_markers": 30 + }, + "cameras": [ + { + "camera_id": "cam0", + "position_m": [ + -0.1628705099258756, + 0.02294452187165552, + 0.40550785407628 + ], + "position_mm": [ + -162.87050992587558, + 22.94452187165552, + 405.50785407627995 + ], + "direction": [ + 0.8496045470237732, + -0.39086830615997314, + -0.35411033034324646 + ] + }, + { + "camera_id": "cam1", + "position_m": [ + -0.23198224363147868, + -0.5999832414831001, + 0.8553068544587195 + ], + "position_mm": [ + -231.98224363147867, + -599.9832414831001, + 855.3068544587195 + ], + "direction": [ + 0.5177267789840698, + 0.43658381700515747, + -0.7357673048973083 + ] + }, + { + "camera_id": "cam2", + "position_m": [ + 0.0012938044926276149, + 0.14159730515329993, + 0.837198128019226 + ], + "position_mm": [ + 1.2938044926276149, + 141.59730515329994, + 837.198128019226 + ], + "direction": [ + 0.632677435874939, + -0.31235870718955994, + -0.7086263298988342 + ] + } + ], + "markers": [ + { + "marker_id": 47, + "link": "Board", + "set": "A0", + "position_m": [ + 0.34406832357920897, + -0.28630487928065007, + -0.027250706619831012 + ], + "position_mm": [ + 344.068323579209, + -286.3048792806501, + -27.250706619831014 + ], + "normal": [ + -0.00046299541293428736, + 0.048354887437254815, + 0.9988301109278684 + ], + "corners_m": [ + [ + 0.3319225981028843, + -0.29800613997192776, + -0.026554217035550012 + ], + [ + 0.33278286288201436, + -0.27424152593764056, + -0.027978779343938585 + ], + [ + 0.3559418104981255, + -0.2745549345066042, + -0.027675558812642602 + ], + [ + 0.35562602283381173, + -0.2984169167064279, + -0.02679427128719286 + ] + ], + "num_cameras": 3, + "edge_length_mm": 23.643600439990518 + }, + { + "marker_id": 48, + "link": "Board", + "set": "A0", + "position_m": [ + 0.6895169101142469, + -0.321317001832353, + -0.028553680390264416 + ], + "position_mm": [ + 689.5169101142469, + -321.317001832353, + -28.553680390264415 + ], + "normal": [ + 0.0181825620523064, + 0.027029186165835387, + 0.9994692679279472 + ], + "corners_m": [ + [ + 0.6775593167319751, + -0.3331004882053257, + -0.028782931070410023 + ], + [ + 0.6775162648909312, + -0.3092413602651485, + -0.027945280632583284 + ], + [ + 0.7022138321716432, + -0.30993439391749095, + -0.02983163495651832 + ], + [ + 0.700778226662438, + -0.332991764941447, + -0.027654874901546035 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.775988878758945 + }, + { + "marker_id": 50, + "link": "Board", + "set": "A0", + "position_m": [ + 0.5713292772001535, + 0.21168422628538075, + -0.025851548038899864 + ], + "position_mm": [ + 571.3292772001535, + 211.68422628538076, + -25.851548038899864 + ], + "normal": [ + 0.008219271996727485, + 0.047446396982887995, + 0.9988399686542315 + ], + "corners_m": [ + [ + 0.5593597091656909, + 0.1996256056619263, + -0.025450236142649563 + ], + [ + 0.5596937542993856, + 0.22370370962304392, + -0.026063672646337514 + ], + [ + 0.583597720916033, + 0.22364415071344526, + -0.0267853363741809 + ], + [ + 0.5826659244195044, + 0.19976343914310754, + -0.02510694699243147 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.817515639690022 + }, + { + "marker_id": 54, + "link": "Board", + "set": "A0", + "position_m": [ + 0.3422109460906906, + -0.33038300792715336, + -0.027068362830573404 + ], + "position_mm": [ + 342.2109460906906, + -330.38300792715336, + -27.068362830573403 + ], + "normal": [ + -0.004500095825066982, + -0.03291679352362953, + 0.9994479645492745 + ], + "corners_m": [ + [ + 0.33029224026478327, + -0.3423628003168663, + -0.027594529368063257 + ], + [ + 0.33041230569632624, + -0.31837130308139333, + -0.026646114510467965 + ], + [ + 0.35385610750203217, + -0.31836645096064464, + -0.026699727395651303 + ], + [ + 0.3542831308996207, + -0.34243147734970925, + -0.027333080048111098 + ] + ], + "num_cameras": 3, + "edge_length_mm": 23.88098991992613 + }, + { + "marker_id": 55, + "link": "Board", + "set": "A0", + "position_m": [ + 0.28384966980470994, + -0.2623966623485928, + -0.026761101168685276 + ], + "position_mm": [ + 283.84966980470995, + -262.3966623485928, + -26.761101168685276 + ], + "normal": [ + -0.015272783370370382, + 0.02358256573731432, + 0.999605224416803 + ], + "corners_m": [ + [ + 0.2715390496760945, + -0.2739643576220115, + -0.026820205179264034 + ], + [ + 0.2724846312335602, + -0.2504161581907261, + -0.027071711992145805 + ], + [ + 0.2960144063969984, + -0.25106270785685236, + -0.026991180633997584 + ], + [ + 0.2953605919121868, + -0.27414342572478134, + -0.026161306869333677 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.510880867324644 + }, + { + "marker_id": 56, + "link": "Board", + "set": "A0", + "position_m": [ + 0.497113511465654, + 0.16859854900403676, + -0.025778905401085565 + ], + "position_mm": [ + 497.113511465654, + 168.59854900403676, + -25.778905401085566 + ], + "normal": [ + -0.019050981843176686, + 0.055949359948133125, + 0.9982518365684109 + ], + "corners_m": [ + [ + 0.48549568524695325, + 0.15667147037223741, + -0.02558408592938751 + ], + [ + 0.4858628744700326, + 0.1809787199852434, + -0.02644055038790101 + ], + [ + 0.5089670450422528, + 0.1804038936290591, + -0.026463135922311216 + ], + [ + 0.5081284411033775, + 0.15634011202960715, + -0.024627849364742525 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.560009858381644 + }, + { + "marker_id": 57, + "link": "Board", + "set": "A0", + "position_m": [ + 0.6017110614480885, + -0.3634951752072131, + -0.02618586322267321 + ], + "position_mm": [ + 601.7110614480885, + -363.4951752072131, + -26.18586322267321 + ], + "normal": [ + 0.08577366423552137, + 0.008611002813679547, + 0.9962774358350965 + ], + "corners_m": [ + [ + 0.589187776424628, + -0.37518468403933364, + -0.02557703560218388 + ], + [ + 0.588795285764888, + -0.35035398012844726, + -0.024676634173987844 + ], + [ + 0.6154750954886281, + -0.352586430699487, + -0.02800809544905225 + ], + [ + 0.6133860881142098, + -0.37585560596158457, + -0.026481687665468864 + ] + ], + "num_cameras": 2, + "edge_length_mm": 24.866681264793044 + }, + { + "marker_id": 62, + "link": "Board", + "set": "A0", + "position_m": [ + 0.4038914791209266, + -0.17516969394865578, + -0.02678437535466744 + ], + "position_mm": [ + 403.8914791209266, + -175.16969394865578, + -26.78437535466744 + ], + "normal": [ + 0.05287956731390678, + 0.02731200357428009, + 0.9982273317343362 + ], + "corners_m": [ + [ + 0.39155475327729705, + -0.1868869289412326, + -0.025847645468806114 + ], + [ + 0.39217002734362116, + -0.16319396983312676, + -0.026455794075673094 + ], + [ + 0.41688989974851565, + -0.16366206061782146, + -0.027823744111360443 + ], + [ + 0.4149512361142725, + -0.18693581640244233, + -0.027010317762830104 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.81619803785201 + }, + { + "marker_id": 65, + "link": "Board", + "set": "A0", + "position_m": [ + 0.8040783744907465, + -0.29853957365702044, + -0.02826034535501312 + ], + "position_mm": [ + 804.0783744907465, + -298.53957365702047, + -28.26034535501312 + ], + "normal": [ + 0.0038668127953978525, + 0.04132246269512396, + 0.999138379723057 + ], + "corners_m": [ + [ + 0.7918343455536125, + -0.31041324999132935, + -0.028142955318119008 + ], + [ + 0.7932374264976267, + -0.2867286513155285, + -0.028305401398608144 + ], + [ + 0.816858553582129, + -0.28680113901365994, + -0.029200350419178667 + ], + [ + 0.8143831723296177, + -0.31021525430756414, + -0.027392674284146653 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.385233077403257 + }, + { + "marker_id": 68, + "link": "Board", + "set": "A0", + "position_m": [ + 0.5717557448157939, + 0.17066258167089415, + -0.026298145787732742 + ], + "position_mm": [ + 571.755744815794, + 170.66258167089416, + -26.298145787732743 + ], + "normal": [ + -0.023683112378044494, + 0.08554833294088282, + 0.9960525051015758 + ], + "corners_m": [ + [ + 0.5596244775795431, + 0.1583557946842382, + -0.02532802544194283 + ], + [ + 0.5607819349294129, + 0.18312466045037815, + -0.027823503508598867 + ], + [ + 0.5843079693063565, + 0.18292866436773608, + -0.02685794589750975 + ], + [ + 0.5823085974478632, + 0.15824120718122425, + -0.02518310830287952 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.994382275792184 + }, + { + "marker_id": 71, + "link": "Board", + "set": "A0", + "position_m": [ + 0.7499356269846108, + -0.2847215506299888, + -0.027831290194201636 + ], + "position_mm": [ + 749.9356269846108, + -284.72155062998877, + -27.831290194201635 + ], + "normal": [ + -0.01828410167043385, + -0.036465406306610444, + 0.9991676364699765 + ], + "corners_m": [ + [ + 0.7382509267635813, + -0.29630879548620764, + -0.02876786473782621 + ], + [ + 0.738123886049342, + -0.27235208777286835, + -0.027309557227349252 + ], + [ + 0.7621613345434366, + -0.2733203910090926, + -0.027482641309465344 + ], + [ + 0.7612063605820835, + -0.29690492825178644, + -0.027765097502165742 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.6623913711695 + }, + { + "marker_id": 76, + "link": "Board", + "set": "A0", + "position_m": [ + 0.6828097533737594, + 0.16671735700907112, + -0.025418515517080038 + ], + "position_mm": [ + 682.8097533737593, + 166.71735700907112, + -25.41851551708004 + ], + "normal": [ + -0.05901928278586944, + 0.09056491425436952, + 0.9941401916055604 + ], + "corners_m": [ + [ + 0.6713378502615791, + 0.1548095189864322, + -0.02589935647227081 + ], + [ + 0.6716790725032302, + 0.17872855220856151, + -0.02638756353224057 + ], + [ + 0.6957613227792815, + 0.1788404061432035, + -0.026514734457293535 + ], + [ + 0.6924607679509462, + 0.15449095069808724, + -0.02287240760651524 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.54774663921204 + }, + { + "marker_id": 78, + "link": "Board", + "set": "A0", + "position_m": [ + 0.8239296675747367, + -0.3457734511150734, + -0.02832578964969588 + ], + "position_mm": [ + 823.9296675747368, + -345.7734511150734, + -28.32578964969588 + ], + "normal": [ + -0.08861234241289173, + 0.046629878613246196, + 0.9949741238809251 + ], + "corners_m": [ + [ + 0.8122465478181892, + -0.35717806591803736, + -0.028734716565410413 + ], + [ + 0.8138486573181861, + -0.33398216758726745, + -0.029871846742537473 + ], + [ + 0.8357641228189375, + -0.33430720202827063, + -0.027714004715587624 + ], + [ + 0.8338593423436345, + -0.3576263689267181, + -0.026982590575248003 + ] + ], + "num_cameras": 2, + "edge_length_mm": 22.599846406064167 + }, + { + "marker_id": 80, + "link": "Board", + "set": "A0", + "position_m": [ + 0.8652583213644081, + -0.3371303588065573, + -0.028532085769394963 + ], + "position_mm": [ + 865.2583213644081, + -337.1303588065573, + -28.532085769394964 + ], + "normal": [ + 0.040922600685748114, + 0.04275330259757293, + 0.9982472118018237 + ], + "corners_m": [ + [ + 0.8523645427254902, + -0.34863689960108213, + -0.027831469708644647 + ], + [ + 0.8540103635752417, + -0.32506728150437053, + -0.02828234457632503 + ], + [ + 0.8786471803390113, + -0.32629776119942033, + -0.029867978199008705 + ], + [ + 0.8760111988178891, + -0.34851949292135626, + -0.02814655059360146 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.61060908668887 + }, + { + "marker_id": 87, + "link": "Board", + "set": "A0", + "position_m": [ + 0.9446906312339923, + -0.24696370238219595, + -0.028137422221901156 + ], + "position_mm": [ + 944.6906312339923, + -246.96370238219595, + -28.137422221901154 + ], + "normal": [ + 0.023020788336251003, + 0.04012857779919376, + 0.9989292970717154 + ], + "corners_m": [ + [ + 0.9322931547890098, + -0.2583939791557899, + -0.02814160855352623 + ], + [ + 0.9334526110914668, + -0.23486527721171613, + -0.02770276198988089 + ], + [ + 0.9585522998470111, + -0.23544300798764478, + -0.02957019600919389 + ], + [ + 0.9544644592084816, + -0.25915254517363295, + -0.027135122335003616 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.781599780820528 + }, + { + "marker_id": 93, + "link": "Board", + "set": "A0", + "position_m": [ + 0.9321134158176527, + 0.14371975922985453, + -0.02395441618502875 + ], + "position_mm": [ + 932.1134158176527, + 143.71975922985453, + -23.954416185028748 + ], + "normal": [ + 0.0671803629855419, + 0.06443246499891825, + 0.9956582025390511 + ], + "corners_m": [ + [ + 0.9188234737966242, + 0.1314167029574609, + -0.022712380193652744 + ], + [ + 0.9197685363291249, + 0.15547559147890724, + -0.023468374287105104 + ], + [ + 0.9464679895049911, + 0.15618766774763237, + -0.02613670664581234 + ], + [ + 0.9433936636398708, + 0.13179907473541758, + -0.023500203613544813 + ] + ], + "num_cameras": 2, + "edge_length_mm": 25.059896676423197 + }, + { + "marker_id": 94, + "link": "Board", + "set": "A0", + "position_m": [ + 0.8734934483633994, + 0.17404830688948264, + -0.024976526723802555 + ], + "position_mm": [ + 873.4934483633994, + 174.04830688948263, + -24.976526723802554 + ], + "normal": [ + 0.053254568432674426, + 0.06969536059370657, + 0.9961458264996962 + ], + "corners_m": [ + [ + 0.8599064299429243, + 0.16223724020206182, + -0.023590819152882553 + ], + [ + 0.862444522782732, + 0.18597776535648014, + -0.025053384325245006 + ], + [ + 0.8870831496349616, + 0.18608382950755079, + -0.026708796918304037 + ], + [ + 0.8845396910929793, + 0.1618943924918378, + -0.02455310649877862 + ] + ], + "num_cameras": 2, + "edge_length_mm": 24.421883546008218 + }, + { + "marker_id": 96, + "link": "Board", + "set": "A0", + "position_m": [ + 0.3690168923688284, + -0.1863695737160055, + -0.026893838517185454 + ], + "position_mm": [ + 369.0168923688284, + -186.36957371600548, + -26.893838517185454 + ], + "normal": [ + -0.042306620196417656, + 0.057607328270244076, + 0.9974425024116029 + ], + "corners_m": [ + [ + 0.35680236964003975, + -0.19821287203944465, + -0.026809106011728333 + ], + [ + 0.35823592331295306, + -0.17432545437632352, + -0.027963397107445283 + ], + [ + 0.38092881878066465, + -0.17487682258386286, + -0.027138119783665406 + ], + [ + 0.3801004577416562, + -0.19806314586439092, + -0.025664731165902805 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.311829184060954 + }, + { + "marker_id": 97, + "link": "Board", + "set": "A0", + "position_m": [ + 0.30412814154071394, + -0.3593132210434114, + -0.026849586251469937 + ], + "position_mm": [ + 304.12814154071395, + -359.3132210434114, + -26.849586251469937 + ], + "normal": [ + 0.04194381448894059, + 0.0190639652526331, + 0.9989380769872394 + ], + "corners_m": [ + [ + 0.2917429599539416, + -0.3709406231301843, + -0.025922228019835295 + ], + [ + 0.29258165446535483, + -0.3470585696873724, + -0.026779973584885743 + ], + [ + 0.3168011849442097, + -0.3475869763020578, + -0.02742566465011468 + ], + [ + 0.3153867667993497, + -0.37166671505403115, + -0.027270478751044016 + ] + ], + "num_cameras": 3, + "edge_length_mm": 23.990287444182425 + }, + { + "marker_id": 99, + "link": "Board", + "set": "A0", + "position_m": [ + 0.9617405569937993, + -0.3232217609909075, + -0.029097017774500265 + ], + "position_mm": [ + 961.7405569937994, + -323.2217609909075, + -29.097017774500266 + ], + "normal": [ + 0.04680553758366205, + 0.01859166549731395, + 0.9987309906203674 + ], + "corners_m": [ + [ + 0.9482529519633318, + -0.3350944204834921, + -0.02797328871740869 + ], + [ + 0.9506810865755947, + -0.31121919677227666, + -0.029086862101573286 + ], + [ + 0.974602790459032, + -0.3119073392046992, + -0.029611745650963948 + ], + [ + 0.9734253989772391, + -0.334666087503162, + -0.02971617462805513 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.99683113399382 + }, + { + "marker_id": 129, + "link": "Ellbow", + "set": "", + "position_m": [ + 0.393474355533301, + -0.11056894719759328, + 0.20756387851246688 + ], + "position_mm": [ + 393.47435553330104, + -110.56894719759327, + 207.56387851246689 + ], + "normal": [ + 0.008245432193118095, + 0.00559808776129142, + 0.9999503358974213 + ], + "corners_m": [ + [ + 0.3821819081808102, + -0.09839032671241751, + 0.20771068801604933 + ], + [ + 0.4056261596475343, + -0.09878880196672334, + 0.20727330673926628 + ], + [ + 0.4046100833076892, + -0.12249919310940875, + 0.20766505057401966 + ], + [ + 0.3814792709971702, + -0.12259746700182347, + 0.20760646872053223 + ] + ], + "num_cameras": 3, + "edge_length_mm": 23.63393927287611 + }, + { + "marker_id": 132, + "link": "Ellbow", + "set": "", + "position_m": [ + 0.35693761930305506, + -0.11062244305513746, + 0.20801754772210884 + ], + "position_mm": [ + 356.93761930305504, + -110.62244305513747, + 208.01754772210884 + ], + "normal": [ + 0.006705159698620699, + 0.012247543123346388, + 0.9999025145087184 + ], + "corners_m": [ + [ + 0.34576193991795445, + -0.09855092776612442, + 0.20794480841840712 + ], + [ + 0.36925323882472677, + -0.09895755298094647, + 0.20779189855338784 + ], + [ + 0.3689040291208235, + -0.12247998629206282, + 0.20808271461444688 + ], + [ + 0.3438312693487156, + -0.12250130518141614, + 0.20825076930219352 + ] + ], + "num_cameras": 3, + "edge_length_mm": 24.03137163035939 + }, + { + "marker_id": 143, + "link": "Arm2", + "set": "", + "position_m": [ + 0.3710854976627349, + -0.29227752885697766, + 0.1952439133106989 + ], + "position_mm": [ + 371.0854976627349, + -292.27752885697765, + 195.2439133106989 + ], + "normal": [ + -0.7098681405337656, + -0.01320113278491675, + 0.7042108726427965 + ], + "corners_m": [ + [ + 0.36264165451630986, + -0.28039571301210864, + 0.1866953138124622 + ], + [ + 0.3794708739794464, + -0.27978059006992023, + 0.204187583393991 + ], + [ + 0.37964663783618874, + -0.3042988316121655, + 0.2033874099484586 + ], + [ + 0.3625828243189946, + -0.3046349807337163, + 0.18670534608788375 + ] + ], + "num_cameras": 3, + "edge_length_mm": 24.229594453089906 + }, + { + "marker_id": 144, + "link": "Arm2", + "set": "", + "position_m": [ + 0.35912361509505303, + -0.22205009902907724, + 0.17128673446209058 + ], + "position_mm": [ + 359.123615095053, + -222.05009902907724, + 171.28673446209058 + ], + "normal": [ + -0.9990926918589527, + 0.03674465853958803, + 0.021531909874441677 + ], + "corners_m": [ + [ + 0.3594651550647376, + -0.2097969854547161, + 0.15861194101151269 + ], + [ + 0.3596553952328016, + -0.21034603147049372, + 0.18367623954554405 + ], + [ + 0.35911392815073134, + -0.23419433378559915, + 0.18374407280547572 + ], + [ + 0.3582599819319417, + -0.23386304540549996, + 0.15911468448582985 + ] + ], + "num_cameras": 3, + "edge_length_mm": 24.418363436632365 + }, + { + "marker_id": 146, + "link": "Arm2", + "set": "", + "position_m": [ + 0.37077649531026, + -0.22237745100939094, + 0.19595721831342505 + ], + "position_mm": [ + 370.77649531026003, + -222.37745100939094, + 195.95721831342505 + ], + "normal": [ + -0.6689846466519401, + -0.005141432091524623, + 0.7432584397233759 + ], + "corners_m": [ + [ + 0.36185587629540944, + -0.210243193737483, + 0.1878164911090275 + ], + [ + 0.37947259299035413, + -0.21015777922253284, + 0.2040663608326466 + ], + [ + 0.3798464638084202, + -0.234385031178706, + 0.20383923957819575 + ], + [ + 0.3619310481468564, + -0.234723799898842, + 0.18810678173383039 + ] + ], + "num_cameras": 3, + "edge_length_mm": 24.13141237943523 + }, + { + "marker_id": 148, + "link": "Arm2", + "set": "", + "position_m": [ + 0.3601973712779262, + -0.32859691062171725, + 0.16910548091759733 + ], + "position_mm": [ + 360.1973712779262, + -328.59691062171726, + 169.10548091759733 + ], + "normal": [ + -0.9993724517078505, + 0.022254920217969557, + 0.02755759956040884 + ], + "corners_m": [ + [ + 0.3602413909858745, + -0.3163200138405326, + 0.15745339626879426 + ], + [ + 0.360711047376244, + -0.31672513858639906, + 0.1813794696728828 + ], + [ + 0.3603293198604533, + -0.3412581051058945, + 0.18093418366813294 + ], + [ + 0.35950772688913313, + -0.3400843849540428, + 0.15665487406057935 + ] + ], + "num_cameras": 3, + "edge_length_mm": 24.14618277094594 + }, + { + "marker_id": 198, + "link": "Arm1", + "set": "", + "position_m": [ + 0.3007597940717005, + -0.014026454867146845, + 0.160539519964254 + ], + "position_mm": [ + 300.7597940717005, + -14.026454867146844, + 160.539519964254 + ], + "normal": [ + 0.023860766158907202, + 0.5066705924248237, + 0.8618094769786349 + ], + "corners_m": [ + [ + 0.2884956502058912, + -0.0035825611565734076, + 0.15462899296792337 + ], + [ + 0.3128449906007766, + -0.003522794683471984, + 0.154141642586815 + ], + [ + 0.31341291254129017, + -0.02436958238107552, + 0.16616158162386288 + ], + [ + 0.2882856229388442, + -0.02463088124746647, + 0.16722586267841477 + ] + ], + "num_cameras": 2, + "edge_length_mm": 24.526681123673672 + }, + { + "marker_id": 205, + "link": "unknown", + "set": "", + "position_m": [ + 0.9347403346408233, + -0.09718225234933431, + -0.005557651106158884 + ], + "position_mm": [ + 934.7403346408233, + -97.1822523493343, + -5.557651106158884 + ], + "normal": [ + -0.005129844350170977, + 0.04576537692506669, + 0.9989390446728217 + ], + "corners_m": [ + [ + 0.9243930621686154, + -0.08538997944468135, + -0.006243214628023581 + ], + [ + 0.9468698719005745, + -0.08589250934008807, + -0.005919412531999659 + ], + [ + 0.9457154198372856, + -0.10886521374057731, + -0.005054404729878386 + ], + [ + 0.9219829846568177, + -0.10858130687199051, + -0.005013572534733909 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.14637543216881 + }, + { + "marker_id": 207, + "link": "unknown", + "set": "", + "position_m": [ + 0.9339103300976898, + -0.007469764888492056, + -0.005453148966466618 + ], + "position_mm": [ + 933.9103300976898, + -7.469764888492056, + -5.453148966466618 + ], + "normal": [ + -0.07243835989161718, + 0.04588349395835556, + 0.9963169119303286 + ], + "corners_m": [ + [ + 0.9247985051666863, + 0.004180006253007655, + -0.006875650643411829 + ], + [ + 0.9443698672890961, + 0.004084627588911513, + -0.0049964599398525265 + ], + [ + 0.9436105726942502, + -0.018881419844430633, + -0.004438844915599783 + ], + [ + 0.9228623752407262, + -0.01926227355145676, + -0.005501640367002333 + ] + ], + "num_cameras": 2, + "edge_length_mm": 21.747012183360873 + }, + { + "marker_id": 229, + "link": "Arm1", + "set": "", + "position_m": [ + 0.30304668654924427, + -0.09249532902832984, + 0.20562742945576795 + ], + "position_mm": [ + 303.04668654924427, + -92.49532902832983, + 205.62742945576795 + ], + "normal": [ + 0.01472437550374701, + 0.48131393100037434, + 0.8764246074768733 + ], + "corners_m": [ + [ + 0.29127127757840743, + -0.081898359524675, + 0.19990535050872155 + ], + [ + 0.3150474804307938, + -0.0818612366190956, + 0.19968441508995668 + ], + [ + 0.3152383195426297, + -0.10335848818920254, + 0.21129319689442255 + ], + [ + 0.29062966864514617, + -0.10286323178034622, + 0.21162675532997113 + ] + ], + "num_cameras": 2, + "edge_length_mm": 24.213253527867916 + } + ] +} \ No newline at end of file diff --git a/test/homing/20260616_133151/cam0.jpg b/test/homing/20260616_133151/cam0.jpg new file mode 100644 index 0000000..69fa2d4 Binary files /dev/null and b/test/homing/20260616_133151/cam0.jpg differ diff --git a/test/homing/20260616_133151/cam0_aruco_detection.json b/test/homing/20260616_133151/cam0_aruco_detection.json new file mode 100644 index 0000000..feafdd0 --- /dev/null +++ b/test/homing/20260616_133151/cam0_aruco_detection.json @@ -0,0 +1,2431 @@ +{ + "schema_version": "1.0", + "created_utc": "2026-06-16T13:31:56Z", + "vision_config": { + "MarkerType": "DICT_4X4_250", + "MarkerSize": 0.025 + }, + "camera": { + "camera_id": "cam0", + "intrinsics_file": "/app/data/calibration/20260610_092149/cam0_calibration.npz", + "camera_matrix": [ + [ + 1424.7584228515625, + 0.0, + 635.95947265625 + ], + [ + 0.0, + 1421.5770263671875, + 482.1744384765625 + ], + [ + 0.0, + 0.0, + 1.0 + ] + ], + "distortion_coefficients": [ + 0.05634751915931702, + 0.33765655755996704, + 0.002130246954038739, + -0.004022662527859211, + -1.182201862335205 + ] + }, + "image": { + "image_file": "/app/data/homing/20260616_133151/cam0.jpg", + "image_sha256": "9c6ad8195351c2aeca4bb8126197f28115413ce9156c9ab7dbbac01f34cf209f", + "width_px": 1280, + "height_px": 960 + }, + "aruco": { + "dictionary": "DICT_4X4_250", + "num_detected_markers": 20, + "num_rejected_candidates": 52 + }, + "detections": [ + { + "observation_id": "aecd0072-1c0a-4c16-b632-154f698d49b7", + "type": "aruco", + "marker_id": 197, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 488.0, + 620.0 + ], + [ + 529.0, + 667.0 + ], + [ + 472.0, + 714.0 + ], + [ + 435.0, + 666.0 + ] + ], + "center_px": [ + 481.0, + 666.75 + ], + "quality": { + "area_px": 4426.0, + "perimeter_px": 267.0317726135254, + "sharpness": { + "laplacian_var": 1655.10924570682 + }, + "contrast": { + "p05": 5.0, + "p95": 146.0, + "dynamic_range": 141.0, + "mean_gray": 75.70742659758204, + "std_gray": 58.73936809785042 + }, + "geometry": { + "distance_to_center_norm": 0.306585431098938, + "distance_to_border_px": 246.0 + }, + "edge_ratio": 1.219007294563567, + "edge_lengths_px": [ + 62.36986541748047, + 73.87828063964844, + 60.605281829833984, + 70.1783447265625 + ] + }, + "confidence": 0.8203396357509274 + }, + { + "observation_id": "8be688d7-3706-48e7-9c81-b4190736f9a3", + "type": "aruco", + "marker_id": 198, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 154.0, + 765.0 + ], + [ + 143.0, + 734.0 + ], + [ + 200.0, + 687.0 + ], + [ + 214.0, + 715.0 + ] + ], + "center_px": [ + 177.75, + 725.25 + ], + "quality": { + "area_px": 2332.0, + "perimeter_px": 216.1794948577881, + "sharpness": { + "laplacian_var": 1578.8735424088766 + }, + "contrast": { + "p05": 1.0, + "p95": 125.0, + "dynamic_range": 124.0, + "mean_gray": 47.06775407779172, + "std_gray": 48.437885838894545 + }, + "geometry": { + "distance_to_center_norm": 0.654100775718689, + "distance_to_border_px": 143.0 + }, + "edge_ratio": 2.49489255679603, + "edge_lengths_px": [ + 32.893768310546875, + 73.87828063964844, + 31.30495262145996, + 78.10249328613281 + ] + }, + "confidence": 0.40081886383284243 + }, + { + "observation_id": "1eb9db72-cb3c-4816-8250-91fc0ffe4eab", + "type": "aruco", + "marker_id": 144, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 622.0, + 547.0 + ], + [ + 619.0, + 494.0 + ], + [ + 670.0, + 483.0 + ], + [ + 673.0, + 536.0 + ] + ], + "center_px": [ + 646.0, + 515.0 + ], + "quality": { + "area_px": 2736.0, + "perimeter_px": 210.5152587890625, + "sharpness": { + "laplacian_var": 1909.391533632945 + }, + "contrast": { + "p05": 10.0, + "p95": 172.0, + "dynamic_range": 162.0, + "mean_gray": 70.49013157894737, + "std_gray": 65.59922769777164 + }, + "geometry": { + "distance_to_center_norm": 0.04438820481300354, + "distance_to_border_px": 413.0 + }, + "edge_ratio": 1.01748130262202, + "edge_lengths_px": [ + 53.0848388671875, + 52.17279052734375, + 53.0848388671875, + 52.17279052734375 + ] + }, + "confidence": 0.9828190428885807 + }, + { + "observation_id": "83be3041-9f1c-4b3a-a5eb-00be65078457", + "type": "aruco", + "marker_id": 146, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 616.0, + 482.0 + ], + [ + 597.0, + 436.0 + ], + [ + 647.0, + 426.0 + ], + [ + 668.0, + 472.0 + ] + ], + "center_px": [ + 632.0, + 454.0 + ], + "quality": { + "area_px": 2546.0, + "perimeter_px": 204.2792625427246, + "sharpness": { + "laplacian_var": 2155.683046352718 + }, + "contrast": { + "p05": 45.0, + "p95": 199.0, + "dynamic_range": 154.0, + "mean_gray": 99.06055261610817, + "std_gray": 58.41903386217619 + }, + "geometry": { + "distance_to_center_norm": 0.03400367870926857, + "distance_to_border_px": 426.0 + }, + "edge_ratio": 1.0639616646820116, + "edge_lengths_px": [ + 49.76947021484375, + 50.990196228027344, + 50.56678771972656, + 52.95280838012695 + ] + }, + "confidence": 0.9398834875304197 + }, + { + "observation_id": "9447c38d-401d-4d9f-81b0-46b6acf86f11", + "type": "aruco", + "marker_id": 229, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 368.0, + 585.0 + ], + [ + 350.0, + 562.0 + ], + [ + 404.0, + 520.0 + ], + [ + 423.0, + 542.0 + ] + ], + "center_px": [ + 386.25, + 552.25 + ], + "quality": { + "area_px": 2012.5, + "perimeter_px": 196.4996109008789, + "sharpness": { + "laplacian_var": 1267.08977603053 + }, + "contrast": { + "p05": 3.0, + "p95": 126.0, + "dynamic_range": 123.0, + "mean_gray": 42.7593423019432, + "std_gray": 45.82786493988782 + }, + "geometry": { + "distance_to_center_norm": 0.3297942876815796, + "distance_to_border_px": 350.0 + }, + "edge_ratio": 2.4016760116340268, + "edge_lengths_px": [ + 29.20616340637207, + 68.4105224609375, + 29.068883895874023, + 69.81404113769531 + ] + }, + "confidence": 0.4163758954812688 + }, + { + "observation_id": "9dc80cef-8f80-49a6-b69d-257d953bb522", + "type": "aruco", + "marker_id": 143, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 758.0, + 454.0 + ], + [ + 737.0, + 408.0 + ], + [ + 783.0, + 400.0 + ], + [ + 804.0, + 444.0 + ] + ], + "center_px": [ + 770.5, + 426.5 + ], + "quality": { + "area_px": 2259.0, + "perimeter_px": 193.08615493774414, + "sharpness": { + "laplacian_var": 2651.6019753829614 + }, + "contrast": { + "p05": 74.0, + "p95": 200.79999999999995, + "dynamic_range": 126.79999999999995, + "mean_gray": 122.87803278688524, + "std_gray": 48.83606107891834 + }, + "geometry": { + "distance_to_center_norm": 0.17630095779895782, + "distance_to_border_px": 400.0 + }, + "edge_ratio": 1.083021565934975, + "edge_lengths_px": [ + 50.56678771972656, + 46.69047164916992, + 48.754486083984375, + 47.07440948486328 + ] + }, + "confidence": 0.9233426475092376 + }, + { + "observation_id": "bcc9f322-ae70-4a98-b8d9-909eeaa57dac", + "type": "aruco", + "marker_id": 148, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 829.0, + 500.0 + ], + [ + 829.0, + 451.0 + ], + [ + 873.0, + 442.0 + ], + [ + 873.0, + 492.0 + ] + ], + "center_px": [ + 851.0, + 471.25 + ], + "quality": { + "area_px": 2178.0, + "perimeter_px": 188.63238143920898, + "sharpness": { + "laplacian_var": 2116.163252364797 + }, + "contrast": { + "p05": 10.0, + "p95": 170.0, + "dynamic_range": 160.0, + "mean_gray": 60.237311385459535, + "std_gray": 60.32872848227865 + }, + "geometry": { + "distance_to_center_norm": 0.26397669315338135, + "distance_to_border_px": 407.0 + }, + "edge_ratio": 1.1180339961765475, + "edge_lengths_px": [ + 49.0, + 44.9110221862793, + 50.0, + 44.72135925292969 + ] + }, + "confidence": 0.8944271850585938 + }, + { + "observation_id": "95b14855-056f-460a-8021-f82bd829984e", + "type": "aruco", + "marker_id": 132, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 367.0, + 503.0 + ], + [ + 352.0, + 486.0 + ], + [ + 411.0, + 476.0 + ], + [ + 431.0, + 493.0 + ] + ], + "center_px": [ + 390.25, + 489.5 + ], + "quality": { + "area_px": 1220.5, + "perimeter_px": 173.53837776184082, + "sharpness": { + "laplacian_var": 2797.507200306498 + }, + "contrast": { + "p05": 20.0, + "p95": 196.8499999999999, + "dynamic_range": 176.8499999999999, + "mean_gray": 77.01504629629629, + "std_gray": 66.39098210668712 + }, + "geometry": { + "distance_to_center_norm": 0.3124132752418518, + "distance_to_border_px": 352.0 + }, + "edge_ratio": 2.857170836224936, + "edge_lengths_px": [ + 22.671567916870117, + 59.84145736694336, + 26.248809814453125, + 64.77654266357422 + ] + }, + "confidence": 0.28478054456895247 + }, + { + "observation_id": "5f5aeb5e-3fa9-4874-b698-7593daf0c3a7", + "type": "aruco", + "marker_id": 147, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 750.0, + 542.0 + ], + [ + 763.0, + 505.0 + ], + [ + 807.0, + 495.0 + ], + [ + 796.0, + 532.0 + ] + ], + "center_px": [ + 779.0, + 518.5 + ], + "quality": { + "area_px": 1545.0, + "perimeter_px": 170.01432418823242, + "sharpness": { + "laplacian_var": 2020.8711970394509 + }, + "contrast": { + "p05": 27.0, + "p95": 164.0, + "dynamic_range": 137.0, + "mean_gray": 63.26566884939196, + "std_gray": 47.432375672854384 + }, + "geometry": { + "distance_to_center_norm": 0.18029165267944336, + "distance_to_border_px": 418.0 + }, + "edge_ratio": 1.219527944457171, + "edge_lengths_px": [ + 39.217342376708984, + 45.12205505371094, + 38.60051727294922, + 47.07440948486328 + ] + }, + "confidence": 0.8199894102837587 + }, + { + "observation_id": "276cfd30-3bb8-4867-bca1-e0da1bc17e55", + "type": "aruco", + "marker_id": 96, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 624.0, + 914.0 + ], + [ + 576.0, + 930.0 + ], + [ + 558.0, + 901.0 + ], + [ + 603.0, + 885.0 + ] + ], + "center_px": [ + 590.25, + 907.5 + ], + "quality": { + "area_px": 1660.5, + "perimeter_px": 168.2933807373047, + "sharpness": { + "laplacian_var": 2317.9320762469138 + }, + "contrast": { + "p05": 14.0, + "p95": 185.79999999999995, + "dynamic_range": 171.79999999999995, + "mean_gray": 86.69066666666667, + "std_gray": 69.40998552561919 + }, + "geometry": { + "distance_to_center_norm": 0.5379813313484192, + "distance_to_border_px": 30.0 + }, + "edge_ratio": 1.4823714359413844, + "edge_lengths_px": [ + 50.59644317626953, + 34.13209533691406, + 47.75981521606445, + 35.80502700805664 + ] + }, + "confidence": 0.4047568547615518 + }, + { + "observation_id": "8ced4668-6ca8-4ede-9316-1c7d5e2e71a4", + "type": "aruco", + "marker_id": 97, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1006.0, + 876.0 + ], + [ + 964.0, + 892.0 + ], + [ + 934.0, + 865.0 + ], + [ + 975.0, + 852.0 + ] + ], + "center_px": [ + 969.75, + 871.25 + ], + "quality": { + "area_px": 1500.5, + "perimeter_px": 167.5214958190918, + "sharpness": { + "laplacian_var": 3241.070430429676 + }, + "contrast": { + "p05": 41.0, + "p95": 207.0, + "dynamic_range": 166.0, + "mean_gray": 119.31175298804781, + "std_gray": 66.84089020130662 + }, + "geometry": { + "distance_to_center_norm": 0.6395941376686096, + "distance_to_border_px": 68.0 + }, + "edge_ratio": 1.1464068007310906, + "edge_lengths_px": [ + 44.94440841674805, + 40.360870361328125, + 43.011627197265625, + 39.20458984375 + ] + }, + "confidence": 0.8722907081171155 + }, + { + "observation_id": "d843df2b-ff34-4883-9bb0-01a597055937", + "type": "aruco", + "marker_id": 121, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 293.0, + 531.0 + ], + [ + 280.0, + 514.0 + ], + [ + 318.0, + 468.0 + ], + [ + 331.0, + 484.0 + ] + ], + "center_px": [ + 305.5, + 499.25 + ], + "quality": { + "area_px": 1231.5, + "perimeter_px": 162.12225151062012, + "sharpness": { + "laplacian_var": 764.1780815877858 + }, + "contrast": { + "p05": 12.0, + "p95": 104.5, + "dynamic_range": 92.5, + "mean_gray": 39.50184956843403, + "std_gray": 34.421137858506185 + }, + "geometry": { + "distance_to_center_norm": 0.41881680488586426, + "distance_to_border_px": 280.0 + }, + "edge_ratio": 2.9317731624279246, + "edge_lengths_px": [ + 21.40093421936035, + 59.66573715209961, + 20.615528106689453, + 60.4400520324707 + ] + }, + "confidence": 0.2800353078203688 + }, + { + "observation_id": "e71b46f3-24d3-43ca-b098-7f3008518f06", + "type": "aruco", + "marker_id": 47, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 831.0, + 877.0 + ], + [ + 788.0, + 894.0 + ], + [ + 764.0, + 867.0 + ], + [ + 805.0, + 852.0 + ] + ], + "center_px": [ + 797.0, + 872.5 + ], + "quality": { + "area_px": 1492.0, + "perimeter_px": 162.09043502807617, + "sharpness": { + "laplacian_var": 2507.7191476418197 + }, + "contrast": { + "p05": 24.1, + "p95": 192.0, + "dynamic_range": 167.9, + "mean_gray": 84.98005982053839, + "std_gray": 63.74242160649086 + }, + "geometry": { + "distance_to_center_norm": 0.5284193158149719, + "distance_to_border_px": 66.0 + }, + "edge_ratio": 1.2819326708597685, + "edge_lengths_px": [ + 46.2385139465332, + 36.12478256225586, + 43.65776062011719, + 36.06937789916992 + ] + }, + "confidence": 0.7759117848206195 + }, + { + "observation_id": "189a3b59-8727-4ad7-8614-3864ff040898", + "type": "aruco", + "marker_id": 129, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 342.0, + 476.0 + ], + [ + 329.0, + 461.0 + ], + [ + 385.0, + 451.0 + ], + [ + 403.0, + 466.0 + ] + ], + "center_px": [ + 364.75, + 463.5 + ], + "quality": { + "area_px": 1032.5, + "perimeter_px": 161.98027229309082, + "sharpness": { + "laplacian_var": 3051.0209182098765 + }, + "contrast": { + "p05": 19.0, + "p95": 193.0, + "dynamic_range": 174.0, + "mean_gray": 91.27361111111111, + "std_gray": 68.21472530232009 + }, + "geometry": { + "distance_to_center_norm": 0.34468013048171997, + "distance_to_border_px": 329.0 + }, + "edge_ratio": 3.114156293661272, + "edge_lengths_px": [ + 19.84943389892578, + 56.88584899902344, + 23.430749893188477, + 61.814239501953125 + ] + }, + "confidence": 0.22103365034516909 + }, + { + "observation_id": "50427b30-f281-4af5-8978-0fcdfacefd66", + "type": "aruco", + "marker_id": 54, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 908.0, + 854.0 + ], + [ + 866.0, + 866.0 + ], + [ + 841.0, + 841.0 + ], + [ + 880.0, + 828.0 + ] + ], + "center_px": [ + 873.75, + 847.25 + ], + "quality": { + "area_px": 1364.0, + "perimeter_px": 158.35555267333984, + "sharpness": { + "laplacian_var": 2206.415936949785 + }, + "contrast": { + "p05": 38.0, + "p95": 199.0, + "dynamic_range": 161.0, + "mean_gray": 74.62618796198521, + "std_gray": 51.9590618494718 + }, + "geometry": { + "distance_to_center_norm": 0.5441616177558899, + "distance_to_border_px": 94.0 + }, + "edge_ratio": 1.235475643032782, + "edge_lengths_px": [ + 43.680660247802734, + 35.35533905029297, + 41.1096076965332, + 38.20994567871094 + ] + }, + "confidence": 0.7360188268067743 + }, + { + "observation_id": "8461544b-9ba4-4697-adf2-8123c5f461a6", + "type": "aruco", + "marker_id": 62, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 572.0, + 879.0 + ], + [ + 527.0, + 895.0 + ], + [ + 510.0, + 870.0 + ], + [ + 554.0, + 856.0 + ] + ], + "center_px": [ + 540.75, + 875.0 + ], + "quality": { + "area_px": 1330.5, + "perimeter_px": 153.37199592590332, + "sharpness": { + "laplacian_var": 1687.9487056260411 + }, + "contrast": { + "p05": 16.85, + "p95": 174.14999999999998, + "dynamic_range": 157.29999999999998, + "mean_gray": 46.07516339869281, + "std_gray": 46.90315677189947 + }, + "geometry": { + "distance_to_center_norm": 0.5090978145599365, + "distance_to_border_px": 65.0 + }, + "edge_ratio": 1.6352649456739132, + "edge_lengths_px": [ + 47.75981521606445, + 30.232433319091797, + 46.173583984375, + 29.20616340637207 + ] + }, + "confidence": 0.5424197481555236 + }, + { + "observation_id": "384ff747-c67f-4d4d-a8e5-328b416f1ce8", + "type": "aruco", + "marker_id": 180, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1034.0, + 414.0 + ], + [ + 1008.0, + 449.0 + ], + [ + 1001.0, + 424.0 + ], + [ + 1025.0, + 389.0 + ] + ], + "center_px": [ + 1017.0, + 419.0 + ], + "quality": { + "area_px": 905.0, + "perimeter_px": 138.57081985473633, + "sharpness": { + "laplacian_var": 3270.9850838264297 + }, + "contrast": { + "p05": 19.0, + "p95": 195.0, + "dynamic_range": 176.0, + "mean_gray": 94.24839743589743, + "std_gray": 66.694271108648 + }, + "geometry": { + "distance_to_center_norm": 0.4773789346218109, + "distance_to_border_px": 246.0 + }, + "edge_ratio": 1.6794269882071584, + "edge_lengths_px": [ + 43.600460052490234, + 25.961509704589844, + 42.43819046020508, + 26.570659637451172 + ] + }, + "confidence": 0.35924951639452385 + }, + { + "observation_id": "13f6056f-14e0-40c2-b9fb-4bdc03b97c1d", + "type": "aruco", + "marker_id": 85, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 719.0, + 718.0 + ], + [ + 682.0, + 729.0 + ], + [ + 665.0, + 712.0 + ], + [ + 700.0, + 701.0 + ] + ], + "center_px": [ + 691.5, + 715.0 + ], + "quality": { + "area_px": 810.0, + "perimeter_px": 124.82511901855469, + "sharpness": { + "laplacian_var": 2482.4652482609163 + }, + "contrast": { + "p05": 40.0, + "p95": 200.0, + "dynamic_range": 160.0, + "mean_gray": 132.86851211072664, + "std_gray": 61.22842826006519 + }, + "geometry": { + "distance_to_center_norm": 0.300721138715744, + "distance_to_border_px": 231.0 + }, + "edge_ratio": 1.6055699055386952, + "edge_lengths_px": [ + 38.60051727294922, + 24.041629791259766, + 36.68787384033203, + 25.495098114013672 + ] + }, + "confidence": 0.3363291739196003 + }, + { + "observation_id": "7ab66a7c-dcc5-4678-9355-379bd35f0d3e", + "type": "aruco", + "marker_id": 105, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 634.0, + 723.0 + ], + [ + 596.0, + 734.0 + ], + [ + 582.0, + 717.0 + ], + [ + 617.0, + 707.0 + ] + ], + "center_px": [ + 607.25, + 720.25 + ], + "quality": { + "area_px": 765.0, + "perimeter_px": 121.32858276367188, + "sharpness": { + "laplacian_var": 1807.2232299902587 + }, + "contrast": { + "p05": 30.0, + "p95": 167.09999999999997, + "dynamic_range": 137.09999999999997, + "mean_gray": 59.75139146567718, + "std_gray": 42.00531564684076 + }, + "geometry": { + "distance_to_center_norm": 0.3030898869037628, + "distance_to_border_px": 226.0 + }, + "edge_ratio": 1.796330841758511, + "edge_lengths_px": [ + 39.560081481933594, + 22.022714614868164, + 36.400550842285156, + 23.34523582458496 + ] + }, + "confidence": 0.2839120657198857 + }, + { + "observation_id": "7c0edc47-5436-4fe9-bf12-2cdb2146f02b", + "type": "aruco", + "marker_id": 57, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 715.0, + 632.0 + ], + [ + 682.0, + 640.0 + ], + [ + 667.0, + 628.0 + ], + [ + 699.0, + 619.0 + ] + ], + "center_px": [ + 690.75, + 629.75 + ], + "quality": { + "area_px": 538.0, + "perimeter_px": 107.02229309082031, + "sharpness": { + "laplacian_var": 3814.618870830639 + }, + "contrast": { + "p05": 39.0, + "p95": 192.5, + "dynamic_range": 153.5, + "mean_gray": 106.99730458221025, + "std_gray": 55.38760741112882 + }, + "geometry": { + "distance_to_center_norm": 0.19764482975006104, + "distance_to_border_px": 320.0 + }, + "edge_ratio": 1.767671004694157, + "edge_lengths_px": [ + 33.95585250854492, + 19.209373474121094, + 33.241539001464844, + 20.615528106689453 + ] + }, + "confidence": 0.2029035186492315 + } + ], + "rejected_candidates": [ + { + "image_points_px": [ + [ + 409.0, + 616.0 + ], + [ + 396.0, + 648.0 + ], + [ + 316.0, + 722.0 + ], + [ + 279.0, + 723.0 + ] + ], + "center_px": [ + 350.0, + 677.25 + ], + "area_px": 2713.5 + }, + { + "image_points_px": [ + [ + 1099.0, + 512.0 + ], + [ + 1121.0, + 512.0 + ], + [ + 1166.0, + 532.0 + ], + [ + 1151.0, + 533.0 + ] + ], + "center_px": [ + 1134.25, + 522.25 + ], + "area_px": 403.5 + }, + { + "image_points_px": [ + [ + 140.0, + 683.0 + ], + [ + 146.0, + 700.0 + ], + [ + 94.0, + 712.0 + ], + [ + 89.0, + 694.0 + ] + ], + "center_px": [ + 117.25, + 697.25 + ], + "area_px": 964.5 + }, + { + "image_points_px": [ + [ + 558.0, + 434.0 + ], + [ + 553.0, + 439.0 + ], + [ + 504.0, + 445.0 + ], + [ + 508.0, + 439.0 + ] + ], + "center_px": [ + 530.75, + 439.25 + ], + "area_px": 247.5 + }, + { + "image_points_px": [ + [ + 117.0, + 649.0 + ], + [ + 118.0, + 662.0 + ], + [ + 79.0, + 670.0 + ], + [ + 76.0, + 656.0 + ] + ], + "center_px": [ + 97.5, + 659.25 + ], + "area_px": 555.0 + }, + { + "image_points_px": [ + [ + 263.0, + 740.0 + ], + [ + 265.0, + 747.0 + ], + [ + 230.0, + 776.0 + ], + [ + 227.0, + 770.0 + ] + ], + "center_px": [ + 246.25, + 758.25 + ], + "area_px": 304.5 + }, + { + "image_points_px": [ + [ + 532.0, + 518.0 + ], + [ + 527.0, + 527.0 + ], + [ + 498.0, + 533.0 + ], + [ + 490.0, + 526.0 + ] + ], + "center_px": [ + 511.75, + 526.0 + ], + "area_px": 294.5 + }, + { + "image_points_px": [ + [ + 584.0, + 649.0 + ], + [ + 548.0, + 657.0 + ], + [ + 551.0, + 641.0 + ], + [ + 567.0, + 636.0 + ] + ], + "center_px": [ + 562.5, + 645.75 + ], + "area_px": 422.5 + }, + { + "image_points_px": [ + [ + 546.0, + 538.0 + ], + [ + 515.0, + 549.0 + ], + [ + 506.0, + 542.0 + ], + [ + 541.0, + 534.0 + ] + ], + "center_px": [ + 527.0, + 540.75 + ], + "area_px": 248.0 + }, + { + "image_points_px": [ + [ + 1170.0, + 359.0 + ], + [ + 1147.0, + 363.0 + ], + [ + 1128.0, + 357.0 + ], + [ + 1151.0, + 353.0 + ] + ], + "center_px": [ + 1149.0, + 358.0 + ], + "area_px": 214.0 + }, + { + "image_points_px": [ + [ + 1081.0, + 367.0 + ], + [ + 1104.0, + 363.0 + ], + [ + 1122.0, + 368.0 + ], + [ + 1096.0, + 373.0 + ] + ], + "center_px": [ + 1100.75, + 367.75 + ], + "area_px": 209.0 + }, + { + "image_points_px": [ + [ + 1132.0, + 345.0 + ], + [ + 1155.0, + 342.0 + ], + [ + 1173.0, + 347.0 + ], + [ + 1152.0, + 350.0 + ] + ], + "center_px": [ + 1153.0, + 346.0 + ], + "area_px": 167.0 + }, + { + "image_points_px": [ + [ + 1125.0, + 357.0 + ], + [ + 1103.0, + 361.0 + ], + [ + 1085.0, + 355.0 + ], + [ + 1108.0, + 351.0 + ] + ], + "center_px": [ + 1105.25, + 356.0 + ], + "area_px": 205.0 + }, + { + "image_points_px": [ + [ + 1088.0, + 343.0 + ], + [ + 1110.0, + 341.0 + ], + [ + 1128.0, + 346.0 + ], + [ + 1101.0, + 348.0 + ] + ], + "center_px": [ + 1106.75, + 344.5 + ], + "area_px": 153.5 + }, + { + "image_points_px": [ + [ + 740.0, + 360.0 + ], + [ + 745.0, + 356.0 + ], + [ + 777.0, + 369.0 + ], + [ + 765.0, + 370.0 + ] + ], + "center_px": [ + 756.75, + 363.75 + ], + "area_px": 169.0 + }, + { + "image_points_px": [ + [ + 1093.0, + 333.0 + ], + [ + 1115.0, + 330.0 + ], + [ + 1130.0, + 335.0 + ], + [ + 1108.0, + 338.0 + ] + ], + "center_px": [ + 1111.5, + 334.0 + ], + "area_px": 155.0 + }, + { + "image_points_px": [ + [ + 484.0, + 452.0 + ], + [ + 457.0, + 460.0 + ], + [ + 448.0, + 457.0 + ], + [ + 476.0, + 448.0 + ] + ], + "center_px": [ + 466.25, + 454.25 + ], + "area_px": 168.5 + }, + { + "image_points_px": [ + [ + 966.0, + 339.0 + ], + [ + 986.0, + 336.0 + ], + [ + 1003.0, + 340.0 + ], + [ + 981.0, + 344.0 + ] + ], + "center_px": [ + 984.0, + 339.75 + ], + "area_px": 150.5 + }, + { + "image_points_px": [ + [ + 1008.0, + 330.0 + ], + [ + 986.0, + 333.0 + ], + [ + 971.0, + 329.0 + ], + [ + 994.0, + 326.0 + ] + ], + "center_px": [ + 989.75, + 329.5 + ], + "area_px": 133.5 + }, + { + "image_points_px": [ + [ + 1057.0, + 322.0 + ], + [ + 1079.0, + 319.0 + ], + [ + 1094.0, + 323.0 + ], + [ + 1071.0, + 326.0 + ] + ], + "center_px": [ + 1075.25, + 322.5 + ], + "area_px": 133.5 + }, + { + "image_points_px": [ + [ + 880.0, + 345.0 + ], + [ + 904.0, + 343.0 + ], + [ + 916.0, + 348.0 + ], + [ + 891.0, + 350.0 + ] + ], + "center_px": [ + 897.75, + 346.5 + ], + "area_px": 145.5 + }, + { + "image_points_px": [ + [ + 1017.0, + 320.0 + ], + [ + 1040.0, + 318.0 + ], + [ + 1053.0, + 322.0 + ], + [ + 1031.0, + 325.0 + ] + ], + "center_px": [ + 1035.25, + 321.25 + ], + "area_px": 135.0 + }, + { + "image_points_px": [ + [ + 1014.0, + 320.0 + ], + [ + 992.0, + 323.0 + ], + [ + 978.0, + 319.0 + ], + [ + 1000.0, + 316.0 + ] + ], + "center_px": [ + 996.0, + 319.5 + ], + "area_px": 130.0 + }, + { + "image_points_px": [ + [ + 885.0, + 336.0 + ], + [ + 862.0, + 339.0 + ], + [ + 850.0, + 334.0 + ], + [ + 871.0, + 331.0 + ] + ], + "center_px": [ + 867.0, + 335.0 + ], + "area_px": 149.0 + }, + { + "image_points_px": [ + [ + 889.0, + 335.0 + ], + [ + 912.0, + 333.0 + ], + [ + 924.0, + 337.0 + ], + [ + 900.0, + 340.0 + ] + ], + "center_px": [ + 906.25, + 336.25 + ], + "area_px": 134.5 + }, + { + "image_points_px": [ + [ + 969.0, + 329.0 + ], + [ + 946.0, + 331.0 + ], + [ + 934.0, + 327.0 + ], + [ + 955.0, + 324.0 + ] + ], + "center_px": [ + 951.0, + 327.75 + ], + "area_px": 131.5 + }, + { + "image_points_px": [ + [ + 1052.0, + 472.0 + ], + [ + 1058.0, + 470.0 + ], + [ + 1084.0, + 480.0 + ], + [ + 1083.0, + 484.0 + ] + ], + "center_px": [ + 1069.25, + 476.5 + ], + "area_px": 124.0 + }, + { + "image_points_px": [ + [ + 1022.0, + 311.0 + ], + [ + 1043.0, + 308.0 + ], + [ + 1057.0, + 312.0 + ], + [ + 1038.0, + 315.0 + ] + ], + "center_px": [ + 1040.0, + 311.5 + ], + "area_px": 125.0 + }, + { + "image_points_px": [ + [ + 987.0, + 300.0 + ], + [ + 966.0, + 303.0 + ], + [ + 952.0, + 300.0 + ], + [ + 975.0, + 297.0 + ] + ], + "center_px": [ + 970.0, + 300.0 + ], + "area_px": 105.0 + }, + { + "image_points_px": [ + [ + 779.0, + 280.0 + ], + [ + 769.0, + 285.0 + ], + [ + 745.0, + 287.0 + ], + [ + 768.0, + 280.0 + ] + ], + "center_px": [ + 765.25, + 283.0 + ], + "area_px": 88.5 + }, + { + "image_points_px": [ + [ + 474.0, + 439.0 + ], + [ + 469.0, + 442.0 + ], + [ + 440.0, + 445.0 + ], + [ + 444.0, + 442.0 + ] + ], + "center_px": [ + 456.75, + 442.0 + ], + "area_px": 75.0 + }, + { + "image_points_px": [ + [ + 868.0, + 315.0 + ], + [ + 891.0, + 312.0 + ], + [ + 902.0, + 316.0 + ], + [ + 879.0, + 319.0 + ] + ], + "center_px": [ + 885.0, + 315.5 + ], + "area_px": 125.0 + }, + { + "image_points_px": [ + [ + 941.0, + 318.0 + ], + [ + 963.0, + 315.0 + ], + [ + 975.0, + 319.0 + ], + [ + 955.0, + 322.0 + ] + ], + "center_px": [ + 958.5, + 318.5 + ], + "area_px": 123.0 + }, + { + "image_points_px": [ + [ + 904.0, + 316.0 + ], + [ + 927.0, + 314.0 + ], + [ + 938.0, + 318.0 + ], + [ + 916.0, + 320.0 + ] + ], + "center_px": [ + 921.25, + 317.0 + ], + "area_px": 113.0 + }, + { + "image_points_px": [ + [ + 948.0, + 308.0 + ], + [ + 967.0, + 306.0 + ], + [ + 982.0, + 310.0 + ], + [ + 960.0, + 312.0 + ] + ], + "center_px": [ + 964.25, + 309.0 + ], + "area_px": 109.0 + }, + { + "image_points_px": [ + [ + 504.0, + 647.0 + ], + [ + 517.0, + 664.0 + ], + [ + 507.0, + 676.0 + ], + [ + 499.0, + 661.0 + ] + ], + "center_px": [ + 506.75, + 662.0 + ], + "area_px": 256.5 + }, + { + "image_points_px": [ + [ + 857.0, + 324.0 + ], + [ + 832.0, + 327.0 + ], + [ + 824.0, + 323.0 + ], + [ + 845.0, + 319.0 + ] + ], + "center_px": [ + 839.5, + 323.25 + ], + "area_px": 138.5 + }, + { + "image_points_px": [ + [ + 861.0, + 324.0 + ], + [ + 884.0, + 322.0 + ], + [ + 894.0, + 326.0 + ], + [ + 872.0, + 329.0 + ] + ], + "center_px": [ + 877.75, + 325.25 + ], + "area_px": 127.5 + }, + { + "image_points_px": [ + [ + 945.0, + 308.0 + ], + [ + 924.0, + 311.0 + ], + [ + 912.0, + 307.0 + ], + [ + 932.0, + 304.0 + ] + ], + "center_px": [ + 928.25, + 307.5 + ], + "area_px": 119.5 + }, + { + "image_points_px": [ + [ + 1023.0, + 302.0 + ], + [ + 1004.0, + 305.0 + ], + [ + 990.0, + 301.0 + ], + [ + 1011.0, + 298.0 + ] + ], + "center_px": [ + 1007.0, + 301.5 + ], + "area_px": 119.0 + }, + { + "image_points_px": [ + [ + 1018.0, + 311.0 + ], + [ + 997.0, + 313.0 + ], + [ + 985.0, + 310.0 + ], + [ + 1004.0, + 307.0 + ] + ], + "center_px": [ + 1001.0, + 310.25 + ], + "area_px": 102.5 + }, + { + "image_points_px": [ + [ + 930.0, + 327.0 + ], + [ + 909.0, + 330.0 + ], + [ + 898.0, + 325.0 + ], + [ + 919.0, + 323.0 + ] + ], + "center_px": [ + 914.0, + 326.25 + ], + "area_px": 122.0 + }, + { + "image_points_px": [ + [ + 917.0, + 358.0 + ], + [ + 936.0, + 356.0 + ], + [ + 948.0, + 360.0 + ], + [ + 925.0, + 365.0 + ] + ], + "center_px": [ + 931.5, + 359.75 + ], + "area_px": 150.5 + }, + { + "image_points_px": [ + [ + 426.0, + 770.0 + ], + [ + 427.0, + 775.0 + ], + [ + 421.0, + 796.0 + ], + [ + 414.0, + 779.0 + ] + ], + "center_px": [ + 422.0, + 780.0 + ], + "area_px": 159.0 + }, + { + "image_points_px": [ + [ + 290.0, + 607.0 + ], + [ + 270.0, + 624.0 + ], + [ + 268.0, + 623.0 + ], + [ + 288.0, + 606.0 + ] + ], + "center_px": [ + 279.0, + 615.0 + ], + "area_px": 54.0 + }, + { + "image_points_px": [ + [ + 497.0, + 636.0 + ], + [ + 492.0, + 641.0 + ], + [ + 473.0, + 639.0 + ], + [ + 486.0, + 628.0 + ] + ], + "center_px": [ + 487.0, + 636.0 + ], + "area_px": 165.0 + }, + { + "image_points_px": [ + [ + 962.0, + 378.0 + ], + [ + 963.0, + 370.0 + ], + [ + 968.0, + 368.0 + ], + [ + 984.0, + 375.0 + ] + ], + "center_px": [ + 969.25, + 372.75 + ], + "area_px": 120.0 + }, + { + "image_points_px": [ + [ + 269.0, + 624.0 + ], + [ + 252.0, + 639.0 + ], + [ + 250.0, + 638.0 + ], + [ + 265.0, + 624.0 + ] + ], + "center_px": [ + 259.0, + 631.25 + ], + "area_px": 51.5 + }, + { + "image_points_px": [ + [ + 879.0, + 451.0 + ], + [ + 882.0, + 459.0 + ], + [ + 882.0, + 471.0 + ], + [ + 880.0, + 475.0 + ] + ], + "center_px": [ + 880.75, + 464.0 + ], + "area_px": 44.0 + }, + { + "image_points_px": [ + [ + 270.0, + 940.0 + ], + [ + 274.0, + 948.0 + ], + [ + 261.0, + 954.0 + ], + [ + 256.0, + 945.0 + ] + ], + "center_px": [ + 265.25, + 946.75 + ], + "area_px": 139.5 + }, + { + "image_points_px": [ + [ + 403.0, + 494.0 + ], + [ + 390.0, + 498.0 + ], + [ + 383.0, + 496.0 + ], + [ + 400.0, + 492.0 + ] + ], + "center_px": [ + 394.0, + 495.0 + ], + "area_px": 50.0 + }, + { + "image_points_px": [ + [ + 92.0, + 905.0 + ], + [ + 79.0, + 917.0 + ], + [ + 77.0, + 917.0 + ], + [ + 90.0, + 905.0 + ] + ], + "center_px": [ + 84.5, + 911.0 + ], + "area_px": 24.0 + } + ] +} \ No newline at end of file diff --git a/test/homing/20260616_133151/cam0_camera_pose.json b/test/homing/20260616_133151/cam0_camera_pose.json new file mode 100644 index 0000000..4ca55f0 --- /dev/null +++ b/test/homing/20260616_133151/cam0_camera_pose.json @@ -0,0 +1,313 @@ +{ + "schema_version": "1.0", + "created_utc": "2026-06-16T13:31:56Z", + "source": { + "detection_json": "/app/data/homing/20260616_133151/cam0_aruco_detection.json", + "robot_json": "/app/scripts/robot_1781069752019.json" + }, + "camera": { + "camera_id": "cam0", + "camera_matrix": [ + [ + 1424.7584228515625, + 0.0, + 635.95947265625 + ], + [ + 0.0, + 1421.5770263671875, + 482.1744384765625 + ], + [ + 0.0, + 0.0, + 1.0 + ] + ], + "distortion_coefficients": [ + 0.05634751915931702, + 0.33765655755996704, + 0.002130246954038739, + -0.004022662527859211, + -1.182201862335205 + ] + }, + "estimation": { + "method": "single_camera_marker_center_lm", + "description": "Rigid init from per-marker pose estimates, followed by LM on normalized marker-center reprojection residuals.", + "marker_size_m": 0.025, + "num_used_markers": 8, + "used_marker_ids": [ + 96, + 97, + 47, + 54, + 62, + 85, + 105, + 57 + ], + "history": { + "iters": [ + 0, + 1, + 2, + 3 + ], + "rms": [ + 0.003887444653024265, + 0.0002937877072128, + 0.0002404866802724321, + 0.00024048508666086002 + ], + "lambda": [ + 0.001, + 0.0005, + 0.00025, + 0.000125 + ] + }, + "residual_rms_px": 0.49031638365688124, + "residual_median_px": 0.5013350027616654, + "residual_max_px": 0.6062763519311439, + "sigma2_normalized": 9.253292293692929e-08 + }, + "camera_pose": { + "world_to_camera": { + "rotation_matrix": [ + [ + -0.4343292713165283, + -0.8994036912918091, + -0.04930584505200386 + ], + [ + -0.29921603202819824, + 0.19569094479084015, + -0.9339029788970947 + ], + [ + 0.8496045470237732, + -0.39086830615997314, + -0.35411033034324646 + ] + ], + "translation_m": [ + -0.03010912984609604, + 0.32548150420188904, + 0.2909383177757263 + ], + "rvec_rad": [ + 1.1187772559005047, + -1.8519635596120632, + 1.2365255960114159 + ] + }, + "camera_in_world": { + "position_m": [ + -0.16287051141262054, + 0.022944524884223938, + 0.4055078625679016 + ], + "position_mm": [ + -162.87051391601562, + 22.94452476501465, + 405.50787353515625 + ], + "orientation_deg": { + "roll": -132.17526245117188, + "pitch": -58.16868209838867, + "yaw": -145.43643188476562 + } + }, + "uncertainty": { + "pose_covariance_6x6": [ + [ + 1.446615004541035e-06, + -2.3750243241143832e-07, + 5.813263188255589e-07, + -8.863593861370775e-09, + 1.854753583118696e-07, + 2.483118756120673e-07 + ], + [ + -2.375024324114069e-07, + 1.6848056153960325e-06, + 4.5522840438908317e-07, + -4.2882786235818766e-07, + -7.198460805062003e-07, + -6.031524743678258e-07 + ], + [ + 5.813263188256213e-07, + 4.5522840438904717e-07, + 3.6098691381176423e-06, + 5.380515895797557e-07, + -8.518199008797127e-07, + -6.107991066544038e-07 + ], + [ + -8.86359386136767e-09, + -4.2882786235819084e-07, + 5.380515895797531e-07, + 2.6838864216504313e-07, + 3.692099582285058e-08, + 6.359201722744009e-08 + ], + [ + 1.8547535831184565e-07, + -7.198460805061971e-07, + -8.518199008797362e-07, + 3.692099582284795e-08, + 4.978035271371442e-07, + 4.941045438616945e-07 + ], + [ + 2.483118756120473e-07, + -6.031524743678251e-07, + -6.107991066544345e-07, + 6.359201722743617e-08, + 4.941045438616975e-07, + 7.922266489950106e-07 + ] + ], + "parameter_std": { + "rvec_std_deg": [ + 0.06891267606855489, + 0.0743699574610443, + 0.10886000794288055 + ], + "tvec_std_m": [ + 0.0005180623921546932, + 0.0007055519308577818, + 0.0008900711482769288 + ] + }, + "camera_center_std_m": [ + 0.000713244150286227, + 0.0010694082952597134, + 0.0011346670581527643 + ], + "camera_center_std_mm": [ + 0.713244150286227, + 1.0694082952597133, + 1.1346670581527643 + ], + "orientation_std_deg": { + "roll": 0.146033675708339, + "pitch": 0.07444664358168214, + "yaw": 0.10571491927224817 + } + } + }, + "observations": { + "markers": [ + { + "marker_id": 96, + "observed_center_px": [ + 590.25, + 907.5 + ], + "projected_center_px": [ + 590.2493896484375, + 907.3632202148438 + ], + "reprojection_error_px": 0.1367811469334124, + "confidence": 0.4047568547615518 + }, + { + "marker_id": 97, + "observed_center_px": [ + 969.75, + 871.25 + ], + "projected_center_px": [ + 969.3050537109375, + 871.2380981445312 + ], + "reprojection_error_px": 0.4451054417933899, + "confidence": 0.8722907081171155 + }, + { + "marker_id": 47, + "observed_center_px": [ + 797.0, + 872.5 + ], + "projected_center_px": [ + 797.1061401367188, + 872.037353515625 + ], + "reprojection_error_px": 0.47466566984270314, + "confidence": 0.7759117848206195 + }, + { + "marker_id": 54, + "observed_center_px": [ + 873.75, + 847.25 + ], + "projected_center_px": [ + 874.1572875976562, + 847.6990966796875 + ], + "reprojection_error_px": 0.6062763519311439, + "confidence": 0.7360188268067743 + }, + { + "marker_id": 62, + "observed_center_px": [ + 540.75, + 875.0 + ], + "projected_center_px": [ + 540.740966796875, + 875.5213623046875 + ], + "reprojection_error_px": 0.521440554145685, + "confidence": 0.5424197481555236 + }, + { + "marker_id": 85, + "observed_center_px": [ + 691.5, + 715.0 + ], + "projected_center_px": [ + 691.7570190429688, + 714.4783325195312 + ], + "reprojection_error_px": 0.5815459987199515, + "confidence": 0.3363291739196003 + }, + { + "marker_id": 105, + "observed_center_px": [ + 607.25, + 720.25 + ], + "projected_center_px": [ + 606.82470703125, + 719.9483642578125 + ], + "reprojection_error_px": 0.521400259141854, + "confidence": 0.2839120657198857 + }, + { + "marker_id": 57, + "observed_center_px": [ + 690.75, + 629.75 + ], + "projected_center_px": [ + 690.8707275390625, + 630.2158813476562 + ], + "reprojection_error_px": 0.48126974638147696, + "confidence": 0.2029035186492315 + } + ] + }, + "qa": { + "sanity_notes": [] + } +} \ No newline at end of file diff --git a/test/homing/20260616_133151/cam0_debug.jpg b/test/homing/20260616_133151/cam0_debug.jpg new file mode 100644 index 0000000..84b337a Binary files /dev/null and b/test/homing/20260616_133151/cam0_debug.jpg differ diff --git a/test/homing/20260616_133151/cam1.jpg b/test/homing/20260616_133151/cam1.jpg new file mode 100644 index 0000000..2be637c Binary files /dev/null and b/test/homing/20260616_133151/cam1.jpg differ diff --git a/test/homing/20260616_133151/cam1_aruco_detection.json b/test/homing/20260616_133151/cam1_aruco_detection.json new file mode 100644 index 0000000..3eb07b4 --- /dev/null +++ b/test/homing/20260616_133151/cam1_aruco_detection.json @@ -0,0 +1,3123 @@ +{ + "schema_version": "1.0", + "created_utc": "2026-06-16T13:32:00Z", + "vision_config": { + "MarkerType": "DICT_4X4_250", + "MarkerSize": 0.025 + }, + "camera": { + "camera_id": "cam1", + "intrinsics_file": "/app/data/calibration/20260610_092149/cam1_calibration.npz", + "camera_matrix": [ + [ + 1367.5723876953125, + 0.0, + 672.1165771484375 + ], + [ + 0.0, + 1372.3011474609375, + 445.8396911621094 + ], + [ + 0.0, + 0.0, + 1.0 + ] + ], + "distortion_coefficients": [ + 0.01016925647854805, + 0.7656787633895874, + -0.0031530377455055714, + -0.00288817984983325, + -2.490830183029175 + ] + }, + "image": { + "image_file": "/app/data/homing/20260616_133151/cam1.jpg", + "image_sha256": "c70b8d71a36ff1c3fb290a64dca36e8486bab71015c34d4b69e459357316249a", + "width_px": 1280, + "height_px": 960 + }, + "aruco": { + "dictionary": "DICT_4X4_250", + "num_detected_markers": 43, + "num_rejected_candidates": 30 + }, + "detections": [ + { + "observation_id": "fe84a64f-1e63-4f70-95a2-f07781b4f6c2", + "type": "aruco", + "marker_id": 69, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1152.0, + 271.0 + ], + [ + 1148.0, + 306.0 + ], + [ + 1112.0, + 300.0 + ], + [ + 1116.0, + 266.0 + ] + ], + "center_px": [ + 1132.0, + 285.75 + ], + "quality": { + "area_px": 1264.0, + "perimeter_px": 142.30445098876953, + "sharpness": { + "laplacian_var": 2718.292721627692 + }, + "contrast": { + "p05": 2.0, + "p95": 184.0, + "dynamic_range": 182.0, + "mean_gray": 63.91609195402299, + "std_gray": 70.48088413467397 + }, + "geometry": { + "distance_to_center_norm": 0.6611981391906738, + "distance_to_border_px": 128.0 + }, + "edge_ratio": 1.0660763184916147, + "edge_lengths_px": [ + 35.22782897949219, + 36.49657440185547, + 34.2344856262207, + 36.34556198120117 + ] + }, + "confidence": 0.7904374687348378 + }, + { + "observation_id": "2f226279-f844-46f0-a16f-3e9e41ed15f3", + "type": "aruco", + "marker_id": 143, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 516.0, + 306.0 + ], + [ + 481.0, + 311.0 + ], + [ + 477.0, + 276.0 + ], + [ + 512.0, + 272.0 + ] + ], + "center_px": [ + 496.5, + 291.25 + ], + "quality": { + "area_px": 1225.5, + "perimeter_px": 140.04548263549805, + "sharpness": { + "laplacian_var": 2634.262790200545 + }, + "contrast": { + "p05": 3.0, + "p95": 177.19999999999993, + "dynamic_range": 174.19999999999993, + "mean_gray": 71.07701283547257, + "std_gray": 68.32413752088641 + }, + "geometry": { + "distance_to_center_norm": 0.2963813543319702, + "distance_to_border_px": 272.0 + }, + "edge_ratio": 1.0327404780171077, + "edge_lengths_px": [ + 35.35533905029297, + 35.22782897949219, + 35.22782897949219, + 34.2344856262207 + ] + }, + "confidence": 0.7910990392946194 + }, + { + "observation_id": "a505d323-689f-49dc-9e5a-a0b4c936afb0", + "type": "aruco", + "marker_id": 64, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1180.0, + 410.0 + ], + [ + 1176.0, + 441.0 + ], + [ + 1140.0, + 434.0 + ], + [ + 1144.0, + 403.0 + ] + ], + "center_px": [ + 1160.0, + 422.0 + ], + "quality": { + "area_px": 1144.0, + "perimeter_px": 135.86248016357422, + "sharpness": { + "laplacian_var": 2931.2814493460282 + }, + "contrast": { + "p05": 1.0, + "p95": 180.0, + "dynamic_range": 179.0, + "mean_gray": 64.87801778907243, + "std_gray": 70.02542912326945 + }, + "geometry": { + "distance_to_center_norm": 0.6540307402610779, + "distance_to_border_px": 100.0 + }, + "edge_ratio": 1.1733128626583278, + "edge_lengths_px": [ + 31.256999969482422, + 36.67424011230469, + 31.256999969482422, + 36.67424011230469 + ] + }, + "confidence": 0.6500113404865634 + }, + { + "observation_id": "b787d2b6-8160-483d-a5c8-e2d9a0176b8d", + "type": "aruco", + "marker_id": 146, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 526.0, + 400.0 + ], + [ + 492.0, + 404.0 + ], + [ + 488.0, + 372.0 + ], + [ + 522.0, + 369.0 + ] + ], + "center_px": [ + 507.0, + 386.25 + ], + "quality": { + "area_px": 1085.0, + "perimeter_px": 131.87261199951172, + "sharpness": { + "laplacian_var": 2310.7902516279637 + }, + "contrast": { + "p05": 3.0, + "p95": 173.0, + "dynamic_range": 170.0, + "mean_gray": 62.114023591087815, + "std_gray": 65.5926813193162 + }, + "geometry": { + "distance_to_center_norm": 0.20340101420879364, + "distance_to_border_px": 369.0 + }, + "edge_ratio": 1.0952582032711178, + "edge_lengths_px": [ + 34.2344856262207, + 32.24903106689453, + 34.13209533691406, + 31.256999969482422 + ] + }, + "confidence": 0.6604226575733586 + }, + { + "observation_id": "70fd6077-9f8e-409b-b928-60ce718b2290", + "type": "aruco", + "marker_id": 179, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 436.0, + 119.0 + ], + [ + 463.0, + 122.0 + ], + [ + 437.0, + 140.0 + ], + [ + 408.0, + 137.0 + ] + ], + "center_px": [ + 436.0, + 129.5 + ], + "quality": { + "area_px": 585.0, + "perimeter_px": 121.2303237915039, + "sharpness": { + "laplacian_var": 11444.70728194456 + }, + "contrast": { + "p05": 18.8, + "p95": 250.2, + "dynamic_range": 231.39999999999998, + "mean_gray": 123.80604534005037, + "std_gray": 85.00917220465011 + }, + "geometry": { + "distance_to_center_norm": 0.5069304704666138, + "distance_to_border_px": 119.0 + }, + "edge_ratio": 1.2252979012895489, + "edge_lengths_px": [ + 27.166154861450195, + 31.62277603149414, + 29.154760360717773, + 33.2866325378418 + ] + }, + "confidence": 0.31828994368598 + }, + { + "observation_id": "b6e30c68-b344-4205-88eb-85fc73a14c01", + "type": "aruco", + "marker_id": 95, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 902.0, + 248.0 + ], + [ + 902.0, + 279.0 + ], + [ + 873.0, + 274.0 + ], + [ + 874.0, + 243.0 + ] + ], + "center_px": [ + 887.75, + 261.0 + ], + "quality": { + "area_px": 886.0, + "perimeter_px": 119.88692665100098, + "sharpness": { + "laplacian_var": 1372.0393672261805 + }, + "contrast": { + "p05": 14.8, + "p95": 190.0, + "dynamic_range": 175.2, + "mean_gray": 84.99372056514913, + "std_gray": 69.70156133743627 + }, + "geometry": { + "distance_to_center_norm": 0.4133344888687134, + "distance_to_border_px": 243.0 + }, + "edge_ratio": 1.0904689046962892, + "edge_lengths_px": [ + 31.0, + 29.42787742614746, + 31.016124725341797, + 28.44292449951172 + ] + }, + "confidence": 0.5416630076500674 + }, + { + "observation_id": "e5a237b6-e7ce-4bf4-b4ec-9258d94e7270", + "type": "aruco", + "marker_id": 148, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 541.0, + 244.0 + ], + [ + 518.0, + 253.0 + ], + [ + 515.0, + 217.0 + ], + [ + 539.0, + 210.0 + ] + ], + "center_px": [ + 528.25, + 231.0 + ], + "quality": { + "area_px": 842.5, + "perimeter_px": 119.88173294067383, + "sharpness": { + "laplacian_var": 2337.884080210688 + }, + "contrast": { + "p05": 11.0, + "p95": 154.0, + "dynamic_range": 143.0, + "mean_gray": 58.70051635111876, + "std_gray": 51.65335088085257 + }, + "geometry": { + "distance_to_center_norm": 0.34115856885910034, + "distance_to_border_px": 210.0 + }, + "edge_ratio": 1.4626497359864785, + "edge_lengths_px": [ + 24.698177337646484, + 36.12478256225586, + 25.0, + 34.058773040771484 + ] + }, + "confidence": 0.38400626810892136 + }, + { + "observation_id": "9f8a3080-f5bd-4585-8c77-1b3cd882c117", + "type": "aruco", + "marker_id": 97, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 761.0, + 116.0 + ], + [ + 761.0, + 148.0 + ], + [ + 734.0, + 144.0 + ], + [ + 735.0, + 112.0 + ] + ], + "center_px": [ + 747.75, + 130.0 + ], + "quality": { + "area_px": 850.0, + "perimeter_px": 117.61620140075684, + "sharpness": { + "laplacian_var": 1966.7601252153656 + }, + "contrast": { + "p05": 7.0, + "p95": 192.0, + "dynamic_range": 185.0, + "mean_gray": 97.98357963875205, + "std_gray": 74.68833805909858 + }, + "geometry": { + "distance_to_center_norm": 0.45776301622390747, + "distance_to_border_px": 112.0 + }, + "edge_ratio": 1.2170512992297489, + "edge_lengths_px": [ + 32.0, + 27.294687271118164, + 32.015621185302734, + 26.305892944335938 + ] + }, + "confidence": 0.46560622960207215 + }, + { + "observation_id": "286f26c1-814b-4aa8-b1dc-60965e34ee06", + "type": "aruco", + "marker_id": 243, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 599.0, + 525.0 + ], + [ + 574.0, + 517.0 + ], + [ + 590.0, + 491.0 + ], + [ + 617.0, + 498.0 + ] + ], + "center_px": [ + 595.0, + 507.75 + ], + "quality": { + "area_px": 816.5, + "perimeter_px": 117.12009811401367, + "sharpness": { + "laplacian_var": 3477.128686957895 + }, + "contrast": { + "p05": 42.0, + "p95": 247.0, + "dynamic_range": 205.0, + "mean_gray": 119.36086175942549, + "std_gray": 78.80485712124666 + }, + "geometry": { + "distance_to_center_norm": 0.06608543545007706, + "distance_to_border_px": 435.0 + }, + "edge_ratio": 1.2362451038865463, + "edge_lengths_px": [ + 26.248809814453125, + 30.528675079345703, + 27.892650604248047, + 32.4499626159668 + ] + }, + "confidence": 0.4403118213548762 + }, + { + "observation_id": "d5652c1a-28e1-4d4b-8f02-ebadfc0c982f", + "type": "aruco", + "marker_id": 51, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 921.0, + 381.0 + ], + [ + 920.0, + 410.0 + ], + [ + 892.0, + 404.0 + ], + [ + 892.0, + 376.0 + ] + ], + "center_px": [ + 906.25, + 392.75 + ], + "quality": { + "area_px": 815.0, + "perimeter_px": 115.08075714111328, + "sharpness": { + "laplacian_var": 1848.852612960761 + }, + "contrast": { + "p05": 13.0, + "p95": 188.04999999999995, + "dynamic_range": 175.04999999999995, + "mean_gray": 79.30862068965517, + "std_gray": 65.37177178548372 + }, + "geometry": { + "distance_to_center_norm": 0.3502267897129059, + "distance_to_border_px": 359.0 + }, + "edge_ratio": 1.0509956223624093, + "edge_lengths_px": [ + 29.017236709594727, + 28.635643005371094, + 28.0, + 29.42787742614746 + ] + }, + "confidence": 0.5169701203055806 + }, + { + "observation_id": "fdfcdbc9-3764-4dde-82b5-85389f3ce94d", + "type": "aruco", + "marker_id": 54, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 719.0, + 149.0 + ], + [ + 720.0, + 180.0 + ], + [ + 695.0, + 177.0 + ], + [ + 694.0, + 146.0 + ] + ], + "center_px": [ + 707.0, + 163.0 + ], + "quality": { + "area_px": 772.0, + "perimeter_px": 112.39096450805664, + "sharpness": { + "laplacian_var": 1622.8107124513408 + }, + "contrast": { + "p05": 8.150000000000002, + "p95": 173.0, + "dynamic_range": 164.85, + "mean_gray": 51.25367647058823, + "std_gray": 55.9541729612518 + }, + "geometry": { + "distance_to_center_norm": 0.4050038456916809, + "distance_to_border_px": 146.0 + }, + "edge_ratio": 1.2318076301194547, + "edge_lengths_px": [ + 31.016124725341797, + 25.179357528686523, + 31.016124725341797, + 25.179357528686523 + ] + }, + "confidence": 0.41781415708291797 + }, + { + "observation_id": "34788c74-6ffa-4812-9887-093b934fe652", + "type": "aruco", + "marker_id": 144, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 554.0, + 387.0 + ], + [ + 532.0, + 399.0 + ], + [ + 529.0, + 368.0 + ], + [ + 552.0, + 357.0 + ] + ], + "center_px": [ + 541.75, + 377.75 + ], + "quality": { + "area_px": 715.0, + "perimeter_px": 111.76644325256348, + "sharpness": { + "laplacian_var": 2233.636835604352 + }, + "contrast": { + "p05": 6.0, + "p95": 161.79999999999995, + "dynamic_range": 155.79999999999995, + "mean_gray": 68.58415841584159, + "std_gray": 58.9154902938859 + }, + "geometry": { + "distance_to_center_norm": 0.17725390195846558, + "distance_to_border_px": 357.0 + }, + "edge_ratio": 1.2428137049400927, + "edge_lengths_px": [ + 25.05992889404297, + 31.14482307434082, + 25.495098114013672, + 30.066593170166016 + ] + }, + "confidence": 0.3835383088969424 + }, + { + "observation_id": "28719c7f-70ef-4c3c-b842-bd0e2ca3bde4", + "type": "aruco", + "marker_id": 55, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 787.0, + 246.0 + ], + [ + 786.0, + 275.0 + ], + [ + 760.0, + 270.0 + ], + [ + 760.0, + 242.0 + ] + ], + "center_px": [ + 773.25, + 258.25 + ], + "quality": { + "area_px": 757.5, + "perimeter_px": 110.78832817077637, + "sharpness": { + "laplacian_var": 1452.7185036228416 + }, + "contrast": { + "p05": 11.0, + "p95": 188.0, + "dynamic_range": 177.0, + "mean_gray": 87.78719397363466, + "std_gray": 67.6264659315131 + }, + "geometry": { + "distance_to_center_norm": 0.32338207960128784, + "distance_to_border_px": 242.0 + }, + "edge_ratio": 1.0959659212516788, + "edge_lengths_px": [ + 29.017236709594727, + 26.476404190063477, + 28.0, + 27.294687271118164 + ] + }, + "confidence": 0.46078075075842734 + }, + { + "observation_id": "4da99504-c8f0-4e63-86ab-6a0d3fd0fc7a", + "type": "aruco", + "marker_id": 132, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 540.0, + 555.0 + ], + [ + 515.0, + 547.0 + ], + [ + 510.0, + 520.0 + ], + [ + 538.0, + 528.0 + ] + ], + "center_px": [ + 525.75, + 537.5 + ], + "quality": { + "area_px": 687.5, + "perimeter_px": 109.90228271484375, + "sharpness": { + "laplacian_var": 2520.7163077805276 + }, + "contrast": { + "p05": 3.0, + "p95": 184.0, + "dynamic_range": 181.0, + "mean_gray": 61.412731006160165, + "std_gray": 67.23913072270106 + }, + "geometry": { + "distance_to_center_norm": 0.1598794013261795, + "distance_to_border_px": 405.0 + }, + "edge_ratio": 1.1094003779700763, + "edge_lengths_px": [ + 26.248809814453125, + 27.459060668945312, + 29.120439529418945, + 27.073972702026367 + ] + }, + "confidence": 0.4131360890393494 + }, + { + "observation_id": "b8735e57-3e85-4ed8-bd03-45745bd5a33f", + "type": "aruco", + "marker_id": 75, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1133.0, + 851.0 + ], + [ + 1131.0, + 875.0 + ], + [ + 1102.0, + 864.0 + ], + [ + 1104.0, + 841.0 + ] + ], + "center_px": [ + 1117.5, + 857.75 + ], + "quality": { + "area_px": 702.5, + "perimeter_px": 108.86182975769043, + "sharpness": { + "laplacian_var": 2024.2877083800306 + }, + "contrast": { + "p05": 1.0, + "p95": 155.2, + "dynamic_range": 154.2, + "mean_gray": 83.59958071278825, + "std_gray": 58.66799812518806 + }, + "geometry": { + "distance_to_center_norm": 0.7610656023025513, + "distance_to_border_px": 85.0 + }, + "edge_ratio": 1.3434575377920657, + "edge_lengths_px": [ + 24.083189010620117, + 31.016124725341797, + 23.0867919921875, + 30.675724029541016 + ] + }, + "confidence": 0.34860300393492594 + }, + { + "observation_id": "2f0736b0-ee5e-4471-a499-861ac5c2219f", + "type": "aruco", + "marker_id": 47, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 719.0, + 206.0 + ], + [ + 720.0, + 235.0 + ], + [ + 696.0, + 231.0 + ], + [ + 694.0, + 202.0 + ] + ], + "center_px": [ + 707.25, + 218.5 + ], + "quality": { + "area_px": 704.5, + "perimeter_px": 107.73514938354492, + "sharpness": { + "laplacian_var": 1885.7118886052135 + }, + "contrast": { + "p05": 8.0, + "p95": 178.0, + "dynamic_range": 170.0, + "mean_gray": 76.81557377049181, + "std_gray": 62.98645771765807 + }, + "geometry": { + "distance_to_center_norm": 0.3375111520290375, + "distance_to_border_px": 202.0 + }, + "edge_ratio": 1.194723731738494, + "edge_lengths_px": [ + 29.017236709594727, + 24.331050872802734, + 29.068883895874023, + 25.317977905273438 + ] + }, + "confidence": 0.393117382864099 + }, + { + "observation_id": "1cd9bd23-8fd0-4082-a8ea-dd59ae91be77", + "type": "aruco", + "marker_id": 77, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1079.0, + 828.0 + ], + [ + 1077.0, + 852.0 + ], + [ + 1049.0, + 841.0 + ], + [ + 1050.0, + 820.0 + ] + ], + "center_px": [ + 1063.75, + 835.25 + ], + "quality": { + "area_px": 655.5, + "perimeter_px": 105.2734203338623, + "sharpness": { + "laplacian_var": 2090.382430104158 + }, + "contrast": { + "p05": 1.0, + "p95": 152.0, + "dynamic_range": 151.0, + "mean_gray": 55.280973451327434, + "std_gray": 56.962907438359856 + }, + "geometry": { + "distance_to_center_norm": 0.6912021040916443, + "distance_to_border_px": 108.0 + }, + "edge_ratio": 1.4309127383165599, + "edge_lengths_px": [ + 24.083189010620117, + 30.08321762084961, + 21.02379608154297, + 30.08321762084961 + ] + }, + "confidence": 0.3053994756620321 + }, + { + "observation_id": "44eb49c7-48fe-4844-a8b5-0f11db6e4037", + "type": "aruco", + "marker_id": 129, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 502.0, + 543.0 + ], + [ + 478.0, + 535.0 + ], + [ + 475.0, + 508.0 + ], + [ + 498.0, + 515.0 + ] + ], + "center_px": [ + 488.25, + 525.25 + ], + "quality": { + "area_px": 620.0, + "perimeter_px": 104.7902774810791, + "sharpness": { + "laplacian_var": 2749.993447100367 + }, + "contrast": { + "p05": 5.100000000000001, + "p95": 179.0, + "dynamic_range": 173.9, + "mean_gray": 76.69300225733635, + "std_gray": 69.58432285471334 + }, + "geometry": { + "distance_to_center_norm": 0.19794104993343353, + "distance_to_border_px": 417.0 + }, + "edge_ratio": 1.1764706255695279, + "edge_lengths_px": [ + 25.298221588134766, + 27.166154861450195, + 24.041629791259766, + 28.284271240234375 + ] + }, + "confidence": 0.35133332218408697 + }, + { + "observation_id": "8cdf9a8c-3e6f-44cc-b530-33defac54e8e", + "type": "aruco", + "marker_id": 79, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 758.0, + 364.0 + ], + [ + 758.0, + 391.0 + ], + [ + 733.0, + 385.0 + ], + [ + 733.0, + 359.0 + ] + ], + "center_px": [ + 745.5, + 374.75 + ], + "quality": { + "area_px": 662.5, + "perimeter_px": 104.20501899719238, + "sharpness": { + "laplacian_var": 1586.9163942639173 + }, + "contrast": { + "p05": 8.400000000000002, + "p95": 184.0, + "dynamic_range": 175.6, + "mean_gray": 102.5011135857461, + "std_gray": 63.759225708147255 + }, + "geometry": { + "distance_to_center_norm": 0.1862785667181015, + "distance_to_border_px": 359.0 + }, + "edge_ratio": 1.0590271070641277, + "edge_lengths_px": [ + 27.0, + 25.70992088317871, + 26.0, + 25.495098114013672 + ] + }, + "confidence": 0.4170494444576311 + }, + { + "observation_id": "043ede6f-a005-45b6-991e-931cbe49e5fe", + "type": "aruco", + "marker_id": 81, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 949.0, + 760.0 + ], + [ + 948.0, + 782.0 + ], + [ + 922.0, + 772.0 + ], + [ + 923.0, + 751.0 + ] + ], + "center_px": [ + 935.5, + 766.25 + ], + "quality": { + "area_px": 568.5, + "perimeter_px": 98.41692161560059, + "sharpness": { + "laplacian_var": 1648.1280163678625 + }, + "contrast": { + "p05": 1.0, + "p95": 144.0, + "dynamic_range": 143.0, + "mean_gray": 54.07379134860051, + "std_gray": 55.23820404285542 + }, + "geometry": { + "distance_to_center_norm": 0.5142642259597778, + "distance_to_border_px": 178.0 + }, + "edge_ratio": 1.3250117668149328, + "edge_lengths_px": [ + 22.022714614868164, + 27.85677719116211, + 21.02379608154297, + 27.513633728027344 + ] + }, + "confidence": 0.2860351956805948 + }, + { + "observation_id": "e8000293-6ee1-4c91-b305-1cec7c67a44e", + "type": "aruco", + "marker_id": 201, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 790.0, + 721.0 + ], + [ + 789.0, + 696.0 + ], + [ + 805.0, + 682.0 + ], + [ + 807.0, + 706.0 + ] + ], + "center_px": [ + 797.75, + 701.25 + ], + "quality": { + "area_px": 426.0, + "perimeter_px": 93.03504180908203, + "sharpness": { + "laplacian_var": 1092.3962810547173 + }, + "contrast": { + "p05": 10.150000000000002, + "p95": 120.0, + "dynamic_range": 109.85, + "mean_gray": 45.77777777777778, + "std_gray": 34.88419996799995 + }, + "geometry": { + "distance_to_center_norm": 0.339661180973053, + "distance_to_border_px": 239.0 + }, + "edge_ratio": 1.1768414453448952, + "edge_lengths_px": [ + 25.01999282836914, + 21.260292053222656, + 24.083189010620117, + 22.671567916870117 + ] + }, + "confidence": 0.2413239278098066 + }, + { + "observation_id": "18407734-500b-4e18-b656-fb6504e1c385", + "type": "aruco", + "marker_id": 52, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 988.0, + 812.0 + ], + [ + 988.0, + 834.0 + ], + [ + 961.0, + 824.0 + ], + [ + 962.0, + 803.0 + ] + ], + "center_px": [ + 974.75, + 818.25 + ], + "quality": { + "area_px": 574.5, + "perimeter_px": 99.32979011535645, + "sharpness": { + "laplacian_var": 2572.6616499583342 + }, + "contrast": { + "p05": 1.0, + "p95": 156.0, + "dynamic_range": 155.0, + "mean_gray": 54.21105527638191, + "std_gray": 57.3292148276578 + }, + "geometry": { + "distance_to_center_norm": 0.594861626625061, + "distance_to_border_px": 126.0 + }, + "edge_ratio": 1.369512917368109, + "edge_lengths_px": [ + 22.0, + 28.792360305786133, + 21.02379608154297, + 27.513633728027344 + ] + }, + "confidence": 0.2796614731725484 + }, + { + "observation_id": "1aca5646-caaf-45a1-b32c-bad0d3d650ab", + "type": "aruco", + "marker_id": 204, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 761.0, + 793.0 + ], + [ + 736.0, + 782.0 + ], + [ + 735.0, + 760.0 + ], + [ + 760.0, + 770.0 + ] + ], + "center_px": [ + 748.0, + 776.25 + ], + "quality": { + "area_px": 552.0, + "perimeter_px": 99.28326606750488, + "sharpness": { + "laplacian_var": 2179.206897506925 + }, + "contrast": { + "p05": 2.0, + "p95": 162.05, + "dynamic_range": 160.05, + "mean_gray": 55.747368421052634, + "std_gray": 58.72638937363905 + }, + "geometry": { + "distance_to_center_norm": 0.3941526710987091, + "distance_to_border_px": 167.0 + }, + "edge_ratio": 1.2402194826110133, + "edge_lengths_px": [ + 27.312999725341797, + 22.022714614868164, + 26.925823211669922, + 23.021728515625 + ] + }, + "confidence": 0.29672167318743914 + }, + { + "observation_id": "4d3add0b-a760-4abc-a574-9064d938f357", + "type": "aruco", + "marker_id": 215, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 724.0, + 461.0 + ], + [ + 701.0, + 455.0 + ], + [ + 699.0, + 431.0 + ], + [ + 723.0, + 436.0 + ] + ], + "center_px": [ + 711.75, + 445.75 + ], + "quality": { + "area_px": 567.5, + "perimeter_px": 97.38821029663086, + "sharpness": { + "laplacian_var": 1703.780643194635 + }, + "contrast": { + "p05": 5.0, + "p95": 165.79999999999995, + "dynamic_range": 160.79999999999995, + "mean_gray": 74.0320987654321, + "std_gray": 63.99839085006476 + }, + "geometry": { + "distance_to_center_norm": 0.09938187897205353, + "distance_to_border_px": 431.0 + }, + "edge_ratio": 1.0525990510651304, + "edge_lengths_px": [ + 23.76972770690918, + 24.083189010620117, + 24.515300750732422, + 25.01999282836914 + ] + }, + "confidence": 0.35942777351974226 + }, + { + "observation_id": "eaa04c33-7407-4384-b308-d720f12af6e7", + "type": "aruco", + "marker_id": 96, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 697.0, + 321.0 + ], + [ + 698.0, + 347.0 + ], + [ + 675.0, + 342.0 + ], + [ + 673.0, + 317.0 + ] + ], + "center_px": [ + 685.75, + 331.75 + ], + "quality": { + "area_px": 592.5, + "perimeter_px": 98.96735191345215, + "sharpness": { + "laplacian_var": 1441.6177777777777 + }, + "contrast": { + "p05": 7.0, + "p95": 176.79999999999995, + "dynamic_range": 169.79999999999995, + "mean_gray": 90.24691358024691, + "std_gray": 66.86266205359884 + }, + "geometry": { + "distance_to_center_norm": 0.19393588602542877, + "distance_to_border_px": 317.0 + }, + "edge_ratio": 1.1054509000367414, + "edge_lengths_px": [ + 26.019224166870117, + 23.53720474243164, + 25.079872131347656, + 24.331050872802734 + ] + }, + "confidence": 0.35732025726956446 + }, + { + "observation_id": "606e7cd0-09d2-449d-85fb-f1c41ddac404", + "type": "aruco", + "marker_id": 62, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 663.0, + 327.0 + ], + [ + 664.0, + 353.0 + ], + [ + 641.0, + 347.0 + ], + [ + 641.0, + 322.0 + ] + ], + "center_px": [ + 652.25, + 337.25 + ], + "quality": { + "area_px": 571.0, + "perimeter_px": 97.34997940063477, + "sharpness": { + "laplacian_var": 1414.4911296730295 + }, + "contrast": { + "p05": 4.300000000000001, + "p95": 143.39999999999998, + "dynamic_range": 139.09999999999997, + "mean_gray": 38.65374677002584, + "std_gray": 43.8253994667076 + }, + "geometry": { + "distance_to_center_norm": 0.17909330129623413, + "distance_to_border_px": 322.0 + }, + "edge_ratio": 1.1532818767185222, + "edge_lengths_px": [ + 26.019224166870117, + 23.76972770690918, + 25.0, + 22.56102752685547 + ] + }, + "confidence": 0.3300725298396194 + }, + { + "observation_id": "f3aa3c13-a208-4c5d-83b1-46e455ecb6d1", + "type": "aruco", + "marker_id": 101, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 959.0, + 883.0 + ], + [ + 958.0, + 905.0 + ], + [ + 934.0, + 894.0 + ], + [ + 934.0, + 875.0 + ] + ], + "center_px": [ + 946.25, + 889.25 + ], + "quality": { + "area_px": 507.0, + "perimeter_px": 93.67228126525879, + "sharpness": { + "laplacian_var": 2444.01827440445 + }, + "contrast": { + "p05": 1.0, + "p95": 151.0, + "dynamic_range": 150.0, + "mean_gray": 64.31955922865014, + "std_gray": 56.70198861374598 + }, + "geometry": { + "distance_to_center_norm": 0.6389378905296326, + "distance_to_border_px": 55.0 + }, + "edge_ratio": 1.389513517680921, + "edge_lengths_px": [ + 22.022714614868164, + 26.4007568359375, + 19.0, + 26.248809814453125 + ] + }, + "confidence": 0.24325060224251535 + }, + { + "observation_id": "c7e5b99e-0e2d-4090-9b95-46a7546684e1", + "type": "aruco", + "marker_id": 48, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 392.0, + 120.0 + ], + [ + 395.0, + 147.0 + ], + [ + 377.0, + 143.0 + ], + [ + 373.0, + 118.0 + ] + ], + "center_px": [ + 384.25, + 132.0 + ], + "quality": { + "area_px": 470.5, + "perimeter_px": 90.02819442749023, + "sharpness": { + "laplacian_var": 3018.5105955753165 + }, + "contrast": { + "p05": 2.0, + "p95": 165.34999999999997, + "dynamic_range": 163.34999999999997, + "mean_gray": 57.796407185628745, + "std_gray": 58.924750441869456 + }, + "geometry": { + "distance_to_center_norm": 0.5398380160331726, + "distance_to_border_px": 118.0 + }, + "edge_ratio": 1.4732916102614222, + "edge_lengths_px": [ + 27.166154861450195, + 18.439088821411133, + 25.317977905273438, + 19.10497283935547 + ] + }, + "confidence": 0.21290195673550963 + }, + { + "observation_id": "2739d8b9-0bde-4272-be94-2f5b726e4ca9", + "type": "aruco", + "marker_id": 71, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 350.0, + 154.0 + ], + [ + 353.0, + 180.0 + ], + [ + 335.0, + 176.0 + ], + [ + 332.0, + 151.0 + ] + ], + "center_px": [ + 342.5, + 165.25 + ], + "quality": { + "area_px": 448.5, + "perimeter_px": 88.03923797607422, + "sharpness": { + "laplacian_var": 3526.3887788713196 + }, + "contrast": { + "p05": 3.0, + "p95": 178.0, + "dynamic_range": 175.0, + "mean_gray": 94.61514195583597, + "std_gray": 66.38908939185364 + }, + "geometry": { + "distance_to_center_norm": 0.5413724184036255, + "distance_to_border_px": 151.0 + }, + "edge_ratio": 1.4342444382242203, + "edge_lengths_px": [ + 26.172504425048828, + 18.439088821411133, + 25.179357528686523, + 18.248287200927734 + ] + }, + "confidence": 0.20847213489647592 + }, + { + "observation_id": "1e3403d5-318e-4cff-a931-2c66d692b788", + "type": "aruco", + "marker_id": 78, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 282.0, + 80.0 + ], + [ + 287.0, + 105.0 + ], + [ + 269.0, + 103.0 + ], + [ + 265.0, + 78.0 + ] + ], + "center_px": [ + 275.75, + 91.5 + ], + "quality": { + "area_px": 428.5, + "perimeter_px": 86.04109001159668, + "sharpness": { + "laplacian_var": 3499.1733705688935 + }, + "contrast": { + "p05": 4.0, + "p95": 164.0, + "dynamic_range": 160.0, + "mean_gray": 70.46979865771812, + "std_gray": 58.90608576563136 + }, + "geometry": { + "distance_to_center_norm": 0.6656884551048279, + "distance_to_border_px": 78.0 + }, + "edge_ratio": 1.4894395313763147, + "edge_lengths_px": [ + 25.495098114013672, + 18.11077117919922, + 25.317977905273438, + 17.11724281311035 + ] + }, + "confidence": 0.19179473932902583 + }, + { + "observation_id": "37fd8f11-f0da-4594-8555-bc22683a4680", + "type": "aruco", + "marker_id": 65, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 306.0, + 133.0 + ], + [ + 310.0, + 158.0 + ], + [ + 293.0, + 155.0 + ], + [ + 289.0, + 131.0 + ] + ], + "center_px": [ + 299.5, + 144.25 + ], + "quality": { + "area_px": 406.5, + "perimeter_px": 84.0289478302002, + "sharpness": { + "laplacian_var": 4063.8577356406004 + }, + "contrast": { + "p05": 2.9000000000000004, + "p95": 168.09999999999997, + "dynamic_range": 165.19999999999996, + "mean_gray": 79.18996415770609, + "std_gray": 62.53775725174007 + }, + "geometry": { + "distance_to_center_norm": 0.5977409482002258, + "distance_to_border_px": 131.0 + }, + "edge_ratio": 1.4790920583239038, + "edge_lengths_px": [ + 25.317977905273438, + 17.262676239013672, + 24.331050872802734, + 17.11724281311035 + ] + }, + "confidence": 0.18322050914606033 + }, + { + "observation_id": "13bf6104-d080-486e-b97c-7814c28b0cef", + "type": "aruco", + "marker_id": 80, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 254.0, + 86.0 + ], + [ + 258.0, + 111.0 + ], + [ + 241.0, + 107.0 + ], + [ + 237.0, + 84.0 + ] + ], + "center_px": [ + 247.5, + 97.0 + ], + "quality": { + "area_px": 396.0, + "perimeter_px": 83.24470520019531, + "sharpness": { + "laplacian_var": 2233.236854613893 + }, + "contrast": { + "p05": 2.0, + "p95": 165.0, + "dynamic_range": 163.0, + "mean_gray": 62.053763440860216, + "std_gray": 60.95642116738348 + }, + "geometry": { + "distance_to_center_norm": 0.6855030655860901, + "distance_to_border_px": 84.0 + }, + "edge_ratio": 1.4790920583239038, + "edge_lengths_px": [ + 25.317977905273438, + 17.464248657226562, + 23.34523582458496, + 17.11724281311035 + ] + }, + "confidence": 0.17848787606848682 + }, + { + "observation_id": "b9c9c9de-69a5-433b-8329-58bea350b386", + "type": "aruco", + "marker_id": 72, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 651.0, + 678.0 + ], + [ + 653.0, + 698.0 + ], + [ + 634.0, + 691.0 + ], + [ + 632.0, + 671.0 + ] + ], + "center_px": [ + 642.5, + 684.5 + ], + "quality": { + "area_px": 366.0, + "perimeter_px": 80.69641494750977, + "sharpness": { + "laplacian_var": 2321.7163657787314 + }, + "contrast": { + "p05": 1.0, + "p95": 149.0, + "dynamic_range": 148.0, + "mean_gray": 51.247191011235955, + "std_gray": 51.31658679340008 + }, + "geometry": { + "distance_to_center_norm": 0.2556440830230713, + "distance_to_border_px": 262.0 + }, + "edge_ratio": 1.0073984219862901, + "edge_lengths_px": [ + 20.099750518798828, + 20.248456954956055, + 20.099750518798828, + 20.248456954956055 + ] + }, + "confidence": 0.2422080426916935 + }, + { + "observation_id": "b459c2aa-ddaa-4d90-b890-a166e41b3d2b", + "type": "aruco", + "marker_id": 87, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 217.0, + 171.0 + ], + [ + 221.0, + 194.0 + ], + [ + 205.0, + 190.0 + ], + [ + 201.0, + 168.0 + ] + ], + "center_px": [ + 211.0, + 180.75 + ], + "quality": { + "area_px": 346.0, + "perimeter_px": 78.47715759277344, + "sharpness": { + "laplacian_var": 2969.3458492937057 + }, + "contrast": { + "p05": 2.0, + "p95": 161.2, + "dynamic_range": 159.2, + "mean_gray": 83.56031128404669, + "std_gray": 59.33264779248037 + }, + "geometry": { + "distance_to_center_norm": 0.6538247466087341, + "distance_to_border_px": 168.0 + }, + "edge_ratio": 1.4340864860178164, + "edge_lengths_px": [ + 23.34523582458496, + 16.492422103881836, + 22.360679626464844, + 16.278820037841797 + ] + }, + "confidence": 0.16084571531469055 + }, + { + "observation_id": "72d77872-2165-410f-beb5-6ff03a40901c", + "type": "aruco", + "marker_id": 99, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 190.0, + 92.0 + ], + [ + 195.0, + 116.0 + ], + [ + 179.0, + 113.0 + ], + [ + 176.0, + 90.0 + ] + ], + "center_px": [ + 185.0, + 102.75 + ], + "quality": { + "area_px": 342.5, + "perimeter_px": 78.13108253479004, + "sharpness": { + "laplacian_var": 3254.8603612469533 + }, + "contrast": { + "p05": 3.0, + "p95": 149.2, + "dynamic_range": 146.2, + "mean_gray": 66.14396887159533, + "std_gray": 55.053694099973946 + }, + "geometry": { + "distance_to_center_norm": 0.7388150691986084, + "distance_to_border_px": 90.0 + }, + "edge_ratio": 1.7334935408100178, + "edge_lengths_px": [ + 24.515300750732422, + 16.278820037841797, + 23.194826126098633, + 14.142135620117188 + ] + }, + "confidence": 0.1317185948247831 + }, + { + "observation_id": "639649a8-b379-4618-a640-860adbc9cf79", + "type": "aruco", + "marker_id": 56, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 602.0, + 639.0 + ], + [ + 604.0, + 659.0 + ], + [ + 586.0, + 652.0 + ], + [ + 584.0, + 633.0 + ] + ], + "center_px": [ + 594.0, + 645.75 + ], + "quality": { + "area_px": 338.0, + "perimeter_px": 77.49159622192383, + "sharpness": { + "laplacian_var": 1966.7421815777166 + }, + "contrast": { + "p05": 1.4000000000000004, + "p95": 139.0, + "dynamic_range": 137.6, + "mean_gray": 43.95582329317269, + "std_gray": 45.09706239180531 + }, + "geometry": { + "distance_to_center_norm": 0.2150183916091919, + "distance_to_border_px": 301.0 + }, + "edge_ratio": 1.0593499077421686, + "edge_lengths_px": [ + 20.099750518798828, + 19.313207626342773, + 19.10497283935547, + 18.973665237426758 + ] + }, + "confidence": 0.21270906967235645 + }, + { + "observation_id": "698dffe4-76e8-466a-9863-249badcdd60c", + "type": "aruco", + "marker_id": 68, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 543.0, + 620.0 + ], + [ + 546.0, + 639.0 + ], + [ + 528.0, + 633.0 + ], + [ + 526.0, + 614.0 + ] + ], + "center_px": [ + 535.75, + 626.5 + ], + "quality": { + "area_px": 317.5, + "perimeter_px": 75.34177780151367, + "sharpness": { + "laplacian_var": 2752.0382608695654 + }, + "contrast": { + "p05": 2.0, + "p95": 150.0, + "dynamic_range": 148.0, + "mean_gray": 55.891304347826086, + "std_gray": 52.01923902493633 + }, + "geometry": { + "distance_to_center_norm": 0.22475789487361908, + "distance_to_border_px": 321.0 + }, + "edge_ratio": 1.0669871651091398, + "edge_lengths_px": [ + 19.235383987426758, + 18.973665237426758, + 19.10497283935547, + 18.027755737304688 + ] + }, + "confidence": 0.19837789393185037 + }, + { + "observation_id": "fc94f70d-a486-46fe-b46c-46c6b337f74d", + "type": "aruco", + "marker_id": 50, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 547.0, + 654.0 + ], + [ + 549.0, + 673.0 + ], + [ + 532.0, + 666.0 + ], + [ + 530.0, + 648.0 + ] + ], + "center_px": [ + 539.5, + 660.25 + ], + "quality": { + "area_px": 301.5, + "perimeter_px": 73.62827682495117, + "sharpness": { + "laplacian_var": 2610.375395665936 + }, + "contrast": { + "p05": 2.0, + "p95": 144.95, + "dynamic_range": 142.95, + "mean_gray": 49.387387387387385, + "std_gray": 48.706451312742566 + }, + "geometry": { + "distance_to_center_norm": 0.2579677700996399, + "distance_to_border_px": 287.0 + }, + "edge_ratio": 1.0597532559098137, + "edge_lengths_px": [ + 19.10497283935547, + 18.384777069091797, + 18.11077117919922, + 18.027755737304688 + ] + }, + "confidence": 0.18966679166032716 + }, + { + "observation_id": "722b5c3e-3dff-46dd-9a79-77c3b581cd4c", + "type": "aruco", + "marker_id": 205, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 239.0, + 340.0 + ], + [ + 224.0, + 336.0 + ], + [ + 220.0, + 316.0 + ], + [ + 235.0, + 320.0 + ] + ], + "center_px": [ + 229.5, + 328.0 + ], + "quality": { + "area_px": 284.0, + "perimeter_px": 71.84050559997559, + "sharpness": { + "laplacian_var": 5381.544402565628 + }, + "contrast": { + "p05": 2.0, + "p95": 152.79999999999995, + "dynamic_range": 150.79999999999995, + "mean_gray": 64.82629107981221, + "std_gray": 55.220028208539446 + }, + "geometry": { + "distance_to_center_norm": 0.5471720695495605, + "distance_to_border_px": 220.0 + }, + "edge_ratio": 1.313826887206797, + "edge_lengths_px": [ + 15.524174690246582, + 20.39607810974121, + 15.524174690246582, + 20.39607810974121 + ] + }, + "confidence": 0.14410828030461226 + }, + { + "observation_id": "14b14ab4-4e19-429e-b4f6-9fc3f1d2a1d0", + "type": "aruco", + "marker_id": 76, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 460.0, + 588.0 + ], + [ + 463.0, + 607.0 + ], + [ + 446.0, + 601.0 + ], + [ + 444.0, + 584.0 + ] + ], + "center_px": [ + 453.25, + 595.0 + ], + "quality": { + "area_px": 284.5, + "perimeter_px": 70.87280464172363, + "sharpness": { + "laplacian_var": 3650.094284580737 + }, + "contrast": { + "p05": 2.0, + "p95": 156.7, + "dynamic_range": 154.7, + "mean_gray": 74.90338164251207, + "std_gray": 56.43935943038617 + }, + "geometry": { + "distance_to_center_norm": 0.27414801716804504, + "distance_to_border_px": 353.0 + }, + "edge_ratio": 1.1663164977386378, + "edge_lengths_px": [ + 19.235383987426758, + 18.027755737304688, + 17.11724281311035, + 16.492422103881836 + ] + }, + "confidence": 0.16262023818955654 + }, + { + "observation_id": "b9394b9d-6b0b-43ae-965b-99b45947fb58", + "type": "aruco", + "marker_id": 94, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 333.0, + 551.0 + ], + [ + 335.0, + 568.0 + ], + [ + 321.0, + 562.0 + ], + [ + 318.0, + 545.0 + ] + ], + "center_px": [ + 326.75, + 556.5 + ], + "quality": { + "area_px": 231.5, + "perimeter_px": 65.76696014404297, + "sharpness": { + "laplacian_var": 3503.9369189657123 + }, + "contrast": { + "p05": 2.0, + "p95": 150.0, + "dynamic_range": 148.0, + "mean_gray": 58.25766871165644, + "std_gray": 50.811402632774076 + }, + "geometry": { + "distance_to_center_norm": 0.4030698835849762, + "distance_to_border_px": 318.0 + }, + "edge_ratio": 1.1333502051224704, + "edge_lengths_px": [ + 17.11724281311035, + 15.231546401977539, + 17.262676239013672, + 16.155494689941406 + ] + }, + "confidence": 0.1361744433766225 + }, + { + "observation_id": "b6db8ec2-e570-46a5-ba20-9e2f07c7fe8f", + "type": "aruco", + "marker_id": 93, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 291.0, + 515.0 + ], + [ + 294.0, + 533.0 + ], + [ + 280.0, + 527.0 + ], + [ + 277.0, + 510.0 + ] + ], + "center_px": [ + 285.5, + 521.25 + ], + "quality": { + "area_px": 228.5, + "perimeter_px": 65.6085786819458, + "sharpness": { + "laplacian_var": 2949.4433984375 + }, + "contrast": { + "p05": 1.0, + "p95": 141.04999999999998, + "dynamic_range": 140.04999999999998, + "mean_gray": 52.075, + "std_gray": 47.997076733901196 + }, + "geometry": { + "distance_to_center_norm": 0.44611483812332153, + "distance_to_border_px": 277.0 + }, + "edge_ratio": 1.2275126260544593, + "edge_lengths_px": [ + 18.248287200927734, + 15.231546401977539, + 17.262676239013672, + 14.866068840026855 + ] + }, + "confidence": 0.12409919873734558 + }, + { + "observation_id": "96632a42-8e40-49b5-8fb7-8e9dbe0991f4", + "type": "aruco", + "marker_id": 207, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 255.0, + 417.0 + ], + [ + 242.0, + 414.0 + ], + [ + 238.0, + 395.0 + ], + [ + 251.0, + 398.0 + ] + ], + "center_px": [ + 246.5, + 406.0 + ], + "quality": { + "area_px": 235.0, + "perimeter_px": 65.51630592346191, + "sharpness": { + "laplacian_var": 4183.609694762401 + }, + "contrast": { + "p05": 2.0, + "p95": 162.0, + "dynamic_range": 160.0, + "mean_gray": 64.10752688172043, + "std_gray": 56.16976234069864 + }, + "geometry": { + "distance_to_center_norm": 0.500497043132782, + "distance_to_border_px": 238.0 + }, + "edge_ratio": 1.4553273257440145, + "edge_lengths_px": [ + 13.34166431427002, + 19.416488647460938, + 13.34166431427002, + 19.416488647460938 + ] + }, + "confidence": 0.10765046728341555 + } + ], + "rejected_candidates": [ + { + "image_points_px": [ + [ + 489.0, + 43.0 + ], + [ + 511.0, + 70.0 + ], + [ + 507.0, + 97.0 + ], + [ + 485.0, + 75.0 + ] + ], + "center_px": [ + 498.0, + 71.25 + ], + "area_px": 747.0 + }, + { + "image_points_px": [ + [ + 639.0, + 418.0 + ], + [ + 663.0, + 417.0 + ], + [ + 672.0, + 445.0 + ], + [ + 645.0, + 448.0 + ] + ], + "center_px": [ + 654.75, + 432.0 + ], + "area_px": 754.5 + }, + { + "image_points_px": [ + [ + 666.0, + 528.0 + ], + [ + 676.0, + 548.0 + ], + [ + 661.0, + 574.0 + ], + [ + 650.0, + 552.0 + ] + ], + "center_px": [ + 663.25, + 550.5 + ], + "area_px": 588.0 + }, + { + "image_points_px": [ + [ + 963.0, + 708.0 + ], + [ + 981.0, + 707.0 + ], + [ + 1006.0, + 715.0 + ], + [ + 1011.0, + 722.0 + ] + ], + "center_px": [ + 990.25, + 713.0 + ], + "area_px": 217.5 + }, + { + "image_points_px": [ + [ + 568.0, + 562.0 + ], + [ + 595.0, + 569.0 + ], + [ + 607.0, + 587.0 + ], + [ + 581.0, + 578.0 + ] + ], + "center_px": [ + 587.75, + 574.0 + ], + "area_px": 350.5 + }, + { + "image_points_px": [ + [ + 546.0, + 251.0 + ], + [ + 549.0, + 287.0 + ], + [ + 543.0, + 298.0 + ], + [ + 540.0, + 264.0 + ] + ], + "center_px": [ + 544.5, + 275.0 + ], + "area_px": 246.0 + }, + { + "image_points_px": [ + [ + 414.0, + 438.0 + ], + [ + 434.0, + 443.0 + ], + [ + 437.0, + 469.0 + ], + [ + 417.0, + 462.0 + ] + ], + "center_px": [ + 425.5, + 453.0 + ], + "area_px": 482.0 + }, + { + "image_points_px": [ + [ + 664.0, + 735.0 + ], + [ + 683.0, + 742.0 + ], + [ + 685.0, + 761.0 + ], + [ + 666.0, + 754.0 + ] + ], + "center_px": [ + 674.5, + 748.0 + ], + "area_px": 347.0 + }, + { + "image_points_px": [ + [ + 644.0, + 747.0 + ], + [ + 662.0, + 754.0 + ], + [ + 664.0, + 773.0 + ], + [ + 644.0, + 765.0 + ] + ], + "center_px": [ + 653.5, + 759.75 + ], + "area_px": 344.0 + }, + { + "image_points_px": [ + [ + 597.0, + 673.0 + ], + [ + 616.0, + 680.0 + ], + [ + 617.0, + 699.0 + ], + [ + 598.0, + 691.0 + ] + ], + "center_px": [ + 607.0, + 685.75 + ], + "area_px": 344.0 + }, + { + "image_points_px": [ + [ + 147.0, + 40.0 + ], + [ + 162.0, + 42.0 + ], + [ + 166.0, + 65.0 + ], + [ + 150.0, + 63.0 + ] + ], + "center_px": [ + 156.25, + 52.5 + ], + "area_px": 349.5 + }, + { + "image_points_px": [ + [ + 556.0, + 637.0 + ], + [ + 574.0, + 644.0 + ], + [ + 575.0, + 662.0 + ], + [ + 557.0, + 655.0 + ] + ], + "center_px": [ + 565.5, + 649.5 + ], + "area_px": 317.0 + }, + { + "image_points_px": [ + [ + 573.0, + 707.0 + ], + [ + 590.0, + 713.0 + ], + [ + 592.0, + 732.0 + ], + [ + 574.0, + 724.0 + ] + ], + "center_px": [ + 582.25, + 719.0 + ], + "area_px": 304.5 + }, + { + "image_points_px": [ + [ + 373.0, + 432.0 + ], + [ + 389.0, + 438.0 + ], + [ + 391.0, + 457.0 + ], + [ + 375.0, + 451.0 + ] + ], + "center_px": [ + 382.0, + 444.5 + ], + "area_px": 292.0 + }, + { + "image_points_px": [ + [ + 538.0, + 729.0 + ], + [ + 555.0, + 736.0 + ], + [ + 557.0, + 753.0 + ], + [ + 539.0, + 746.0 + ] + ], + "center_px": [ + 547.25, + 741.0 + ], + "area_px": 287.0 + }, + { + "image_points_px": [ + [ + 516.0, + 711.0 + ], + [ + 534.0, + 717.0 + ], + [ + 535.0, + 734.0 + ], + [ + 519.0, + 727.0 + ] + ], + "center_px": [ + 526.0, + 722.25 + ], + "area_px": 267.5 + }, + { + "image_points_px": [ + [ + 490.0, + 711.0 + ], + [ + 506.0, + 717.0 + ], + [ + 507.0, + 735.0 + ], + [ + 491.0, + 727.0 + ] + ], + "center_px": [ + 498.5, + 722.5 + ], + "area_px": 265.0 + }, + { + "image_points_px": [ + [ + 547.0, + 304.0 + ], + [ + 551.0, + 307.0 + ], + [ + 551.0, + 337.0 + ], + [ + 546.0, + 322.0 + ] + ], + "center_px": [ + 548.75, + 317.5 + ], + "area_px": 112.5 + }, + { + "image_points_px": [ + [ + 364.0, + 560.0 + ], + [ + 379.0, + 566.0 + ], + [ + 383.0, + 583.0 + ], + [ + 367.0, + 577.0 + ] + ], + "center_px": [ + 373.25, + 571.5 + ], + "area_px": 242.5 + }, + { + "image_points_px": [ + [ + 407.0, + 677.0 + ], + [ + 420.0, + 683.0 + ], + [ + 424.0, + 702.0 + ], + [ + 410.0, + 695.0 + ] + ], + "center_px": [ + 415.25, + 689.25 + ], + "area_px": 227.0 + }, + { + "image_points_px": [ + [ + 358.0, + 606.0 + ], + [ + 373.0, + 612.0 + ], + [ + 376.0, + 629.0 + ], + [ + 361.0, + 623.0 + ] + ], + "center_px": [ + 367.0, + 617.5 + ], + "area_px": 237.0 + }, + { + "image_points_px": [ + [ + 485.0, + 426.0 + ], + [ + 491.0, + 430.0 + ], + [ + 493.0, + 456.0 + ], + [ + 488.0, + 454.0 + ] + ], + "center_px": [ + 489.25, + 441.5 + ], + "area_px": 141.0 + }, + { + "image_points_px": [ + [ + 460.0, + 312.0 + ], + [ + 456.0, + 343.0 + ], + [ + 454.0, + 325.0 + ], + [ + 456.0, + 312.0 + ] + ], + "center_px": [ + 456.5, + 323.0 + ], + "area_px": 93.0 + }, + { + "image_points_px": [ + [ + 436.0, + 698.0 + ], + [ + 451.0, + 704.0 + ], + [ + 453.0, + 721.0 + ], + [ + 438.0, + 714.0 + ] + ], + "center_px": [ + 444.5, + 709.25 + ], + "area_px": 234.5 + }, + { + "image_points_px": [ + [ + 471.0, + 424.0 + ], + [ + 476.0, + 427.0 + ], + [ + 478.0, + 454.0 + ], + [ + 474.0, + 450.0 + ] + ], + "center_px": [ + 474.75, + 438.75 + ], + "area_px": 110.5 + }, + { + "image_points_px": [ + [ + 237.0, + 507.0 + ], + [ + 249.0, + 512.0 + ], + [ + 253.0, + 529.0 + ], + [ + 239.0, + 523.0 + ] + ], + "center_px": [ + 244.5, + 517.75 + ], + "area_px": 198.0 + }, + { + "image_points_px": [ + [ + 920.0, + 546.0 + ], + [ + 941.0, + 551.0 + ], + [ + 934.0, + 552.0 + ], + [ + 921.0, + 549.0 + ] + ], + "center_px": [ + 929.0, + 549.5 + ], + "area_px": 46.0 + }, + { + "image_points_px": [ + [ + 537.0, + 291.0 + ], + [ + 537.0, + 307.0 + ], + [ + 535.0, + 311.0 + ], + [ + 533.0, + 293.0 + ] + ], + "center_px": [ + 535.5, + 300.5 + ], + "area_px": 54.0 + }, + { + "image_points_px": [ + [ + 79.0, + 152.0 + ], + [ + 83.0, + 160.0 + ], + [ + 84.0, + 171.0 + ], + [ + 80.0, + 162.0 + ] + ], + "center_px": [ + 81.5, + 161.25 + ], + "area_px": 33.5 + }, + { + "image_points_px": [ + [ + 469.0, + 462.0 + ], + [ + 472.0, + 469.0 + ], + [ + 473.0, + 481.0 + ], + [ + 470.0, + 476.0 + ] + ], + "center_px": [ + 471.0, + 472.0 + ], + "area_px": 33.0 + } + ] +} \ No newline at end of file diff --git a/test/homing/20260616_133151/cam1_camera_pose.json b/test/homing/20260616_133151/cam1_camera_pose.json new file mode 100644 index 0000000..2dfe03d --- /dev/null +++ b/test/homing/20260616_133151/cam1_camera_pose.json @@ -0,0 +1,621 @@ +{ + "schema_version": "1.0", + "created_utc": "2026-06-16T13:32:00Z", + "source": { + "detection_json": "/app/data/homing/20260616_133151/cam1_aruco_detection.json", + "robot_json": "/app/scripts/robot_1781069752019.json" + }, + "camera": { + "camera_id": "cam1", + "camera_matrix": [ + [ + 1367.5723876953125, + 0.0, + 672.1165771484375 + ], + [ + 0.0, + 1372.3011474609375, + 445.8396911621094 + ], + [ + 0.0, + 0.0, + 1.0 + ] + ], + "distortion_coefficients": [ + 0.01016925647854805, + 0.7656787633895874, + -0.0031530377455055714, + -0.00288817984983325, + -2.490830183029175 + ] + }, + "estimation": { + "method": "single_camera_marker_center_lm", + "description": "Rigid init from per-marker pose estimates, followed by LM on normalized marker-center reprojection residuals.", + "marker_size_m": 0.025, + "num_used_markers": 30, + "used_marker_ids": [ + 69, + 64, + 95, + 97, + 51, + 54, + 55, + 75, + 47, + 77, + 79, + 81, + 52, + 96, + 62, + 101, + 48, + 71, + 78, + 65, + 80, + 72, + 87, + 99, + 56, + 68, + 50, + 76, + 94, + 93 + ], + "history": { + "iters": [ + 0, + 1, + 2, + 3 + ], + "rms": [ + 0.017059307652513785, + 0.0016226982371037653, + 0.0008091568769327483, + 0.0008091084072623325 + ], + "lambda": [ + 0.001, + 0.0005, + 0.00025, + 0.000125 + ] + }, + "residual_rms_px": 1.591651220099626, + "residual_median_px": 1.1314608533912125, + "residual_max_px": 3.508082949831542, + "sigma2_normalized": 7.273960149412246e-07 + }, + "camera_pose": { + "world_to_camera": { + "rotation_matrix": [ + [ + -0.8300905227661133, + 0.048112522810697556, + -0.555549144744873 + ], + [ + -0.20714415609836578, + 0.8983761668205261, + 0.38731324672698975 + ], + [ + 0.5177267789840698, + 0.43658381700515747, + -0.7357673048973083 + ] + ], + "translation_m": [ + 0.3114655017852783, + 0.15968520939350128, + 1.0113532543182373 + ], + "rvec_rad": [ + 0.11406865614087526, + -2.484791884456743, + -0.59095682803472 + ] + }, + "camera_in_world": { + "position_m": [ + -0.2319822609424591, + -0.5999832153320312, + 0.85530686378479 + ], + "position_mm": [ + -231.9822540283203, + -599.9832153320312, + 855.306884765625 + ], + "orientation_deg": { + "roll": 149.3162841796875, + "pitch": -31.179889678955078, + "yaw": -165.98834228515625 + } + }, + "uncertainty": { + "pose_covariance_6x6": [ + [ + 5.477901672381574e-07, + -3.0328172246138234e-07, + 2.5074702293716926e-07, + 1.1635888932922758e-08, + 9.844840844154894e-08, + 2.3043095712615458e-07 + ], + [ + -3.0328172246138065e-07, + 1.631287253876377e-06, + -8.315096854684708e-07, + -3.1882543010501927e-07, + 1.103498744923981e-07, + -9.284867444682885e-07 + ], + [ + 2.507470229371721e-07, + -8.3150968546848e-07, + 2.964857640789444e-06, + -8.919540977376378e-08, + -2.1352811236764262e-07, + 4.725702525972594e-08 + ], + [ + 1.1635888932921985e-08, + -3.18825430105018e-07, + -8.919540977376616e-08, + 1.2501721885555406e-07, + -1.613172618557695e-08, + 2.3201998198006283e-07 + ], + [ + 9.844840844154898e-08, + 1.1034987449239781e-07, + -2.1352811236764254e-07, + -1.6131726185576905e-08, + 8.383963230163757e-08, + -2.923782662666793e-08 + ], + [ + 2.304309571261534e-07, + -9.284867444682864e-07, + 4.725702525972108e-08, + 2.3201998198006299e-07, + -2.9237826626668076e-08, + 1.0432485061837312e-06 + ] + ], + "parameter_std": { + "rvec_std_deg": [ + 0.04240623821424648, + 0.0731792330905332, + 0.09865623898195403 + ], + "tvec_std_m": [ + 0.0003535777408937871, + 0.0002895507421880275, + 0.0010213953721178353 + ] + }, + "camera_center_std_m": [ + 0.0010713908530960352, + 0.0012849722563859016, + 0.0015667620668070794 + ], + "camera_center_std_mm": [ + 1.0713908530960352, + 1.2849722563859016, + 1.5667620668070794 + ], + "orientation_std_deg": { + "roll": 0.09772437240661272, + "pitch": 0.06095886695509779, + "yaw": 0.049296243086430984 + } + } + }, + "observations": { + "markers": [ + { + "marker_id": 69, + "observed_center_px": [ + 1132.0, + 285.75 + ], + "projected_center_px": [ + 1134.6839599609375, + 286.1096496582031 + ], + "reprojection_error_px": 2.707949214546176, + "confidence": 0.7904374687348378 + }, + { + "marker_id": 64, + "observed_center_px": [ + 1160.0, + 422.0 + ], + "projected_center_px": [ + 1163.491455078125, + 422.3411560058594 + ], + "reprojection_error_px": 3.508082949831542, + "confidence": 0.6500113404865634 + }, + { + "marker_id": 95, + "observed_center_px": [ + 887.75, + 261.0 + ], + "projected_center_px": [ + 888.0076904296875, + 260.7122802734375 + ], + "reprojection_error_px": 0.3862473282829645, + "confidence": 0.5416630076500674 + }, + { + "marker_id": 97, + "observed_center_px": [ + 747.75, + 130.0 + ], + "projected_center_px": [ + 747.2943115234375, + 129.22381591796875 + ], + "reprojection_error_px": 0.9000631738220081, + "confidence": 0.46560622960207215 + }, + { + "marker_id": 51, + "observed_center_px": [ + 906.25, + 392.75 + ], + "projected_center_px": [ + 906.7919311523438, + 392.7587585449219 + ], + "reprojection_error_px": 0.5420019243413932, + "confidence": 0.5169701203055806 + }, + { + "marker_id": 54, + "observed_center_px": [ + 707.0, + 163.0 + ], + "projected_center_px": [ + 706.23681640625, + 162.77174377441406 + ], + "reprojection_error_px": 0.7965865315757626, + "confidence": 0.41781415708291797 + }, + { + "marker_id": 55, + "observed_center_px": [ + 773.25, + 258.25 + ], + "projected_center_px": [ + 773.0390014648438, + 257.7444763183594 + ], + "reprojection_error_px": 0.5477906302024298, + "confidence": 0.46078075075842734 + }, + { + "marker_id": 75, + "observed_center_px": [ + 1117.5, + 857.75 + ], + "projected_center_px": [ + 1118.2747802734375, + 858.220458984375 + ], + "reprojection_error_px": 0.906430432017286, + "confidence": 0.34860300393492594 + }, + { + "marker_id": 47, + "observed_center_px": [ + 707.25, + 218.5 + ], + "projected_center_px": [ + 706.2413940429688, + 218.0567626953125 + ], + "reprojection_error_px": 1.1017010868768187, + "confidence": 0.393117382864099 + }, + { + "marker_id": 77, + "observed_center_px": [ + 1063.75, + 835.25 + ], + "projected_center_px": [ + 1064.5556640625, + 835.51416015625 + ], + "reprojection_error_px": 0.8478650657705082, + "confidence": 0.3053994756620321 + }, + { + "marker_id": 79, + "observed_center_px": [ + 745.5, + 374.75 + ], + "projected_center_px": [ + 744.8091430664062, + 374.33917236328125 + ], + "reprojection_error_px": 0.8037802248043132, + "confidence": 0.4170494444576311 + }, + { + "marker_id": 81, + "observed_center_px": [ + 935.5, + 766.25 + ], + "projected_center_px": [ + 934.7628173828125, + 766.2487182617188 + ], + "reprojection_error_px": 0.7371837314648457, + "confidence": 0.2860351956805948 + }, + { + "marker_id": 52, + "observed_center_px": [ + 974.75, + 818.25 + ], + "projected_center_px": [ + 974.4337158203125, + 818.4750366210938 + ], + "reprojection_error_px": 0.38817156407172176, + "confidence": 0.2796614731725484 + }, + { + "marker_id": 96, + "observed_center_px": [ + 685.75, + 331.75 + ], + "projected_center_px": [ + 684.9360961914062, + 331.5043029785156 + ], + "reprojection_error_px": 0.8501802373671744, + "confidence": 0.35732025726956446 + }, + { + "marker_id": 62, + "observed_center_px": [ + 652.25, + 337.25 + ], + "projected_center_px": [ + 651.2550048828125, + 337.2922058105469 + ], + "reprojection_error_px": 0.9958898602108998, + "confidence": 0.3300725298396194 + }, + { + "marker_id": 101, + "observed_center_px": [ + 946.25, + 889.25 + ], + "projected_center_px": [ + 945.4725952148438, + 889.2578125 + ], + "reprojection_error_px": 0.7774440398768809, + "confidence": 0.24325060224251535 + }, + { + "marker_id": 48, + "observed_center_px": [ + 384.25, + 132.0 + ], + "projected_center_px": [ + 383.9302062988281, + 133.11631774902344 + ], + "reprojection_error_px": 1.1612206199056063, + "confidence": 0.21290195673550963 + }, + { + "marker_id": 71, + "observed_center_px": [ + 342.5, + 165.25 + ], + "projected_center_px": [ + 342.3343505859375, + 166.21542358398438 + ], + "reprojection_error_px": 0.9795317375626402, + "confidence": 0.20847213489647592 + }, + { + "marker_id": 78, + "observed_center_px": [ + 275.75, + 91.5 + ], + "projected_center_px": [ + 275.9453125, + 93.36688995361328 + ], + "reprojection_error_px": 1.8770788666325262, + "confidence": 0.19179473932902583 + }, + { + "marker_id": 65, + "observed_center_px": [ + 299.5, + 144.25 + ], + "projected_center_px": [ + 299.65802001953125, + 145.85562133789062 + ], + "reprojection_error_px": 1.6133785071279267, + "confidence": 0.18322050914606033 + }, + { + "marker_id": 80, + "observed_center_px": [ + 247.5, + 97.0 + ], + "projected_center_px": [ + 248.37171936035156, + 98.75518035888672 + ], + "reprojection_error_px": 1.9597328224616355, + "confidence": 0.17848787606848682 + }, + { + "marker_id": 72, + "observed_center_px": [ + 642.5, + 684.5 + ], + "projected_center_px": [ + 641.4025268554688, + 682.82861328125 + ], + "reprojection_error_px": 1.9994951529276588, + "confidence": 0.2422080426916935 + }, + { + "marker_id": 87, + "observed_center_px": [ + 211.0, + 180.75 + ], + "projected_center_px": [ + 212.05128479003906, + 182.29476928710938 + ], + "reprojection_error_px": 1.8685587655099003, + "confidence": 0.16084571531469055 + }, + { + "marker_id": 99, + "observed_center_px": [ + 185.0, + 102.75 + ], + "projected_center_px": [ + 185.86073303222656, + 105.08058166503906 + ], + "reprojection_error_px": 2.4844460650580005, + "confidence": 0.1317185948247831 + }, + { + "marker_id": 56, + "observed_center_px": [ + 594.0, + 645.75 + ], + "projected_center_px": [ + 592.5604248046875, + 644.4028930664062 + ], + "reprojection_error_px": 1.971566340120306, + "confidence": 0.21270906967235645 + }, + { + "marker_id": 68, + "observed_center_px": [ + 535.75, + 626.5 + ], + "projected_center_px": [ + 534.0946655273438, + 625.37353515625 + ], + "reprojection_error_px": 2.0022625353756327, + "confidence": 0.19837789393185037 + }, + { + "marker_id": 50, + "observed_center_px": [ + 539.5, + 660.25 + ], + "projected_center_px": [ + 537.9456176757812, + 658.9739990234375 + ], + "reprojection_error_px": 2.0110402537075522, + "confidence": 0.18966679166032716 + }, + { + "marker_id": 76, + "observed_center_px": [ + 453.25, + 595.0 + ], + "projected_center_px": [ + 452.169921875, + 593.6005859375 + ], + "reprojection_error_px": 1.7677467223633225, + "confidence": 0.16262023818955654 + }, + { + "marker_id": 94, + "observed_center_px": [ + 326.75, + 556.5 + ], + "projected_center_px": [ + 326.852783203125, + 554.8190307617188 + ], + "reprojection_error_px": 1.6841086564982917, + "confidence": 0.1361744433766225 + }, + { + "marker_id": 93, + "observed_center_px": [ + 285.5, + 521.25 + ], + "projected_center_px": [ + 286.1008605957031, + 519.3630981445312 + ], + "reprojection_error_px": 1.9802606059910715, + "confidence": 0.12409919873734558 + } + ] + }, + "qa": { + "sanity_notes": [] + } +} \ No newline at end of file diff --git a/test/homing/20260616_133151/cam1_debug.jpg b/test/homing/20260616_133151/cam1_debug.jpg new file mode 100644 index 0000000..2dde016 Binary files /dev/null and b/test/homing/20260616_133151/cam1_debug.jpg differ diff --git a/test/homing/20260616_133151/cam2.jpg b/test/homing/20260616_133151/cam2.jpg new file mode 100644 index 0000000..5093387 Binary files /dev/null and b/test/homing/20260616_133151/cam2.jpg differ diff --git a/test/homing/20260616_133151/cam2_aruco_detection.json b/test/homing/20260616_133151/cam2_aruco_detection.json new file mode 100644 index 0000000..cf4e612 --- /dev/null +++ b/test/homing/20260616_133151/cam2_aruco_detection.json @@ -0,0 +1,3356 @@ +{ + "schema_version": "1.0", + "created_utc": "2026-06-16T13:32:03Z", + "vision_config": { + "MarkerType": "DICT_4X4_250", + "MarkerSize": 0.025 + }, + "camera": { + "camera_id": "cam2", + "intrinsics_file": "/app/data/calibration/20260610_092149/cam2_calibration.npz", + "camera_matrix": [ + [ + 1388.99072265625, + 0.0, + 933.082763671875 + ], + [ + 0.0, + 1394.8729248046875, + 562.4996948242188 + ], + [ + 0.0, + 0.0, + 1.0 + ] + ], + "distortion_coefficients": [ + 0.019531700760126114, + -0.11213663965463638, + 0.0026758278254419565, + 0.0007694826927036047, + 0.05339815095067024 + ] + }, + "image": { + "image_file": "/app/data/homing/20260616_133151/cam2.jpg", + "image_sha256": "4114dddd92427f63254df5cb1f27257d69e2362afaa6fb553cdbd2099596fd48", + "width_px": 1920, + "height_px": 1080 + }, + "aruco": { + "dictionary": "DICT_4X4_250", + "num_detected_markers": 45, + "num_rejected_candidates": 35 + }, + "detections": [ + { + "observation_id": "232d9c0d-57ac-42f8-99c5-c3ce9f75a3b6", + "type": "aruco", + "marker_id": 229, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1081.0, + 948.0 + ], + [ + 1057.0, + 911.0 + ], + [ + 1094.0, + 882.0 + ], + [ + 1119.0, + 920.0 + ] + ], + "center_px": [ + 1087.75, + 915.25 + ], + "quality": { + "area_px": 2104.5, + "perimeter_px": 183.8007469177246, + "sharpness": { + "laplacian_var": 408.6670280612245 + }, + "contrast": { + "p05": 10.950000000000003, + "p95": 102.0, + "dynamic_range": 91.05, + "mean_gray": 36.94285714285714, + "std_gray": 35.20182045385304 + }, + "geometry": { + "distance_to_center_norm": 0.35988765954971313, + "distance_to_border_px": 132.0 + }, + "edge_ratio": 1.0702809374355329, + "edge_lengths_px": [ + 44.10215377807617, + 47.01063537597656, + 45.486263275146484, + 47.20169448852539 + ] + }, + "confidence": 0.9343341220260066 + }, + { + "observation_id": "6402a63b-7996-4ee6-ae9b-fa0164f8a7e3", + "type": "aruco", + "marker_id": 198, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 946.0, + 1061.0 + ], + [ + 925.0, + 1021.0 + ], + [ + 960.0, + 992.0 + ], + [ + 983.0, + 1032.0 + ] + ], + "center_px": [ + 953.5, + 1026.5 + ], + "quality": { + "area_px": 2078.0, + "perimeter_px": 183.7824249267578, + "sharpness": { + "laplacian_var": 757.8078816590606 + }, + "contrast": { + "p05": 6.0, + "p95": 107.0, + "dynamic_range": 101.0, + "mean_gray": 43.037947997189036, + "std_gray": 40.94361299888882 + }, + "geometry": { + "distance_to_center_norm": 0.44172847270965576, + "distance_to_border_px": 19.0 + }, + "edge_ratio": 1.0405779215252362, + "edge_lengths_px": [ + 45.17742919921875, + 45.45327377319336, + 46.14108657836914, + 47.01063537597656 + ] + }, + "confidence": 0.365181686195121 + }, + { + "observation_id": "364c1849-ac1f-4d51-a55b-99cdcb3b3d84", + "type": "aruco", + "marker_id": 132, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1056.0, + 846.0 + ], + [ + 1035.0, + 812.0 + ], + [ + 1073.0, + 797.0 + ], + [ + 1096.0, + 831.0 + ] + ], + "center_px": [ + 1065.0, + 821.5 + ], + "quality": { + "area_px": 1656.0, + "perimeter_px": 164.58465194702148, + "sharpness": { + "laplacian_var": 2072.831221580928 + }, + "contrast": { + "p05": 18.0, + "p95": 176.39999999999986, + "dynamic_range": 158.39999999999986, + "mean_gray": 66.19152691968226, + "std_gray": 61.945221356843206 + }, + "geometry": { + "distance_to_center_norm": 0.2727714478969574, + "distance_to_border_px": 234.0 + }, + "edge_ratio": 1.0690031667847946, + "edge_lengths_px": [ + 39.96248245239258, + 40.853397369384766, + 41.04875183105469, + 42.72002029418945 + ] + }, + "confidence": 0.9354509238804848 + }, + { + "observation_id": "eb39d7ec-eeb6-48a0-be29-3d3ef95b8000", + "type": "aruco", + "marker_id": 146, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1208.0, + 769.0 + ], + [ + 1194.0, + 729.0 + ], + [ + 1228.0, + 714.0 + ], + [ + 1243.0, + 752.0 + ] + ], + "center_px": [ + 1218.25, + 741.0 + ], + "quality": { + "area_px": 1577.5, + "perimeter_px": 159.3045997619629, + "sharpness": { + "laplacian_var": 2043.3614911158004 + }, + "contrast": { + "p05": 14.0, + "p95": 167.0, + "dynamic_range": 153.0, + "mean_gray": 67.40805123513266, + "std_gray": 59.93062479894164 + }, + "geometry": { + "distance_to_center_norm": 0.297109454870224, + "distance_to_border_px": 311.0 + }, + "edge_ratio": 1.1403977418829994, + "edge_lengths_px": [ + 42.379241943359375, + 37.161808013916016, + 40.853397369384766, + 38.910152435302734 + ] + }, + "confidence": 0.8768870397347703 + }, + { + "observation_id": "e79d4862-c5ba-4fb4-93d6-0503a0173683", + "type": "aruco", + "marker_id": 129, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1022.0, + 795.0 + ], + [ + 1002.0, + 764.0 + ], + [ + 1040.0, + 749.0 + ], + [ + 1060.0, + 781.0 + ] + ], + "center_px": [ + 1031.0, + 772.25 + ], + "quality": { + "area_px": 1487.0, + "perimeter_px": 155.97797012329102, + "sharpness": { + "laplacian_var": 2642.9692589087194 + }, + "contrast": { + "p05": 12.0, + "p95": 175.0, + "dynamic_range": 163.0, + "mean_gray": 76.18604651162791, + "std_gray": 66.15318931437056 + }, + "geometry": { + "distance_to_center_norm": 0.22049060463905334, + "distance_to_border_px": 285.0 + }, + "edge_ratio": 1.107386174280554, + "edge_lengths_px": [ + 36.8917350769043, + 40.853397369384766, + 37.735923767089844, + 40.49691390991211 + ] + }, + "confidence": 0.8952011108296364 + }, + { + "observation_id": "91e7800f-9cbe-4f4f-b18b-60df9ad9d74b", + "type": "aruco", + "marker_id": 143, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1305.0, + 725.0 + ], + [ + 1292.0, + 686.0 + ], + [ + 1325.0, + 673.0 + ], + [ + 1338.0, + 711.0 + ] + ], + "center_px": [ + 1315.0, + 698.75 + ], + "quality": { + "area_px": 1446.0, + "perimeter_px": 152.58697128295898, + "sharpness": { + "laplacian_var": 2060.7329730160113 + }, + "contrast": { + "p05": 17.0, + "p95": 171.0, + "dynamic_range": 154.0, + "mean_gray": 79.1136131013306, + "std_gray": 61.83035850868024 + }, + "geometry": { + "distance_to_center_norm": 0.35305944085121155, + "distance_to_border_px": 355.0 + }, + "edge_ratio": 1.159052231812662, + "edge_lengths_px": [ + 41.1096076965332, + 35.46829605102539, + 40.16217041015625, + 35.84689712524414 + ] + }, + "confidence": 0.8317140276692997 + }, + { + "observation_id": "55088881-4e0a-4c6c-8f27-1e5ba2d1af2b", + "type": "aruco", + "marker_id": 66, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1519.0, + 1058.0 + ], + [ + 1491.0, + 1074.0 + ], + [ + 1465.0, + 1043.0 + ], + [ + 1495.0, + 1027.0 + ] + ], + "center_px": [ + 1492.5, + 1050.5 + ], + "quality": { + "area_px": 1299.0, + "perimeter_px": 145.91347885131836, + "sharpness": { + "laplacian_var": 2180.2889721238307 + }, + "contrast": { + "p05": 32.0, + "p95": 179.8499999999999, + "dynamic_range": 147.8499999999999, + "mean_gray": 75.5158371040724, + "std_gray": 56.03462062387996 + }, + "geometry": { + "distance_to_center_norm": 0.6697298884391785, + "distance_to_border_px": 6.0 + }, + "edge_ratio": 1.2546069324299227, + "edge_lengths_px": [ + 32.24903106689453, + 40.45985794067383, + 34.0, + 39.20458984375 + ] + }, + "confidence": 0.08283072356273988 + }, + { + "observation_id": "462e4151-3a77-4f3b-a9e0-0fc9e0d8ba03", + "type": "aruco", + "marker_id": 56, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 591.0, + 1034.0 + ], + [ + 555.0, + 1050.0 + ], + [ + 546.0, + 1019.0 + ], + [ + 581.0, + 1003.0 + ] + ], + "center_px": [ + 568.25, + 1026.5 + ], + "quality": { + "area_px": 1252.5, + "perimeter_px": 142.73221588134766, + "sharpness": { + "laplacian_var": 1617.5236290616429 + }, + "contrast": { + "p05": 7.0, + "p95": 143.8499999999999, + "dynamic_range": 136.8499999999999, + "mean_gray": 42.21180555555556, + "std_gray": 48.66155604329545 + }, + "geometry": { + "distance_to_center_norm": 0.5670870542526245, + "distance_to_border_px": 30.0 + }, + "edge_ratio": 1.2204275222863585, + "edge_lengths_px": [ + 39.39543151855469, + 32.280025482177734, + 38.4837646484375, + 32.572994232177734 + ] + }, + "confidence": 0.4105118828043329 + }, + { + "observation_id": "08689e40-5cb5-4219-8a38-017ad718af29", + "type": "aruco", + "marker_id": 98, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 344.0, + 1031.0 + ], + [ + 306.0, + 1046.0 + ], + [ + 300.0, + 1016.0 + ], + [ + 337.0, + 1001.0 + ] + ], + "center_px": [ + 321.75, + 1023.5 + ], + "quality": { + "area_px": 1222.5, + "perimeter_px": 142.17828750610352, + "sharpness": { + "laplacian_var": 1891.1573594674555 + }, + "contrast": { + "p05": 10.0, + "p95": 150.0, + "dynamic_range": 140.0, + "mean_gray": 64.0673076923077, + "std_gray": 56.34724746247711 + }, + "geometry": { + "distance_to_center_norm": 0.726956844329834, + "distance_to_border_px": 34.0 + }, + "edge_ratio": 1.335335104557769, + "edge_lengths_px": [ + 40.853397369384766, + 30.5941162109375, + 39.924930572509766, + 30.805843353271484 + ] + }, + "confidence": 0.4150269083081866 + }, + { + "observation_id": "f2e30d5f-6e14-4c73-8ba1-fc0a056e0a84", + "type": "aruco", + "marker_id": 55, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1324.0, + 1029.0 + ], + [ + 1294.0, + 1044.0 + ], + [ + 1273.0, + 1013.0 + ], + [ + 1302.0, + 998.0 + ] + ], + "center_px": [ + 1298.25, + 1021.0 + ], + "quality": { + "area_px": 1237.0, + "perimeter_px": 141.64712142944336, + "sharpness": { + "laplacian_var": 2275.2355626688686 + }, + "contrast": { + "p05": 23.0, + "p95": 178.0, + "dynamic_range": 155.0, + "mean_gray": 85.4768133174792, + "std_gray": 61.807993490212866 + }, + "geometry": { + "distance_to_center_norm": 0.5338632464408875, + "distance_to_border_px": 36.0 + }, + "edge_ratio": 1.1642744036011123, + "edge_lengths_px": [ + 33.541019439697266, + 37.44329071044922, + 32.649654388427734, + 38.01315689086914 + ] + }, + "confidence": 0.5099828684402014 + }, + { + "observation_id": "0b9b2af9-ebd2-42eb-9a0d-a5e0fb1cb157", + "type": "aruco", + "marker_id": 70, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 359.0, + 988.0 + ], + [ + 322.0, + 1003.0 + ], + [ + 316.0, + 974.0 + ], + [ + 352.0, + 959.0 + ] + ], + "center_px": [ + 337.25, + 981.0 + ], + "quality": { + "area_px": 1156.0, + "perimeter_px": 138.37198448181152, + "sharpness": { + "laplacian_var": 1911.9291650230114 + }, + "contrast": { + "p05": 10.0, + "p95": 150.0, + "dynamic_range": 140.0, + "mean_gray": 69.38333333333334, + "std_gray": 57.431434965724314 + }, + "geometry": { + "distance_to_center_norm": 0.6927980184555054, + "distance_to_border_px": 77.0 + }, + "edge_ratio": 1.3481691332457661, + "edge_lengths_px": [ + 39.924930572509766, + 29.614185333251953, + 39.0, + 29.832868576049805 + ] + }, + "confidence": 0.5716394535834378 + }, + { + "observation_id": "225e0c62-11a6-4430-82ce-e10fb3c4c53f", + "type": "aruco", + "marker_id": 46, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 550.0, + 997.0 + ], + [ + 515.0, + 1012.0 + ], + [ + 506.0, + 983.0 + ], + [ + 541.0, + 968.0 + ] + ], + "center_px": [ + 528.0, + 990.0 + ], + "quality": { + "area_px": 1150.0, + "perimeter_px": 136.88663482666016, + "sharpness": { + "laplacian_var": 2324.857291255753 + }, + "contrast": { + "p05": 6.0, + "p95": 151.0, + "dynamic_range": 145.0, + "mean_gray": 74.99102564102564, + "std_gray": 59.45535857305567 + }, + "geometry": { + "distance_to_center_norm": 0.5663407444953918, + "distance_to_border_px": 68.0 + }, + "edge_ratio": 1.2540606560995615, + "edge_lengths_px": [ + 38.07886505126953, + 30.364452362060547, + 38.07886505126953, + 30.364452362060547 + ] + }, + "confidence": 0.6113473562364914 + }, + { + "observation_id": "7dfdb7c1-796a-48ca-b746-3ee4e8d13e7c", + "type": "aruco", + "marker_id": 50, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 498.0, + 969.0 + ], + [ + 463.0, + 984.0 + ], + [ + 455.0, + 955.0 + ], + [ + 489.0, + 940.0 + ] + ], + "center_px": [ + 476.25, + 962.0 + ], + "quality": { + "area_px": 1128.0, + "perimeter_px": 135.6883430480957, + "sharpness": { + "laplacian_var": 1858.628400534579 + }, + "contrast": { + "p05": 9.0, + "p95": 150.0, + "dynamic_range": 141.0, + "mean_gray": 50.811023622047244, + "std_gray": 53.13960205253027 + }, + "geometry": { + "distance_to_center_norm": 0.5828195214271545, + "distance_to_border_px": 96.0 + }, + "edge_ratio": 1.265784316398337, + "edge_lengths_px": [ + 38.07886505126953, + 30.08321762084961, + 37.161808013916016, + 30.364452362060547 + ] + }, + "confidence": 0.5940980546668021 + }, + { + "observation_id": "a0bd12c3-f512-4f1a-9684-e6f21f138962", + "type": "aruco", + "marker_id": 68, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 557.0, + 944.0 + ], + [ + 522.0, + 959.0 + ], + [ + 513.0, + 930.0 + ], + [ + 548.0, + 917.0 + ] + ], + "center_px": [ + 535.0, + 937.5 + ], + "quality": { + "area_px": 1106.0, + "perimeter_px": 134.2401237487793, + "sharpness": { + "laplacian_var": 2058.0123394843577 + }, + "contrast": { + "p05": 7.0, + "p95": 147.0, + "dynamic_range": 140.0, + "mean_gray": 54.84656796769852, + "std_gray": 54.36663963974406 + }, + "geometry": { + "distance_to_center_norm": 0.5283203125, + "distance_to_border_px": 121.0 + }, + "edge_ratio": 1.3379549425935653, + "edge_lengths_px": [ + 38.07886505126953, + 30.364452362060547, + 37.336307525634766, + 28.460498809814453 + ] + }, + "confidence": 0.5510898086777466 + }, + { + "observation_id": "2924cd05-e41e-4604-8a79-5debd8bee69f", + "type": "aruco", + "marker_id": 97, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1419.0, + 943.0 + ], + [ + 1391.0, + 957.0 + ], + [ + 1368.0, + 929.0 + ], + [ + 1397.0, + 916.0 + ] + ], + "center_px": [ + 1393.75, + 936.25 + ], + "quality": { + "area_px": 1087.5, + "perimeter_px": 134.1489372253418, + "sharpness": { + "laplacian_var": 2941.7817599180635 + }, + "contrast": { + "p05": 29.0, + "p95": 186.0, + "dynamic_range": 157.0, + "mean_gray": 104.46935933147633, + "std_gray": 64.27689519676183 + }, + "geometry": { + "distance_to_center_norm": 0.5333836078643799, + "distance_to_border_px": 123.0 + }, + "edge_ratio": 1.1574954466970953, + "edge_lengths_px": [ + 31.30495262145996, + 36.2353401184082, + 31.78049659729004, + 34.828147888183594 + ] + }, + "confidence": 0.6263523559153361 + }, + { + "observation_id": "cfeff737-66a4-460d-b13e-3b1d4951e8d9", + "type": "aruco", + "marker_id": 47, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1297.0, + 940.0 + ], + [ + 1268.0, + 954.0 + ], + [ + 1248.0, + 926.0 + ], + [ + 1277.0, + 912.0 + ] + ], + "center_px": [ + 1272.5, + 933.0 + ], + "quality": { + "area_px": 1092.0, + "perimeter_px": 133.22357177734375, + "sharpness": { + "laplacian_var": 2473.6344829175832 + }, + "contrast": { + "p05": 25.0, + "p95": 174.0, + "dynamic_range": 149.0, + "mean_gray": 76.30093209054594, + "std_gray": 57.74467412045615 + }, + "geometry": { + "distance_to_center_norm": 0.4558528959751129, + "distance_to_border_px": 126.0 + }, + "edge_ratio": 1.0685294220776698, + "edge_lengths_px": [ + 32.202484130859375, + 34.4093017578125, + 32.202484130859375, + 34.4093017578125 + ] + }, + "confidence": 0.6813102053703514 + }, + { + "observation_id": "e6b4f5c9-07e5-4d6d-8383-3b952c9228be", + "type": "aruco", + "marker_id": 90, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 324.0, + 949.0 + ], + [ + 287.0, + 962.0 + ], + [ + 282.0, + 935.0 + ], + [ + 318.0, + 922.0 + ] + ], + "center_px": [ + 302.75, + 942.0 + ], + "quality": { + "area_px": 1057.0, + "perimeter_px": 132.61035537719727, + "sharpness": { + "laplacian_var": 1673.9916603848444 + }, + "contrast": { + "p05": 10.0, + "p95": 152.0, + "dynamic_range": 142.0, + "mean_gray": 72.63239436619719, + "std_gray": 58.24659882386869 + }, + "geometry": { + "distance_to_center_norm": 0.6994779109954834, + "distance_to_border_px": 118.0 + }, + "edge_ratio": 1.428211359795772, + "edge_lengths_px": [ + 39.217342376708984, + 27.459060668945312, + 38.27531814575195, + 27.658634185791016 + ] + }, + "confidence": 0.4933910249582603 + }, + { + "observation_id": "da503a25-d19a-462d-9f39-d2f1a549fd89", + "type": "aruco", + "marker_id": 54, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1350.0, + 917.0 + ], + [ + 1323.0, + 930.0 + ], + [ + 1301.0, + 903.0 + ], + [ + 1328.0, + 889.0 + ] + ], + "center_px": [ + 1325.5, + 909.75 + ], + "quality": { + "area_px": 1039.5, + "perimeter_px": 130.81759452819824, + "sharpness": { + "laplacian_var": 1844.5899336794184 + }, + "contrast": { + "p05": 28.0, + "p95": 179.0, + "dynamic_range": 151.0, + "mean_gray": 63.34664764621969, + "std_gray": 49.82163284476004 + }, + "geometry": { + "distance_to_center_norm": 0.4720207154750824, + "distance_to_border_px": 150.0 + }, + "edge_ratio": 1.1882872512101912, + "edge_lengths_px": [ + 29.96664810180664, + 34.828147888183594, + 30.4138126373291, + 35.608985900878906 + ] + }, + "confidence": 0.5831923209596213 + }, + { + "observation_id": "1a392ac9-d85f-4e28-bb28-32370854c59b", + "type": "aruco", + "marker_id": 144, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1203.0, + 802.0 + ], + [ + 1210.0, + 775.0 + ], + [ + 1244.0, + 761.0 + ], + [ + 1238.0, + 787.0 + ] + ], + "center_px": [ + 1223.75, + 781.25 + ], + "quality": { + "area_px": 820.0, + "perimeter_px": 129.4243984222412, + "sharpness": { + "laplacian_var": 1492.364271847128 + }, + "contrast": { + "p05": 28.0, + "p95": 151.0, + "dynamic_range": 123.0, + "mean_gray": 77.79144385026738, + "std_gray": 46.56681319121131 + }, + "geometry": { + "distance_to_center_norm": 0.3245195150375366, + "distance_to_border_px": 278.0 + }, + "edge_ratio": 1.427065775090032, + "edge_lengths_px": [ + 27.892650604248047, + 36.769554138183594, + 26.68332862854004, + 38.07886505126953 + ] + }, + "confidence": 0.3830704065705577 + }, + { + "observation_id": "3b49f7d0-68ed-4cf1-8a08-d64ebaf09270", + "type": "aruco", + "marker_id": 214, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 781.0, + 881.0 + ], + [ + 769.0, + 854.0 + ], + [ + 801.0, + 841.0 + ], + [ + 813.0, + 868.0 + ] + ], + "center_px": [ + 791.0, + 861.0 + ], + "quality": { + "area_px": 1020.0, + "perimeter_px": 128.17281341552734, + "sharpness": { + "laplacian_var": 2975.0175303871056 + }, + "contrast": { + "p05": 9.0, + "p95": 167.0, + "dynamic_range": 158.0, + "mean_gray": 83.23994252873563, + "std_gray": 65.14366230054718 + }, + "geometry": { + "distance_to_center_norm": 0.3293555974960327, + "distance_to_border_px": 199.0 + }, + "edge_ratio": 1.168996225787581, + "edge_lengths_px": [ + 29.546573638916016, + 34.539833068847656, + 29.546573638916016, + 34.539833068847656 + ] + }, + "confidence": 0.5816956333985318 + }, + { + "observation_id": "a8aa4bcb-7db7-4be8-a902-53863883f588", + "type": "aruco", + "marker_id": 91, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 288.0, + 866.0 + ], + [ + 254.0, + 879.0 + ], + [ + 249.0, + 854.0 + ], + [ + 284.0, + 841.0 + ] + ], + "center_px": [ + 268.75, + 860.0 + ], + "quality": { + "area_px": 921.0, + "perimeter_px": 124.54993438720703, + "sharpness": { + "laplacian_var": 1483.0046317033646 + }, + "contrast": { + "p05": 8.0, + "p95": 151.0, + "dynamic_range": 143.0, + "mean_gray": 62.560490045941805, + "std_gray": 57.02065476559946 + }, + "geometry": { + "distance_to_center_norm": 0.6915643215179443, + "distance_to_border_px": 201.0 + }, + "edge_ratio": 1.4746954778666606, + "edge_lengths_px": [ + 36.400550842285156, + 25.495098114013672, + 37.336307525634766, + 25.317977905273438 + ] + }, + "confidence": 0.41635714573983174 + }, + { + "observation_id": "ecffe0c2-e4a8-44b4-ba9a-74eadbb4d4a3", + "type": "aruco", + "marker_id": 148, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1346.0, + 736.0 + ], + [ + 1354.0, + 711.0 + ], + [ + 1387.0, + 698.0 + ], + [ + 1377.0, + 724.0 + ] + ], + "center_px": [ + 1366.0, + 717.25 + ], + "quality": { + "area_px": 703.5, + "perimeter_px": 122.81542205810547, + "sharpness": { + "laplacian_var": 1774.5767195544106 + }, + "contrast": { + "p05": 24.0, + "p95": 148.7, + "dynamic_range": 124.69999999999999, + "mean_gray": 65.80698151950719, + "std_gray": 44.36626204597247 + }, + "geometry": { + "distance_to_center_norm": 0.40220046043395996, + "distance_to_border_px": 344.0 + }, + "edge_ratio": 1.3512344484090029, + "edge_lengths_px": [ + 26.248809814453125, + 35.46829605102539, + 27.85677719116211, + 33.241539001464844 + ] + }, + "confidence": 0.34709002612553225 + }, + { + "observation_id": "659d073a-68dd-480a-89e3-58a922b30d54", + "type": "aruco", + "marker_id": 76, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 520.0, + 821.0 + ], + [ + 488.0, + 833.0 + ], + [ + 480.0, + 809.0 + ], + [ + 512.0, + 796.0 + ] + ], + "center_px": [ + 500.0, + 814.75 + ], + "quality": { + "area_px": 884.0, + "perimeter_px": 120.26287841796875, + "sharpness": { + "laplacian_var": 2134.92608345081 + }, + "contrast": { + "p05": 6.0, + "p95": 149.0, + "dynamic_range": 143.0, + "mean_gray": 67.45915032679738, + "std_gray": 57.227358435685474 + }, + "geometry": { + "distance_to_center_norm": 0.486453115940094, + "distance_to_border_px": 247.0 + }, + "edge_ratio": 1.3653067646876547, + "edge_lengths_px": [ + 34.1760139465332, + 25.298221588134766, + 34.539833068847656, + 26.248809814453125 + ] + }, + "confidence": 0.43164902465575705 + }, + { + "observation_id": "ac66cebb-621a-4a8a-8a41-026cadb4989b", + "type": "aruco", + "marker_id": 88, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 295.0, + 816.0 + ], + [ + 262.0, + 828.0 + ], + [ + 258.0, + 804.0 + ], + [ + 291.0, + 793.0 + ] + ], + "center_px": [ + 276.5, + 810.25 + ], + "quality": { + "area_px": 821.5, + "perimeter_px": 117.57544136047363, + "sharpness": { + "laplacian_var": 2069.330075110918 + }, + "contrast": { + "p05": 8.0, + "p95": 152.0, + "dynamic_range": 144.0, + "mean_gray": 71.76388888888889, + "std_gray": 58.654678712584754 + }, + "geometry": { + "distance_to_center_norm": 0.6672890782356262, + "distance_to_border_px": 252.0 + }, + "edge_ratio": 1.5041227972061566, + "edge_lengths_px": [ + 35.11410140991211, + 24.331050872802734, + 34.78505325317383, + 23.34523582458496 + ] + }, + "confidence": 0.3641103423762567 + }, + { + "observation_id": "d57d0154-a329-463b-881b-5f9c96aa965c", + "type": "aruco", + "marker_id": 208, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 844.0, + 737.0 + ], + [ + 832.0, + 716.0 + ], + [ + 860.0, + 705.0 + ], + [ + 873.0, + 726.0 + ] + ], + "center_px": [ + 852.25, + 721.0 + ], + "quality": { + "area_px": 736.0, + "perimeter_px": 109.98429298400879, + "sharpness": { + "laplacian_var": 3975.5424474519136 + }, + "contrast": { + "p05": 7.0, + "p95": 172.0, + "dynamic_range": 165.0, + "mean_gray": 71.1951219512195, + "std_gray": 65.09597773801431 + }, + "geometry": { + "distance_to_center_norm": 0.19124218821525574, + "distance_to_border_px": 343.0 + }, + "edge_ratio": 1.2823589298338793, + "edge_lengths_px": [ + 24.1867733001709, + 30.08321762084961, + 24.698177337646484, + 31.016124725341797 + ] + }, + "confidence": 0.38262818252470787 + }, + { + "observation_id": "813bcd12-4d39-420a-aced-2478ed804bae", + "type": "aruco", + "marker_id": 104, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 383.0, + 722.0 + ], + [ + 352.0, + 733.0 + ], + [ + 347.0, + 711.0 + ], + [ + 378.0, + 701.0 + ] + ], + "center_px": [ + 365.0, + 716.75 + ], + "quality": { + "area_px": 719.0, + "perimeter_px": 109.61482238769531, + "sharpness": { + "laplacian_var": 1938.476893658148 + }, + "contrast": { + "p05": 10.0, + "p95": 154.0, + "dynamic_range": 144.0, + "mean_gray": 84.34419551934828, + "std_gray": 59.283241398452475 + }, + "geometry": { + "distance_to_center_norm": 0.563525915145874, + "distance_to_border_px": 347.0 + }, + "edge_ratio": 1.52377445059659, + "edge_lengths_px": [ + 32.893768310546875, + 22.56102752685547, + 32.572994232177734, + 21.587032318115234 + ] + }, + "confidence": 0.31456974038753843 + }, + { + "observation_id": "5cfab1b0-fdef-4601-a0f4-8c58b777f81a", + "type": "aruco", + "marker_id": 100, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 474.0, + 711.0 + ], + [ + 444.0, + 723.0 + ], + [ + 437.0, + 703.0 + ], + [ + 467.0, + 691.0 + ] + ], + "center_px": [ + 455.5, + 707.0 + ], + "quality": { + "area_px": 684.0, + "perimeter_px": 107.001220703125, + "sharpness": { + "laplacian_var": 1874.1330129105597 + }, + "contrast": { + "p05": 8.0, + "p95": 151.0, + "dynamic_range": 143.0, + "mean_gray": 76.79002079002079, + "std_gray": 57.28039129421773 + }, + "geometry": { + "distance_to_center_norm": 0.4824732840061188, + "distance_to_border_px": 357.0 + }, + "edge_ratio": 1.5248498037349056, + "edge_lengths_px": [ + 32.31098937988281, + 21.189620971679688, + 32.31098937988281, + 21.189620971679688 + ] + }, + "confidence": 0.2990458462748869 + }, + { + "observation_id": "e496cc6c-6300-4ab7-928c-242014144672", + "type": "aruco", + "marker_id": 217, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 684.0, + 685.0 + ], + [ + 674.0, + 666.0 + ], + [ + 703.0, + 655.0 + ], + [ + 712.0, + 676.0 + ] + ], + "center_px": [ + 693.25, + 670.5 + ], + "quality": { + "area_px": 665.0, + "perimeter_px": 104.74523735046387, + "sharpness": { + "laplacian_var": 3623.727646405401 + }, + "contrast": { + "p05": 5.0, + "p95": 171.0, + "dynamic_range": 166.0, + "mean_gray": 66.002079002079, + "std_gray": 63.19946639687955 + }, + "geometry": { + "distance_to_center_norm": 0.2696082293987274, + "distance_to_border_px": 395.0 + }, + "edge_ratio": 1.4445649133276972, + "edge_lengths_px": [ + 21.470911026000977, + 31.016124725341797, + 22.847318649291992, + 29.4108829498291 + ] + }, + "confidence": 0.3068974812021922 + }, + { + "observation_id": "2f3fc427-13e1-4f58-b395-ade52cd40374", + "type": "aruco", + "marker_id": 92, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 964.0, + 691.0 + ], + [ + 938.0, + 700.0 + ], + [ + 925.0, + 679.0 + ], + [ + 951.0, + 670.0 + ] + ], + "center_px": [ + 944.5, + 685.0 + ], + "quality": { + "area_px": 663.0, + "perimeter_px": 104.42362213134766, + "sharpness": { + "laplacian_var": 3554.7200672072468 + }, + "contrast": { + "p05": 9.0, + "p95": 177.0, + "dynamic_range": 168.0, + "mean_gray": 62.92094017094017, + "std_gray": 61.02644226502423 + }, + "geometry": { + "distance_to_center_norm": 0.1323942244052887, + "distance_to_border_px": 380.0 + }, + "edge_ratio": 1.1139945005613578, + "edge_lengths_px": [ + 27.513633728027344, + 24.698177337646484, + 27.513633728027344, + 24.698177337646484 + ] + }, + "confidence": 0.3967703608745553 + }, + { + "observation_id": "3f8ca1f0-1d3c-4e32-9bf9-caa11acec7c5", + "type": "aruco", + "marker_id": 57, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1181.0, + 649.0 + ], + [ + 1156.0, + 659.0 + ], + [ + 1140.0, + 639.0 + ], + [ + 1165.0, + 630.0 + ] + ], + "center_px": [ + 1160.5, + 644.25 + ], + "quality": { + "area_px": 639.5, + "perimeter_px": 103.94846534729004, + "sharpness": { + "laplacian_var": 4453.439499351206 + }, + "contrast": { + "p05": 14.0, + "p95": 181.2, + "dynamic_range": 167.2, + "mean_gray": 81.49890590809628, + "std_gray": 63.26226625253715 + }, + "geometry": { + "distance_to_center_norm": 0.2051679491996765, + "distance_to_border_px": 421.0 + }, + "edge_ratio": 1.0839928053686987, + "edge_lengths_px": [ + 26.925823211669922, + 25.612497329711914, + 26.570659637451172, + 24.83948516845703 + ] + }, + "confidence": 0.3932990433348167 + }, + { + "observation_id": "8836cb5f-fceb-404b-af24-8d73e6f66459", + "type": "aruco", + "marker_id": 59, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1077.0, + 666.0 + ], + [ + 1051.0, + 675.0 + ], + [ + 1037.0, + 656.0 + ], + [ + 1063.0, + 646.0 + ] + ], + "center_px": [ + 1057.0, + 660.75 + ], + "quality": { + "area_px": 640.0, + "perimeter_px": 103.38436889648438, + "sharpness": { + "laplacian_var": 3646.601186200378 + }, + "contrast": { + "p05": 12.0, + "p95": 175.0, + "dynamic_range": 163.0, + "mean_gray": 93.61739130434782, + "std_gray": 65.33490080163836 + }, + "geometry": { + "distance_to_center_norm": 0.14061930775642395, + "distance_to_border_px": 405.0 + }, + "edge_ratio": 1.1803295408360401, + "edge_lengths_px": [ + 27.513633728027344, + 23.600847244262695, + 27.85677719116211, + 24.413110733032227 + ] + }, + "confidence": 0.3614809694286344 + }, + { + "observation_id": "6f2ef424-8362-4924-ab4a-1b9f559410b2", + "type": "aruco", + "marker_id": 102, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1003.0, + 670.0 + ], + [ + 977.0, + 680.0 + ], + [ + 964.0, + 660.0 + ], + [ + 989.0, + 650.0 + ] + ], + "center_px": [ + 983.25, + 665.0 + ], + "quality": { + "area_px": 645.0, + "perimeter_px": 103.0494327545166, + "sharpness": { + "laplacian_var": 4030.3021691871454 + }, + "contrast": { + "p05": 9.0, + "p95": 176.0, + "dynamic_range": 167.0, + "mean_gray": 93.8, + "std_gray": 66.43171714985442 + }, + "geometry": { + "distance_to_center_norm": 0.11543279141187668, + "distance_to_border_px": 400.0 + }, + "edge_ratio": 1.167816814353178, + "edge_lengths_px": [ + 27.85677719116211, + 23.853721618652344, + 26.925823211669922, + 24.413110733032227 + ] + }, + "confidence": 0.36820843364733136 + }, + { + "observation_id": "a9a1cfe4-1c6f-4ba0-ba51-c9402d651e28", + "type": "aruco", + "marker_id": 94, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 451.0, + 651.0 + ], + [ + 422.0, + 661.0 + ], + [ + 416.0, + 642.0 + ], + [ + 445.0, + 632.0 + ] + ], + "center_px": [ + 433.5, + 646.5 + ], + "quality": { + "area_px": 611.0, + "perimeter_px": 101.20116424560547, + "sharpness": { + "laplacian_var": 1665.1134270167308 + }, + "contrast": { + "p05": 6.0, + "p95": 150.0, + "dynamic_range": 144.0, + "mean_gray": 55.95100222717149, + "std_gray": 54.063456117919884 + }, + "geometry": { + "distance_to_center_norm": 0.487685889005661, + "distance_to_border_px": 416.0 + }, + "edge_ratio": 1.5395705146786, + "edge_lengths_px": [ + 30.675724029541016, + 19.92485809326172, + 30.675724029541016, + 19.92485809326172 + ] + }, + "confidence": 0.2645759511823127 + }, + { + "observation_id": "b3252cf5-1e0d-4d42-98d6-52ae87063f09", + "type": "aruco", + "marker_id": 93, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 471.0, + 592.0 + ], + [ + 443.0, + 602.0 + ], + [ + 436.0, + 584.0 + ], + [ + 464.0, + 574.0 + ] + ], + "center_px": [ + 453.5, + 588.0 + ], + "quality": { + "area_px": 574.0, + "perimeter_px": 98.09069061279297, + "sharpness": { + "laplacian_var": 1659.5081129807693 + }, + "contrast": { + "p05": 6.0, + "p95": 138.25, + "dynamic_range": 132.25, + "mean_gray": 51.22836538461539, + "std_gray": 49.36333370666657 + }, + "geometry": { + "distance_to_center_norm": 0.46190720796585083, + "distance_to_border_px": 436.0 + }, + "edge_ratio": 1.539471757115051, + "edge_lengths_px": [ + 29.73213768005371, + 19.313207626342773, + 29.73213768005371, + 19.313207626342773 + ] + }, + "confidence": 0.24857011172701135 + }, + { + "observation_id": "0a7ea319-2030-445d-95b5-494fcd348eae", + "type": "aruco", + "marker_id": 48, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1081.0, + 599.0 + ], + [ + 1057.0, + 608.0 + ], + [ + 1043.0, + 590.0 + ], + [ + 1067.0, + 580.0 + ] + ], + "center_px": [ + 1062.0, + 594.25 + ], + "quality": { + "area_px": 577.0, + "perimeter_px": 98.03636741638184, + "sharpness": { + "laplacian_var": 3468.918123183391 + }, + "contrast": { + "p05": 7.200000000000003, + "p95": 174.0, + "dynamic_range": 166.8, + "mean_gray": 60.51294117647059, + "std_gray": 58.539160926150245 + }, + "geometry": { + "distance_to_center_norm": 0.1048882007598877, + "distance_to_border_px": 472.0 + }, + "edge_ratio": 1.14017541227103, + "edge_lengths_px": [ + 25.63201141357422, + 22.803508758544922, + 26.0, + 23.600847244262695 + ] + }, + "confidence": 0.33737498855590825 + }, + { + "observation_id": "7765d140-006f-4496-9375-612dd2220202", + "type": "aruco", + "marker_id": 71, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1009.0, + 568.0 + ], + [ + 985.0, + 576.0 + ], + [ + 973.0, + 558.0 + ], + [ + 997.0, + 550.0 + ] + ], + "center_px": [ + 991.0, + 563.0 + ], + "quality": { + "area_px": 528.0, + "perimeter_px": 93.8630599975586, + "sharpness": { + "laplacian_var": 4205.166904888889 + }, + "contrast": { + "p05": 8.0, + "p95": 176.3, + "dynamic_range": 168.3, + "mean_gray": 92.87466666666667, + "std_gray": 66.82780078846095 + }, + "geometry": { + "distance_to_center_norm": 0.035045068711042404, + "distance_to_border_px": 504.0 + }, + "edge_ratio": 1.1694106656237073, + "edge_lengths_px": [ + 25.298221588134766, + 21.63330841064453, + 25.298221588134766, + 21.63330841064453 + ] + }, + "confidence": 0.3010063191208027 + }, + { + "observation_id": "b52b1281-5867-40e8-a4ac-afce51f419fc", + "type": "aruco", + "marker_id": 49, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 435.0, + 545.0 + ], + [ + 408.0, + 555.0 + ], + [ + 402.0, + 537.0 + ], + [ + 429.0, + 530.0 + ] + ], + "center_px": [ + 418.5, + 541.75 + ], + "quality": { + "area_px": 496.5, + "perimeter_px": 91.81417083740234, + "sharpness": { + "laplacian_var": 1683.2737522598138 + }, + "contrast": { + "p05": 5.0, + "p95": 141.89999999999998, + "dynamic_range": 136.89999999999998, + "mean_gray": 43.24147727272727, + "std_gray": 46.69942799532337 + }, + "geometry": { + "distance_to_center_norm": 0.4916256070137024, + "distance_to_border_px": 402.0 + }, + "edge_ratio": 1.7822023316755866, + "edge_lengths_px": [ + 28.792360305786133, + 18.973665237426758, + 27.892650604248047, + 16.155494689941406 + ] + }, + "confidence": 0.18572526481255427 + }, + { + "observation_id": "5df55dc6-f445-4529-a995-5bda24a8c7c8", + "type": "aruco", + "marker_id": 65, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 994.0, + 525.0 + ], + [ + 970.0, + 532.0 + ], + [ + 958.0, + 517.0 + ], + [ + 982.0, + 509.0 + ] + ], + "center_px": [ + 976.0, + 520.75 + ], + "quality": { + "area_px": 462.0, + "perimeter_px": 89.50759506225586, + "sharpness": { + "laplacian_var": 4373.66603936919 + }, + "contrast": { + "p05": 8.0, + "p95": 176.0, + "dynamic_range": 168.0, + "mean_gray": 80.72085889570552, + "std_gray": 64.65561430078591 + }, + "geometry": { + "distance_to_center_norm": 0.022725632414221764, + "distance_to_border_px": 509.0 + }, + "edge_ratio": 1.3169727592738296, + "edge_lengths_px": [ + 25.0, + 19.209373474121094, + 25.298221588134766, + 20.0 + ] + }, + "confidence": 0.2338696816856176 + }, + { + "observation_id": "819179b1-9fc3-4b1b-af68-aa3a0ffdbb11", + "type": "aruco", + "marker_id": 207, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 609.0, + 528.0 + ], + [ + 602.0, + 512.0 + ], + [ + 627.0, + 504.0 + ], + [ + 635.0, + 520.0 + ] + ], + "center_px": [ + 618.25, + 516.0 + ], + "quality": { + "area_px": 468.0, + "perimeter_px": 88.80454444885254, + "sharpness": { + "laplacian_var": 3796.0534227921617 + }, + "contrast": { + "p05": 5.0, + "p95": 171.0, + "dynamic_range": 166.0, + "mean_gray": 67.64264264264264, + "std_gray": 62.23853355022035 + }, + "geometry": { + "distance_to_center_norm": 0.31103596091270447, + "distance_to_border_px": 504.0 + }, + "edge_ratio": 1.5576359698288478, + "edge_lengths_px": [ + 17.464248657226562, + 26.248809814453125, + 17.8885440826416, + 27.20294189453125 + ] + }, + "confidence": 0.20030354077806922 + }, + { + "observation_id": "ccc3ce6f-54c7-4aa2-82ad-a2f79f92bb10", + "type": "aruco", + "marker_id": 78, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1028.0, + 496.0 + ], + [ + 1005.0, + 503.0 + ], + [ + 994.0, + 487.0 + ], + [ + 1017.0, + 480.0 + ] + ], + "center_px": [ + 1011.0, + 491.5 + ], + "quality": { + "area_px": 445.0, + "perimeter_px": 86.9162368774414, + "sharpness": { + "laplacian_var": 5086.542715646033 + }, + "contrast": { + "p05": 6.0, + "p95": 176.0, + "dynamic_range": 170.0, + "mean_gray": 76.33762057877813, + "std_gray": 63.147750743160664 + }, + "geometry": { + "distance_to_center_norm": 0.06389676779508591, + "distance_to_border_px": 480.0 + }, + "edge_ratio": 1.2382068780702864, + "edge_lengths_px": [ + 24.041629791259766, + 19.416488647460938, + 24.041629791259766, + 19.416488647460938 + ] + }, + "confidence": 0.23959378026474387 + }, + { + "observation_id": "f5b10faf-9de9-4cca-b37c-00450efd3097", + "type": "aruco", + "marker_id": 205, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 705.0, + 496.0 + ], + [ + 697.0, + 481.0 + ], + [ + 721.0, + 473.0 + ], + [ + 730.0, + 489.0 + ] + ], + "center_px": [ + 713.25, + 484.75 + ], + "quality": { + "area_px": 443.5, + "perimeter_px": 86.61729049682617, + "sharpness": { + "laplacian_var": 4415.856146908746 + }, + "contrast": { + "p05": 4.0, + "p95": 171.0, + "dynamic_range": 167.0, + "mean_gray": 73.61635220125787, + "std_gray": 62.28139618876464 + }, + "geometry": { + "distance_to_center_norm": 0.22956925630569458, + "distance_to_border_px": 473.0 + }, + "edge_ratio": 1.5271476296817554, + "edge_lengths_px": [ + 17.0, + 25.298221588134766, + 18.357559204101562, + 25.961509704589844 + ] + }, + "confidence": 0.19360712803403368 + }, + { + "observation_id": "5e3e457a-3ef6-4908-8f79-53cfe226ed76", + "type": "aruco", + "marker_id": 80, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 999.0, + 472.0 + ], + [ + 976.0, + 479.0 + ], + [ + 965.0, + 465.0 + ], + [ + 987.0, + 458.0 + ] + ], + "center_px": [ + 981.75, + 468.5 + ], + "quality": { + "area_px": 395.5, + "perimeter_px": 83.37200355529785, + "sharpness": { + "laplacian_var": 3646.002469135802 + }, + "contrast": { + "p05": 10.0, + "p95": 174.0, + "dynamic_range": 164.0, + "mean_gray": 71.88148148148149, + "std_gray": 63.99734390921894 + }, + "geometry": { + "distance_to_center_norm": 0.06785120069980621, + "distance_to_border_px": 458.0 + }, + "edge_ratio": 1.3503125226976131, + "edge_lengths_px": [ + 24.041629791259766, + 17.804492950439453, + 23.0867919921875, + 18.439088821411133 + ] + }, + "confidence": 0.19526343882223757 + }, + { + "observation_id": "381bb016-b051-4525-9bee-74c35052c77e", + "type": "aruco", + "marker_id": 87, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 876.0, + 452.0 + ], + [ + 853.0, + 458.0 + ], + [ + 843.0, + 445.0 + ], + [ + 867.0, + 438.0 + ] + ], + "center_px": [ + 859.75, + 448.25 + ], + "quality": { + "area_px": 379.0, + "perimeter_px": 81.81426429748535, + "sharpness": { + "laplacian_var": 4641.56324340398 + }, + "contrast": { + "p05": 8.0, + "p95": 174.45, + "dynamic_range": 166.45, + "mean_gray": 94.4154411764706, + "std_gray": 63.45783845649069 + }, + "geometry": { + "distance_to_center_norm": 0.12338011711835861, + "distance_to_border_px": 438.0 + }, + "edge_ratio": 1.524276822681991, + "edge_lengths_px": [ + 23.76972770690918, + 16.401220321655273, + 25.0, + 16.6433162689209 + ] + }, + "confidence": 0.16576166671752926 + }, + { + "observation_id": "b24f3b21-a45c-4014-8925-23650d6f0359", + "type": "aruco", + "marker_id": 99, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 940.0, + 419.0 + ], + [ + 917.0, + 425.0 + ], + [ + 907.0, + 412.0 + ], + [ + 928.0, + 405.0 + ] + ], + "center_px": [ + 923.0, + 415.25 + ], + "quality": { + "area_px": 368.5, + "perimeter_px": 80.74598121643066, + "sharpness": { + "laplacian_var": 4483.69264506942 + }, + "contrast": { + "p05": 5.0, + "p95": 176.0, + "dynamic_range": 171.0, + "mean_gray": 73.32075471698113, + "std_gray": 64.60065236685195 + }, + "geometry": { + "distance_to_center_norm": 0.11813601106405258, + "distance_to_border_px": 405.0 + }, + "edge_ratio": 1.4492658010041444, + "edge_lengths_px": [ + 23.76972770690918, + 16.401220321655273, + 22.135944366455078, + 18.439088821411133 + ] + }, + "confidence": 0.16951111831691126 + }, + { + "observation_id": "ee46e9de-2b12-4f5d-be91-fbc5a0382ffc", + "type": "aruco", + "marker_id": 89, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 969.0, + 388.0 + ], + [ + 947.0, + 395.0 + ], + [ + 937.0, + 381.0 + ], + [ + 959.0, + 376.0 + ] + ], + "center_px": [ + 953.0, + 385.0 + ], + "quality": { + "area_px": 346.0, + "perimeter_px": 78.4729700088501, + "sharpness": { + "laplacian_var": 5125.099960327148 + }, + "contrast": { + "p05": 5.0, + "p95": 176.25, + "dynamic_range": 171.25, + "mean_gray": 72.75, + "std_gray": 64.48897677122812 + }, + "geometry": { + "distance_to_center_norm": 0.14086656272411346, + "distance_to_border_px": 376.0 + }, + "edge_ratio": 1.4779803826553803, + "edge_lengths_px": [ + 23.0867919921875, + 17.20465087890625, + 22.56102752685547, + 15.620499610900879 + ] + }, + "confidence": 0.15606882836445 + } + ], + "rejected_candidates": [ + { + "image_points_px": [ + [ + 736.0, + 701.0 + ], + [ + 749.0, + 727.0 + ], + [ + 714.0, + 741.0 + ], + [ + 701.0, + 715.0 + ] + ], + "center_px": [ + 725.0, + 721.0 + ], + "area_px": 1092.0 + }, + { + "image_points_px": [ + [ + 1184.0, + 993.0 + ], + [ + 1147.0, + 1025.0 + ], + [ + 1134.0, + 1015.0 + ], + [ + 1165.0, + 984.0 + ] + ], + "center_px": [ + 1157.5, + 1004.25 + ], + "area_px": 827.0 + }, + { + "image_points_px": [ + [ + 1292.0, + 638.0 + ], + [ + 1257.0, + 651.0 + ], + [ + 1238.0, + 652.0 + ], + [ + 1266.0, + 640.0 + ] + ], + "center_px": [ + 1263.25, + 645.25 + ], + "area_px": 234.0 + }, + { + "image_points_px": [ + [ + 1843.0, + 188.0 + ], + [ + 1887.0, + 208.0 + ], + [ + 1876.0, + 210.0 + ], + [ + 1842.0, + 196.0 + ] + ], + "center_px": [ + 1862.0, + 200.5 + ], + "area_px": 297.0 + }, + { + "image_points_px": [ + [ + 1398.0, + 371.0 + ], + [ + 1420.0, + 366.0 + ], + [ + 1436.0, + 379.0 + ], + [ + 1414.0, + 385.0 + ] + ], + "center_px": [ + 1417.0, + 375.25 + ], + "area_px": 385.0 + }, + { + "image_points_px": [ + [ + 1402.0, + 349.0 + ], + [ + 1381.0, + 356.0 + ], + [ + 1365.0, + 342.0 + ], + [ + 1386.0, + 336.0 + ] + ], + "center_px": [ + 1383.5, + 345.75 + ], + "area_px": 387.5 + }, + { + "image_points_px": [ + [ + 1677.0, + 936.0 + ], + [ + 1648.0, + 958.0 + ], + [ + 1642.0, + 959.0 + ], + [ + 1666.0, + 940.0 + ] + ], + "center_px": [ + 1658.25, + 948.25 + ], + "area_px": 108.0 + }, + { + "image_points_px": [ + [ + 1479.0, + 365.0 + ], + [ + 1458.0, + 371.0 + ], + [ + 1443.0, + 358.0 + ], + [ + 1463.0, + 352.0 + ] + ], + "center_px": [ + 1460.75, + 361.5 + ], + "area_px": 359.5 + }, + { + "image_points_px": [ + [ + 1144.0, + 705.0 + ], + [ + 1114.0, + 719.0 + ], + [ + 1106.0, + 718.0 + ], + [ + 1137.0, + 704.0 + ] + ], + "center_px": [ + 1125.25, + 711.5 + ], + "area_px": 135.5 + }, + { + "image_points_px": [ + [ + 1491.0, + 303.0 + ], + [ + 1511.0, + 298.0 + ], + [ + 1527.0, + 310.0 + ], + [ + 1508.0, + 316.0 + ] + ], + "center_px": [ + 1509.25, + 306.75 + ], + "area_px": 334.5 + }, + { + "image_points_px": [ + [ + 1530.0, + 310.0 + ], + [ + 1549.0, + 305.0 + ], + [ + 1566.0, + 317.0 + ], + [ + 1547.0, + 323.0 + ] + ], + "center_px": [ + 1548.0, + 313.75 + ], + "area_px": 331.0 + }, + { + "image_points_px": [ + [ + 1494.0, + 284.0 + ], + [ + 1514.0, + 279.0 + ], + [ + 1530.0, + 290.0 + ], + [ + 1511.0, + 296.0 + ] + ], + "center_px": [ + 1512.25, + 287.25 + ], + "area_px": 315.0 + }, + { + "image_points_px": [ + [ + 1486.0, + 344.0 + ], + [ + 1504.0, + 339.0 + ], + [ + 1521.0, + 351.0 + ], + [ + 1502.0, + 357.0 + ] + ], + "center_px": [ + 1503.25, + 347.75 + ], + "area_px": 322.0 + }, + { + "image_points_px": [ + [ + 1447.0, + 337.0 + ], + [ + 1467.0, + 332.0 + ], + [ + 1482.0, + 343.0 + ], + [ + 1464.0, + 349.0 + ] + ], + "center_px": [ + 1465.0, + 340.25 + ], + "area_px": 306.5 + }, + { + "image_points_px": [ + [ + 1451.0, + 316.0 + ], + [ + 1470.0, + 311.0 + ], + [ + 1485.0, + 323.0 + ], + [ + 1467.0, + 328.0 + ] + ], + "center_px": [ + 1468.25, + 319.5 + ], + "area_px": 299.5 + }, + { + "image_points_px": [ + [ + 1490.0, + 35.0 + ], + [ + 1495.0, + 39.0 + ], + [ + 1487.0, + 70.0 + ], + [ + 1481.0, + 64.0 + ] + ], + "center_px": [ + 1488.25, + 52.0 + ], + "area_px": 207.5 + }, + { + "image_points_px": [ + [ + 1310.0, + 269.0 + ], + [ + 1331.0, + 264.0 + ], + [ + 1344.0, + 275.0 + ], + [ + 1324.0, + 280.0 + ] + ], + "center_px": [ + 1327.25, + 272.0 + ], + "area_px": 293.0 + }, + { + "image_points_px": [ + [ + 1458.0, + 277.0 + ], + [ + 1477.0, + 272.0 + ], + [ + 1492.0, + 284.0 + ], + [ + 1473.0, + 288.0 + ] + ], + "center_px": [ + 1475.0, + 280.25 + ], + "area_px": 286.0 + }, + { + "image_points_px": [ + [ + 1426.0, + 252.0 + ], + [ + 1447.0, + 248.0 + ], + [ + 1460.0, + 258.0 + ], + [ + 1441.0, + 263.0 + ] + ], + "center_px": [ + 1443.5, + 255.25 + ], + "area_px": 273.0 + }, + { + "image_points_px": [ + [ + 1463.0, + 240.0 + ], + [ + 1445.0, + 245.0 + ], + [ + 1430.0, + 234.0 + ], + [ + 1448.0, + 229.0 + ] + ], + "center_px": [ + 1446.5, + 237.0 + ], + "area_px": 273.0 + }, + { + "image_points_px": [ + [ + 1462.0, + 258.0 + ], + [ + 1481.0, + 254.0 + ], + [ + 1495.0, + 265.0 + ], + [ + 1476.0, + 269.0 + ] + ], + "center_px": [ + 1478.5, + 261.5 + ], + "area_px": 265.0 + }, + { + "image_points_px": [ + [ + 1248.0, + 238.0 + ], + [ + 1268.0, + 233.0 + ], + [ + 1281.0, + 243.0 + ], + [ + 1260.0, + 248.0 + ] + ], + "center_px": [ + 1264.25, + 240.5 + ], + "area_px": 267.5 + }, + { + "image_points_px": [ + [ + 1151.0, + 806.0 + ], + [ + 1149.0, + 811.0 + ], + [ + 1120.0, + 823.0 + ], + [ + 1121.0, + 819.0 + ] + ], + "center_px": [ + 1135.25, + 814.75 + ], + "area_px": 114.0 + }, + { + "image_points_px": [ + [ + 1276.0, + 262.0 + ], + [ + 1295.0, + 257.0 + ], + [ + 1308.0, + 268.0 + ], + [ + 1288.0, + 273.0 + ] + ], + "center_px": [ + 1291.75, + 265.0 + ], + "area_px": 277.0 + }, + { + "image_points_px": [ + [ + 1317.0, + 250.0 + ], + [ + 1336.0, + 246.0 + ], + [ + 1349.0, + 257.0 + ], + [ + 1330.0, + 261.0 + ] + ], + "center_px": [ + 1333.0, + 253.5 + ], + "area_px": 261.0 + }, + { + "image_points_px": [ + [ + 1529.0, + 331.0 + ], + [ + 1546.0, + 326.0 + ], + [ + 1561.0, + 337.0 + ], + [ + 1544.0, + 342.0 + ] + ], + "center_px": [ + 1545.0, + 334.0 + ], + "area_px": 262.0 + }, + { + "image_points_px": [ + [ + 1315.0, + 250.0 + ], + [ + 1295.0, + 254.0 + ], + [ + 1283.0, + 244.0 + ], + [ + 1301.0, + 239.0 + ] + ], + "center_px": [ + 1298.5, + 246.75 + ], + "area_px": 258.0 + }, + { + "image_points_px": [ + [ + 1354.0, + 239.0 + ], + [ + 1336.0, + 243.0 + ], + [ + 1322.0, + 233.0 + ], + [ + 1341.0, + 228.0 + ] + ], + "center_px": [ + 1338.25, + 235.75 + ], + "area_px": 255.0 + }, + { + "image_points_px": [ + [ + 1362.0, + 221.0 + ], + [ + 1380.0, + 217.0 + ], + [ + 1394.0, + 227.0 + ], + [ + 1375.0, + 232.0 + ] + ], + "center_px": [ + 1377.75, + 224.25 + ], + "area_px": 255.0 + }, + { + "image_points_px": [ + [ + 1328.0, + 215.0 + ], + [ + 1347.0, + 211.0 + ], + [ + 1360.0, + 221.0 + ], + [ + 1340.0, + 225.0 + ] + ], + "center_px": [ + 1343.75, + 218.0 + ], + "area_px": 245.0 + }, + { + "image_points_px": [ + [ + 1366.0, + 205.0 + ], + [ + 1386.0, + 201.0 + ], + [ + 1398.0, + 211.0 + ], + [ + 1380.0, + 215.0 + ] + ], + "center_px": [ + 1382.5, + 208.0 + ], + "area_px": 242.0 + }, + { + "image_points_px": [ + [ + 1396.0, + 228.0 + ], + [ + 1415.0, + 224.0 + ], + [ + 1428.0, + 234.0 + ], + [ + 1409.0, + 238.0 + ] + ], + "center_px": [ + 1412.0, + 231.0 + ], + "area_px": 242.0 + }, + { + "image_points_px": [ + [ + 1289.0, + 226.0 + ], + [ + 1308.0, + 222.0 + ], + [ + 1320.0, + 232.0 + ], + [ + 1301.0, + 237.0 + ] + ], + "center_px": [ + 1304.5, + 229.25 + ], + "area_px": 253.5 + }, + { + "image_points_px": [ + [ + 1432.0, + 217.0 + ], + [ + 1414.0, + 221.0 + ], + [ + 1401.0, + 210.0 + ], + [ + 1418.0, + 206.0 + ] + ], + "center_px": [ + 1416.25, + 213.5 + ], + "area_px": 246.5 + }, + { + "image_points_px": [ + [ + 1307.0, + 288.0 + ], + [ + 1324.0, + 283.0 + ], + [ + 1335.0, + 293.0 + ], + [ + 1318.0, + 299.0 + ] + ], + "center_px": [ + 1321.0, + 290.75 + ], + "area_px": 239.0 + } + ] +} \ No newline at end of file diff --git a/test/homing/20260616_133151/cam2_camera_pose.json b/test/homing/20260616_133151/cam2_camera_pose.json new file mode 100644 index 0000000..1402160 --- /dev/null +++ b/test/homing/20260616_133151/cam2_camera_pose.json @@ -0,0 +1,649 @@ +{ + "schema_version": "1.0", + "created_utc": "2026-06-16T13:32:03Z", + "source": { + "detection_json": "/app/data/homing/20260616_133151/cam2_aruco_detection.json", + "robot_json": "/app/scripts/robot_1781069752019.json" + }, + "camera": { + "camera_id": "cam2", + "camera_matrix": [ + [ + 1388.99072265625, + 0.0, + 933.082763671875 + ], + [ + 0.0, + 1394.8729248046875, + 562.4996948242188 + ], + [ + 0.0, + 0.0, + 1.0 + ] + ], + "distortion_coefficients": [ + 0.019531700760126114, + -0.11213663965463638, + 0.0026758278254419565, + 0.0007694826927036047, + 0.05339815095067024 + ] + }, + "estimation": { + "method": "single_camera_marker_center_lm", + "description": "Rigid init from per-marker pose estimates, followed by LM on normalized marker-center reprojection residuals.", + "marker_size_m": 0.025, + "num_used_markers": 32, + "used_marker_ids": [ + 66, + 56, + 98, + 55, + 70, + 46, + 50, + 68, + 97, + 47, + 90, + 54, + 91, + 76, + 88, + 104, + 100, + 92, + 57, + 59, + 102, + 94, + 93, + 48, + 71, + 49, + 65, + 78, + 80, + 87, + 99, + 89 + ], + "history": { + "iters": [ + 0, + 1, + 2, + 3 + ], + "rms": [ + 0.008832538525142795, + 0.0004865578415025546, + 0.00032819879951119047, + 0.0003281981652183564 + ], + "lambda": [ + 0.001, + 0.0005, + 0.00025, + 0.000125 + ] + }, + "residual_rms_px": 0.6441756715533189, + "residual_median_px": 0.5492520408741948, + "residual_max_px": 1.2897776382850825, + "sigma2_normalized": 1.1885686692316158e-07 + }, + "camera_pose": { + "world_to_camera": { + "rotation_matrix": [ + [ + -0.4496577978134155, + -0.8931671977043152, + -0.007761204615235329 + ], + [ + -0.6304975152015686, + 0.32354968786239624, + -0.7055412530899048 + ], + [ + 0.632677435874939, + -0.31235870718955994, + -0.7086263298988342 + ] + ], + "translation_m": [ + 0.1335494965314865, + 0.5456798076629639, + 0.636671245098114 + ], + "rvec_rad": [ + 1.3494279062384578, + -2.198026754500526, + 0.901499263158594 + ] + }, + "camera_in_world": { + "position_m": [ + 0.001293778419494629, + 0.14159730076789856, + 0.8371981382369995 + ], + "position_mm": [ + 1.293778419494629, + 141.59730529785156, + 837.1981201171875 + ], + "orientation_deg": { + "roll": -156.2123565673828, + "pitch": -39.2479362487793, + "yaw": -125.49567413330078 + } + }, + "uncertainty": { + "pose_covariance_6x6": [ + [ + 1.6015381552721338e-07, + -1.4837059058697122e-07, + 3.6929360374737507e-09, + 2.2758829309070173e-08, + 8.934552870367817e-08, + 1.0290980538631166e-07 + ], + [ + -1.4837059058697112e-07, + 3.4643173654494003e-07, + -1.095486801462903e-07, + -1.2433725931455158e-07, + -1.1671511572372629e-07, + -1.8401667376807757e-07 + ], + [ + 3.6929360374766454e-09, + -1.0954868014629436e-07, + 7.273896060861517e-07, + 1.9118374884632683e-07, + -7.329600774003173e-08, + 1.0168020574304684e-09 + ], + [ + 2.2758829309070772e-08, + -1.2433725931455248e-07, + 1.9118374884632598e-07, + 8.744604871812883e-08, + 9.627191197820863e-09, + 4.401188149744796e-08 + ], + [ + 8.934552870367775e-08, + -1.167151157237258e-07, + -7.329600774003358e-08, + 9.627191197820361e-09, + 7.355401539411175e-08, + 8.533100927242548e-08 + ], + [ + 1.0290980538631145e-07, + -1.8401667376807733e-07, + 1.016802057427981e-09, + 4.4011881497447365e-08, + 8.533100927242568e-08, + 1.489079976325586e-07 + ] + ], + "parameter_std": { + "rvec_std_deg": [ + 0.02292932538456693, + 0.03372340885164672, + 0.04886593105418293 + ], + "tvec_std_m": [ + 0.00029571278078251677, + 0.0002712084353299354, + 0.00038588599045904555 + ] + }, + "camera_center_std_m": [ + 0.0005289704989045807, + 0.0008144586400828901, + 0.00045608116615869596 + ], + "camera_center_std_mm": [ + 0.5289704989045807, + 0.8144586400828902, + 0.456081166158696 + ], + "orientation_std_deg": { + "roll": 0.041484506477778224, + "pitch": 0.034509621577427846, + "yaw": 0.03307538792320922 + } + } + }, + "observations": { + "markers": [ + { + "marker_id": 66, + "observed_center_px": [ + 1492.5, + 1050.5 + ], + "projected_center_px": [ + 1493.70947265625, + 1050.947998046875 + ], + "reprojection_error_px": 1.2897776382850825, + "confidence": 0.08283072356273988 + }, + { + "marker_id": 56, + "observed_center_px": [ + 568.25, + 1026.5 + ], + "projected_center_px": [ + 568.1932983398438, + 1027.0657958984375 + ], + "reprojection_error_px": 0.5686300000467551, + "confidence": 0.4105118828043329 + }, + { + "marker_id": 98, + "observed_center_px": [ + 321.75, + 1023.5 + ], + "projected_center_px": [ + 322.117919921875, + 1023.1886596679688 + ], + "reprojection_error_px": 0.48197289473769694, + "confidence": 0.4150269083081866 + }, + { + "marker_id": 55, + "observed_center_px": [ + 1298.25, + 1021.0 + ], + "projected_center_px": [ + 1298.544189453125, + 1022.0004272460938 + ], + "reprojection_error_px": 1.042785744559596, + "confidence": 0.5099828684402014 + }, + { + "marker_id": 70, + "observed_center_px": [ + 337.25, + 981.0 + ], + "projected_center_px": [ + 337.27288818359375, + 981.1621704101562 + ], + "reprojection_error_px": 0.16377762630612144, + "confidence": 0.5716394535834378 + }, + { + "marker_id": 46, + "observed_center_px": [ + 528.0, + 990.0 + ], + "projected_center_px": [ + 527.9961547851562, + 990.034912109375 + ], + "reprojection_error_px": 0.03512322676245106, + "confidence": 0.6113473562364914 + }, + { + "marker_id": 50, + "observed_center_px": [ + 476.25, + 962.0 + ], + "projected_center_px": [ + 475.98529052734375, + 961.836181640625 + ], + "reprojection_error_px": 0.3112997908484145, + "confidence": 0.5940980546668021 + }, + { + "marker_id": 68, + "observed_center_px": [ + 535.0, + 937.5 + ], + "projected_center_px": [ + 534.7505493164062, + 936.9074096679688 + ], + "reprojection_error_px": 0.6429532993634113, + "confidence": 0.5510898086777466 + }, + { + "marker_id": 97, + "observed_center_px": [ + 1393.75, + 936.25 + ], + "projected_center_px": [ + 1394.135498046875, + 936.5591430664062 + ], + "reprojection_error_px": 0.4941438855753441, + "confidence": 0.6263523559153361 + }, + { + "marker_id": 47, + "observed_center_px": [ + 1272.5, + 933.0 + ], + "projected_center_px": [ + 1272.794921875, + 933.4520263671875 + ], + "reprojection_error_px": 0.5397284029826892, + "confidence": 0.6813102053703514 + }, + { + "marker_id": 90, + "observed_center_px": [ + 302.75, + 942.0 + ], + "projected_center_px": [ + 303.13250732421875, + 941.7984008789062 + ], + "reprojection_error_px": 0.4323818436368026, + "confidence": 0.4933910249582603 + }, + { + "marker_id": 54, + "observed_center_px": [ + 1325.5, + 909.75 + ], + "projected_center_px": [ + 1325.8062744140625, + 910.0460205078125 + ], + "reprojection_error_px": 0.4259485388575691, + "confidence": 0.5831923209596213 + }, + { + "marker_id": 91, + "observed_center_px": [ + 268.75, + 860.0 + ], + "projected_center_px": [ + 268.9171447753906, + 859.646240234375 + ], + "reprojection_error_px": 0.39125867110574997, + "confidence": 0.41635714573983174 + }, + { + "marker_id": 76, + "observed_center_px": [ + 500.0, + 814.75 + ], + "projected_center_px": [ + 499.7842102050781, + 814.5734252929688 + ], + "reprojection_error_px": 0.27882586457428343, + "confidence": 0.43164902465575705 + }, + { + "marker_id": 88, + "observed_center_px": [ + 276.5, + 810.25 + ], + "projected_center_px": [ + 277.02392578125, + 809.9246826171875 + ], + "reprojection_error_px": 0.6167087025641826, + "confidence": 0.3641103423762567 + }, + { + "marker_id": 104, + "observed_center_px": [ + 365.0, + 716.75 + ], + "projected_center_px": [ + 365.2046813964844, + 716.1290893554688 + ], + "reprojection_error_px": 0.6537771046457701, + "confidence": 0.31456974038753843 + }, + { + "marker_id": 100, + "observed_center_px": [ + 455.5, + 707.0 + ], + "projected_center_px": [ + 455.77587890625, + 706.6298217773438 + ], + "reprojection_error_px": 0.46167205616393603, + "confidence": 0.2990458462748869 + }, + { + "marker_id": 92, + "observed_center_px": [ + 944.5, + 685.0 + ], + "projected_center_px": [ + 943.9740600585938, + 684.959228515625 + ], + "reprojection_error_px": 0.5275179010275866, + "confidence": 0.3967703608745553 + }, + { + "marker_id": 57, + "observed_center_px": [ + 1160.5, + 644.25 + ], + "projected_center_px": [ + 1160.0010986328125, + 643.9444580078125 + ], + "reprojection_error_px": 0.5850286173953058, + "confidence": 0.3932990433348167 + }, + { + "marker_id": 59, + "observed_center_px": [ + 1057.0, + 660.75 + ], + "projected_center_px": [ + 1056.5108642578125, + 660.4798583984375 + ], + "reprojection_error_px": 0.5587756787657002, + "confidence": 0.3614809694286344 + }, + { + "marker_id": 102, + "observed_center_px": [ + 983.25, + 665.0 + ], + "projected_center_px": [ + 982.9725952148438, + 664.6309204101562 + ], + "reprojection_error_px": 0.46170678841318324, + "confidence": 0.36820843364733136 + }, + { + "marker_id": 94, + "observed_center_px": [ + 433.5, + 646.5 + ], + "projected_center_px": [ + 434.1227722167969, + 646.3070068359375 + ], + "reprojection_error_px": 0.651990487192067, + "confidence": 0.2645759511823127 + }, + { + "marker_id": 93, + "observed_center_px": [ + 453.5, + 588.0 + ], + "projected_center_px": [ + 453.8638610839844, + 588.4290161132812 + ], + "reprojection_error_px": 0.562538633245073, + "confidence": 0.24857011172701135 + }, + { + "marker_id": 48, + "observed_center_px": [ + 1062.0, + 594.25 + ], + "projected_center_px": [ + 1061.968994140625, + 594.0921020507812 + ], + "reprojection_error_px": 0.16091341051344735, + "confidence": 0.33737498855590825 + }, + { + "marker_id": 71, + "observed_center_px": [ + 991.0, + 563.0 + ], + "projected_center_px": [ + 990.3995971679688, + 562.8884887695312 + ], + "reprojection_error_px": 0.6106703818196851, + "confidence": 0.3010063191208027 + }, + { + "marker_id": 49, + "observed_center_px": [ + 418.5, + 541.75 + ], + "projected_center_px": [ + 419.17529296875, + 542.6862182617188 + ], + "reprojection_error_px": 1.154350565131263, + "confidence": 0.18572526481255427 + }, + { + "marker_id": 65, + "observed_center_px": [ + 976.0, + 520.75 + ], + "projected_center_px": [ + 975.18896484375, + 520.5609130859375 + ], + "reprojection_error_px": 0.8327856181173767, + "confidence": 0.2338696816856176 + }, + { + "marker_id": 78, + "observed_center_px": [ + 1011.0, + 491.5 + ], + "projected_center_px": [ + 1010.1187744140625, + 491.44244384765625 + ], + "reprojection_error_px": 0.8831031898841195, + "confidence": 0.23959378026474387 + }, + { + "marker_id": 80, + "observed_center_px": [ + 981.75, + 468.5 + ], + "projected_center_px": [ + 981.3944702148438, + 468.3933410644531 + ], + "reprojection_error_px": 0.37118399300783667, + "confidence": 0.19526343882223757 + }, + { + "marker_id": 87, + "observed_center_px": [ + 859.75, + 448.25 + ], + "projected_center_px": [ + 858.9118041992188, + 447.6842346191406 + ], + "reprojection_error_px": 1.0112678510791662, + "confidence": 0.16576166671752926 + }, + { + "marker_id": 99, + "observed_center_px": [ + 923.0, + 415.25 + ], + "projected_center_px": [ + 922.5694580078125, + 415.4199523925781 + ], + "reprojection_error_px": 0.4628717130910145, + "confidence": 0.16951111831691126 + }, + { + "marker_id": 89, + "observed_center_px": [ + 953.0, + 385.0 + ], + "projected_center_px": [ + 952.1853637695312, + 385.3843688964844 + ], + "reprojection_error_px": 0.900761697996174, + "confidence": 0.15606882836445 + } + ] + }, + "qa": { + "sanity_notes": [] + } +} \ No newline at end of file diff --git a/test/homing/20260616_133151/cam2_debug.jpg b/test/homing/20260616_133151/cam2_debug.jpg new file mode 100644 index 0000000..73b5d76 Binary files /dev/null and b/test/homing/20260616_133151/cam2_debug.jpg differ diff --git a/test/homing/20260616_133151/state_Arm1.json b/test/homing/20260616_133151/state_Arm1.json new file mode 100644 index 0000000..f66b658 --- /dev/null +++ b/test/homing/20260616_133151/state_Arm1.json @@ -0,0 +1,40 @@ +{ + "status": "ok", + "link": "Arm1", + "joint": "y", + "method": "primary", + "joint_origin_world_mm": [ + 302.92961386432523, + 101.1, + 71.2 + ], + "joint_axis_world": [ + -1.0, + 0.0, + 0.0 + ], + "mean_angle_deg": 29.881507386797537, + "circular_variance": 0.0, + "circular_std_deg": 0.0, + "num_pairs_used": 1, + "num_markers_matched": 2, + "per_pair": [ + { + "marker_ids": [ + 198, + 229 + ], + "link": "Arm1", + "tier": "primary", + "skipped": false, + "angle_deg": 29.881507386797537, + "baseline_model_mm": 90.0, + "baseline_obs_mm": 90.50018670941252, + "weight": 8145.0168038471265 + } + ], + "accumulated_state": { + "x": 192.92961386432523, + "y": 29.881507386797537 + } +} \ No newline at end of file diff --git a/test/homing/20260616_133151/state_Arm2.json b/test/homing/20260616_133151/state_Arm2.json new file mode 100644 index 0000000..a355df7 --- /dev/null +++ b/test/homing/20260616_133151/state_Arm2.json @@ -0,0 +1,101 @@ +{ + "status": "ok", + "link": "Arm2", + "joint": "a", + "method": "primary", + "joint_origin_world_mm": [ + 392.92961386432523, + -115.6643985452182, + 195.75197920278026 + ], + "joint_axis_world": [ + 0.0, + -0.9998488482213078, + -0.0173862218588264 + ], + "mean_angle_deg": -1.6952207816710758, + "circular_variance": 0.00020602093543020672, + "circular_std_deg": 1.1630963101820437, + "num_pairs_used": 4, + "num_markers_matched": 4, + "per_pair": [ + { + "marker_ids": [ + 143, + 144 + ], + "link": "Arm2", + "tier": "primary", + "skipped": false, + "angle_deg": -2.918623083197913, + "baseline_model_mm": 26.788523662195328, + "baseline_obs_mm": 27.871929768865822, + "weight": 746.6478501243084 + }, + { + "marker_ids": [ + 143, + 146 + ], + "link": "Arm2", + "tier": "primary", + "skipped": true, + "reason": "bl_model=0.0 bl_obs=0.6 < 15.0" + }, + { + "marker_ids": [ + 143, + 148 + ], + "link": "Arm2", + "tier": "primary", + "skipped": false, + "angle_deg": -0.6228465071838889, + "baseline_model_mm": 26.788523662195338, + "baseline_obs_mm": 27.73004804692106, + "weight": 742.8470482587584 + }, + { + "marker_ids": [ + 144, + 146 + ], + "link": "Arm2", + "tier": "primary", + "skipped": false, + "angle_deg": -2.7850536051660586, + "baseline_model_mm": 26.78852366219535, + "baseline_obs_mm": 27.285879546928946, + "weight": 730.9484298867181 + }, + { + "marker_ids": [ + 144, + 148 + ], + "link": "Arm2", + "tier": "primary", + "skipped": true, + "reason": "bl_model=0.0 bl_obs=1.1 < 15.0" + }, + { + "marker_ids": [ + 146, + 148 + ], + "link": "Arm2", + "tier": "primary", + "skipped": false, + "angle_deg": -0.43914752876333224, + "baseline_model_mm": 26.788523662195356, + "baseline_obs_mm": 27.14708174031441, + "weight": 727.230241559964 + } + ], + "accumulated_state": { + "x": 192.92961386432523, + "y": 29.881507386797537, + "z": -30.87771471432869, + "a": -1.6952207816710758 + } +} \ No newline at end of file diff --git a/test/homing/20260616_133151/state_Ellbow.json b/test/homing/20260616_133151/state_Ellbow.json new file mode 100644 index 0000000..67e0717 --- /dev/null +++ b/test/homing/20260616_133151/state_Ellbow.json @@ -0,0 +1,64 @@ +{ + "status": "ok", + "link": "Ellbow", + "joint": "z", + "method": "fallback_1_child_axis", + "joint_origin_world_mm": [ + 302.92961386432523, + -115.6643985452182, + 195.75197920278026 + ], + "joint_axis_world": [ + -1.0, + 0.0, + 0.0 + ], + "mean_angle_deg": -30.87771471432869, + "circular_variance": 1.106978232756628e-05, + "circular_std_deg": 0.2695928517499839, + "num_pairs_used": 2, + "num_markers_matched": 2, + "per_pair": [ + { + "marker_ids": [ + 129, + 132 + ], + "link": "Ellbow", + "tier": "primary", + "skipped": true, + "reason": "bl_model=0.0 bl_obs=0.5 < 15.0" + }, + { + "marker_ids": [ + 143, + 146 + ], + "link": "Arm2", + "tier": "fallback_1_child_axis", + "skipped": false, + "angle_deg": -30.466169791617776, + "baseline_model_mm": 69.99999999999999, + "baseline_obs_mm": 69.90371726257193, + "weight": 4893.260208380034 + }, + { + "marker_ids": [ + 144, + 148 + ], + "link": "Arm2", + "tier": "fallback_1_child_axis", + "skipped": false, + "angle_deg": -31.054317392869034, + "baseline_model_mm": 107.00000000000003, + "baseline_obs_mm": 106.56913684356692, + "weight": 11402.897642261663 + } + ], + "accumulated_state": { + "x": 192.92961386432523, + "y": 29.881507386797537, + "z": -30.87771471432869 + } +} \ No newline at end of file diff --git a/test/homing/20260616_135403/aruco_marker_poses.csv b/test/homing/20260616_135403/aruco_marker_poses.csv new file mode 100644 index 0000000..8941026 --- /dev/null +++ b/test/homing/20260616_135403/aruco_marker_poses.csv @@ -0,0 +1,38 @@ +marker_id,link,set,num_cameras,x_mm,y_mm,z_mm,nx,ny,nz,model_x_mm,model_y_mm,model_z_mm,dist_to_model_mm,delta_z_mm,edge_length_mm +47,Board,A0,2,344.58,-286.64,-27.6,0.04311,0.02757,0.99869,344.23,-286.54,-27.3,0.468,-0.296,24.33 +48,Board,A0,2,688.84,-321.23,-28.04,-0.01123,0.01593,0.99981,688.69,-320.72,-27.3,0.916,-0.744,23.76 +49,Board,A0,2,1003.44,158.28,-23.56,0.03712,0.16967,0.9848,1006.0,158.33,-27.3,4.532,3.742,25.38 +50,Board,A0,2,571.4,211.86,-26.17,-0.03364,0.09267,0.99513,573.41,211.86,-27.3,2.306,1.126,23.73 +54,Board,A0,3,342.32,-330.29,-27.2,-0.00623,-0.01398,0.99988,342.27,-330.59,-27.3,0.324,0.101,23.63 +55,Board,A0,2,283.67,-262.3,-26.44,-0.01462,0.02484,0.99958,283.72,-262.58,-27.3,0.907,0.86,23.52 +57,Board,A0,3,602.8,-364.19,-27.67,0.04107,0.01127,0.99909,602.86,-364.05,-27.3,0.4,-0.369,24.09 +59,Board,A0,3,625.74,-278.96,-27.4,0.00129,-0.00613,0.99998,626.21,-278.75,-27.3,0.524,-0.095,23.65 +62,Board,A0,2,404.33,-175.23,-27.01,0.03141,0.00796,0.99947,404.7,-175.1,-27.3,0.488,0.292,23.63 +65,Board,A0,2,803.76,-298.28,-27.61,0.00345,-0.00657,0.99997,803.39,-297.37,-27.3,1.029,-0.31,23.61 +71,Board,A0,2,749.25,-284.72,-27.22,0.01682,-0.04064,0.99903,749.75,-284.01,-27.3,0.87,0.078,24.04 +78,Board,A0,2,823.49,-345.92,-27.85,-0.03052,0.05345,0.9981,823.11,-344.38,-27.3,1.681,-0.546,23.2 +79,Board,A0,2,312.04,-158.99,-26.74,0.00171,-0.01259,0.99992,312.3,-159.11,-27.3,0.633,0.564,23.78 +80,Board,A0,2,865.63,-337.32,-28.92,0.01227,-0.02517,0.99961,863.59,-335.92,-27.3,2.957,-1.618,23.64 +90,Board,A0,2,639.67,316.26,-24.64,0.04449,0.06811,0.99669,643.17,316.43,-27.3,4.401,2.664,24.37 +93,Board,A0,2,932.92,143.9,-24.6,0.05916,0.07316,0.99556,934.88,143.6,-27.3,3.349,2.696,24.89 +96,Board,A0,2,368.69,-186.25,-26.59,-0.01104,0.04799,0.99879,369.77,-186.49,-27.3,1.314,0.71,23.46 +97,Board,A0,3,304.1,-359.23,-26.58,0.04968,-0.00156,0.99876,304.35,-359.67,-27.3,0.876,0.718,24.07 +98,Board,A0,2,572.36,314.55,-25.25,0.02528,0.07501,0.99686,575.27,315.06,-27.3,3.592,2.046,23.83 +99,Board,A0,2,961.91,-323.25,-29.4,0.05592,-0.01506,0.99832,959.16,-321.55,-27.3,3.857,-2.097,23.76 +102,Board,A0,3,649.16,-223.32,-27.42,0.03375,0.00827,0.9994,649.69,-223.0,-27.3,0.631,-0.12,23.93 +121,Ellbow,,2,390.15,-69.52,242.3,0.03439,0.41089,0.91104,,,,,,24.28 +129,Ellbow,,2,393.15,-98.82,239.84,0.02674,-0.30142,0.95312,,,,,,23.87 +132,Ellbow,,2,356.51,-98.86,240.22,0.01444,-0.33104,0.94351,,,,,,23.49 +143,Arm2,,3,368.86,-264.52,166.84,-0.69002,-0.25968,0.6756,,,,,,24.07 +144,Arm2,,3,357.75,-190.4,168.63,-0.99893,0.00677,0.0458,,,,,,24.07 +146,Arm2,,3,369.04,-199.37,191.89,-0.6848,-0.23781,0.68884,,,,,,23.91 +148,Arm2,,3,357.62,-289.69,130.25,-0.99986,0.00281,0.01658,,,,,,24.53 +180,unknown,,2,378.21,-389.74,142.15,-0.87295,-0.36214,0.32681,,,,,,23.72 +217,unknown,,2,734.78,-6.24,-7.48,0.02233,0.05488,0.99824,,,,,,23.1 +229,Arm1,,2,301.97,-63.1,238.71,0.02138,0.63249,0.77428,,,,,,24.66 +243,Arm1,,2,304.37,-113.71,230.69,0.01932,-0.7752,0.63143,,,,,,23.8 + +camera_id,x_mm,y_mm,z_mm,dir_x,dir_y,dir_z +cam0,-163.33,21.56,407.19,0.84979,-0.38898,-0.35573 +cam1,-232.11,-598.65,855.46,0.51811,0.43562,-0.73607 +cam2,1.65,142.16,837.04,0.63237,-0.31273,-0.70873 diff --git a/test/homing/20260616_135403/aruco_marker_poses.json b/test/homing/20260616_135403/aruco_marker_poses.json new file mode 100644 index 0000000..1d38f95 --- /dev/null +++ b/test/homing/20260616_135403/aruco_marker_poses.json @@ -0,0 +1,1475 @@ +{ + "schema_version": "1.1", + "stage": "corner_marker_poses", + "created_utc": "2026-06-16T13:54:16Z", + "summary": { + "num_cameras": 3, + "num_markers": 32 + }, + "cameras": [ + { + "camera_id": "cam0", + "position_m": [ + -0.16333306697453298, + 0.02155645607244816, + 0.40719292609738006 + ], + "position_mm": [ + -163.33306697453298, + 21.55645607244816, + 407.19292609738005 + ], + "direction": [ + 0.8497928977012634, + -0.3889799416065216, + -0.3557339012622833 + ] + }, + { + "camera_id": "cam1", + "position_m": [ + -0.2321075096750551, + -0.5986547164858269, + 0.8554586076108102 + ], + "position_mm": [ + -232.1075096750551, + -598.654716485827, + 855.4586076108102 + ], + "direction": [ + 0.5181058645248413, + 0.4356212913990021, + -0.7360709309577942 + ] + }, + { + "camera_id": "cam2", + "position_m": [ + 0.001646631995491088, + 0.14216474537525947, + 0.837037004220467 + ], + "position_mm": [ + 1.646631995491088, + 142.16474537525949, + 837.037004220467 + ], + "direction": [ + 0.6323733329772949, + -0.3127302825450897, + -0.708733856678009 + ] + } + ], + "markers": [ + { + "marker_id": 47, + "link": "Board", + "set": "A0", + "position_m": [ + 0.3445802661807943, + -0.2866365588203198, + -0.027595706991967436 + ], + "position_mm": [ + 344.5802661807943, + -286.6365588203198, + -27.595706991967436 + ], + "normal": [ + 0.04310782365120261, + 0.027571925337533287, + 0.9986898940478162 + ], + "corners_m": [ + [ + 0.33177972121451893, + -0.29812414257529846, + -0.026200683044009073 + ], + [ + 0.3328774050243186, + -0.2745956823630415, + -0.02797310061096972 + ], + [ + 0.3568622163927172, + -0.274627955644499, + -0.02792826992853315 + ], + [ + 0.3568017220916224, + -0.2991984546984403, + -0.028280774384357804 + ] + ], + "num_cameras": 2, + "edge_length_mm": 24.327476293991314 + }, + { + "marker_id": 48, + "link": "Board", + "set": "A0", + "position_m": [ + 0.6888379537863614, + -0.32123342482864736, + -0.028043641655388526 + ], + "position_mm": [ + 688.8379537863614, + -321.23342482864734, + -28.043641655388527 + ], + "normal": [ + -0.011229971776473483, + 0.015930534802471752, + 0.9998100348540251 + ], + "corners_m": [ + [ + 0.6776831156909401, + -0.33301534539292754, + -0.028894075492442984 + ], + [ + 0.6763884724520206, + -0.30943087744765413, + -0.02756256096660154 + ], + [ + 0.7014494063540948, + -0.30928467233199675, + -0.028887296709807254 + ], + [ + 0.6998308206483894, + -0.33320280414201103, + -0.026830633452702327 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.764782512781743 + }, + { + "marker_id": 49, + "link": "Board", + "set": "A0", + "position_m": [ + 1.0034439668408182, + 0.1582796873516887, + -0.023558057944871105 + ], + "position_mm": [ + 1003.4439668408181, + 158.27968735168872, + -23.558057944871106 + ], + "normal": [ + 0.03711702980064151, + 0.1696657414995147, + 0.9848024483418989 + ], + "corners_m": [ + [ + 0.989095855379623, + 0.1463122194729791, + -0.02119534517697631 + ], + [ + 0.9925350933256544, + 0.17042797437467472, + -0.025037473990803995 + ], + [ + 1.020021191688597, + 0.17048432309042552, + -0.02648205590497139 + ], + [ + 1.0121237269693986, + 0.14589423246867547, + -0.021517356706732733 + ] + ], + "num_cameras": 2, + "edge_length_mm": 25.379730049583017 + }, + { + "marker_id": 50, + "link": "Board", + "set": "A0", + "position_m": [ + 0.5713978237455523, + 0.21186459341774222, + -0.026174413153067157 + ], + "position_mm": [ + 571.3978237455523, + 211.8645934177422, + -26.174413153067157 + ], + "normal": [ + -0.03364146415909568, + 0.09266934278687067, + 0.9951284564299635 + ], + "corners_m": [ + [ + 0.5597637749129332, + 0.19980071654536197, + -0.026013814200645552 + ], + [ + 0.559868954747822, + 0.22399423777803001, + -0.02716969438075175 + ], + [ + 0.5840323197492249, + 0.22382264566196589, + -0.02738496696266599 + ], + [ + 0.5819262455722289, + 0.19984077368561104, + -0.024129177068205335 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.730525980317363 + }, + { + "marker_id": 54, + "link": "Board", + "set": "A0", + "position_m": [ + 0.3423221337407486, + -0.3302862329652668, + -0.02719916984502054 + ], + "position_mm": [ + 342.3221337407486, + -330.28623296526683, + -27.19916984502054 + ], + "normal": [ + -0.006229956762067589, + -0.013978285444372015, + 0.9998828907300986 + ], + "corners_m": [ + [ + 0.3304893607568278, + -0.34233578317687013, + -0.027431938909868902 + ], + [ + 0.3308868702714526, + -0.3183722643224975, + -0.02711347354276627 + ], + [ + 0.35390817342342595, + -0.31821329618424576, + -0.026948611499644913 + ], + [ + 0.3540041305112883, + -0.342223588177454, + -0.027302655427802063 + ] + ], + "num_cameras": 3, + "edge_length_mm": 23.62996507372435 + }, + { + "marker_id": 55, + "link": "Board", + "set": "A0", + "position_m": [ + 0.28367498282257686, + -0.2622953533227562, + -0.02644030729481294 + ], + "position_mm": [ + 283.67498282257685, + -262.2953533227562, + -26.440307294812943 + ], + "normal": [ + -0.014622345910006579, + 0.02484429461597815, + 0.9995843876457469 + ], + "corners_m": [ + [ + 0.2716026412186938, + -0.27372096691379566, + -0.026851743858965434 + ], + [ + 0.27208404695663146, + -0.25045501768427375, + -0.026399332166523043 + ], + [ + 0.29608918626096836, + -0.25083230650317245, + -0.027045437201262054 + ], + [ + 0.2949240568540139, + -0.274173122189783, + -0.025464715952501223 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.5206000107747 + }, + { + "marker_id": 57, + "link": "Board", + "set": "A0", + "position_m": [ + 0.6028038469904264, + -0.36419368317203493, + -0.027668954536220636 + ], + "position_mm": [ + 602.8038469904265, + -364.1936831720349, + -27.668954536220635 + ], + "normal": [ + 0.04107026026268773, + 0.011271538684597517, + 0.9990926814553477 + ], + "corners_m": [ + [ + 0.5901431051975092, + -0.37617796164737305, + -0.027034455695221393 + ], + [ + 0.5916495610912915, + -0.35174994799941534, + -0.027329156164670295 + ], + [ + 0.6151779881238257, + -0.35233451229470736, + -0.028333308347297973 + ], + [ + 0.6142447335490792, + -0.376512310746644, + -0.027978897937692888 + ] + ], + "num_cameras": 3, + "edge_length_mm": 24.08853388332982 + }, + { + "marker_id": 59, + "link": "Board", + "set": "A0", + "position_m": [ + 0.6257396088323288, + -0.27896047281059366, + -0.027395327050073137 + ], + "position_mm": [ + 625.7396088323288, + -278.96047281059367, + -27.39532705007314 + ], + "normal": [ + 0.0012885466896850764, + -0.006134512017302279, + 0.9999803535118769 + ], + "corners_m": [ + [ + 0.6139753007799958, + -0.29069430541651786, + -0.027699439532587366 + ], + [ + 0.6143483561569651, + -0.2665837891502431, + -0.027059216222933436 + ], + [ + 0.6375871421402179, + -0.2672221936212652, + -0.027584012767631862 + ], + [ + 0.6370476362521366, + -0.2913416030543485, + -0.027238639677139888 + ] + ], + "num_cameras": 3, + "edge_length_mm": 23.647325832569802 + }, + { + "marker_id": 62, + "link": "Board", + "set": "A0", + "position_m": [ + 0.40433253917249984, + -0.17523222476037187, + -0.027007970340759455 + ], + "position_mm": [ + 404.3325391724998, + -175.23222476037188, + -27.007970340759453 + ], + "normal": [ + 0.031406775346439424, + 0.007963982306939954, + 0.9994749568889423 + ], + "corners_m": [ + [ + 0.3928025532720771, + -0.18741998348796068, + -0.026740818379054055 + ], + [ + 0.39267351199243, + -0.16287894031049188, + -0.026567307622336073 + ], + [ + 0.4170409028049344, + -0.16359369382442795, + -0.02768114346759748 + ], + [ + 0.4148131886205579, + -0.18703628141860695, + -0.02704261189405021 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.629550310788268 + }, + { + "marker_id": 65, + "link": "Board", + "set": "A0", + "position_m": [ + 0.8037623972395774, + -0.2982778763403739, + -0.02761039825460549 + ], + "position_mm": [ + 803.7623972395775, + -298.2778763403739, + -27.610398254605492 + ], + "normal": [ + 0.0034496052848410745, + -0.006573801008354946, + 0.9999724423021273 + ], + "corners_m": [ + [ + 0.792103862615542, + -0.31048980745912813, + -0.02782171161430806 + ], + [ + 0.7923491054035006, + -0.28611857603416274, + -0.027329003014617635 + ], + [ + 0.8160382971455206, + -0.2863150556481297, + -0.027739720641745104 + ], + [ + 0.8145583237937467, + -0.31018806622007494, + -0.027551157747751163 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.61217853167928 + }, + { + "marker_id": 71, + "link": "Board", + "set": "A0", + "position_m": [ + 0.7492479980087581, + -0.284716361677386, + -0.0272221539336078 + ], + "position_mm": [ + 749.247998008758, + -284.71636167738603, + -27.2221539336078 + ], + "normal": [ + 0.01682155811919729, + -0.04063520761509643, + 0.9990324394555568 + ], + "corners_m": [ + [ + 0.7373938833888753, + -0.2966989077554397, + -0.027511945066312635 + ], + [ + 0.7371625709747889, + -0.2726451126600731, + -0.02652565889122269 + ], + [ + 0.7610681122749338, + -0.2726667330959002, + -0.02693306444629342 + ], + [ + 0.7613674253964343, + -0.2968546931981311, + -0.027917947330602457 + ] + ], + "num_cameras": 2, + "edge_length_mm": 24.042869952146 + }, + { + "marker_id": 78, + "link": "Board", + "set": "A0", + "position_m": [ + 0.8234872472655556, + -0.34592413976280856, + -0.02784642068077424 + ], + "position_mm": [ + 823.4872472655555, + -345.9241397628086, + -27.84642068077424 + ], + "normal": [ + -0.030521722574832374, + 0.05344668369249434, + 0.9981041410861592 + ], + "corners_m": [ + [ + 0.811225993791232, + -0.3575324744607645, + -0.027374264053630453 + ], + [ + 0.8127485586830915, + -0.3342622325883621, + -0.02902074395039373 + ], + [ + 0.8359425384779572, + -0.33429118167606975, + -0.02786702663982139 + ], + [ + 0.8340318981099416, + -0.35761067032603794, + -0.02712364807925139 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.204394173386913 + }, + { + "marker_id": 79, + "link": "Board", + "set": "A0", + "position_m": [ + 0.31203819298219365, + -0.1589890769945589, + -0.026736271165473627 + ], + "position_mm": [ + 312.03819298219366, + -158.9890769945589, + -26.736271165473628 + ], + "normal": [ + 0.0017080799854182014, + -0.01259173677185738, + 0.9999192620546079 + ], + "corners_m": [ + [ + 0.2999043343963301, + -0.17066688503633048, + -0.027125876116894553 + ], + [ + 0.30012935776198485, + -0.1471267286425523, + -0.026308563046205068 + ], + [ + 0.32441363394157585, + -0.14735816717015418, + -0.026870079113269652 + ], + [ + 0.3237054458288839, + -0.17080452712919855, + -0.02664056638552524 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.777979348713405 + }, + { + "marker_id": 80, + "link": "Board", + "set": "A0", + "position_m": [ + 0.865633184762805, + -0.3373165425450041, + -0.02891843450366592 + ], + "position_mm": [ + 865.6331847628051, + -337.3165425450041, + -28.91843450366592 + ], + "normal": [ + 0.012274310797239684, + -0.025169629451619047, + 0.99960783862859 + ], + "corners_m": [ + [ + 0.8536435332557785, + -0.34926220978978945, + -0.02909651379485289 + ], + [ + 0.8541978705180014, + -0.3250591410088834, + -0.02844466185314489 + ], + [ + 0.8775188377172646, + -0.3257344028237989, + -0.028798236958582128 + ], + [ + 0.8771724975601755, + -0.34921041655754465, + -0.02933432540808378 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.641630380471753 + }, + { + "marker_id": 90, + "link": "Board", + "set": "A0", + "position_m": [ + 0.6396707734906751, + 0.316263369208645, + -0.024636225561658752 + ], + "position_mm": [ + 639.6707734906752, + 316.26336920864503, + -24.63622556165875 + ], + "normal": [ + 0.04448908621716311, + 0.06810865305243446, + 0.9966854732496833 + ], + "corners_m": [ + [ + 0.626412788738474, + 0.30361031768377295, + -0.02320355789358003 + ], + [ + 0.6293951910342328, + 0.32869841890526463, + -0.025002751759491734 + ], + [ + 0.6525396398752592, + 0.328804597985651, + -0.02609241777905743 + ], + [ + 0.6503354743147344, + 0.3039401422598914, + -0.0242461748145058 + ] + ], + "num_cameras": 2, + "edge_length_mm": 24.36921782792395 + }, + { + "marker_id": 93, + "link": "Board", + "set": "A0", + "position_m": [ + 0.9329160071186635, + 0.14390185623544005, + -0.024604422426352072 + ], + "position_mm": [ + 932.9160071186635, + 143.90185623544005, + -24.604422426352073 + ], + "normal": [ + 0.059162928937214296, + 0.07315863508585185, + 0.9955639416692156 + ], + "corners_m": [ + [ + 0.9192642178268108, + 0.13144948997121875, + -0.02322428188028512 + ], + [ + 0.9216138128671181, + 0.15611723492112303, + -0.024495823743826296 + ], + [ + 0.9469411766572102, + 0.15621706756002865, + -0.026680005067826435 + ], + [ + 0.9438448211235154, + 0.13182363248938975, + -0.02401757901347044 + ] + ], + "num_cameras": 2, + "edge_length_mm": 24.890672817148307 + }, + { + "marker_id": 96, + "link": "Board", + "set": "A0", + "position_m": [ + 0.36869109193371175, + -0.18624928244612593, + -0.026589878159148345 + ], + "position_mm": [ + 368.69109193371173, + -186.24928244612593, + -26.589878159148345 + ], + "normal": [ + -0.01104379539808322, + 0.04799290617968413, + 0.9987866216262777 + ], + "corners_m": [ + [ + 0.3568245400273825, + -0.19819008296771776, + -0.026550460510556883 + ], + [ + 0.35758667825865353, + -0.17391898386085727, + -0.026922821621411817 + ], + [ + 0.3811441556027597, + -0.17473502767119492, + -0.027400437579138938 + ], + [ + 0.37920899384605133, + -0.19815303528473377, + -0.02548579292548575 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.4619638371913 + }, + { + "marker_id": 97, + "link": "Board", + "set": "A0", + "position_m": [ + 0.30410043195918296, + -0.3592344699594442, + -0.026582080605434693 + ], + "position_mm": [ + 304.10043195918297, + -359.2344699594442, + -26.582080605434694 + ], + "normal": [ + 0.04968023999703016, + -0.0015593783560857721, + 0.998763957145521 + ], + "corners_m": [ + [ + 0.291901239754855, + -0.37090403894381474, + -0.025724239126786008 + ], + [ + 0.2921924166831498, + -0.34698079062689285, + -0.026238009587434268 + ], + [ + 0.3164111552904055, + -0.34751273936750054, + -0.026909978959408512 + ], + [ + 0.3158969161083216, + -0.37154031089956846, + -0.027456094748109994 + ] + ], + "num_cameras": 3, + "edge_length_mm": 24.067554138967534 + }, + { + "marker_id": 98, + "link": "Board", + "set": "A0", + "position_m": [ + 0.5723613110373091, + 0.3145523810240505, + -0.025253691642093123 + ], + "position_mm": [ + 572.3613110373092, + 314.5523810240505, + -25.253691642093123 + ], + "normal": [ + 0.02527806096630464, + 0.07501113696905186, + 0.9968622517501573 + ], + "corners_m": [ + [ + 0.5600431371093014, + 0.3023793568884498, + -0.023892307087665078 + ], + [ + 0.5616658155442286, + 0.326787173464032, + -0.02603226295468922 + ], + [ + 0.5850318111010542, + 0.3267901523803972, + -0.02636718761833068 + ], + [ + 0.5827044803946522, + 0.30225284136332276, + -0.024723008907687506 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.82566236501942 + }, + { + "marker_id": 99, + "link": "Board", + "set": "A0", + "position_m": [ + 0.9619134507804771, + -0.32325306075963334, + -0.02939715826755801 + ], + "position_mm": [ + 961.9134507804771, + -323.25306075963334, + -29.39715826755801 + ], + "normal": [ + 0.0559227169890236, + -0.01505587143692167, + 0.9983215766774955 + ], + "corners_m": [ + [ + 0.949995527034773, + -0.3348045195163412, + -0.0292177491680873 + ], + [ + 0.9494036042074854, + -0.31160588044448784, + -0.02822666085544787 + ], + [ + 0.9745885415670179, + -0.31188732698791183, + -0.030234961844415653 + ], + [ + 0.973666130312632, + -0.3347145160897925, + -0.02990926120228121 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.755701833740954 + }, + { + "marker_id": 102, + "link": "Board", + "set": "A0", + "position_m": [ + 0.6491600296406291, + -0.223320680322068, + -0.027420124430084465 + ], + "position_mm": [ + 649.1600296406291, + -223.320680322068, + -27.420124430084464 + ], + "normal": [ + 0.033750853531453746, + 0.008266361245721665, + 0.9993960912259231 + ], + "corners_m": [ + [ + 0.636898359831101, + -0.23540090531011082, + -0.026684516201313267 + ], + [ + 0.6379129489752144, + -0.21086995456194846, + -0.02737164148096594 + ], + [ + 0.6610806543269109, + -0.2114564576556356, + -0.027688263650884264 + ], + [ + 0.6607481554292901, + -0.23555540376057715, + -0.027936076387174394 + ] + ], + "num_cameras": 3, + "edge_length_mm": 23.931113180611295 + }, + { + "marker_id": 121, + "link": "Ellbow", + "set": "", + "position_m": [ + 0.3901497637653839, + -0.06952089149893005, + 0.24230234406090545 + ], + "position_mm": [ + 390.1497637653839, + -69.52089149893006, + 242.30234406090545 + ], + "normal": [ + 0.034392896298513, + 0.41088943789058674, + 0.911036222394125 + ], + "corners_m": [ + [ + 0.37838360809029914, + -0.05853941624059102, + 0.23790656887177059 + ], + [ + 0.4026449355429262, + -0.05857339182689693, + 0.23678024096041575 + ], + [ + 0.40211836737923934, + -0.0804084570288521, + 0.24687208796072044 + ], + [ + 0.37745214404907074, + -0.08056230089938016, + 0.24765047845071503 + ] + ], + "num_cameras": 2, + "edge_length_mm": 24.28170916895318 + }, + { + "marker_id": 129, + "link": "Ellbow", + "set": "", + "position_m": [ + 0.39314811834482266, + -0.09881702950408094, + 0.23983984334518754 + ], + "position_mm": [ + 393.14811834482265, + -98.81702950408095, + 239.83984334518755 + ], + "normal": [ + 0.02674288744599537, + -0.3014215334448578, + 0.9531158781317208 + ], + "corners_m": [ + [ + 0.3813484359677588, + -0.08769382021515108, + 0.24405515144724016 + ], + [ + 0.40609263965227266, + -0.08731064466024532, + 0.2427395265477092 + ], + [ + 0.4041382386384145, + -0.10989838631810125, + 0.23643012383715842 + ], + [ + 0.3810131591208447, + -0.11036526682282613, + 0.2361345715486423 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.86625678661116 + }, + { + "marker_id": 132, + "link": "Ellbow", + "set": "", + "position_m": [ + 0.3565068403881417, + -0.0988605226538924, + 0.24021988813739403 + ], + "position_mm": [ + 356.50684038814165, + -98.8605226538924, + 240.21988813739404 + ], + "normal": [ + 0.014441779757275714, + -0.33103861147726293, + 0.9435066892760475 + ], + "corners_m": [ + [ + 0.34553910253045006, + -0.08768304619204587, + 0.24413276263778466 + ], + [ + 0.36900853506102826, + -0.08801303866803714, + 0.24400985528303668 + ], + [ + 0.36759616255216837, + -0.1100154666130218, + 0.23596291325757984 + ], + [ + 0.34388356140892, + -0.10973053914246483, + 0.2367740213711749 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.493141558983677 + }, + { + "marker_id": 143, + "link": "Arm2", + "set": "", + "position_m": [ + 0.3688637236756218, + -0.2645159960428304, + 0.1668367801437439 + ], + "position_mm": [ + 368.8637236756218, + -264.5159960428304, + 166.8367801437439 + ], + "normal": [ + -0.6900209143498263, + -0.2596843981834043, + 0.675599845396632 + ], + "corners_m": [ + [ + 0.3603376953554717, + -0.25043436193352286, + 0.16343987826756787 + ], + [ + 0.37729683200708797, + -0.25581023654206275, + 0.17889565063142182 + ], + [ + 0.3776208921695139, + -0.27884249475355477, + 0.17017623692797526 + ], + [ + 0.36019947517041356, + -0.27297689094218097, + 0.1548353547480107 + ] + ], + "num_cameras": 3, + "edge_length_mm": 24.06710180556625 + }, + { + "marker_id": 144, + "link": "Arm2", + "set": "", + "position_m": [ + 0.35774780671335227, + -0.19039676937224098, + 0.1686349586197259 + ], + "position_mm": [ + 357.74780671335225, + -190.39676937224098, + 168.63495861972592 + ], + "normal": [ + -0.998927818009761, + 0.0067729990575209915, + 0.04579673449084148 + ], + "corners_m": [ + [ + 0.35745257400508057, + -0.1746713861223481, + 0.16168288506091305 + ], + [ + 0.35858638894406963, + -0.1836847970706625, + 0.18414194082827967 + ], + [ + 0.35786957978777867, + -0.2062118846535816, + 0.17543876267615316 + ], + [ + 0.3570826841164803, + -0.19701900964237182, + 0.1532762459135578 + ] + ], + "num_cameras": 3, + "edge_length_mm": 24.068246426456152 + }, + { + "marker_id": 146, + "link": "Arm2", + "set": "", + "position_m": [ + 0.369039867704819, + -0.19936570696053593, + 0.1918909019576337 + ], + "position_mm": [ + 369.039867704819, + -199.36570696053593, + 191.8909019576337 + ], + "normal": [ + -0.6847975660044873, + -0.23780733214207897, + 0.6888395795639192 + ], + "corners_m": [ + [ + 0.3605399259381636, + -0.18554104813090985, + 0.18784060178367684 + ], + [ + 0.3776736270247783, + -0.19072197440424354, + 0.20382028661422696 + ], + [ + 0.37789326083410907, + -0.21339943565822453, + 0.19548564179262984 + ], + [ + 0.360052657022225, + -0.20780036964876583, + 0.18041707764000112 + ] + ], + "num_cameras": 3, + "edge_length_mm": 23.910166870576152 + }, + { + "marker_id": 148, + "link": "Arm2", + "set": "", + "position_m": [ + 0.35762129270791054, + -0.289685359209832, + 0.13024815281438853 + ], + "position_mm": [ + 357.6212927079105, + -289.68535920983203, + 130.24815281438853 + ], + "normal": [ + -0.9998585245430327, + 0.002811592044324098, + 0.016583903304286024 + ], + "corners_m": [ + [ + 0.3575695572464454, + -0.27398317330955835, + 0.1232329938785585 + ], + [ + 0.35788647142144697, + -0.282579952068951, + 0.1462597653652103 + ], + [ + 0.3577128855141524, + -0.3054249134402363, + 0.13720655978445973 + ], + [ + 0.3573162566495974, + -0.2967533980205825, + 0.11429329222932562 + ] + ], + "num_cameras": 3, + "edge_length_mm": 24.530319583443713 + }, + { + "marker_id": 180, + "link": "unknown", + "set": "", + "position_m": [ + 0.3782116380498978, + -0.3897383135914678, + 0.14214639816388747 + ], + "position_mm": [ + 378.21163804989783, + -389.73831359146783, + 142.14639816388745 + ], + "normal": [ + -0.8729539320383446, + -0.3621373690766714, + 0.32681486878203714 + ], + "corners_m": [ + [ + 0.38401308073411905, + -0.40594597751200473, + 0.14059935926649622 + ], + [ + 0.3734314895878442, + -0.3910305864821906, + 0.12707412479383176 + ], + [ + 0.37165500787221933, + -0.3729862560589913, + 0.14403234644813195 + ], + [ + 0.3837469740054087, + -0.38899043431268454, + 0.15687976214708993 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.724969103722778 + }, + { + "marker_id": 217, + "link": "unknown", + "set": "", + "position_m": [ + 0.7347818661823821, + -0.006241255290666764, + -0.007481101946069666 + ], + "position_mm": [ + 734.781866182382, + -6.241255290666764, + -7.481101946069666 + ], + "normal": [ + 0.022329296359687223, + 0.054878206010792074, + 0.9982433496042528 + ], + "corners_m": [ + [ + 0.7245926805457173, + 0.0053799702333561655, + -0.008018146420400182 + ], + [ + 0.7470082910923704, + 0.005101926050278084, + -0.00825609143208962 + ], + [ + 0.7456323562576178, + -0.018278178813842774, + -0.007176860593789352 + ], + [ + 0.7218941368338226, + -0.017168738632458533, + -0.006473309337999509 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.100161204749885 + }, + { + "marker_id": 229, + "link": "Arm1", + "set": "", + "position_m": [ + 0.30196791805468276, + -0.06310132105546937, + 0.2387134679183342 + ], + "position_mm": [ + 301.96791805468274, + -63.10132105546937, + 238.7134679183342 + ], + "normal": [ + 0.02138045930435849, + 0.6324856769110531, + 0.7742769171700146 + ], + "corners_m": [ + [ + 0.28990831222342456, + -0.05381878608671732, + 0.23110533799877386 + ], + [ + 0.3140761548034953, + -0.05354163304797192, + 0.23092687022350694 + ], + [ + 0.31480714183182346, + -0.07277313091670934, + 0.24592475783171713 + ], + [ + 0.28908006335998765, + -0.07227173417047889, + 0.24689690561933883 + ] + ], + "num_cameras": 2, + "edge_length_mm": 24.655321733810165 + }, + { + "marker_id": 243, + "link": "Arm1", + "set": "", + "position_m": [ + 0.3043741236660767, + -0.11370816323758302, + 0.23069021264600031 + ], + "position_mm": [ + 304.3741236660767, + -113.70816323758302, + 230.6902126460003 + ], + "normal": [ + 0.019316853599392204, + -0.775195930590418, + 0.6314254733245053 + ], + "corners_m": [ + [ + 0.2922006427194099, + -0.10646420202285638, + 0.23983088532194383 + ], + [ + 0.3169191799731236, + -0.10619216985018437, + 0.23966239254937083 + ], + [ + 0.3160519983397408, + -0.1206354446521183, + 0.22169442989152172 + ], + [ + 0.2923246736320326, + -0.12154083642517303, + 0.22157314282116494 + ] + ], + "num_cameras": 2, + "edge_length_mm": 23.803379169054526 + } + ] +} \ No newline at end of file diff --git a/test/homing/20260616_135403/cam0.jpg b/test/homing/20260616_135403/cam0.jpg new file mode 100644 index 0000000..e1ccb34 Binary files /dev/null and b/test/homing/20260616_135403/cam0.jpg differ diff --git a/test/homing/20260616_135403/cam0_aruco_detection.json b/test/homing/20260616_135403/cam0_aruco_detection.json new file mode 100644 index 0000000..5610e3d --- /dev/null +++ b/test/homing/20260616_135403/cam0_aruco_detection.json @@ -0,0 +1,2252 @@ +{ + "schema_version": "1.0", + "created_utc": "2026-06-16T13:54:05Z", + "vision_config": { + "MarkerType": "DICT_4X4_250", + "MarkerSize": 0.025 + }, + "camera": { + "camera_id": "cam0", + "intrinsics_file": "/app/data/calibration/20260610_092149/cam0_calibration.npz", + "camera_matrix": [ + [ + 1424.7584228515625, + 0.0, + 635.95947265625 + ], + [ + 0.0, + 1421.5770263671875, + 482.1744384765625 + ], + [ + 0.0, + 0.0, + 1.0 + ] + ], + "distortion_coefficients": [ + 0.05634751915931702, + 0.33765655755996704, + 0.002130246954038739, + -0.004022662527859211, + -1.182201862335205 + ] + }, + "image": { + "image_file": "/app/data/homing/20260616_135403/cam0.jpg", + "image_sha256": "dc3e11a19f6649a40995c8b38747fe4648d63a39fcc440132c8fb22b07fd619e", + "width_px": 1280, + "height_px": 960 + }, + "aruco": { + "dictionary": "DICT_4X4_250", + "num_detected_markers": 19, + "num_rejected_candidates": 47 + }, + "detections": [ + { + "observation_id": "df088dc8-a1d0-4503-9c5b-a683029feee3", + "type": "aruco", + "marker_id": 197, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 398.0, + 542.0 + ], + [ + 455.0, + 584.0 + ], + [ + 402.0, + 640.0 + ], + [ + 350.0, + 598.0 + ] + ], + "center_px": [ + 401.25, + 591.0 + ], + "quality": { + "area_px": 5173.0, + "perimeter_px": 288.5058288574219, + "sharpness": { + "laplacian_var": 1366.2778067407633 + }, + "contrast": { + "p05": 4.0, + "p95": 138.0, + "dynamic_range": 134.0, + "mean_gray": 68.68954439252336, + "std_gray": 56.89578157274694 + }, + "geometry": { + "distance_to_center_norm": 0.32911473512649536, + "distance_to_border_px": 320.0 + }, + "edge_ratio": 1.1535046504161104, + "edge_lengths_px": [ + 70.80254364013672, + 77.10382843017578, + 66.84310150146484, + 73.75635528564453 + ] + }, + "confidence": 0.8669232496282214 + }, + { + "observation_id": "ff3955bc-9c9d-4706-9fa7-471751a3355d", + "type": "aruco", + "marker_id": 144, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 549.0, + 561.0 + ], + [ + 563.0, + 507.0 + ], + [ + 614.0, + 515.0 + ], + [ + 599.0, + 568.0 + ] + ], + "center_px": [ + 581.25, + 537.75 + ], + "quality": { + "area_px": 2810.5, + "perimeter_px": 212.9783172607422, + "sharpness": { + "laplacian_var": 1434.9367114346073 + }, + "contrast": { + "p05": 12.0, + "p95": 162.0, + "dynamic_range": 150.0, + "mean_gray": 70.44265809217578, + "std_gray": 62.50337767685843 + }, + "geometry": { + "distance_to_center_norm": 0.10297621786594391, + "distance_to_border_px": 392.0 + }, + "edge_ratio": 1.1049302732816488, + "edge_lengths_px": [ + 55.785301208496094, + 51.62363815307617, + 55.081756591796875, + 50.48762130737305 + ] + }, + "confidence": 0.9050344842394396 + }, + { + "observation_id": "40e51a32-c049-4eca-99ae-15c8f50b05b8", + "type": "aruco", + "marker_id": 229, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 275.0, + 523.0 + ], + [ + 259.0, + 501.0 + ], + [ + 309.0, + 449.0 + ], + [ + 326.0, + 468.0 + ] + ], + "center_px": [ + 292.25, + 485.25 + ], + "quality": { + "area_px": 1918.0, + "perimeter_px": 199.84346389770508, + "sharpness": { + "laplacian_var": 747.7363731727185 + }, + "contrast": { + "p05": 4.0, + "p95": 89.0, + "dynamic_range": 85.0, + "mean_gray": 29.77590176515733, + "std_gray": 30.638267337020793 + }, + "geometry": { + "distance_to_center_norm": 0.43473705649375916, + "distance_to_border_px": 259.0 + }, + "edge_ratio": 2.942003508101506, + "edge_lengths_px": [ + 27.20294189453125, + 72.13875579833984, + 25.495098114013672, + 75.00666809082031 + ] + }, + "confidence": 0.3399044213394927 + }, + { + "observation_id": "afeb877d-e06e-4786-8398-b9e8b7958a99", + "type": "aruco", + "marker_id": 146, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 565.0, + 496.0 + ], + [ + 558.0, + 447.0 + ], + [ + 606.0, + 454.0 + ], + [ + 615.0, + 502.0 + ] + ], + "center_px": [ + 586.0, + 474.75 + ], + "quality": { + "area_px": 2324.5, + "perimeter_px": 197.20038223266602, + "sharpness": { + "laplacian_var": 1975.566521567303 + }, + "contrast": { + "p05": 42.0, + "p95": 212.0, + "dynamic_range": 170.0, + "mean_gray": 103.28827674567584, + "std_gray": 65.85689198033644 + }, + "geometry": { + "distance_to_center_norm": 0.06781826168298721, + "distance_to_border_px": 447.0 + }, + "edge_ratio": 1.0381585074124267, + "edge_lengths_px": [ + 49.497474670410156, + 48.50773239135742, + 48.83646011352539, + 50.35871505737305 + ] + }, + "confidence": 0.9632440449700351 + }, + { + "observation_id": "6072d12c-6c44-4766-a947-76053ea6fc43", + "type": "aruco", + "marker_id": 148, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 755.0, + 590.0 + ], + [ + 769.0, + 540.0 + ], + [ + 812.0, + 547.0 + ], + [ + 797.0, + 597.0 + ] + ], + "center_px": [ + 783.25, + 568.5 + ], + "quality": { + "area_px": 2226.5, + "perimeter_px": 190.2699317932129, + "sharpness": { + "laplacian_var": 1804.6455467166209 + }, + "contrast": { + "p05": 15.0, + "p95": 171.0, + "dynamic_range": 156.0, + "mean_gray": 60.839554682383756, + "std_gray": 58.414680061530916 + }, + "geometry": { + "distance_to_center_norm": 0.21047866344451904, + "distance_to_border_px": 363.0 + }, + "edge_ratio": 1.2259827567269352, + "edge_lengths_px": [ + 51.92301940917969, + 43.5660400390625, + 52.201534271240234, + 42.57933807373047 + ] + }, + "confidence": 0.8156721573064761 + }, + { + "observation_id": "5b33df67-a49a-4b59-a10a-adaed5dc6c47", + "type": "aruco", + "marker_id": 143, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 703.0, + 518.0 + ], + [ + 695.0, + 472.0 + ], + [ + 739.0, + 480.0 + ], + [ + 748.0, + 525.0 + ] + ], + "center_px": [ + 721.25, + 498.75 + ], + "quality": { + "area_px": 1961.0, + "perimeter_px": 182.84419631958008, + "sharpness": { + "laplacian_var": 3252.997921344768 + }, + "contrast": { + "p05": 41.0, + "p95": 225.0, + "dynamic_range": 184.0, + "mean_gray": 115.87537537537537, + "std_gray": 71.50728827546703 + }, + "geometry": { + "distance_to_center_norm": 0.10423174500465393, + "distance_to_border_px": 435.0 + }, + "edge_ratio": 1.044030692025785, + "edge_lengths_px": [ + 46.69047164916992, + 44.72135925292969, + 45.89117431640625, + 45.54119110107422 + ] + }, + "confidence": 0.9578262474828686 + }, + { + "observation_id": "61ba4cf7-0281-4787-a823-9da33f408c7d", + "type": "aruco", + "marker_id": 147, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 667.0, + 606.0 + ], + [ + 692.0, + 570.0 + ], + [ + 737.0, + 576.0 + ], + [ + 713.0, + 612.0 + ] + ], + "center_px": [ + 702.25, + 591.0 + ], + "quality": { + "area_px": 1785.0, + "perimeter_px": 178.88372039794922, + "sharpness": { + "laplacian_var": 1239.04068142842 + }, + "contrast": { + "p05": 22.0, + "p95": 149.0, + "dynamic_range": 127.0, + "mean_gray": 56.83840947546531, + "std_gray": 45.819259210073554 + }, + "geometry": { + "distance_to_center_norm": 0.1590796858072281, + "distance_to_border_px": 348.0 + }, + "edge_ratio": 1.072181179402304, + "edge_lengths_px": [ + 43.8292121887207, + 45.39823913574219, + 43.26661682128906, + 46.389652252197266 + ] + }, + "confidence": 0.9326781883612787 + }, + { + "observation_id": "87e66650-0b2a-4973-bd33-473931ca06a3", + "type": "aruco", + "marker_id": 97, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1006.0, + 876.0 + ], + [ + 964.0, + 892.0 + ], + [ + 934.0, + 865.0 + ], + [ + 975.0, + 852.0 + ] + ], + "center_px": [ + 969.75, + 871.25 + ], + "quality": { + "area_px": 1500.5, + "perimeter_px": 167.5214958190918, + "sharpness": { + "laplacian_var": 3220.1269533420104 + }, + "contrast": { + "p05": 42.0, + "p95": 211.0, + "dynamic_range": 169.0, + "mean_gray": 123.25597609561753, + "std_gray": 67.9121709437583 + }, + "geometry": { + "distance_to_center_norm": 0.6395941376686096, + "distance_to_border_px": 68.0 + }, + "edge_ratio": 1.1464068007310906, + "edge_lengths_px": [ + 44.94440841674805, + 40.360870361328125, + 43.011627197265625, + 39.20458984375 + ] + }, + "confidence": 0.8722907081171155 + }, + { + "observation_id": "66bb495f-a78a-45db-9d10-e1afcefb1051", + "type": "aruco", + "marker_id": 96, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 624.0, + 914.0 + ], + [ + 576.0, + 930.0 + ], + [ + 558.0, + 902.0 + ], + [ + 604.0, + 886.0 + ] + ], + "center_px": [ + 590.5, + 908.0 + ], + "quality": { + "area_px": 1620.0, + "perimeter_px": 166.9955596923828, + "sharpness": { + "laplacian_var": 2179.8161747440595 + }, + "contrast": { + "p05": 14.0, + "p95": 183.0, + "dynamic_range": 169.0, + "mean_gray": 87.12454212454213, + "std_gray": 68.45354205344049 + }, + "geometry": { + "distance_to_center_norm": 0.5385661721229553, + "distance_to_border_px": 30.0 + }, + "edge_ratio": 1.5200228836230019, + "edge_lengths_px": [ + 50.59644317626953, + 33.2866325378418, + 48.703182220458984, + 34.4093017578125 + ] + }, + "confidence": 0.39473089942559886 + }, + { + "observation_id": "69e4ac68-3840-4bc4-9fcd-f4d869187f0a", + "type": "aruco", + "marker_id": 121, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 235.0, + 429.0 + ], + [ + 222.0, + 416.0 + ], + [ + 274.0, + 383.0 + ], + [ + 289.0, + 396.0 + ] + ], + "center_px": [ + 255.0, + 406.0 + ], + "quality": { + "area_px": 1151.0, + "perimeter_px": 163.10661697387695, + "sharpness": { + "laplacian_var": 1200.3608039813278 + }, + "contrast": { + "p05": 4.0, + "p95": 128.79999999999995, + "dynamic_range": 124.79999999999995, + "mean_gray": 43.36521739130435, + "std_gray": 44.78604244207729 + }, + "geometry": { + "distance_to_center_norm": 0.4900589883327484, + "distance_to_border_px": 222.0 + }, + "edge_ratio": 3.4422537882363975, + "edge_lengths_px": [ + 18.384777069091797, + 61.587337493896484, + 19.84943389892578, + 63.28506851196289 + ] + }, + "confidence": 0.2229159674268144 + }, + { + "observation_id": "036cfa2e-48be-48ce-9d55-997ab70213d8", + "type": "aruco", + "marker_id": 47, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 831.0, + 877.0 + ], + [ + 788.0, + 894.0 + ], + [ + 763.0, + 867.0 + ], + [ + 805.0, + 853.0 + ] + ], + "center_px": [ + 796.75, + 872.75 + ], + "quality": { + "area_px": 1479.0, + "perimeter_px": 162.69075393676758, + "sharpness": { + "laplacian_var": 2556.556842560553 + }, + "contrast": { + "p05": 28.0, + "p95": 196.04999999999995, + "dynamic_range": 168.04999999999995, + "mean_gray": 87.73235294117647, + "std_gray": 64.4212388278177 + }, + "geometry": { + "distance_to_center_norm": 0.5285935401916504, + "distance_to_border_px": 66.0 + }, + "edge_ratio": 1.3067776086123575, + "edge_lengths_px": [ + 46.2385139465332, + 36.79673767089844, + 44.271888732910156, + 35.38361358642578 + ] + }, + "confidence": 0.7545277738933825 + }, + { + "observation_id": "dc7d8e25-f886-4004-a791-09fdcfc1722e", + "type": "aruco", + "marker_id": 54, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 908.0, + 854.0 + ], + [ + 867.0, + 867.0 + ], + [ + 841.0, + 842.0 + ], + [ + 880.0, + 828.0 + ] + ], + "center_px": [ + 874.0, + 847.75 + ], + "quality": { + "area_px": 1384.5, + "perimeter_px": 158.7276496887207, + "sharpness": { + "laplacian_var": 2419.8744285997145 + }, + "contrast": { + "p05": 39.0, + "p95": 202.0, + "dynamic_range": 163.0, + "mean_gray": 76.6265560165975, + "std_gray": 52.46312239840887 + }, + "geometry": { + "distance_to_center_norm": 0.5448567271232605, + "distance_to_border_px": 93.0 + }, + "edge_ratio": 1.1924693383263332, + "edge_lengths_px": [ + 43.011627197265625, + 36.06937789916992, + 41.43669891357422, + 38.20994567871094 + ] + }, + "confidence": 0.7740240946534177 + }, + { + "observation_id": "c0c6da91-50b7-4761-99ff-522990e3abfc", + "type": "aruco", + "marker_id": 62, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 573.0, + 880.0 + ], + [ + 526.0, + 895.0 + ], + [ + 510.0, + 870.0 + ], + [ + 555.0, + 857.0 + ] + ], + "center_px": [ + 541.0, + 875.5 + ], + "quality": { + "area_px": 1342.0, + "perimeter_px": 155.0635471343994, + "sharpness": { + "laplacian_var": 1365.6762089822155 + }, + "contrast": { + "p05": 18.0, + "p95": 171.0, + "dynamic_range": 153.0, + "mean_gray": 46.17424242424242, + "std_gray": 46.06508837341269 + }, + "geometry": { + "distance_to_center_norm": 0.5096279978752136, + "distance_to_border_px": 65.0 + }, + "edge_ratio": 1.6892183290698066, + "edge_lengths_px": [ + 49.33558654785156, + 29.681644439697266, + 46.840152740478516, + 29.20616340637207 + ] + }, + "confidence": 0.5296335300596272 + }, + { + "observation_id": "c0c520e7-1924-4ecc-9c16-b8849374bade", + "type": "aruco", + "marker_id": 180, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 952.0, + 482.0 + ], + [ + 939.0, + 518.0 + ], + [ + 913.0, + 496.0 + ], + [ + 926.0, + 459.0 + ] + ], + "center_px": [ + 932.5, + 488.75 + ], + "quality": { + "area_px": 1241.5, + "perimeter_px": 146.26454162597656, + "sharpness": { + "laplacian_var": 5339.575640816327 + }, + "contrast": { + "p05": 61.0, + "p95": 220.0, + "dynamic_range": 159.0, + "mean_gray": 130.25714285714287, + "std_gray": 62.455333917079315 + }, + "geometry": { + "distance_to_center_norm": 0.3657885789871216, + "distance_to_border_px": 328.0 + }, + "edge_ratio": 1.1514608095177774, + "edge_lengths_px": [ + 38.27531814575195, + 34.058773040771484, + 39.217342376708984, + 34.71310806274414 + ] + }, + "confidence": 0.718797079175701 + }, + { + "observation_id": "35736521-098b-4032-8e15-79bb4d88591f", + "type": "aruco", + "marker_id": 85, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 719.0, + 718.0 + ], + [ + 682.0, + 729.0 + ], + [ + 665.0, + 712.0 + ], + [ + 700.0, + 701.0 + ] + ], + "center_px": [ + 691.5, + 715.0 + ], + "quality": { + "area_px": 810.0, + "perimeter_px": 124.82511901855469, + "sharpness": { + "laplacian_var": 2432.0126824391473 + }, + "contrast": { + "p05": 43.0, + "p95": 205.0, + "dynamic_range": 162.0, + "mean_gray": 138.00346020761245, + "std_gray": 61.275824201927946 + }, + "geometry": { + "distance_to_center_norm": 0.300721138715744, + "distance_to_border_px": 231.0 + }, + "edge_ratio": 1.6055699055386952, + "edge_lengths_px": [ + 38.60051727294922, + 24.041629791259766, + 36.68787384033203, + 25.495098114013672 + ] + }, + "confidence": 0.3363291739196003 + }, + { + "observation_id": "ccc1e229-6589-470f-865f-75164f684675", + "type": "aruco", + "marker_id": 105, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 634.0, + 723.0 + ], + [ + 596.0, + 734.0 + ], + [ + 582.0, + 716.0 + ], + [ + 617.0, + 707.0 + ] + ], + "center_px": [ + 607.25, + 720.0 + ], + "quality": { + "area_px": 775.5, + "perimeter_px": 121.84744834899902, + "sharpness": { + "laplacian_var": 1576.0316521139705 + }, + "contrast": { + "p05": 32.0, + "p95": 168.0, + "dynamic_range": 136.0, + "mean_gray": 63.4797794117647, + "std_gray": 42.449749219222376 + }, + "geometry": { + "distance_to_center_norm": 0.30278024077415466, + "distance_to_border_px": 226.0 + }, + "edge_ratio": 1.7348243158899683, + "edge_lengths_px": [ + 39.560081481933594, + 22.803508758544922, + 36.13862228393555, + 23.34523582458496 + ] + }, + "confidence": 0.29801288537668325 + }, + { + "observation_id": "5609a1e7-0552-4868-b7a6-851f4a45959b", + "type": "aruco", + "marker_id": 102, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 493.0, + 656.0 + ], + [ + 456.0, + 665.0 + ], + [ + 446.0, + 651.0 + ], + [ + 481.0, + 643.0 + ] + ], + "center_px": [ + 469.0, + 653.75 + ], + "quality": { + "area_px": 579.5, + "perimeter_px": 108.87796783447266, + "sharpness": { + "laplacian_var": 2972.6865259930178 + }, + "contrast": { + "p05": 50.0, + "p95": 188.89999999999998, + "dynamic_range": 138.89999999999998, + "mean_gray": 123.93300248138958, + "std_gray": 50.191968727397054 + }, + "geometry": { + "distance_to_center_norm": 0.30472853779792786, + "distance_to_border_px": 295.0 + }, + "edge_ratio": 2.2132890297678807, + "edge_lengths_px": [ + 38.07886505126953, + 17.20465087890625, + 35.902645111083984, + 17.69180679321289 + ] + }, + "confidence": 0.17455168671479393 + }, + { + "observation_id": "21abcb52-b215-484c-9f9a-8cdb0e3ba3b5", + "type": "aruco", + "marker_id": 57, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 716.0, + 632.0 + ], + [ + 682.0, + 640.0 + ], + [ + 667.0, + 628.0 + ], + [ + 699.0, + 619.0 + ] + ], + "center_px": [ + 691.0, + 629.75 + ], + "quality": { + "area_px": 548.5, + "perimeter_px": 108.78034400939941, + "sharpness": { + "laplacian_var": 3880.4598342530026 + }, + "contrast": { + "p05": 41.0, + "p95": 197.0, + "dynamic_range": 156.0, + "mean_gray": 109.88451443569554, + "std_gray": 55.46782469567618 + }, + "geometry": { + "distance_to_center_norm": 0.19774533808231354, + "distance_to_border_px": 320.0 + }, + "edge_ratio": 1.8183048687927728, + "edge_lengths_px": [ + 34.928497314453125, + 19.209373474121094, + 33.241539001464844, + 21.40093421936035 + ] + }, + "confidence": 0.20110305644698828 + }, + { + "observation_id": "30bfbaf4-8feb-411a-93eb-a42ac941f4eb", + "type": "aruco", + "marker_id": 59, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 584.0, + 650.0 + ], + [ + 550.0, + 658.0 + ], + [ + 538.0, + 644.0 + ], + [ + 572.0, + 636.0 + ] + ], + "center_px": [ + 561.0, + 647.0 + ], + "quality": { + "area_px": 572.0, + "perimeter_px": 106.73517227172852, + "sharpness": { + "laplacian_var": 2571.6664370982553 + }, + "contrast": { + "p05": 46.0, + "p95": 197.0, + "dynamic_range": 151.0, + "mean_gray": 126.15656565656566, + "std_gray": 55.398152362465865 + }, + "geometry": { + "distance_to_center_norm": 0.23092882335186005, + "distance_to_border_px": 302.0 + }, + "edge_ratio": 1.8942637379074172, + "edge_lengths_px": [ + 34.928497314453125, + 18.439088821411133, + 34.928497314453125, + 18.439088821411133 + ] + }, + "confidence": 0.20130952501608368 + } + ], + "rejected_candidates": [ + { + "image_points_px": [ + [ + 305.0, + 565.0 + ], + [ + 303.0, + 587.0 + ], + [ + 239.0, + 663.0 + ], + [ + 214.0, + 668.0 + ] + ], + "center_px": [ + 265.25, + 620.75 + ], + "area_px": 1688.0 + }, + { + "image_points_px": [ + [ + 232.0, + 441.0 + ], + [ + 237.0, + 475.0 + ], + [ + 223.0, + 525.0 + ], + [ + 218.0, + 456.0 + ] + ], + "center_px": [ + 227.5, + 474.25 + ], + "area_px": 883.5 + }, + { + "image_points_px": [ + [ + 467.0, + 420.0 + ], + [ + 516.0, + 428.0 + ], + [ + 521.0, + 433.0 + ], + [ + 473.0, + 426.0 + ] + ], + "center_px": [ + 494.25, + 426.75 + ], + "area_px": 225.5 + }, + { + "image_points_px": [ + [ + 1234.0, + 115.0 + ], + [ + 1233.0, + 135.0 + ], + [ + 1195.0, + 134.0 + ], + [ + 1198.0, + 118.0 + ] + ], + "center_px": [ + 1215.0, + 125.5 + ], + "area_px": 664.0 + }, + { + "image_points_px": [ + [ + 1080.0, + 367.0 + ], + [ + 1103.0, + 363.0 + ], + [ + 1122.0, + 368.0 + ], + [ + 1096.0, + 373.0 + ] + ], + "center_px": [ + 1100.25, + 367.75 + ], + "area_px": 213.5 + }, + { + "image_points_px": [ + [ + 757.0, + 494.0 + ], + [ + 795.0, + 503.0 + ], + [ + 784.0, + 511.0 + ], + [ + 762.0, + 503.0 + ] + ], + "center_px": [ + 774.5, + 502.75 + ], + "area_px": 280.5 + }, + { + "image_points_px": [ + [ + 1129.0, + 357.0 + ], + [ + 1150.0, + 354.0 + ], + [ + 1171.0, + 359.0 + ], + [ + 1144.0, + 362.0 + ] + ], + "center_px": [ + 1148.5, + 358.0 + ], + "area_px": 174.0 + }, + { + "image_points_px": [ + [ + 760.0, + 363.0 + ], + [ + 799.0, + 376.0 + ], + [ + 792.0, + 378.0 + ], + [ + 762.0, + 367.0 + ] + ], + "center_px": [ + 778.25, + 371.0 + ], + "area_px": 133.5 + }, + { + "image_points_px": [ + [ + 1132.0, + 346.0 + ], + [ + 1154.0, + 342.0 + ], + [ + 1173.0, + 347.0 + ], + [ + 1151.0, + 350.0 + ] + ], + "center_px": [ + 1152.5, + 346.25 + ], + "area_px": 165.5 + }, + { + "image_points_px": [ + [ + 1081.0, + 356.0 + ], + [ + 1056.0, + 358.0 + ], + [ + 1041.0, + 353.0 + ], + [ + 1065.0, + 350.0 + ] + ], + "center_px": [ + 1060.75, + 354.25 + ], + "area_px": 173.5 + }, + { + "image_points_px": [ + [ + 422.0, + 566.0 + ], + [ + 443.0, + 584.0 + ], + [ + 432.0, + 598.0 + ], + [ + 419.0, + 581.0 + ] + ], + "center_px": [ + 429.0, + 582.25 + ], + "area_px": 369.0 + }, + { + "image_points_px": [ + [ + 686.0, + 588.0 + ], + [ + 691.0, + 582.0 + ], + [ + 722.0, + 587.0 + ], + [ + 718.0, + 594.0 + ] + ], + "center_px": [ + 704.25, + 587.75 + ], + "area_px": 229.5 + }, + { + "image_points_px": [ + [ + 410.0, + 412.0 + ], + [ + 440.0, + 416.0 + ], + [ + 446.0, + 422.0 + ], + [ + 416.0, + 419.0 + ] + ], + "center_px": [ + 428.0, + 417.25 + ], + "area_px": 174.0 + }, + { + "image_points_px": [ + [ + 1093.0, + 333.0 + ], + [ + 1114.0, + 330.0 + ], + [ + 1131.0, + 335.0 + ], + [ + 1110.0, + 338.0 + ] + ], + "center_px": [ + 1112.0, + 334.0 + ], + "area_px": 156.0 + }, + { + "image_points_px": [ + [ + 1006.0, + 340.0 + ], + [ + 1027.0, + 338.0 + ], + [ + 1044.0, + 342.0 + ], + [ + 1020.0, + 345.0 + ] + ], + "center_px": [ + 1024.25, + 341.25 + ], + "area_px": 140.0 + }, + { + "image_points_px": [ + [ + 1052.0, + 332.0 + ], + [ + 1074.0, + 329.0 + ], + [ + 1090.0, + 333.0 + ], + [ + 1067.0, + 336.0 + ] + ], + "center_px": [ + 1070.75, + 332.5 + ], + "area_px": 136.5 + }, + { + "image_points_px": [ + [ + 1128.0, + 522.0 + ], + [ + 1136.0, + 520.0 + ], + [ + 1164.0, + 532.0 + ], + [ + 1144.0, + 529.0 + ] + ], + "center_px": [ + 1143.0, + 525.75 + ], + "area_px": 122.0 + }, + { + "image_points_px": [ + [ + 966.0, + 340.0 + ], + [ + 987.0, + 336.0 + ], + [ + 1003.0, + 341.0 + ], + [ + 978.0, + 343.0 + ] + ], + "center_px": [ + 983.5, + 340.0 + ], + "area_px": 134.0 + }, + { + "image_points_px": [ + [ + 948.0, + 360.0 + ], + [ + 924.0, + 365.0 + ], + [ + 912.0, + 359.0 + ], + [ + 935.0, + 355.0 + ] + ], + "center_px": [ + 929.75, + 359.75 + ], + "area_px": 185.5 + }, + { + "image_points_px": [ + [ + 933.0, + 327.0 + ], + [ + 958.0, + 325.0 + ], + [ + 969.0, + 329.0 + ], + [ + 948.0, + 332.0 + ] + ], + "center_px": [ + 952.0, + 328.25 + ], + "area_px": 136.0 + }, + { + "image_points_px": [ + [ + 1053.0, + 322.0 + ], + [ + 1030.0, + 324.0 + ], + [ + 1017.0, + 320.0 + ], + [ + 1037.0, + 317.0 + ] + ], + "center_px": [ + 1034.25, + 320.75 + ], + "area_px": 133.0 + }, + { + "image_points_px": [ + [ + 881.0, + 346.0 + ], + [ + 904.0, + 343.0 + ], + [ + 916.0, + 348.0 + ], + [ + 892.0, + 351.0 + ] + ], + "center_px": [ + 898.25, + 347.0 + ], + "area_px": 152.0 + }, + { + "image_points_px": [ + [ + 1015.0, + 320.0 + ], + [ + 991.0, + 323.0 + ], + [ + 980.0, + 319.0 + ], + [ + 1000.0, + 316.0 + ] + ], + "center_px": [ + 996.5, + 319.5 + ], + "area_px": 127.0 + }, + { + "image_points_px": [ + [ + 1057.0, + 322.0 + ], + [ + 1079.0, + 319.0 + ], + [ + 1092.0, + 323.0 + ], + [ + 1071.0, + 326.0 + ] + ], + "center_px": [ + 1074.75, + 322.5 + ], + "area_px": 126.5 + }, + { + "image_points_px": [ + [ + 982.0, + 310.0 + ], + [ + 960.0, + 312.0 + ], + [ + 947.0, + 308.0 + ], + [ + 971.0, + 306.0 + ] + ], + "center_px": [ + 965.0, + 309.0 + ], + "area_px": 116.0 + }, + { + "image_points_px": [ + [ + 885.0, + 335.0 + ], + [ + 864.0, + 339.0 + ], + [ + 851.0, + 334.0 + ], + [ + 874.0, + 331.0 + ] + ], + "center_px": [ + 868.5, + 334.75 + ], + "area_px": 141.0 + }, + { + "image_points_px": [ + [ + 889.0, + 336.0 + ], + [ + 912.0, + 333.0 + ], + [ + 923.0, + 337.0 + ], + [ + 903.0, + 341.0 + ] + ], + "center_px": [ + 906.75, + 336.75 + ], + "area_px": 140.5 + }, + { + "image_points_px": [ + [ + 897.0, + 325.0 + ], + [ + 918.0, + 323.0 + ], + [ + 931.0, + 327.0 + ], + [ + 909.0, + 330.0 + ] + ], + "center_px": [ + 913.75, + 326.25 + ], + "area_px": 128.0 + }, + { + "image_points_px": [ + [ + 904.0, + 316.0 + ], + [ + 928.0, + 314.0 + ], + [ + 938.0, + 318.0 + ], + [ + 916.0, + 320.0 + ] + ], + "center_px": [ + 921.5, + 317.0 + ], + "area_px": 114.0 + }, + { + "image_points_px": [ + [ + 1023.0, + 311.0 + ], + [ + 1043.0, + 308.0 + ], + [ + 1057.0, + 312.0 + ], + [ + 1037.0, + 315.0 + ] + ], + "center_px": [ + 1040.0, + 311.5 + ], + "area_px": 122.0 + }, + { + "image_points_px": [ + [ + 1040.0, + 374.0 + ], + [ + 1056.0, + 373.0 + ], + [ + 1073.0, + 379.0 + ], + [ + 1059.0, + 381.0 + ] + ], + "center_px": [ + 1057.0, + 376.75 + ], + "area_px": 124.5 + }, + { + "image_points_px": [ + [ + 857.0, + 324.0 + ], + [ + 835.0, + 327.0 + ], + [ + 824.0, + 322.0 + ], + [ + 843.0, + 319.0 + ] + ], + "center_px": [ + 839.75, + 323.0 + ], + "area_px": 140.0 + }, + { + "image_points_px": [ + [ + 860.0, + 324.0 + ], + [ + 884.0, + 322.0 + ], + [ + 893.0, + 326.0 + ], + [ + 870.0, + 328.0 + ] + ], + "center_px": [ + 876.75, + 325.0 + ], + "area_px": 113.0 + }, + { + "image_points_px": [ + [ + 945.0, + 308.0 + ], + [ + 924.0, + 311.0 + ], + [ + 912.0, + 307.0 + ], + [ + 932.0, + 304.0 + ] + ], + "center_px": [ + 928.25, + 307.5 + ], + "area_px": 119.5 + }, + { + "image_points_px": [ + [ + 954.0, + 299.0 + ], + [ + 975.0, + 297.0 + ], + [ + 987.0, + 300.0 + ], + [ + 966.0, + 303.0 + ] + ], + "center_px": [ + 970.5, + 299.75 + ], + "area_px": 103.5 + }, + { + "image_points_px": [ + [ + 534.0, + 428.0 + ], + [ + 559.0, + 434.0 + ], + [ + 564.0, + 440.0 + ], + [ + 541.0, + 434.0 + ] + ], + "center_px": [ + 549.5, + 434.0 + ], + "area_px": 108.0 + }, + { + "image_points_px": [ + [ + 942.0, + 317.0 + ], + [ + 964.0, + 315.0 + ], + [ + 974.0, + 319.0 + ], + [ + 955.0, + 322.0 + ] + ], + "center_px": [ + 958.75, + 318.25 + ], + "area_px": 121.0 + }, + { + "image_points_px": [ + [ + 869.0, + 315.0 + ], + [ + 891.0, + 312.0 + ], + [ + 901.0, + 316.0 + ], + [ + 878.0, + 318.0 + ] + ], + "center_px": [ + 884.75, + 315.25 + ], + "area_px": 102.5 + }, + { + "image_points_px": [ + [ + 1018.0, + 311.0 + ], + [ + 997.0, + 313.0 + ], + [ + 986.0, + 309.0 + ], + [ + 1005.0, + 307.0 + ] + ], + "center_px": [ + 1001.5, + 310.0 + ], + "area_px": 104.0 + }, + { + "image_points_px": [ + [ + 1023.0, + 302.0 + ], + [ + 1002.0, + 304.0 + ], + [ + 992.0, + 301.0 + ], + [ + 1012.0, + 298.0 + ] + ], + "center_px": [ + 1007.25, + 301.25 + ], + "area_px": 98.0 + }, + { + "image_points_px": [ + [ + 312.0, + 934.0 + ], + [ + 320.0, + 949.0 + ], + [ + 306.0, + 954.0 + ], + [ + 299.0, + 939.0 + ] + ], + "center_px": [ + 309.25, + 944.0 + ], + "area_px": 240.0 + }, + { + "image_points_px": [ + [ + 274.0, + 394.0 + ], + [ + 259.0, + 409.0 + ], + [ + 251.0, + 402.0 + ], + [ + 267.0, + 390.0 + ] + ], + "center_px": [ + 262.75, + 398.75 + ], + "area_px": 186.5 + }, + { + "image_points_px": [ + [ + 346.0, + 411.0 + ], + [ + 362.0, + 412.0 + ], + [ + 372.0, + 416.0 + ], + [ + 366.0, + 417.0 + ] + ], + "center_px": [ + 361.5, + 414.0 + ], + "area_px": 55.0 + }, + { + "image_points_px": [ + [ + 1001.0, + 393.0 + ], + [ + 995.0, + 394.0 + ], + [ + 980.0, + 387.0 + ], + [ + 999.0, + 383.0 + ] + ], + "center_px": [ + 993.75, + 389.25 + ], + "area_px": 127.5 + }, + { + "image_points_px": [ + [ + 851.0, + 397.0 + ], + [ + 871.0, + 403.0 + ], + [ + 874.0, + 406.0 + ], + [ + 863.0, + 406.0 + ] + ], + "center_px": [ + 864.75, + 403.0 + ], + "area_px": 70.5 + }, + { + "image_points_px": [ + [ + 697.0, + 577.0 + ], + [ + 703.0, + 576.0 + ], + [ + 720.0, + 580.0 + ], + [ + 713.0, + 581.0 + ] + ], + "center_px": [ + 708.25, + 578.5 + ], + "area_px": 42.5 + }, + { + "image_points_px": [ + [ + 269.0, + 940.0 + ], + [ + 274.0, + 948.0 + ], + [ + 260.0, + 953.0 + ], + [ + 257.0, + 945.0 + ] + ], + "center_px": [ + 265.0, + 946.5 + ], + "area_px": 124.0 + } + ] +} \ No newline at end of file diff --git a/test/homing/20260616_135403/cam0_camera_pose.json b/test/homing/20260616_135403/cam0_camera_pose.json new file mode 100644 index 0000000..9688788 --- /dev/null +++ b/test/homing/20260616_135403/cam0_camera_pose.json @@ -0,0 +1,341 @@ +{ + "schema_version": "1.0", + "created_utc": "2026-06-16T13:54:06Z", + "source": { + "detection_json": "/app/data/homing/20260616_135403/cam0_aruco_detection.json", + "robot_json": "/app/scripts/robot_1781069752019.json" + }, + "camera": { + "camera_id": "cam0", + "camera_matrix": [ + [ + 1424.7584228515625, + 0.0, + 635.95947265625 + ], + [ + 0.0, + 1421.5770263671875, + 482.1744384765625 + ], + [ + 0.0, + 0.0, + 1.0 + ] + ], + "distortion_coefficients": [ + 0.05634751915931702, + 0.33765655755996704, + 0.002130246954038739, + -0.004022662527859211, + -1.182201862335205 + ] + }, + "estimation": { + "method": "single_camera_marker_center_lm", + "description": "Rigid init from per-marker pose estimates, followed by LM on normalized marker-center reprojection residuals.", + "marker_size_m": 0.025, + "num_used_markers": 10, + "used_marker_ids": [ + 97, + 96, + 47, + 54, + 62, + 85, + 105, + 102, + 57, + 59 + ], + "history": { + "iters": [ + 0, + 1, + 2, + 3 + ], + "rms": [ + 0.00297150987668363, + 0.0002461940604502246, + 0.00022805923674527905, + 0.0002280590512991819 + ], + "lambda": [ + 0.001, + 0.0005, + 0.00025, + 0.000125 + ] + }, + "residual_rms_px": 0.46309374817158255, + "residual_median_px": 0.4260383419221694, + "residual_max_px": 0.8110471927822179, + "sigma2_normalized": 7.430132982639082e-08 + }, + "camera_pose": { + "world_to_camera": { + "rotation_matrix": [ + [ + -0.4332370162010193, + -0.8998357057571411, + -0.0510035902261734 + ], + [ + -0.3002627193927765, + 0.19745959341526031, + -0.9331945180892944 + ], + [ + 0.8497928977012634, + -0.3889799416065216, + -0.3557339012622833 + ] + ], + "translation_m": [ + -0.03059636428952217, + 0.3266908526420593, + 0.29203665256500244 + ], + "rvec_rad": [ + 1.119242299194618, + -1.8525955991141305, + 1.2330935082472974 + ] + }, + "camera_in_world": { + "position_m": [ + -0.16333305835723877, + 0.021556459367275238, + 0.4071928858757019 + ], + "position_mm": [ + -163.3330535888672, + 21.556459426879883, + 407.19287109375 + ], + "orientation_deg": { + "roll": -132.44384765625, + "pitch": -58.189151763916016, + "yaw": -145.275390625 + } + }, + "uncertainty": { + "pose_covariance_6x6": [ + [ + 7.227588006323877e-07, + 2.9303920656916736e-08, + 5.384671063273605e-07, + 7.605882237904871e-10, + 1.680441654688309e-08, + 1.1426051605294841e-07 + ], + [ + 2.930392065691868e-08, + 1.1003513442219108e-06, + 5.565209626759047e-07, + -2.652519045621451e-07, + -5.340853554657626e-07, + -5.226176231579231e-07 + ], + [ + 5.384671063273979e-07, + 5.565209626759146e-07, + 2.319354687285001e-06, + 2.551507946650087e-07, + -5.787929262591489e-07, + -2.912661805714844e-07 + ], + [ + 7.605882237987269e-10, + -2.652519045621417e-07, + 2.551507946650191e-07, + 1.5790856417639881e-07, + 5.5121833627792086e-08, + 1.1160408874634451e-07 + ], + [ + 1.6804416546875622e-08, + -5.340853554657651e-07, + -5.787929262591501e-07, + 5.512183362779438e-08, + 3.44928133359627e-07, + 3.443723010303455e-07 + ], + [ + 1.1426051605294808e-07, + -5.226176231579226e-07, + -2.9126618057147984e-07, + 1.1160408874634589e-07, + 3.443723010303443e-07, + 5.551732669825882e-07 + ] + ], + "parameter_std": { + "rvec_std_deg": [ + 0.04871013426631951, + 0.06010191660883742, + 0.0872581932849214 + ], + "tvec_std_m": [ + 0.00039737710575270794, + 0.0005873058260903147, + 0.0007450995013973558 + ] + }, + "camera_center_std_m": [ + 0.0004380589515914775, + 0.0008600663979125257, + 0.0008421001328967693 + ], + "camera_center_std_mm": [ + 0.4380589515914775, + 0.8600663979125257, + 0.8421001328967692 + ], + "orientation_std_deg": { + "roll": 0.09163914629805689, + "pitch": 0.04946121940390761, + "yaw": 0.07431542255357135 + } + } + }, + "observations": { + "markers": [ + { + "marker_id": 97, + "observed_center_px": [ + 969.75, + 871.25 + ], + "projected_center_px": [ + 969.1539916992188, + 871.4326782226562 + ], + "reprojection_error_px": 0.623375671351553, + "confidence": 0.8722907081171155 + }, + { + "marker_id": 96, + "observed_center_px": [ + 590.5, + 908.0 + ], + "projected_center_px": [ + 590.39501953125, + 907.824951171875 + ], + "reprojection_error_px": 0.20411514164046116, + "confidence": 0.39473089942559886 + }, + { + "marker_id": 47, + "observed_center_px": [ + 796.75, + 872.75 + ], + "projected_center_px": [ + 797.0742797851562, + 872.3286743164062 + ], + "reprojection_error_px": 0.5316697383872101, + "confidence": 0.7545277738933825 + }, + { + "marker_id": 54, + "observed_center_px": [ + 874.0, + 847.75 + ], + "projected_center_px": [ + 874.1162109375, + 847.8966674804688 + ], + "reprojection_error_px": 0.18712651287746498, + "confidence": 0.7740240946534177 + }, + { + "marker_id": 62, + "observed_center_px": [ + 541.0, + 875.5 + ], + "projected_center_px": [ + 541.011474609375, + 875.953857421875 + ], + "reprojection_error_px": 0.4540024515917624, + "confidence": 0.5296335300596272 + }, + { + "marker_id": 85, + "observed_center_px": [ + 691.5, + 715.0 + ], + "projected_center_px": [ + 692.12548828125, + 714.4837036132812 + ], + "reprojection_error_px": 0.8110471927822179, + "confidence": 0.3363291739196003 + }, + { + "marker_id": 105, + "observed_center_px": [ + 607.25, + 720.0 + ], + "projected_center_px": [ + 607.2650756835938, + 720.0259399414062 + ], + "reprojection_error_px": 0.03000261315249967, + "confidence": 0.29801288537668325 + }, + { + "marker_id": 102, + "observed_center_px": [ + 469.0, + 653.75 + ], + "projected_center_px": [ + 468.6142272949219, + 653.6883544921875 + ], + "reprojection_error_px": 0.390667055965505, + "confidence": 0.17455168671479393 + }, + { + "marker_id": 57, + "observed_center_px": [ + 691.0, + 629.75 + ], + "projected_center_px": [ + 691.397216796875, + 630.0008544921875 + ], + "reprojection_error_px": 0.46979693482427437, + "confidence": 0.20110305644698828 + }, + { + "marker_id": 59, + "observed_center_px": [ + 561.0, + 647.0 + ], + "projected_center_px": [ + 560.620849609375, + 647.1212768554688 + ], + "reprojection_error_px": 0.39807423225257643, + "confidence": 0.20130952501608368 + } + ] + }, + "qa": { + "sanity_notes": [] + } +} \ No newline at end of file diff --git a/test/homing/20260616_135403/cam0_debug.jpg b/test/homing/20260616_135403/cam0_debug.jpg new file mode 100644 index 0000000..23ca0dd Binary files /dev/null and b/test/homing/20260616_135403/cam0_debug.jpg differ diff --git a/test/homing/20260616_135403/cam1.jpg b/test/homing/20260616_135403/cam1.jpg new file mode 100644 index 0000000..ca778f2 Binary files /dev/null and b/test/homing/20260616_135403/cam1.jpg differ diff --git a/test/homing/20260616_135403/cam1_aruco_detection.json b/test/homing/20260616_135403/cam1_aruco_detection.json new file mode 100644 index 0000000..d188f34 --- /dev/null +++ b/test/homing/20260616_135403/cam1_aruco_detection.json @@ -0,0 +1,2944 @@ +{ + "schema_version": "1.0", + "created_utc": "2026-06-16T13:54:13Z", + "vision_config": { + "MarkerType": "DICT_4X4_250", + "MarkerSize": 0.025 + }, + "camera": { + "camera_id": "cam1", + "intrinsics_file": "/app/data/calibration/20260610_092149/cam1_calibration.npz", + "camera_matrix": [ + [ + 1367.5723876953125, + 0.0, + 672.1165771484375 + ], + [ + 0.0, + 1372.3011474609375, + 445.8396911621094 + ], + [ + 0.0, + 0.0, + 1.0 + ] + ], + "distortion_coefficients": [ + 0.01016925647854805, + 0.7656787633895874, + -0.0031530377455055714, + -0.00288817984983325, + -2.490830183029175 + ] + }, + "image": { + "image_file": "/app/data/homing/20260616_135403/cam1.jpg", + "image_sha256": "0ad5a1796be0c97016ea6ad0a2c7e536f51cb31048dda678458ce000215d1f80", + "width_px": 1280, + "height_px": 960 + }, + "aruco": { + "dictionary": "DICT_4X4_250", + "num_detected_markers": 42, + "num_rejected_candidates": 25 + }, + "detections": [ + { + "observation_id": "03640bcc-ad71-465f-8153-c60f12d0f7f2", + "type": "aruco", + "marker_id": 69, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1153.0, + 271.0 + ], + [ + 1148.0, + 306.0 + ], + [ + 1112.0, + 300.0 + ], + [ + 1116.0, + 266.0 + ] + ], + "center_px": [ + 1132.25, + 285.75 + ], + "quality": { + "area_px": 1284.0, + "perimeter_px": 143.4227066040039, + "sharpness": { + "laplacian_var": 3120.7149808429117 + }, + "contrast": { + "p05": 3.0, + "p95": 189.0, + "dynamic_range": 186.0, + "mean_gray": 67.78850574712644, + "std_gray": 73.04826844665494 + }, + "geometry": { + "distance_to_center_norm": 0.6614887714385986, + "distance_to_border_px": 127.0 + }, + "edge_ratio": 1.0906051848793759, + "edge_lengths_px": [ + 35.35533905029297, + 36.49657440185547, + 34.2344856262207, + 37.336307525634766 + ] + }, + "confidence": 0.7848853204330548 + }, + { + "observation_id": "475d5b81-df5e-47be-a45b-f33300176c24", + "type": "aruco", + "marker_id": 180, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 517.0, + 103.0 + ], + [ + 545.0, + 122.0 + ], + [ + 533.0, + 155.0 + ], + [ + 504.0, + 134.0 + ] + ], + "center_px": [ + 524.75, + 128.5 + ], + "quality": { + "area_px": 1162.0, + "perimeter_px": 138.3724479675293, + "sharpness": { + "laplacian_var": 2959.7095578623607 + }, + "contrast": { + "p05": 7.0, + "p95": 200.79999999999995, + "dynamic_range": 193.79999999999995, + "mean_gray": 86.65098039215687, + "std_gray": 75.15018350435464 + }, + "geometry": { + "distance_to_center_norm": 0.46238985657691956, + "distance_to_border_px": 103.0 + }, + "edge_ratio": 1.0651353696408594, + "edge_lengths_px": [ + 33.83784866333008, + 35.11410140991211, + 35.80502700805664, + 33.61547088623047 + ] + }, + "confidence": 0.7272940968319055 + }, + { + "observation_id": "2950d151-6233-4407-92de-b1c04217b2ef", + "type": "aruco", + "marker_id": 143, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 544.0, + 336.0 + ], + [ + 511.0, + 332.0 + ], + [ + 515.0, + 297.0 + ], + [ + 549.0, + 302.0 + ] + ], + "center_px": [ + 529.75, + 316.75 + ], + "quality": { + "area_px": 1176.0, + "perimeter_px": 137.2007293701172, + "sharpness": { + "laplacian_var": 3043.505410155228 + }, + "contrast": { + "p05": 10.0, + "p95": 198.0, + "dynamic_range": 188.0, + "mean_gray": 83.78478002378121, + "std_gray": 73.9647379203724 + }, + "geometry": { + "distance_to_center_norm": 0.2462393045425415, + "distance_to_border_px": 297.0 + }, + "edge_ratio": 1.059753249629622, + "edge_lengths_px": [ + 33.241539001464844, + 35.22782897949219, + 34.36568069458008, + 34.36568069458008 + ] + }, + "confidence": 0.7397948534472565 + }, + { + "observation_id": "24b029a7-7af1-4f8b-b980-2eb3364fd330", + "type": "aruco", + "marker_id": 64, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1180.0, + 409.0 + ], + [ + 1175.0, + 442.0 + ], + [ + 1140.0, + 434.0 + ], + [ + 1144.0, + 403.0 + ] + ], + "center_px": [ + 1159.75, + 422.0 + ], + "quality": { + "area_px": 1167.5, + "perimeter_px": 137.0328598022461, + "sharpness": { + "laplacian_var": 2747.225110455187 + }, + "contrast": { + "p05": 2.0, + "p95": 181.8499999999999, + "dynamic_range": 179.8499999999999, + "mean_gray": 64.69776119402985, + "std_gray": 69.758802258211 + }, + "geometry": { + "distance_to_center_norm": 0.6537201404571533, + "distance_to_border_px": 100.0 + }, + "edge_ratio": 1.1676288331410138, + "edge_lengths_px": [ + 33.37664031982422, + 35.902645111083984, + 31.256999969482422, + 36.49657440185547 + ] + }, + "confidence": 0.6665931083934911 + }, + { + "observation_id": "84249fa3-5a90-40fc-8687-661d69bc502d", + "type": "aruco", + "marker_id": 146, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 531.0, + 432.0 + ], + [ + 497.0, + 429.0 + ], + [ + 502.0, + 395.0 + ], + [ + 535.0, + 400.0 + ] + ], + "center_px": [ + 516.25, + 414.0 + ], + "quality": { + "area_px": 1123.5, + "perimeter_px": 134.1234474182129, + "sharpness": { + "laplacian_var": 2455.314281381727 + }, + "contrast": { + "p05": 4.0, + "p95": 190.0, + "dynamic_range": 186.0, + "mean_gray": 69.50123762376238, + "std_gray": 71.19710124851335 + }, + "geometry": { + "distance_to_center_norm": 0.17531250417232513, + "distance_to_border_px": 395.0 + }, + "edge_ratio": 1.065634518547083, + "edge_lengths_px": [ + 34.13209533691406, + 34.36568069458008, + 33.37664031982422, + 32.24903106689453 + ] + }, + "confidence": 0.702867622025991 + }, + { + "observation_id": "c78f762e-db60-49cb-8b92-93f2c62b5f0f", + "type": "aruco", + "marker_id": 243, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 570.0, + 586.0 + ], + [ + 542.0, + 577.0 + ], + [ + 558.0, + 548.0 + ], + [ + 584.0, + 555.0 + ] + ], + "center_px": [ + 563.5, + 566.5 + ], + "quality": { + "area_px": 930.0, + "perimeter_px": 123.47239875793457, + "sharpness": { + "laplacian_var": 3089.5199107198214 + }, + "contrast": { + "p05": 36.0, + "p95": 241.0, + "dynamic_range": 205.0, + "mean_gray": 112.5763779527559, + "std_gray": 77.69657361965909 + }, + "geometry": { + "distance_to_center_norm": 0.14434388279914856, + "distance_to_border_px": 374.0 + }, + "edge_ratio": 1.263274351014806, + "edge_lengths_px": [ + 29.4108829498291, + 33.12099075317383, + 26.925823211669922, + 34.01470184326172 + ] + }, + "confidence": 0.4907880853449968 + }, + { + "observation_id": "304abe61-1cb8-4b23-97b0-b2709e77c274", + "type": "aruco", + "marker_id": 95, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 903.0, + 247.0 + ], + [ + 902.0, + 279.0 + ], + [ + 873.0, + 274.0 + ], + [ + 875.0, + 243.0 + ] + ], + "center_px": [ + 888.25, + 260.75 + ], + "quality": { + "area_px": 904.5, + "perimeter_px": 120.7922191619873, + "sharpness": { + "laplacian_var": 1503.08296875 + }, + "contrast": { + "p05": 16.0, + "p95": 193.0, + "dynamic_range": 177.0, + "mean_gray": 88.5984375, + "std_gray": 70.3662716438678 + }, + "geometry": { + "distance_to_center_norm": 0.41400977969169617, + "distance_to_border_px": 243.0 + }, + "edge_ratio": 1.1319231424906049, + "edge_lengths_px": [ + 32.015621185302734, + 29.42787742614746, + 31.064449310302734, + 28.284271240234375 + ] + }, + "confidence": 0.532721681679907 + }, + { + "observation_id": "4d85c767-8c8c-4f9c-a466-0754c99ccc45", + "type": "aruco", + "marker_id": 97, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 761.0, + 116.0 + ], + [ + 761.0, + 148.0 + ], + [ + 734.0, + 144.0 + ], + [ + 735.0, + 112.0 + ] + ], + "center_px": [ + 747.75, + 130.0 + ], + "quality": { + "area_px": 850.0, + "perimeter_px": 117.61620140075684, + "sharpness": { + "laplacian_var": 1987.3424575537706 + }, + "contrast": { + "p05": 9.400000000000002, + "p95": 200.0, + "dynamic_range": 190.6, + "mean_gray": 104.15927750410509, + "std_gray": 76.3124846950475 + }, + "geometry": { + "distance_to_center_norm": 0.45776301622390747, + "distance_to_border_px": 112.0 + }, + "edge_ratio": 1.2170512992297489, + "edge_lengths_px": [ + 32.0, + 27.294687271118164, + 32.015621185302734, + 26.305892944335938 + ] + }, + "confidence": 0.46560622960207215 + }, + { + "observation_id": "2a3910ca-ef95-4de1-9e64-b3f292699f10", + "type": "aruco", + "marker_id": 51, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 922.0, + 382.0 + ], + [ + 921.0, + 410.0 + ], + [ + 892.0, + 404.0 + ], + [ + 893.0, + 376.0 + ] + ], + "center_px": [ + 907.0, + 393.0 + ], + "quality": { + "area_px": 818.0, + "perimeter_px": 115.26407241821289, + "sharpness": { + "laplacian_var": 1621.4380958602007 + }, + "contrast": { + "p05": 14.3, + "p95": 184.0, + "dynamic_range": 169.7, + "mean_gray": 79.18518518518519, + "std_gray": 63.880835317873455 + }, + "geometry": { + "distance_to_center_norm": 0.35102084279060364, + "distance_to_border_px": 358.0 + }, + "edge_ratio": 1.0569756211663317, + "edge_lengths_px": [ + 28.017850875854492, + 29.614185333251953, + 28.017850875854492, + 29.614185333251953 + ] + }, + "confidence": 0.51593747520078 + }, + { + "observation_id": "36ea69e1-0557-4fcd-ba61-5f331f18cf84", + "type": "aruco", + "marker_id": 132, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 509.0, + 592.0 + ], + [ + 484.0, + 583.0 + ], + [ + 490.0, + 552.0 + ], + [ + 514.0, + 561.0 + ] + ], + "center_px": [ + 499.25, + 572.0 + ], + "quality": { + "area_px": 809.0, + "perimeter_px": 115.17861366271973, + "sharpness": { + "laplacian_var": 2572.640138365404 + }, + "contrast": { + "p05": 9.0, + "p95": 211.64999999999998, + "dynamic_range": 202.64999999999998, + "mean_gray": 75.50176056338029, + "std_gray": 77.26415725872131 + }, + "geometry": { + "distance_to_center_norm": 0.21018803119659424, + "distance_to_border_px": 368.0 + }, + "edge_ratio": 1.2318700015090907, + "edge_lengths_px": [ + 26.570659637451172, + 31.575305938720703, + 25.63201141357422, + 31.400636672973633 + ] + }, + "confidence": 0.43781676043139955 + }, + { + "observation_id": "e22a66fc-9516-4c3e-b16f-9d3e6d468a60", + "type": "aruco", + "marker_id": 129, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 471.0, + 579.0 + ], + [ + 447.0, + 570.0 + ], + [ + 451.0, + 540.0 + ], + [ + 475.0, + 547.0 + ] + ], + "center_px": [ + 461.0, + 559.0 + ], + "quality": { + "area_px": 776.0, + "perimeter_px": 113.14653396606445, + "sharpness": { + "laplacian_var": 3082.540277423469 + }, + "contrast": { + "p05": 8.0, + "p95": 212.04999999999995, + "dynamic_range": 204.04999999999995, + "mean_gray": 88.99821428571428, + "std_gray": 80.28879790007942 + }, + "geometry": { + "distance_to_center_norm": 0.24457234144210815, + "distance_to_border_px": 381.0 + }, + "edge_ratio": 1.2899612426757812, + "edge_lengths_px": [ + 25.63201141357422, + 30.265491485595703, + 25.0, + 32.24903106689453 + ] + }, + "confidence": 0.4010456409219109 + }, + { + "observation_id": "eb8cbbf9-cd26-4af7-8772-e1461371cee8", + "type": "aruco", + "marker_id": 54, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 719.0, + 149.0 + ], + [ + 720.0, + 180.0 + ], + [ + 695.0, + 177.0 + ], + [ + 695.0, + 146.0 + ] + ], + "center_px": [ + 707.25, + 163.0 + ], + "quality": { + "area_px": 758.0, + "perimeter_px": 111.38225555419922, + "sharpness": { + "laplacian_var": 1751.9271672323475 + }, + "contrast": { + "p05": 10.0, + "p95": 183.0, + "dynamic_range": 173.0, + "mean_gray": 55.57627118644068, + "std_gray": 57.894762325619894 + }, + "geometry": { + "distance_to_center_norm": 0.405068576335907, + "distance_to_border_px": 146.0 + }, + "edge_ratio": 1.2823589298338793, + "edge_lengths_px": [ + 31.016124725341797, + 25.179357528686523, + 31.0, + 24.1867733001709 + ] + }, + "confidence": 0.39406543798060945 + }, + { + "observation_id": "55725fc0-41dd-49d9-8da9-c9dd68b75bfe", + "type": "aruco", + "marker_id": 148, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 579.0, + 288.0 + ], + [ + 558.0, + 286.0 + ], + [ + 564.0, + 251.0 + ], + [ + 584.0, + 254.0 + ] + ], + "center_px": [ + 571.25, + 269.75 + ], + "quality": { + "area_px": 721.0, + "perimeter_px": 111.19501495361328, + "sharpness": { + "laplacian_var": 1733.5275676793517 + }, + "contrast": { + "p05": 17.0, + "p95": 160.0, + "dynamic_range": 143.0, + "mean_gray": 63.94324853228963, + "std_gray": 50.32149778523281 + }, + "geometry": { + "distance_to_center_norm": 0.2765061855316162, + "distance_to_border_px": 251.0 + }, + "edge_ratio": 1.755884263320365, + "edge_lengths_px": [ + 21.095022201538086, + 35.510562896728516, + 20.2237491607666, + 34.36568069458008 + ] + }, + "confidence": 0.27374621249679026 + }, + { + "observation_id": "d33dc46e-69e7-4492-bc36-765dd54f3e77", + "type": "aruco", + "marker_id": 55, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 787.0, + 246.0 + ], + [ + 786.0, + 275.0 + ], + [ + 760.0, + 270.0 + ], + [ + 760.0, + 242.0 + ] + ], + "center_px": [ + 773.25, + 258.25 + ], + "quality": { + "area_px": 757.5, + "perimeter_px": 110.78832817077637, + "sharpness": { + "laplacian_var": 1581.1888523590142 + }, + "contrast": { + "p05": 12.0, + "p95": 190.5, + "dynamic_range": 178.5, + "mean_gray": 89.969868173258, + "std_gray": 68.75006615837627 + }, + "geometry": { + "distance_to_center_norm": 0.32338207960128784, + "distance_to_border_px": 242.0 + }, + "edge_ratio": 1.0959659212516788, + "edge_lengths_px": [ + 29.017236709594727, + 26.476404190063477, + 28.0, + 27.294687271118164 + ] + }, + "confidence": 0.46078075075842734 + }, + { + "observation_id": "fbd412a2-06ed-4b39-9684-bb21d802aacd", + "type": "aruco", + "marker_id": 75, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1134.0, + 853.0 + ], + [ + 1132.0, + 875.0 + ], + [ + 1102.0, + 864.0 + ], + [ + 1104.0, + 841.0 + ] + ], + "center_px": [ + 1118.0, + 858.25 + ], + "quality": { + "area_px": 698.0, + "perimeter_px": 109.44159317016602, + "sharpness": { + "laplacian_var": 2327.7107108230393 + }, + "contrast": { + "p05": 1.0, + "p95": 148.0, + "dynamic_range": 147.0, + "mean_gray": 77.96610169491525, + "std_gray": 56.11258087328407 + }, + "geometry": { + "distance_to_center_norm": 0.761943519115448, + "distance_to_border_px": 85.0 + }, + "edge_ratio": 1.4626498242948047, + "edge_lengths_px": [ + 22.090721130371094, + 31.95309066772461, + 23.0867919921875, + 32.31098937988281 + ] + }, + "confidence": 0.31814404623997206 + }, + { + "observation_id": "560a393a-c675-47aa-bdd9-2f99f7d073e7", + "type": "aruco", + "marker_id": 144, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 558.0, + 433.0 + ], + [ + 536.0, + 433.0 + ], + [ + 542.0, + 400.0 + ], + [ + 562.0, + 401.0 + ] + ], + "center_px": [ + 549.5, + 416.75 + ], + "quality": { + "area_px": 685.0, + "perimeter_px": 107.81503486633301, + "sharpness": { + "laplacian_var": 2536.4048567708332 + }, + "contrast": { + "p05": 4.0, + "p95": 159.0, + "dynamic_range": 155.0, + "mean_gray": 67.56875, + "std_gray": 59.0943407338709 + }, + "geometry": { + "distance_to_center_norm": 0.138015016913414, + "distance_to_border_px": 400.0 + }, + "edge_ratio": 1.6749585835946554, + "edge_lengths_px": [ + 22.0, + 33.541019439697266, + 20.02498435974121, + 32.24903106689453 + ] + }, + "confidence": 0.2726435573628376 + }, + { + "observation_id": "0ab78e60-1afb-403d-b772-ee225fbcd80d", + "type": "aruco", + "marker_id": 77, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1080.0, + 829.0 + ], + [ + 1078.0, + 852.0 + ], + [ + 1049.0, + 840.0 + ], + [ + 1050.0, + 820.0 + ] + ], + "center_px": [ + 1064.25, + 835.25 + ], + "quality": { + "area_px": 650.0, + "perimeter_px": 105.8174057006836, + "sharpness": { + "laplacian_var": 1790.3636560156046 + }, + "contrast": { + "p05": 1.0, + "p95": 146.0, + "dynamic_range": 145.0, + "mean_gray": 52.15919282511211, + "std_gray": 54.16557610902803 + }, + "geometry": { + "distance_to_center_norm": 0.6916812062263489, + "distance_to_border_px": 108.0 + }, + "edge_ratio": 1.5672776441706666, + "edge_lengths_px": [ + 23.0867919921875, + 31.38471031188965, + 20.02498435974121, + 31.320919036865234 + ] + }, + "confidence": 0.2764879183628208 + }, + { + "observation_id": "39e8e23a-92d1-4e33-a350-7f605e0d3c4a", + "type": "aruco", + "marker_id": 79, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 758.0, + 364.0 + ], + [ + 758.0, + 391.0 + ], + [ + 733.0, + 385.0 + ], + [ + 733.0, + 359.0 + ] + ], + "center_px": [ + 745.5, + 374.75 + ], + "quality": { + "area_px": 662.5, + "perimeter_px": 104.20501899719238, + "sharpness": { + "laplacian_var": 1506.2174493182076 + }, + "contrast": { + "p05": 8.0, + "p95": 183.0, + "dynamic_range": 175.0, + "mean_gray": 101.60801781737194, + "std_gray": 63.27222289134589 + }, + "geometry": { + "distance_to_center_norm": 0.1862785667181015, + "distance_to_border_px": 359.0 + }, + "edge_ratio": 1.0590271070641277, + "edge_lengths_px": [ + 27.0, + 25.70992088317871, + 26.0, + 25.495098114013672 + ] + }, + "confidence": 0.4170494444576311 + }, + { + "observation_id": "906559ae-b9b4-4e08-b0ca-e4f55fb66dde", + "type": "aruco", + "marker_id": 204, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 761.0, + 793.0 + ], + [ + 736.0, + 782.0 + ], + [ + 735.0, + 760.0 + ], + [ + 760.0, + 769.0 + ] + ], + "center_px": [ + 748.0, + 776.0 + ], + "quality": { + "area_px": 565.0, + "perimeter_px": 99.92719841003418, + "sharpness": { + "laplacian_var": 2151.399088179695 + }, + "contrast": { + "p05": 1.5, + "p95": 155.5, + "dynamic_range": 154.0, + "mean_gray": 51.9539641943734, + "std_gray": 55.90129159906531 + }, + "geometry": { + "distance_to_center_norm": 0.3938590884208679, + "distance_to_border_px": 167.0 + }, + "edge_ratio": 1.2402194826110133, + "edge_lengths_px": [ + 27.312999725341797, + 22.022714614868164, + 26.570659637451172, + 24.020824432373047 + ] + }, + "confidence": 0.3037096836067085 + }, + { + "observation_id": "ea7467c7-b3b4-4c51-a719-1cc3a310a26e", + "type": "aruco", + "marker_id": 52, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 988.0, + 813.0 + ], + [ + 988.0, + 834.0 + ], + [ + 962.0, + 825.0 + ], + [ + 962.0, + 802.0 + ] + ], + "center_px": [ + 975.0, + 818.5 + ], + "quality": { + "area_px": 572.0, + "perimeter_px": 99.74482154846191, + "sharpness": { + "laplacian_var": 2298.8304956126926 + }, + "contrast": { + "p05": 1.0, + "p95": 149.25, + "dynamic_range": 148.25, + "mean_gray": 51.02020202020202, + "std_gray": 54.037487885068124 + }, + "geometry": { + "distance_to_center_norm": 0.5953035950660706, + "distance_to_border_px": 126.0 + }, + "edge_ratio": 1.344342277163551, + "edge_lengths_px": [ + 21.0, + 27.513633728027344, + 23.0, + 28.23118782043457 + ] + }, + "confidence": 0.28365791942355234 + }, + { + "observation_id": "8e802bc5-b29d-411f-aaa2-d036c3ab30e7", + "type": "aruco", + "marker_id": 96, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 697.0, + 321.0 + ], + [ + 698.0, + 348.0 + ], + [ + 675.0, + 342.0 + ], + [ + 674.0, + 317.0 + ] + ], + "center_px": [ + 686.0, + 332.0 + ], + "quality": { + "area_px": 593.0, + "perimeter_px": 99.15346908569336, + "sharpness": { + "laplacian_var": 1521.318716080387 + }, + "contrast": { + "p05": 9.0, + "p95": 176.0, + "dynamic_range": 167.0, + "mean_gray": 90.98525798525799, + "std_gray": 65.86606750833138 + }, + "geometry": { + "distance_to_center_norm": 0.19372983276844025, + "distance_to_border_px": 317.0 + }, + "edge_ratio": 1.15734588970726, + "edge_lengths_px": [ + 27.018512725830078, + 23.76972770690918, + 25.01999282836914, + 23.34523582458496 + ] + }, + "confidence": 0.34158615574582396 + }, + { + "observation_id": "3e08e8e0-68d2-4ed6-b09a-21bacfc44b18", + "type": "aruco", + "marker_id": 57, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 459.0, + 78.0 + ], + [ + 462.0, + 107.0 + ], + [ + 442.0, + 104.0 + ], + [ + 439.0, + 75.0 + ] + ], + "center_px": [ + 450.5, + 91.0 + ], + "quality": { + "area_px": 571.0, + "perimeter_px": 98.75701904296875, + "sharpness": { + "laplacian_var": 3630.0554051073423 + }, + "contrast": { + "p05": 3.0, + "p95": 187.0, + "dynamic_range": 184.0, + "mean_gray": 81.93811881188118, + "std_gray": 69.60965160422175 + }, + "geometry": { + "distance_to_center_norm": 0.5408778190612793, + "distance_to_border_px": 75.0 + }, + "edge_ratio": 1.441610065915821, + "edge_lengths_px": [ + 29.154760360717773, + 20.2237491607666, + 29.154760360717773, + 20.2237491607666 + ] + }, + "confidence": 0.2640566098051195 + }, + { + "observation_id": "5036b938-ab28-4191-bf85-818a6e948f2a", + "type": "aruco", + "marker_id": 81, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 949.0, + 760.0 + ], + [ + 948.0, + 782.0 + ], + [ + 922.0, + 772.0 + ], + [ + 923.0, + 751.0 + ] + ], + "center_px": [ + 935.5, + 766.25 + ], + "quality": { + "area_px": 568.5, + "perimeter_px": 98.41692161560059, + "sharpness": { + "laplacian_var": 1463.2632648965034 + }, + "contrast": { + "p05": 1.0, + "p95": 132.39999999999998, + "dynamic_range": 131.39999999999998, + "mean_gray": 48.44020356234097, + "std_gray": 50.60073833010184 + }, + "geometry": { + "distance_to_center_norm": 0.5142642259597778, + "distance_to_border_px": 178.0 + }, + "edge_ratio": 1.3250117668149328, + "edge_lengths_px": [ + 22.022714614868164, + 27.85677719116211, + 21.02379608154297, + 27.513633728027344 + ] + }, + "confidence": 0.2860351956805948 + }, + { + "observation_id": "5417f858-bb85-4b0d-b4e3-cf533b02c8e7", + "type": "aruco", + "marker_id": 62, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 662.0, + 326.0 + ], + [ + 664.0, + 353.0 + ], + [ + 641.0, + 347.0 + ], + [ + 641.0, + 322.0 + ] + ], + "center_px": [ + 652.0, + 337.0 + ], + "quality": { + "area_px": 567.0, + "perimeter_px": 97.22125816345215, + "sharpness": { + "laplacian_var": 1779.6183744005714 + }, + "contrast": { + "p05": 5.0, + "p95": 145.25, + "dynamic_range": 140.25, + "mean_gray": 38.42424242424242, + "std_gray": 44.1521338947098 + }, + "geometry": { + "distance_to_center_norm": 0.17937825620174408, + "distance_to_border_px": 322.0 + }, + "edge_ratio": 1.2664670591899694, + "edge_lengths_px": [ + 27.073972702026367, + 23.76972770690918, + 25.0, + 21.3775577545166 + ] + }, + "confidence": 0.29846808668025543 + }, + { + "observation_id": "63662b4f-a9bd-4762-bd3d-97414c89e0d2", + "type": "aruco", + "marker_id": 201, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 790.0, + 721.0 + ], + [ + 790.0, + 695.0 + ], + [ + 805.0, + 681.0 + ], + [ + 807.0, + 706.0 + ] + ], + "center_px": [ + 798.0, + 700.75 + ], + "quality": { + "area_px": 422.5, + "perimeter_px": 94.26972389221191, + "sharpness": { + "laplacian_var": 1050.5004191025898 + }, + "contrast": { + "p05": 9.0, + "p95": 115.0, + "dynamic_range": 106.0, + "mean_gray": 44.91530944625407, + "std_gray": 34.01493243875457 + }, + "geometry": { + "distance_to_center_norm": 0.33933430910110474, + "distance_to_border_px": 239.0 + }, + "edge_ratio": 1.2671625072391421, + "edge_lengths_px": [ + 26.0, + 20.51828384399414, + 25.079872131347656, + 22.671567916870117 + ] + }, + "confidence": 0.22228140830993656 + }, + { + "observation_id": "92790a99-137d-4225-9986-01d613a241d9", + "type": "aruco", + "marker_id": 101, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 960.0, + 884.0 + ], + [ + 959.0, + 905.0 + ], + [ + 934.0, + 894.0 + ], + [ + 935.0, + 875.0 + ] + ], + "center_px": [ + 947.0, + 889.5 + ], + "quality": { + "area_px": 510.0, + "perimeter_px": 93.93375396728516, + "sharpness": { + "laplacian_var": 2087.790714861596 + }, + "contrast": { + "p05": 1.0, + "p95": 142.0, + "dynamic_range": 141.0, + "mean_gray": 61.4344262295082, + "std_gray": 53.35257319193557 + }, + "geometry": { + "distance_to_center_norm": 0.6397500038146973, + "distance_to_border_px": 55.0 + }, + "edge_ratio": 1.4355393242882892, + "edge_lengths_px": [ + 21.02379608154297, + 27.312999725341797, + 19.02629852294922, + 26.570659637451172 + ] + }, + "confidence": 0.2368447831748287 + }, + { + "observation_id": "0a0c2764-6c7a-41c1-a25a-962285f80284", + "type": "aruco", + "marker_id": 59, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 451.0, + 175.0 + ], + [ + 454.0, + 202.0 + ], + [ + 435.0, + 198.0 + ], + [ + 431.0, + 172.0 + ] + ], + "center_px": [ + 442.75, + 186.75 + ], + "quality": { + "area_px": 504.5, + "perimeter_px": 93.11228561401367, + "sharpness": { + "laplacian_var": 2626.110868261583 + }, + "contrast": { + "p05": 5.0, + "p95": 184.0, + "dynamic_range": 179.0, + "mean_gray": 101.62078651685393, + "std_gray": 70.3941911821592 + }, + "geometry": { + "distance_to_center_norm": 0.44177043437957764, + "distance_to_border_px": 172.0 + }, + "edge_ratio": 1.3991280995599928, + "edge_lengths_px": [ + 27.166154861450195, + 19.416488647460938, + 26.305892944335938, + 20.2237491607666 + ] + }, + "confidence": 0.2403878054047415 + }, + { + "observation_id": "2fb6f7c5-07ea-43ee-a407-e67b789b7577", + "type": "aruco", + "marker_id": 48, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 392.0, + 120.0 + ], + [ + 396.0, + 147.0 + ], + [ + 377.0, + 144.0 + ], + [ + 373.0, + 118.0 + ] + ], + "center_px": [ + 384.5, + 132.25 + ], + "quality": { + "area_px": 493.5, + "perimeter_px": 91.94093704223633, + "sharpness": { + "laplacian_var": 3053.9004726785383 + }, + "contrast": { + "p05": 3.0, + "p95": 177.0, + "dynamic_range": 174.0, + "mean_gray": 59.71954674220963, + "std_gray": 61.628587676970284 + }, + "geometry": { + "distance_to_center_norm": 0.5394011735916138, + "distance_to_border_px": 118.0 + }, + "edge_ratio": 1.428669252797482, + "edge_lengths_px": [ + 27.294687271118164, + 19.235383987426758, + 26.305892944335938, + 19.10497283935547 + ] + }, + "confidence": 0.2302842308363423 + }, + { + "observation_id": "a6a2af3b-6797-4c66-bbc7-972e16ada319", + "type": "aruco", + "marker_id": 71, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 350.0, + 154.0 + ], + [ + 353.0, + 180.0 + ], + [ + 336.0, + 177.0 + ], + [ + 332.0, + 151.0 + ] + ], + "center_px": [ + 342.75, + 165.5 + ], + "quality": { + "area_px": 444.5, + "perimeter_px": 87.98936080932617, + "sharpness": { + "laplacian_var": 3704.0251068376074 + }, + "contrast": { + "p05": 4.0, + "p95": 185.45, + "dynamic_range": 181.45, + "mean_gray": 102.75, + "std_gray": 68.86363569049212 + }, + "geometry": { + "distance_to_center_norm": 0.5409306287765503, + "distance_to_border_px": 151.0 + }, + "edge_ratio": 1.523859486218283, + "edge_lengths_px": [ + 26.172504425048828, + 17.262676239013672, + 26.305892944335938, + 18.248287200927734 + ] + }, + "confidence": 0.19446237400059435 + }, + { + "observation_id": "f81f6875-be51-4e69-bbd7-c508d769f399", + "type": "aruco", + "marker_id": 102, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 439.0, + 233.0 + ], + [ + 442.0, + 258.0 + ], + [ + 424.0, + 254.0 + ], + [ + 421.0, + 229.0 + ] + ], + "center_px": [ + 431.5, + 243.5 + ], + "quality": { + "area_px": 438.0, + "perimeter_px": 87.23689270019531, + "sharpness": { + "laplacian_var": 3440.2856903467705 + }, + "contrast": { + "p05": 8.0, + "p95": 186.0, + "dynamic_range": 178.0, + "mean_gray": 108.84466019417475, + "std_gray": 65.18459086107664 + }, + "geometry": { + "distance_to_center_norm": 0.39410600066185, + "distance_to_border_px": 229.0 + }, + "edge_ratio": 1.365542395969627, + "edge_lengths_px": [ + 25.179357528686523, + 18.439088821411133, + 25.179357528686523, + 18.439088821411133 + ] + }, + "confidence": 0.21383444473187546 + }, + { + "observation_id": "f8529044-3a0b-4161-935f-84e40bb9449a", + "type": "aruco", + "marker_id": 78, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 282.0, + 80.0 + ], + [ + 287.0, + 105.0 + ], + [ + 269.0, + 103.0 + ], + [ + 265.0, + 78.0 + ] + ], + "center_px": [ + 275.75, + 91.5 + ], + "quality": { + "area_px": 428.5, + "perimeter_px": 86.04109001159668, + "sharpness": { + "laplacian_var": 3791.688437457772 + }, + "contrast": { + "p05": 4.0, + "p95": 168.14999999999998, + "dynamic_range": 164.14999999999998, + "mean_gray": 75.66107382550335, + "std_gray": 61.55432937347876 + }, + "geometry": { + "distance_to_center_norm": 0.6656884551048279, + "distance_to_border_px": 78.0 + }, + "edge_ratio": 1.4894395313763147, + "edge_lengths_px": [ + 25.495098114013672, + 18.11077117919922, + 25.317977905273438, + 17.11724281311035 + ] + }, + "confidence": 0.19179473932902583 + }, + { + "observation_id": "bfb8403e-daa2-4338-b70a-f0e682dfb339", + "type": "aruco", + "marker_id": 65, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 306.0, + 133.0 + ], + [ + 310.0, + 159.0 + ], + [ + 293.0, + 156.0 + ], + [ + 289.0, + 131.0 + ] + ], + "center_px": [ + 299.5, + 144.75 + ], + "quality": { + "area_px": 423.5, + "perimeter_px": 86.0037899017334, + "sharpness": { + "laplacian_var": 4012.671201814059 + }, + "contrast": { + "p05": 3.0, + "p95": 177.0, + "dynamic_range": 174.0, + "mean_gray": 81.14625850340136, + "std_gray": 64.79257093144217 + }, + "geometry": { + "distance_to_center_norm": 0.597302258014679, + "distance_to_border_px": 131.0 + }, + "edge_ratio": 1.5368066710012351, + "edge_lengths_px": [ + 26.305892944335938, + 17.262676239013672, + 25.317977905273438, + 17.11724281311035 + ] + }, + "confidence": 0.18371428147783359 + }, + { + "observation_id": "1d677c24-b30e-49df-8e7b-31a1b3c04f9e", + "type": "aruco", + "marker_id": 80, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 254.0, + 85.0 + ], + [ + 258.0, + 111.0 + ], + [ + 242.0, + 108.0 + ], + [ + 238.0, + 83.0 + ] + ], + "center_px": [ + 248.0, + 96.75 + ], + "quality": { + "area_px": 398.0, + "perimeter_px": 84.02720642089844, + "sharpness": { + "laplacian_var": 2162.012261359238 + }, + "contrast": { + "p05": 3.1000000000000014, + "p95": 171.79999999999995, + "dynamic_range": 168.69999999999996, + "mean_gray": 67.113074204947, + "std_gray": 63.45395318933973 + }, + "geometry": { + "distance_to_center_norm": 0.6852743029594421, + "distance_to_border_px": 83.0 + }, + "edge_ratio": 1.6314222210130485, + "edge_lengths_px": [ + 26.305892944335938, + 16.278820037841797, + 25.317977905273438, + 16.124515533447266 + ] + }, + "confidence": 0.16263927873225353 + }, + { + "observation_id": "9561cb71-adc1-486c-a0b4-0e65e0aafa59", + "type": "aruco", + "marker_id": 99, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 190.0, + 92.0 + ], + [ + 195.0, + 116.0 + ], + [ + 180.0, + 113.0 + ], + [ + 176.0, + 90.0 + ] + ], + "center_px": [ + 185.25, + 102.75 + ], + "quality": { + "area_px": 329.5, + "perimeter_px": 77.29973030090332, + "sharpness": { + "laplacian_var": 3889.916103574997 + }, + "contrast": { + "p05": 3.0, + "p95": 159.79999999999995, + "dynamic_range": 156.79999999999995, + "mean_gray": 73.67078189300412, + "std_gray": 58.3267954908218 + }, + "geometry": { + "distance_to_center_norm": 0.7385745048522949, + "distance_to_border_px": 90.0 + }, + "edge_ratio": 1.7334935408100178, + "edge_lengths_px": [ + 24.515300750732422, + 15.29705810546875, + 23.34523582458496, + 14.142135620117188 + ] + }, + "confidence": 0.1267190569190249 + }, + { + "observation_id": "931f6a28-8b66-4821-bfbd-42e324b3acad", + "type": "aruco", + "marker_id": 87, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 216.0, + 170.0 + ], + [ + 220.0, + 194.0 + ], + [ + 206.0, + 190.0 + ], + [ + 202.0, + 168.0 + ] + ], + "center_px": [ + 211.0, + 180.5 + ], + "quality": { + "area_px": 310.0, + "perimeter_px": 75.39408588409424, + "sharpness": { + "laplacian_var": 3057.1573362539502 + }, + "contrast": { + "p05": 3.5, + "p95": 169.0, + "dynamic_range": 165.5, + "mean_gray": 92.69491525423729, + "std_gray": 59.96079347212124 + }, + "geometry": { + "distance_to_center_norm": 0.6540036201477051, + "distance_to_border_px": 168.0 + }, + "edge_ratio": 1.7204651069950012, + "edge_lengths_px": [ + 24.331050872802734, + 14.560219764709473, + 22.360679626464844, + 14.142135620117188 + ] + }, + "confidence": 0.12012255629388194 + }, + { + "observation_id": "9eb851af-4e48-45ab-93d7-8ebc7a5417d4", + "type": "aruco", + "marker_id": 67, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 591.0, + 714.0 + ], + [ + 592.0, + 732.0 + ], + [ + 575.0, + 725.0 + ], + [ + 573.0, + 707.0 + ] + ], + "center_px": [ + 582.75, + 719.5 + ], + "quality": { + "area_px": 304.5, + "perimeter_px": 73.83651161193848, + "sharpness": { + "laplacian_var": 2383.5783949003603 + }, + "contrast": { + "p05": 2.0, + "p95": 132.79999999999995, + "dynamic_range": 130.79999999999995, + "mean_gray": 49.60538116591928, + "std_gray": 44.696649363420924 + }, + "geometry": { + "distance_to_center_norm": 0.30780932307243347, + "distance_to_border_px": 228.0 + }, + "edge_ratio": 1.0713040440401636, + "edge_lengths_px": [ + 18.027755737304688, + 18.384777069091797, + 18.11077117919922, + 19.313207626342773 + ] + }, + "confidence": 0.18948869009626315 + }, + { + "observation_id": "49de5ac5-cca2-4e24-bc7f-88f10264a3f7", + "type": "aruco", + "marker_id": 217, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 392.0, + 457.0 + ], + [ + 376.0, + 452.0 + ], + [ + 373.0, + 432.0 + ], + [ + 389.0, + 438.0 + ] + ], + "center_px": [ + 382.5, + 444.75 + ], + "quality": { + "area_px": 295.5, + "perimeter_px": 73.31019401550293, + "sharpness": { + "laplacian_var": 3433.6195816850436 + }, + "contrast": { + "p05": 3.0, + "p95": 165.0, + "dynamic_range": 162.0, + "mean_gray": 65.03211009174312, + "std_gray": 54.51179382656303 + }, + "geometry": { + "distance_to_center_norm": 0.32487693428993225, + "distance_to_border_px": 373.0 + }, + "edge_ratio": 1.2064477802552105, + "edge_lengths_px": [ + 16.76305389404297, + 20.2237491607666, + 17.0880069732666, + 19.235383987426758 + ] + }, + "confidence": 0.16328928878987772 + }, + { + "observation_id": "957cf4b2-27e2-4f05-a493-f83dd2a0843a", + "type": "aruco", + "marker_id": 50, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 547.0, + 654.0 + ], + [ + 550.0, + 673.0 + ], + [ + 532.0, + 666.0 + ], + [ + 530.0, + 649.0 + ] + ], + "center_px": [ + 539.75, + 660.5 + ], + "quality": { + "area_px": 300.0, + "perimeter_px": 73.38587951660156, + "sharpness": { + "laplacian_var": 2453.07820443483 + }, + "contrast": { + "p05": 2.0, + "p95": 135.59999999999997, + "dynamic_range": 133.59999999999997, + "mean_gray": 45.83720930232558, + "std_gray": 45.55187701059914 + }, + "geometry": { + "distance_to_center_norm": 0.2580888867378235, + "distance_to_border_px": 287.0 + }, + "edge_ratio": 1.1282896338626744, + "edge_lengths_px": [ + 19.235383987426758, + 19.313207626342773, + 17.11724281311035, + 17.72004508972168 + ] + }, + "confidence": 0.17725945005388774 + }, + { + "observation_id": "0649f6f1-9e8c-4c62-a8e5-88d5ccbf04da", + "type": "aruco", + "marker_id": 98, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 554.0, + 736.0 + ], + [ + 556.0, + 753.0 + ], + [ + 540.0, + 746.0 + ], + [ + 539.0, + 729.0 + ] + ], + "center_px": [ + 547.25, + 741.0 + ], + "quality": { + "area_px": 253.0, + "perimeter_px": 68.1638240814209, + "sharpness": { + "laplacian_var": 3827.072229379677 + }, + "contrast": { + "p05": 3.0, + "p95": 153.5, + "dynamic_range": 150.5, + "mean_gray": 70.49214659685863, + "std_gray": 55.11633285831109 + }, + "geometry": { + "distance_to_center_norm": 0.3462377190589905, + "distance_to_border_px": 207.0 + }, + "edge_ratio": 1.0550537989754234, + "edge_lengths_px": [ + 17.11724281311035, + 17.464248657226562, + 17.029386520385742, + 16.552946090698242 + ] + }, + "confidence": 0.15986546546769564 + }, + { + "observation_id": "2fd7432d-a47c-4c87-9795-cb5b3bac80c3", + "type": "aruco", + "marker_id": 90, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 506.0, + 718.0 + ], + [ + 507.0, + 735.0 + ], + [ + 492.0, + 728.0 + ], + [ + 490.0, + 711.0 + ] + ], + "center_px": [ + 498.75, + 723.0 + ], + "quality": { + "area_px": 253.0, + "perimeter_px": 68.1638240814209, + "sharpness": { + "laplacian_var": 3313.8417455460553 + }, + "contrast": { + "p05": 2.0, + "p95": 158.09999999999997, + "dynamic_range": 156.09999999999997, + "mean_gray": 74.21390374331551, + "std_gray": 56.02365065179501 + }, + "geometry": { + "distance_to_center_norm": 0.3513379693031311, + "distance_to_border_px": 225.0 + }, + "edge_ratio": 1.0550537989754234, + "edge_lengths_px": [ + 17.029386520385742, + 16.552946090698242, + 17.11724281311035, + 17.464248657226562 + ] + }, + "confidence": 0.15986546546769564 + }, + { + "observation_id": "5b07e78f-9286-48b4-af4c-db01eccd7d8d", + "type": "aruco", + "marker_id": 93, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 291.0, + 515.0 + ], + [ + 294.0, + 533.0 + ], + [ + 280.0, + 527.0 + ], + [ + 277.0, + 510.0 + ] + ], + "center_px": [ + 285.5, + 521.25 + ], + "quality": { + "area_px": 228.5, + "perimeter_px": 65.6085786819458, + "sharpness": { + "laplacian_var": 2404.1137109375 + }, + "contrast": { + "p05": 1.0, + "p95": 123.0, + "dynamic_range": 122.0, + "mean_gray": 45.975, + "std_gray": 42.300406321925564 + }, + "geometry": { + "distance_to_center_norm": 0.44611483812332153, + "distance_to_border_px": 277.0 + }, + "edge_ratio": 1.2275126260544593, + "edge_lengths_px": [ + 18.248287200927734, + 15.231546401977539, + 17.262676239013672, + 14.866068840026855 + ] + }, + "confidence": 0.12409919873734558 + }, + { + "observation_id": "3c39f4c2-6205-4bbe-9275-fdc97c245ebb", + "type": "aruco", + "marker_id": 49, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 250.0, + 513.0 + ], + [ + 254.0, + 529.0 + ], + [ + 239.0, + 523.0 + ], + [ + 236.0, + 508.0 + ] + ], + "center_px": [ + 244.75, + 518.25 + ], + "quality": { + "area_px": 205.5, + "perimeter_px": 62.81104373931885, + "sharpness": { + "laplacian_var": 3773.7832888888893 + }, + "contrast": { + "p05": 1.0, + "p95": 114.84999999999988, + "dynamic_range": 113.84999999999988, + "mean_gray": 34.12, + "std_gray": 37.666239525601696 + }, + "geometry": { + "distance_to_center_norm": 0.4963706135749817, + "distance_to_border_px": 236.0 + }, + "edge_ratio": 1.1094003587199885, + "edge_lengths_px": [ + 16.492422103881836, + 16.155494689941406, + 15.29705810546875, + 14.866068840026855 + ] + }, + "confidence": 0.12349013493926465 + } + ], + "rejected_candidates": [ + { + "image_points_px": [ + [ + 240.0, + 488.0 + ], + [ + 253.0, + 463.0 + ], + [ + 446.0, + 514.0 + ], + [ + 443.0, + 540.0 + ] + ], + "center_px": [ + 345.5, + 501.25 + ], + "area_px": 5461.0 + }, + { + "image_points_px": [ + [ + 389.0, + 483.0 + ], + [ + 397.0, + 479.0 + ], + [ + 442.0, + 494.0 + ], + [ + 438.0, + 499.0 + ] + ], + "center_px": [ + 416.5, + 488.75 + ], + "area_px": 304.5 + }, + { + "image_points_px": [ + [ + 694.0, + 202.0 + ], + [ + 719.0, + 206.0 + ], + [ + 720.0, + 235.0 + ], + [ + 696.0, + 231.0 + ] + ], + "center_px": [ + 707.25, + 218.5 + ], + "area_px": 704.5 + }, + { + "image_points_px": [ + [ + 637.0, + 581.0 + ], + [ + 651.0, + 595.0 + ], + [ + 638.0, + 625.0 + ], + [ + 623.0, + 614.0 + ] + ], + "center_px": [ + 637.25, + 603.75 + ], + "area_px": 625.5 + }, + { + "image_points_px": [ + [ + 734.0, + 597.0 + ], + [ + 758.0, + 603.0 + ], + [ + 760.0, + 629.0 + ], + [ + 734.0, + 620.0 + ] + ], + "center_px": [ + 746.5, + 612.25 + ], + "area_px": 605.0 + }, + { + "image_points_px": [ + [ + 699.0, + 431.0 + ], + [ + 724.0, + 436.0 + ], + [ + 724.0, + 462.0 + ], + [ + 701.0, + 456.0 + ] + ], + "center_px": [ + 712.0, + 446.25 + ], + "area_px": 606.5 + }, + { + "image_points_px": [ + [ + 414.0, + 438.0 + ], + [ + 434.0, + 443.0 + ], + [ + 438.0, + 469.0 + ], + [ + 417.0, + 463.0 + ] + ], + "center_px": [ + 425.75, + 453.25 + ], + "area_px": 503.5 + }, + { + "image_points_px": [ + [ + 580.0, + 298.0 + ], + [ + 574.0, + 337.0 + ], + [ + 569.0, + 339.0 + ], + [ + 573.0, + 301.0 + ] + ], + "center_px": [ + 574.0, + 318.75 + ], + "area_px": 218.5 + }, + { + "image_points_px": [ + [ + 430.0, + 270.0 + ], + [ + 449.0, + 275.0 + ], + [ + 451.0, + 298.0 + ], + [ + 432.0, + 294.0 + ] + ], + "center_px": [ + 440.5, + 284.25 + ], + "area_px": 437.5 + }, + { + "image_points_px": [ + [ + 664.0, + 735.0 + ], + [ + 684.0, + 743.0 + ], + [ + 686.0, + 761.0 + ], + [ + 666.0, + 754.0 + ] + ], + "center_px": [ + 675.0, + 748.25 + ], + "area_px": 355.0 + }, + { + "image_points_px": [ + [ + 644.0, + 747.0 + ], + [ + 662.0, + 754.0 + ], + [ + 664.0, + 774.0 + ], + [ + 645.0, + 766.0 + ] + ], + "center_px": [ + 653.75, + 760.25 + ], + "area_px": 349.5 + }, + { + "image_points_px": [ + [ + 597.0, + 673.0 + ], + [ + 616.0, + 680.0 + ], + [ + 616.0, + 700.0 + ], + [ + 598.0, + 691.0 + ] + ], + "center_px": [ + 606.75, + 686.0 + ], + "area_px": 347.5 + }, + { + "image_points_px": [ + [ + 148.0, + 40.0 + ], + [ + 161.0, + 40.0 + ], + [ + 166.0, + 65.0 + ], + [ + 150.0, + 63.0 + ] + ], + "center_px": [ + 156.25, + 52.0 + ], + "area_px": 344.5 + }, + { + "image_points_px": [ + [ + 556.0, + 637.0 + ], + [ + 574.0, + 644.0 + ], + [ + 575.0, + 662.0 + ], + [ + 558.0, + 656.0 + ] + ], + "center_px": [ + 565.75, + 649.75 + ], + "area_px": 314.0 + }, + { + "image_points_px": [ + [ + 220.0, + 316.0 + ], + [ + 235.0, + 320.0 + ], + [ + 239.0, + 340.0 + ], + [ + 224.0, + 336.0 + ] + ], + "center_px": [ + 229.5, + 328.0 + ], + "area_px": 284.0 + }, + { + "image_points_px": [ + [ + 517.0, + 711.0 + ], + [ + 533.0, + 716.0 + ], + [ + 536.0, + 735.0 + ], + [ + 519.0, + 727.0 + ] + ], + "center_px": [ + 526.25, + 722.25 + ], + "area_px": 272.5 + }, + { + "image_points_px": [ + [ + 472.0, + 447.0 + ], + [ + 475.0, + 453.0 + ], + [ + 469.0, + 481.0 + ], + [ + 466.0, + 473.0 + ] + ], + "center_px": [ + 470.5, + 463.5 + ], + "area_px": 123.0 + }, + { + "image_points_px": [ + [ + 436.0, + 697.0 + ], + [ + 451.0, + 703.0 + ], + [ + 454.0, + 721.0 + ], + [ + 438.0, + 714.0 + ] + ], + "center_px": [ + 444.75, + 708.75 + ], + "area_px": 255.0 + }, + { + "image_points_px": [ + [ + 364.0, + 560.0 + ], + [ + 380.0, + 567.0 + ], + [ + 383.0, + 583.0 + ], + [ + 367.0, + 577.0 + ] + ], + "center_px": [ + 373.5, + 571.75 + ], + "area_px": 244.5 + }, + { + "image_points_px": [ + [ + 238.0, + 394.0 + ], + [ + 251.0, + 398.0 + ], + [ + 256.0, + 417.0 + ], + [ + 241.0, + 413.0 + ] + ], + "center_px": [ + 246.5, + 405.5 + ], + "area_px": 250.0 + }, + { + "image_points_px": [ + [ + 358.0, + 606.0 + ], + [ + 373.0, + 612.0 + ], + [ + 376.0, + 629.0 + ], + [ + 361.0, + 623.0 + ] + ], + "center_px": [ + 367.0, + 617.5 + ], + "area_px": 237.0 + }, + { + "image_points_px": [ + [ + 407.0, + 678.0 + ], + [ + 422.0, + 685.0 + ], + [ + 424.0, + 701.0 + ], + [ + 409.0, + 694.0 + ] + ], + "center_px": [ + 415.5, + 689.5 + ], + "area_px": 226.0 + }, + { + "image_points_px": [ + [ + 319.0, + 545.0 + ], + [ + 333.0, + 551.0 + ], + [ + 335.0, + 568.0 + ], + [ + 321.0, + 562.0 + ] + ], + "center_px": [ + 327.0, + 556.5 + ], + "area_px": 226.0 + }, + { + "image_points_px": [ + [ + 533.0, + 488.0 + ], + [ + 531.0, + 513.0 + ], + [ + 528.0, + 517.0 + ], + [ + 530.0, + 492.0 + ] + ], + "center_px": [ + 530.5, + 502.5 + ], + "area_px": 67.0 + }, + { + "image_points_px": [ + [ + 912.0, + 544.0 + ], + [ + 935.0, + 548.0 + ], + [ + 936.0, + 551.0 + ], + [ + 920.0, + 548.0 + ] + ], + "center_px": [ + 925.75, + 547.75 + ], + "area_px": 52.5 + } + ] +} \ No newline at end of file diff --git a/test/homing/20260616_135403/cam1_camera_pose.json b/test/homing/20260616_135403/cam1_camera_pose.json new file mode 100644 index 0000000..5b840fd --- /dev/null +++ b/test/homing/20260616_135403/cam1_camera_pose.json @@ -0,0 +1,635 @@ +{ + "schema_version": "1.0", + "created_utc": "2026-06-16T13:54:13Z", + "source": { + "detection_json": "/app/data/homing/20260616_135403/cam1_aruco_detection.json", + "robot_json": "/app/scripts/robot_1781069752019.json" + }, + "camera": { + "camera_id": "cam1", + "camera_matrix": [ + [ + 1367.5723876953125, + 0.0, + 672.1165771484375 + ], + [ + 0.0, + 1372.3011474609375, + 445.8396911621094 + ], + [ + 0.0, + 0.0, + 1.0 + ] + ], + "distortion_coefficients": [ + 0.01016925647854805, + 0.7656787633895874, + -0.0031530377455055714, + -0.00288817984983325, + -2.490830183029175 + ] + }, + "estimation": { + "method": "single_camera_marker_center_lm", + "description": "Rigid init from per-marker pose estimates, followed by LM on normalized marker-center reprojection residuals.", + "marker_size_m": 0.025, + "num_used_markers": 31, + "used_marker_ids": [ + 69, + 64, + 95, + 97, + 51, + 54, + 55, + 75, + 77, + 79, + 52, + 96, + 57, + 81, + 62, + 101, + 59, + 48, + 71, + 102, + 78, + 65, + 80, + 99, + 87, + 67, + 50, + 98, + 90, + 93, + 49 + ], + "history": { + "iters": [ + 0, + 1, + 2, + 3 + ], + "rms": [ + 0.0166526002104434, + 0.001547861856607491, + 0.0009010954140942989, + 0.0009010670474135007 + ], + "lambda": [ + 0.001, + 0.0005, + 0.00025, + 0.000125 + ] + }, + "residual_rms_px": 1.772902101262499, + "residual_median_px": 1.078829411239929, + "residual_max_px": 4.132896609973797, + "sigma2_normalized": 8.989134466205308e-07 + }, + "camera_pose": { + "world_to_camera": { + "rotation_matrix": [ + [ + -0.8299428224563599, + 0.047987256199121475, + -0.5557806491851807 + ], + [ + -0.2067878544330597, + 0.8988499641418457, + 0.38640326261520386 + ], + [ + 0.5181058645248413, + 0.4356212913990021, + -0.7360709309577942 + ] + ], + "translation_m": [ + 0.3115391731262207, + 0.15955179929733276, + 1.010721206665039 + ], + "rvec_rad": [ + 0.11388470361679144, + -2.484845661051424, + -0.5895193293685591 + ] + }, + "camera_in_world": { + "position_m": [ + -0.2321075201034546, + -0.5986547470092773, + 0.8554586172103882 + ], + "position_mm": [ + -232.10751342773438, + -598.6547241210938, + 855.4586181640625 + ], + "orientation_deg": { + "roll": 149.38209533691406, + "pitch": -31.20528221130371, + "yaw": -166.0091094970703 + } + }, + "uncertainty": { + "pose_covariance_6x6": [ + [ + 6.177429611549712e-07, + -3.271435310513194e-07, + 2.0826038527175038e-07, + 1.1745289691018253e-08, + 1.246399175351463e-07, + 2.5938496303806914e-07 + ], + [ + -3.2714353105131786e-07, + 1.818745262675688e-06, + -7.758187179653276e-07, + -3.7391240334935067e-07, + 1.2355085126162834e-07, + -1.0480837144134802e-06 + ], + [ + 2.0826038527175115e-07, + -7.758187179653164e-07, + 3.196631325051651e-06, + -1.4226982133415135e-07, + -2.472220165745438e-07, + -5.7071288101408645e-08 + ], + [ + 1.1745289691017904e-08, + -3.73912403349352e-07, + -1.422698213341482e-07, + 1.5450238837808334e-07, + -1.8371188573627686e-08, + 2.69737538270126e-07 + ], + [ + 1.246399175351462e-07, + 1.2355085126162715e-07, + -2.472220165745455e-07, + -1.8371188573627196e-08, + 1.0508537079793492e-07, + -3.375059213526172e-08 + ], + [ + 2.5938496303806766e-07, + -1.048083714413481e-06, + -5.707128810140133e-08, + 2.697375382701256e-07, + -3.375059213526283e-08, + 1.1991223310707593e-06 + ] + ], + "parameter_std": { + "rvec_std_deg": [ + 0.04503254951204292, + 0.07726958326123887, + 0.10243984387203064 + ], + "tvec_std_m": [ + 0.00039306791827632454, + 0.00032416873815643436, + 0.0010950444425094168 + ] + }, + "camera_center_std_m": [ + 0.0011416833258602707, + 0.001399943682910595, + 0.0016242027716662328 + ], + "camera_center_std_mm": [ + 1.1416833258602708, + 1.3999436829105951, + 1.6242027716662328 + ], + "orientation_std_deg": { + "roll": 0.10912552250951364, + "pitch": 0.06634826995916507, + "yaw": 0.05269160994227188 + } + } + }, + "observations": { + "markers": [ + { + "marker_id": 69, + "observed_center_px": [ + 1132.25, + 285.75 + ], + "projected_center_px": [ + 1135.0460205078125, + 285.681884765625 + ], + "reprojection_error_px": 2.796850079153695, + "confidence": 0.7848853204330548 + }, + { + "marker_id": 64, + "observed_center_px": [ + 1159.75, + 422.0 + ], + "projected_center_px": [ + 1163.8828125, + 422.0263671875 + ], + "reprojection_error_px": 4.132896609973797, + "confidence": 0.6665931083934911 + }, + { + "marker_id": 95, + "observed_center_px": [ + 888.25, + 260.75 + ], + "projected_center_px": [ + 888.2636108398438, + 260.42254638671875 + ], + "reprojection_error_px": 0.32773636327420036, + "confidence": 0.532721681679907 + }, + { + "marker_id": 97, + "observed_center_px": [ + 747.75, + 130.0 + ], + "projected_center_px": [ + 747.532470703125, + 128.94332885742188 + ], + "reprojection_error_px": 1.078829411239929, + "confidence": 0.46560622960207215 + }, + { + "marker_id": 51, + "observed_center_px": [ + 907.0, + 393.0 + ], + "projected_center_px": [ + 907.0470581054688, + 392.5666809082031 + ], + "reprojection_error_px": 0.4358668381581427, + "confidence": 0.51593747520078 + }, + { + "marker_id": 54, + "observed_center_px": [ + 707.25, + 163.0 + ], + "projected_center_px": [ + 706.4639892578125, + 162.5380096435547 + ], + "reprojection_error_px": 0.9117280166160364, + "confidence": 0.39406543798060945 + }, + { + "marker_id": 55, + "observed_center_px": [ + 773.25, + 258.25 + ], + "projected_center_px": [ + 773.2633666992188, + 257.52667236328125 + ], + "reprojection_error_px": 0.7234511308230408, + "confidence": 0.46078075075842734 + }, + { + "marker_id": 75, + "observed_center_px": [ + 1118.0, + 858.25 + ], + "projected_center_px": [ + 1118.6734619140625, + 858.496826171875 + ], + "reprojection_error_px": 0.7172685053835789, + "confidence": 0.31814404623997206 + }, + { + "marker_id": 77, + "observed_center_px": [ + 1064.25, + 835.25 + ], + "projected_center_px": [ + 1064.912109375, + 835.7826538085938 + ], + "reprojection_error_px": 0.8497699125482838, + "confidence": 0.2764879183628208 + }, + { + "marker_id": 79, + "observed_center_px": [ + 745.5, + 374.75 + ], + "projected_center_px": [ + 745.0097045898438, + 374.2278137207031 + ], + "reprojection_error_px": 0.7162877211750871, + "confidence": 0.4170494444576311 + }, + { + "marker_id": 52, + "observed_center_px": [ + 975.0, + 818.5 + ], + "projected_center_px": [ + 974.7210083007812, + 818.7593383789062 + ], + "reprojection_error_px": 0.38091043961368026, + "confidence": 0.28365791942355234 + }, + { + "marker_id": 96, + "observed_center_px": [ + 686.0, + 332.0 + ], + "projected_center_px": [ + 685.1288452148438, + 331.39532470703125 + ], + "reprojection_error_px": 1.0604446565603864, + "confidence": 0.34158615574582396 + }, + { + "marker_id": 57, + "observed_center_px": [ + 450.5, + 91.0 + ], + "projected_center_px": [ + 449.3786926269531, + 91.75985717773438 + ], + "reprojection_error_px": 1.3545158380040203, + "confidence": 0.2640566098051195 + }, + { + "marker_id": 81, + "observed_center_px": [ + 935.5, + 766.25 + ], + "projected_center_px": [ + 935.0217895507812, + 766.4747314453125 + ], + "reprojection_error_px": 0.5283838152841586, + "confidence": 0.2860351956805948 + }, + { + "marker_id": 62, + "observed_center_px": [ + 652.0, + 337.0 + ], + "projected_center_px": [ + 651.4396362304688, + 337.208251953125 + ], + "reprojection_error_px": 0.5978096939525563, + "confidence": 0.29846808668025543 + }, + { + "marker_id": 101, + "observed_center_px": [ + 947.0, + 889.5 + ], + "projected_center_px": [ + 945.738037109375, + 889.663818359375 + ], + "reprojection_error_px": 1.272551292554812, + "confidence": 0.2368447831748287 + }, + { + "marker_id": 59, + "observed_center_px": [ + 442.75, + 186.75 + ], + "projected_center_px": [ + 441.92218017578125, + 187.2548065185547 + ], + "reprojection_error_px": 0.9695954220936, + "confidence": 0.2403878054047415 + }, + { + "marker_id": 48, + "observed_center_px": [ + 384.5, + 132.25 + ], + "projected_center_px": [ + 384.16497802734375, + 133.0881805419922 + ], + "reprojection_error_px": 0.9026551629148323, + "confidence": 0.2302842308363423 + }, + { + "marker_id": 71, + "observed_center_px": [ + 342.75, + 165.5 + ], + "projected_center_px": [ + 342.5614929199219, + 166.22940063476562 + ], + "reprojection_error_px": 0.7533659172248751, + "confidence": 0.19446237400059435 + }, + { + "marker_id": 102, + "observed_center_px": [ + 431.5, + 243.5 + ], + "projected_center_px": [ + 430.61041259765625, + 244.0597686767578 + ], + "reprojection_error_px": 1.0510502927490641, + "confidence": 0.21383444473187546 + }, + { + "marker_id": 78, + "observed_center_px": [ + 275.75, + 91.5 + ], + "projected_center_px": [ + 276.2151794433594, + 93.39916229248047 + ], + "reprojection_error_px": 1.955302873649964, + "confidence": 0.19179473932902583 + }, + { + "marker_id": 65, + "observed_center_px": [ + 299.5, + 144.75 + ], + "projected_center_px": [ + 299.9003601074219, + 145.89024353027344 + ], + "reprojection_error_px": 1.2084881149375393, + "confidence": 0.18371428147783359 + }, + { + "marker_id": 80, + "observed_center_px": [ + 248.0, + 96.75 + ], + "projected_center_px": [ + 248.6451873779297, + 98.80813598632812 + ], + "reprojection_error_px": 2.15689371338938, + "confidence": 0.16263927873225353 + }, + { + "marker_id": 99, + "observed_center_px": [ + 185.25, + 102.75 + ], + "projected_center_px": [ + 186.1451873779297, + 105.17755889892578 + ], + "reprojection_error_px": 2.5873543725895725, + "confidence": 0.1267190569190249 + }, + { + "marker_id": 87, + "observed_center_px": [ + 211.0, + 180.5 + ], + "projected_center_px": [ + 212.29312133789062, + 182.40245056152344 + ], + "reprojection_error_px": 2.300321919547106, + "confidence": 0.12012255629388194 + }, + { + "marker_id": 67, + "observed_center_px": [ + 582.75, + 719.5 + ], + "projected_center_px": [ + 580.64990234375, + 717.6641845703125 + ], + "reprojection_error_px": 2.789377790415892, + "confidence": 0.18948869009626315 + }, + { + "marker_id": 50, + "observed_center_px": [ + 539.75, + 660.5 + ], + "projected_center_px": [ + 538.0208129882812, + 659.2553100585938 + ], + "reprojection_error_px": 2.1305728740727727, + "confidence": 0.17725945005388774 + }, + { + "marker_id": 98, + "observed_center_px": [ + 547.25, + 741.0 + ], + "projected_center_px": [ + 545.20556640625, + 739.264404296875 + ], + "reprojection_error_px": 2.6817906637095117, + "confidence": 0.15986546546769564 + }, + { + "marker_id": 90, + "observed_center_px": [ + 498.75, + 723.0 + ], + "projected_center_px": [ + 496.80267333984375, + 720.6588134765625 + ], + "reprojection_error_px": 3.045198755234322, + "confidence": 0.15986546546769564 + }, + { + "marker_id": 93, + "observed_center_px": [ + 285.5, + 521.25 + ], + "projected_center_px": [ + 286.17669677734375, + 519.6380004882812 + ], + "reprojection_error_px": 1.7482737069031569, + "confidence": 0.12409919873734558 + }, + { + "marker_id": 49, + "observed_center_px": [ + 244.75, + 518.25 + ], + "projected_center_px": [ + 246.22958374023438, + 516.4528198242188 + ], + "reprojection_error_px": 2.3278798569915646, + "confidence": 0.12349013493926465 + } + ] + }, + "qa": { + "sanity_notes": [] + } +} \ No newline at end of file diff --git a/test/homing/20260616_135403/cam1_debug.jpg b/test/homing/20260616_135403/cam1_debug.jpg new file mode 100644 index 0000000..572d02a Binary files /dev/null and b/test/homing/20260616_135403/cam1_debug.jpg differ diff --git a/test/homing/20260616_135403/cam2.jpg b/test/homing/20260616_135403/cam2.jpg new file mode 100644 index 0000000..763efc2 Binary files /dev/null and b/test/homing/20260616_135403/cam2.jpg differ diff --git a/test/homing/20260616_135403/cam2_aruco_detection.json b/test/homing/20260616_135403/cam2_aruco_detection.json new file mode 100644 index 0000000..f6af08f --- /dev/null +++ b/test/homing/20260616_135403/cam2_aruco_detection.json @@ -0,0 +1,3289 @@ +{ + "schema_version": "1.0", + "created_utc": "2026-06-16T13:54:15Z", + "vision_config": { + "MarkerType": "DICT_4X4_250", + "MarkerSize": 0.025 + }, + "camera": { + "camera_id": "cam2", + "intrinsics_file": "/app/data/calibration/20260610_092149/cam2_calibration.npz", + "camera_matrix": [ + [ + 1388.99072265625, + 0.0, + 933.082763671875 + ], + [ + 0.0, + 1394.8729248046875, + 562.4996948242188 + ], + [ + 0.0, + 0.0, + 1.0 + ] + ], + "distortion_coefficients": [ + 0.019531700760126114, + -0.11213663965463638, + 0.0026758278254419565, + 0.0007694826927036047, + 0.05339815095067024 + ] + }, + "image": { + "image_file": "/app/data/homing/20260616_135403/cam2.jpg", + "image_sha256": "4c69af11ad5c5325ccfc73ad69655f28598e085787818ec3e40b3ce17724be6d", + "width_px": 1920, + "height_px": 1080 + }, + "aruco": { + "dictionary": "DICT_4X4_250", + "num_detected_markers": 47, + "num_rejected_candidates": 28 + }, + "detections": [ + { + "observation_id": "8d177a66-defd-4c50-8492-8b8f7bd6aeba", + "type": "aruco", + "marker_id": 229, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1037.0, + 941.0 + ], + [ + 1012.0, + 902.0 + ], + [ + 1046.0, + 869.0 + ], + [ + 1072.0, + 910.0 + ] + ], + "center_px": [ + 1041.75, + 905.5 + ], + "quality": { + "area_px": 2196.0, + "perimeter_px": 189.00999450683594, + "sharpness": { + "laplacian_var": 190.31707938352858 + }, + "contrast": { + "p05": 9.0, + "p95": 82.0, + "dynamic_range": 73.0, + "mean_gray": 29.594093406593405, + "std_gray": 27.602271232637115 + }, + "geometry": { + "distance_to_center_norm": 0.3400332033634186, + "distance_to_border_px": 139.0 + }, + "edge_ratio": 1.0480087583751552, + "edge_lengths_px": [ + 46.3249397277832, + 47.381431579589844, + 48.54894256591797, + 46.75468063354492 + ] + }, + "confidence": 0.8706988302414098 + }, + { + "observation_id": "c214965d-705a-444f-914e-6476d388aa17", + "type": "aruco", + "marker_id": 198, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 912.0, + 1062.0 + ], + [ + 891.0, + 1022.0 + ], + [ + 923.0, + 990.0 + ], + [ + 945.0, + 1032.0 + ] + ], + "center_px": [ + 917.75, + 1026.5 + ], + "quality": { + "area_px": 1999.0, + "perimeter_px": 182.44354629516602, + "sharpness": { + "laplacian_var": 321.18219717738185 + }, + "contrast": { + "p05": 6.0, + "p95": 87.0, + "dynamic_range": 81.0, + "mean_gray": 36.464692482915716, + "std_gray": 32.20680620824582 + }, + "geometry": { + "distance_to_center_norm": 0.44335153698921204, + "distance_to_border_px": 18.0 + }, + "edge_ratio": 1.06311627801948, + "edge_lengths_px": [ + 45.17742919921875, + 45.25483322143555, + 47.41307830810547, + 44.59820556640625 + ] + }, + "confidence": 0.3386271167540184 + }, + { + "observation_id": "c9e25275-08e6-4c35-8dd5-904c07b9f23d", + "type": "aruco", + "marker_id": 121, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 960.0, + 794.0 + ], + [ + 940.0, + 761.0 + ], + [ + 977.0, + 735.0 + ], + [ + 999.0, + 768.0 + ] + ], + "center_px": [ + 969.0, + 764.5 + ], + "quality": { + "area_px": 1800.0, + "perimeter_px": 170.34246826171875, + "sharpness": { + "laplacian_var": 912.9834820198225 + }, + "contrast": { + "p05": 8.0, + "p95": 119.0, + "dynamic_range": 111.0, + "mean_gray": 38.60782747603834, + "std_gray": 42.97978984239864 + }, + "geometry": { + "distance_to_center_norm": 0.2039852887392044, + "distance_to_border_px": 286.0 + }, + "edge_ratio": 1.2146962018083538, + "edge_lengths_px": [ + 38.587562561035156, + 45.221675872802734, + 39.66106414794922, + 46.87216567993164 + ] + }, + "confidence": 0.8232511129212973 + }, + { + "observation_id": "bdc956a1-216f-40fb-93bd-ad1eb2b7261d", + "type": "aruco", + "marker_id": 132, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1041.0, + 814.0 + ], + [ + 1019.0, + 780.0 + ], + [ + 1056.0, + 775.0 + ], + [ + 1079.0, + 809.0 + ] + ], + "center_px": [ + 1048.75, + 794.5 + ], + "quality": { + "area_px": 1387.5, + "perimeter_px": 157.20951080322266, + "sharpness": { + "laplacian_var": 3129.360662084063 + }, + "contrast": { + "p05": 42.0, + "p95": 215.0, + "dynamic_range": 173.0, + "mean_gray": 98.24819773429454, + "std_gray": 64.02081265883355 + }, + "geometry": { + "distance_to_center_norm": 0.24470457434654236, + "distance_to_border_px": 266.0 + }, + "edge_ratio": 1.099432551086392, + "edge_lengths_px": [ + 40.49691390991211, + 37.336307525634766, + 41.04875183105469, + 38.327537536621094 + ] + }, + "confidence": 0.8413431083934814 + }, + { + "observation_id": "3f774901-21fa-4ffc-a5df-c67196fd2048", + "type": "aruco", + "marker_id": 129, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1007.0, + 763.0 + ], + [ + 984.0, + 731.0 + ], + [ + 1022.0, + 726.0 + ], + [ + 1044.0, + 757.0 + ] + ], + "center_px": [ + 1014.25, + 744.25 + ], + "quality": { + "area_px": 1305.0, + "perimeter_px": 153.2321434020996, + "sharpness": { + "laplacian_var": 4267.978808949666 + }, + "contrast": { + "p05": 30.200000000000003, + "p95": 214.0, + "dynamic_range": 183.8, + "mean_gray": 104.52154696132597, + "std_gray": 71.2598530927498 + }, + "geometry": { + "distance_to_center_norm": 0.19186626374721527, + "distance_to_border_px": 317.0 + }, + "edge_ratio": 1.0513505454390024, + "edge_lengths_px": [ + 39.408119201660156, + 38.327537536621094, + 38.01315689086914, + 37.48332977294922 + ] + }, + "confidence": 0.8275070610599459 + }, + { + "observation_id": "53993fcb-e749-4b99-ad83-3d2aecf7b182", + "type": "aruco", + "marker_id": 146, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1173.0, + 786.0 + ], + [ + 1167.0, + 744.0 + ], + [ + 1198.0, + 738.0 + ], + [ + 1204.0, + 780.0 + ] + ], + "center_px": [ + 1185.5, + 762.0 + ], + "quality": { + "area_px": 1338.0, + "perimeter_px": 148.00342559814453, + "sharpness": { + "laplacian_var": 2469.587237015122 + }, + "contrast": { + "p05": 51.0, + "p95": 193.0, + "dynamic_range": 142.0, + "mean_gray": 104.55982905982906, + "std_gray": 52.180986909434495 + }, + "geometry": { + "distance_to_center_norm": 0.28729304671287537, + "distance_to_border_px": 294.0 + }, + "edge_ratio": 1.3436578237021668, + "edge_lengths_px": [ + 42.42640686035156, + 31.575305938720703, + 42.42640686035156, + 31.575305938720703 + ] + }, + "confidence": 0.6638594918029662 + }, + { + "observation_id": "d27ac93a-c893-4c62-8126-cb6345c0833f", + "type": "aruco", + "marker_id": 66, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1520.0, + 1058.0 + ], + [ + 1491.0, + 1074.0 + ], + [ + 1466.0, + 1042.0 + ], + [ + 1495.0, + 1027.0 + ] + ], + "center_px": [ + 1493.0, + 1050.25 + ], + "quality": { + "area_px": 1301.0, + "perimeter_px": 146.20314025878906, + "sharpness": { + "laplacian_var": 2452.023491839449 + }, + "contrast": { + "p05": 36.25, + "p95": 192.0, + "dynamic_range": 155.75, + "mean_gray": 85.46049661399549, + "std_gray": 59.10546602832991 + }, + "geometry": { + "distance_to_center_norm": 0.66990065574646, + "distance_to_border_px": 6.0 + }, + "edge_ratio": 1.2437460793785564, + "edge_lengths_px": [ + 33.12099075317383, + 40.607879638671875, + 32.649654388427734, + 39.824615478515625 + ] + }, + "confidence": 0.08368267584972333 + }, + { + "observation_id": "6a75c1e8-c52f-4b41-a5d2-861508358a6f", + "type": "aruco", + "marker_id": 79, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1168.0, + 1061.0 + ], + [ + 1137.0, + 1076.0 + ], + [ + 1117.0, + 1044.0 + ], + [ + 1148.0, + 1029.0 + ] + ], + "center_px": [ + 1142.5, + 1052.5 + ], + "quality": { + "area_px": 1292.0, + "perimeter_px": 144.34854888916016, + "sharpness": { + "laplacian_var": 2821.277014829271 + }, + "contrast": { + "p05": 20.0, + "p95": 180.0, + "dynamic_range": 160.0, + "mean_gray": 98.69434832756632, + "std_gray": 63.91560181137161 + }, + "geometry": { + "distance_to_center_norm": 0.4939149022102356, + "distance_to_border_px": 4.0 + }, + "edge_ratio": 1.0957529331320441, + "edge_lengths_px": [ + 34.438350677490234, + 37.735923767089844, + 34.438350677490234, + 37.735923767089844 + ] + }, + "confidence": 0.06288522219119905 + }, + { + "observation_id": "5c4604c2-2792-4fe1-8066-d7fe9ae47e93", + "type": "aruco", + "marker_id": 56, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 592.0, + 1033.0 + ], + [ + 555.0, + 1050.0 + ], + [ + 546.0, + 1019.0 + ], + [ + 581.0, + 1003.0 + ] + ], + "center_px": [ + 568.5, + 1026.25 + ], + "quality": { + "area_px": 1263.0, + "perimeter_px": 143.43542861938477, + "sharpness": { + "laplacian_var": 1117.6062240468348 + }, + "contrast": { + "p05": 7.0, + "p95": 131.3499999999999, + "dynamic_range": 124.34999999999991, + "mean_gray": 38.337528604118994, + "std_gray": 44.01977698168081 + }, + "geometry": { + "distance_to_center_norm": 0.5667679309844971, + "distance_to_border_px": 30.0 + }, + "edge_ratio": 1.2743226702064907, + "edge_lengths_px": [ + 40.71854782104492, + 32.280025482177734, + 38.4837646484375, + 31.95309066772461 + ] + }, + "confidence": 0.3964459016633029 + }, + { + "observation_id": "58ecb6d8-ee0e-4c85-a44a-82b37a8ffd02", + "type": "aruco", + "marker_id": 98, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 344.0, + 1031.0 + ], + [ + 307.0, + 1046.0 + ], + [ + 301.0, + 1015.0 + ], + [ + 338.0, + 1001.0 + ] + ], + "center_px": [ + 322.5, + 1023.25 + ], + "quality": { + "area_px": 1215.5, + "perimeter_px": 141.65443420410156, + "sharpness": { + "laplacian_var": 1903.142002770526 + }, + "contrast": { + "p05": 11.0, + "p95": 148.0, + "dynamic_range": 137.0, + "mean_gray": 64.14720194647202, + "std_gray": 55.63579853426741 + }, + "geometry": { + "distance_to_center_norm": 0.7262770533561707, + "distance_to_border_px": 34.0 + }, + "edge_ratio": 1.3049872170596144, + "edge_lengths_px": [ + 39.924930572509766, + 31.575305938720703, + 39.560081481933594, + 30.5941162109375 + ] + }, + "confidence": 0.4222467925074662 + }, + { + "observation_id": "af279ab0-3240-4ef9-8bbe-b525897062ed", + "type": "aruco", + "marker_id": 55, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1324.0, + 1029.0 + ], + [ + 1295.0, + 1044.0 + ], + [ + 1273.0, + 1013.0 + ], + [ + 1303.0, + 998.0 + ] + ], + "center_px": [ + 1298.75, + 1021.0 + ], + "quality": { + "area_px": 1237.0, + "perimeter_px": 141.64712142944336, + "sharpness": { + "laplacian_var": 2593.908026441961 + }, + "contrast": { + "p05": 29.0, + "p95": 187.0, + "dynamic_range": 158.0, + "mean_gray": 93.93486127864898, + "std_gray": 63.88388972279829 + }, + "geometry": { + "distance_to_center_norm": 0.5341244339942932, + "distance_to_border_px": 36.0 + }, + "edge_ratio": 1.1642744036011123, + "edge_lengths_px": [ + 32.649654388427734, + 38.01315689086914, + 33.541019439697266, + 37.44329071044922 + ] + }, + "confidence": 0.5099828684402014 + }, + { + "observation_id": "f087c123-2ccd-4dc3-a54a-d20284fec431", + "type": "aruco", + "marker_id": 70, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 359.0, + 988.0 + ], + [ + 322.0, + 1003.0 + ], + [ + 316.0, + 974.0 + ], + [ + 352.0, + 958.0 + ] + ], + "center_px": [ + 337.25, + 980.75 + ], + "quality": { + "area_px": 1177.5, + "perimeter_px": 139.7403907775879, + "sharpness": { + "laplacian_var": 1771.0678595548866 + }, + "contrast": { + "p05": 10.0, + "p95": 148.0, + "dynamic_range": 138.0, + "mean_gray": 67.2409033877039, + "std_gray": 56.42044783755411 + }, + "geometry": { + "distance_to_center_norm": 0.6926668882369995, + "distance_to_border_px": 77.0 + }, + "edge_ratio": 1.3481691332457661, + "edge_lengths_px": [ + 39.924930572509766, + 29.614185333251953, + 39.39543151855469, + 30.805843353271484 + ] + }, + "confidence": 0.5822711562236141 + }, + { + "observation_id": "6908aad6-81cc-47ce-8ad8-acb174f42fd9", + "type": "aruco", + "marker_id": 243, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1128.0, + 886.0 + ], + [ + 1101.0, + 848.0 + ], + [ + 1123.0, + 857.0 + ], + [ + 1150.0, + 894.0 + ] + ], + "center_px": [ + 1125.5, + 871.25 + ], + "quality": { + "area_px": 595.5, + "perimeter_px": 139.59850311279297, + "sharpness": { + "laplacian_var": 5221.592393813481 + }, + "contrast": { + "p05": 45.0, + "p95": 231.0, + "dynamic_range": 186.0, + "mean_gray": 114.06798245614036, + "std_gray": 66.93740353808732 + }, + "geometry": { + "distance_to_center_norm": 0.33618563413619995, + "distance_to_border_px": 186.0 + }, + "edge_ratio": 1.9913133153544202, + "edge_lengths_px": [ + 46.615447998046875, + 23.76972770690918, + 45.80392837524414, + 23.409399032592773 + ] + }, + "confidence": 0.19936591441379514 + }, + { + "observation_id": "70bf508d-67bf-464a-8810-390349a1c3d5", + "type": "aruco", + "marker_id": 143, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1260.0, + 770.0 + ], + [ + 1254.0, + 730.0 + ], + [ + 1283.0, + 725.0 + ], + [ + 1288.0, + 765.0 + ] + ], + "center_px": [ + 1271.25, + 747.5 + ], + "quality": { + "area_px": 1167.5, + "perimeter_px": 138.6295871734619, + "sharpness": { + "laplacian_var": 2963.3118907982125 + }, + "contrast": { + "p05": 69.0, + "p95": 200.0, + "dynamic_range": 131.0, + "mean_gray": 125.36683417085428, + "std_gray": 49.26893795041096 + }, + "geometry": { + "distance_to_center_norm": 0.3396202623844147, + "distance_to_border_px": 310.0 + }, + "edge_ratio": 1.4220583513565057, + "edge_lengths_px": [ + 40.4474983215332, + 29.42787742614746, + 40.31128692626953, + 28.44292449951172 + ] + }, + "confidence": 0.5473286891433666 + }, + { + "observation_id": "1286c4a5-7d96-476e-9e9b-5bcd7baf7e35", + "type": "aruco", + "marker_id": 46, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 551.0, + 997.0 + ], + [ + 515.0, + 1012.0 + ], + [ + 506.0, + 983.0 + ], + [ + 541.0, + 968.0 + ] + ], + "center_px": [ + 528.25, + 990.0 + ], + "quality": { + "area_px": 1172.0, + "perimeter_px": 138.1190414428711, + "sharpness": { + "laplacian_var": 1906.5381310418904 + }, + "contrast": { + "p05": 7.0, + "p95": 141.0, + "dynamic_range": 134.0, + "mean_gray": 69.28320802005013, + "std_gray": 55.862635803653816 + }, + "geometry": { + "distance_to_center_norm": 0.5661835670471191, + "distance_to_border_px": 68.0 + }, + "edge_ratio": 1.284396620593405, + "edge_lengths_px": [ + 39.0, + 30.364452362060547, + 38.07886505126953, + 30.675724029541016 + ] + }, + "confidence": 0.608327148176666 + }, + { + "observation_id": "a57d7f2b-82e4-465f-b848-67f7df46dada", + "type": "aruco", + "marker_id": 50, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 498.0, + 969.0 + ], + [ + 463.0, + 984.0 + ], + [ + 455.0, + 955.0 + ], + [ + 489.0, + 940.0 + ] + ], + "center_px": [ + 476.25, + 962.0 + ], + "quality": { + "area_px": 1128.0, + "perimeter_px": 135.6883430480957, + "sharpness": { + "laplacian_var": 1573.4718622770579 + }, + "contrast": { + "p05": 8.0, + "p95": 143.0, + "dynamic_range": 135.0, + "mean_gray": 48.650918635170605, + "std_gray": 50.52040392818402 + }, + "geometry": { + "distance_to_center_norm": 0.5828195214271545, + "distance_to_border_px": 96.0 + }, + "edge_ratio": 1.265784316398337, + "edge_lengths_px": [ + 38.07886505126953, + 30.08321762084961, + 37.161808013916016, + 30.364452362060547 + ] + }, + "confidence": 0.5940980546668021 + }, + { + "observation_id": "bbd46d23-ab7f-4ef7-b1b6-6f25ccec2899", + "type": "aruco", + "marker_id": 47, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1298.0, + 940.0 + ], + [ + 1269.0, + 954.0 + ], + [ + 1248.0, + 926.0 + ], + [ + 1277.0, + 912.0 + ] + ], + "center_px": [ + 1273.0, + 933.0 + ], + "quality": { + "area_px": 1106.0, + "perimeter_px": 134.40496826171875, + "sharpness": { + "laplacian_var": 2958.200232421963 + }, + "contrast": { + "p05": 29.0, + "p95": 187.0, + "dynamic_range": 158.0, + "mean_gray": 85.26040268456376, + "std_gray": 60.959701529585104 + }, + "geometry": { + "distance_to_center_norm": 0.4561355710029602, + "distance_to_border_px": 126.0 + }, + "edge_ratio": 1.0868726728587932, + "edge_lengths_px": [ + 32.202484130859375, + 35.0, + 32.202484130859375, + 35.0 + ] + }, + "confidence": 0.6783989990234374 + }, + { + "observation_id": "ad3b80b4-72a4-41f7-8000-b3acc55fec35", + "type": "aruco", + "marker_id": 68, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 557.0, + 943.0 + ], + [ + 522.0, + 958.0 + ], + [ + 513.0, + 930.0 + ], + [ + 547.0, + 916.0 + ] + ], + "center_px": [ + 534.75, + 936.75 + ], + "quality": { + "area_px": 1086.5, + "perimeter_px": 133.05166244506836, + "sharpness": { + "laplacian_var": 1667.8303628034057 + }, + "contrast": { + "p05": 7.0, + "p95": 140.0, + "dynamic_range": 133.0, + "mean_gray": 52.457417582417584, + "std_gray": 51.208669745145535 + }, + "geometry": { + "distance_to_center_norm": 0.5280213356018066, + "distance_to_border_px": 122.0 + }, + "edge_ratio": 1.3225336390228895, + "edge_lengths_px": [ + 38.07886505126953, + 29.4108829498291, + 36.769554138183594, + 28.792360305786133 + ] + }, + "confidence": 0.5476861321035912 + }, + { + "observation_id": "a029c1dd-e0ec-4930-ab9e-b387a4bc46c3", + "type": "aruco", + "marker_id": 97, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1419.0, + 942.0 + ], + [ + 1392.0, + 957.0 + ], + [ + 1369.0, + 929.0 + ], + [ + 1396.0, + 915.0 + ] + ], + "center_px": [ + 1394.0, + 935.75 + ], + "quality": { + "area_px": 1076.0, + "perimeter_px": 133.00433921813965, + "sharpness": { + "laplacian_var": 3060.042707283528 + }, + "contrast": { + "p05": 34.0, + "p95": 199.10000000000002, + "dynamic_range": 165.10000000000002, + "mean_gray": 114.83588317107093, + "std_gray": 67.37131280369387 + }, + "geometry": { + "distance_to_center_norm": 0.5332452654838562, + "distance_to_border_px": 123.0 + }, + "edge_ratio": 1.1914106445810715, + "edge_lengths_px": [ + 30.886890411376953, + 36.2353401184082, + 30.4138126373291, + 35.46829605102539 + ] + }, + "confidence": 0.6020873966469932 + }, + { + "observation_id": "77eead18-46ab-4d4f-a5c0-1d4933aff044", + "type": "aruco", + "marker_id": 90, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 324.0, + 949.0 + ], + [ + 287.0, + 962.0 + ], + [ + 282.0, + 935.0 + ], + [ + 318.0, + 922.0 + ] + ], + "center_px": [ + 302.75, + 942.0 + ], + "quality": { + "area_px": 1057.0, + "perimeter_px": 132.61035537719727, + "sharpness": { + "laplacian_var": 1649.1113687760367 + }, + "contrast": { + "p05": 11.0, + "p95": 150.54999999999995, + "dynamic_range": 139.54999999999995, + "mean_gray": 72.08591549295775, + "std_gray": 57.568865792795634 + }, + "geometry": { + "distance_to_center_norm": 0.6994779109954834, + "distance_to_border_px": 118.0 + }, + "edge_ratio": 1.428211359795772, + "edge_lengths_px": [ + 39.217342376708984, + 27.459060668945312, + 38.27531814575195, + 27.658634185791016 + ] + }, + "confidence": 0.4933910249582603 + }, + { + "observation_id": "0d28becf-13a3-43bc-a7bf-be1292eb3075", + "type": "aruco", + "marker_id": 144, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1155.0, + 824.0 + ], + [ + 1172.0, + 794.0 + ], + [ + 1203.0, + 789.0 + ], + [ + 1186.0, + 819.0 + ] + ], + "center_px": [ + 1179.0, + 806.5 + ], + "quality": { + "area_px": 845.0, + "perimeter_px": 131.76503372192383, + "sharpness": { + "laplacian_var": 1891.3410769785144 + }, + "contrast": { + "p05": 34.0, + "p95": 156.0, + "dynamic_range": 122.0, + "mean_gray": 80.44463087248322, + "std_gray": 46.56451058122607 + }, + "geometry": { + "distance_to_center_norm": 0.3131675124168396, + "distance_to_border_px": 256.0 + }, + "edge_ratio": 1.0981267847242937, + "edge_lengths_px": [ + 34.48188018798828, + 31.400636672973633, + 34.48188018798828, + 31.400636672973633 + ] + }, + "confidence": 0.5129948027583803 + }, + { + "observation_id": "b1d51297-7f52-4f33-936a-e044e92a3ba0", + "type": "aruco", + "marker_id": 54, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1350.0, + 916.0 + ], + [ + 1322.0, + 929.0 + ], + [ + 1301.0, + 903.0 + ], + [ + 1328.0, + 889.0 + ] + ], + "center_px": [ + 1325.25, + 909.25 + ], + "quality": { + "area_px": 1019.0, + "perimeter_px": 129.53421020507812, + "sharpness": { + "laplacian_var": 2265.257616783962 + }, + "contrast": { + "p05": 35.0, + "p95": 193.0, + "dynamic_range": 158.0, + "mean_gray": 71.80681818181819, + "std_gray": 52.15952539925985 + }, + "geometry": { + "distance_to_center_norm": 0.47153836488723755, + "distance_to_border_px": 151.0 + }, + "edge_ratio": 1.1451424490409485, + "edge_lengths_px": [ + 30.870698928833008, + 33.42155075073242, + 30.4138126373291, + 34.828147888183594 + ] + }, + "confidence": 0.5932304176674892 + }, + { + "observation_id": "fe4d5c99-0fd4-4269-8488-e1f4ac6444c5", + "type": "aruco", + "marker_id": 214, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 781.0, + 880.0 + ], + [ + 769.0, + 854.0 + ], + [ + 801.0, + 841.0 + ], + [ + 814.0, + 868.0 + ] + ], + "center_px": [ + 791.25, + 860.75 + ], + "quality": { + "area_px": 1017.5, + "perimeter_px": 128.2562255859375, + "sharpness": { + "laplacian_var": 2725.2017402316624 + }, + "contrast": { + "p05": 10.0, + "p95": 162.0, + "dynamic_range": 152.0, + "mean_gray": 79.88623595505618, + "std_gray": 63.11515008380815 + }, + "geometry": { + "distance_to_center_norm": 0.3290490210056305, + "distance_to_border_px": 200.0 + }, + "edge_ratio": 1.2262375740375682, + "edge_lengths_px": [ + 28.635643005371094, + 34.539833068847656, + 29.96664810180664, + 35.11410140991211 + ] + }, + "confidence": 0.5531826358083456 + }, + { + "observation_id": "2513943b-7f69-4165-ad74-cff55264ca24", + "type": "aruco", + "marker_id": 91, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 288.0, + 866.0 + ], + [ + 254.0, + 879.0 + ], + [ + 249.0, + 853.0 + ], + [ + 283.0, + 841.0 + ] + ], + "center_px": [ + 268.5, + 859.75 + ], + "quality": { + "area_px": 929.5, + "perimeter_px": 124.42756462097168, + "sharpness": { + "laplacian_var": 1430.8835411837865 + }, + "contrast": { + "p05": 7.200000000000003, + "p95": 149.0, + "dynamic_range": 141.8, + "mean_gray": 61.783458646616545, + "std_gray": 56.2579827992372 + }, + "geometry": { + "distance_to_center_norm": 0.6916750073432922, + "distance_to_border_px": 201.0 + }, + "edge_ratio": 1.4277470390387388, + "edge_lengths_px": [ + 36.400550842285156, + 26.476404190063477, + 36.055511474609375, + 25.495098114013672 + ] + }, + "confidence": 0.43401712608969617 + }, + { + "observation_id": "f4bfc18b-9f45-4458-b379-502745de33a5", + "type": "aruco", + "marker_id": 148, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1283.0, + 798.0 + ], + [ + 1301.0, + 770.0 + ], + [ + 1328.0, + 765.0 + ], + [ + 1311.0, + 793.0 + ] + ], + "center_px": [ + 1305.75, + 781.5 + ], + "quality": { + "area_px": 682.5, + "perimeter_px": 121.94529724121094, + "sharpness": { + "laplacian_var": 2356.2828868854726 + }, + "contrast": { + "p05": 40.0, + "p95": 160.0, + "dynamic_range": 120.0, + "mean_gray": 80.66596194503171, + "std_gray": 41.553328582103404 + }, + "geometry": { + "distance_to_center_norm": 0.38289475440979004, + "distance_to_border_px": 282.0 + }, + "edge_ratio": 1.2122276482489858, + "edge_lengths_px": [ + 33.2866325378418, + 27.459060668945312, + 32.75667953491211, + 28.44292449951172 + ] + }, + "confidence": 0.37534204128839105 + }, + { + "observation_id": "d782d562-c0fe-4101-8852-940f4ae97b4c", + "type": "aruco", + "marker_id": 76, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 520.0, + 821.0 + ], + [ + 487.0, + 833.0 + ], + [ + 480.0, + 809.0 + ], + [ + 512.0, + 796.0 + ] + ], + "center_px": [ + 499.75, + 814.75 + ], + "quality": { + "area_px": 890.0, + "perimeter_px": 120.90274429321289, + "sharpness": { + "laplacian_var": 1663.2455994263034 + }, + "contrast": { + "p05": 6.0, + "p95": 142.19999999999993, + "dynamic_range": 136.19999999999993, + "mean_gray": 63.59967585089141, + "std_gray": 53.79889498866958 + }, + "geometry": { + "distance_to_center_norm": 0.48664799332618713, + "distance_to_border_px": 247.0 + }, + "edge_ratio": 1.4045640563964843, + "edge_lengths_px": [ + 35.11410140991211, + 25.0, + 34.539833068847656, + 26.248809814453125 + ] + }, + "confidence": 0.4224323772427831 + }, + { + "observation_id": "708791eb-16c2-430a-8634-5681d3ba668d", + "type": "aruco", + "marker_id": 88, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 295.0, + 816.0 + ], + [ + 262.0, + 828.0 + ], + [ + 258.0, + 804.0 + ], + [ + 291.0, + 792.0 + ] + ], + "center_px": [ + 276.5, + 810.0 + ], + "quality": { + "area_px": 840.0, + "perimeter_px": 118.89030456542969, + "sharpness": { + "laplacian_var": 1748.3850761275494 + }, + "contrast": { + "p05": 9.450000000000003, + "p95": 152.54999999999995, + "dynamic_range": 143.09999999999997, + "mean_gray": 70.58474576271186, + "std_gray": 57.76324065266833 + }, + "geometry": { + "distance_to_center_norm": 0.6672056317329407, + "distance_to_border_px": 252.0 + }, + "edge_ratio": 1.4431806334005357, + "edge_lengths_px": [ + 35.11410140991211, + 24.331050872802734, + 35.11410140991211, + 24.331050872802734 + ] + }, + "confidence": 0.3880318146180246 + }, + { + "observation_id": "b0e21d12-9b39-4648-a7f5-baee4f360902", + "type": "aruco", + "marker_id": 208, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 844.0, + 737.0 + ], + [ + 832.0, + 716.0 + ], + [ + 860.0, + 705.0 + ], + [ + 873.0, + 726.0 + ] + ], + "center_px": [ + 852.25, + 721.0 + ], + "quality": { + "area_px": 736.0, + "perimeter_px": 109.98429298400879, + "sharpness": { + "laplacian_var": 3345.7361152422495 + }, + "contrast": { + "p05": 9.0, + "p95": 172.45, + "dynamic_range": 163.45, + "mean_gray": 72.08536585365853, + "std_gray": 65.00313336153397 + }, + "geometry": { + "distance_to_center_norm": 0.19124218821525574, + "distance_to_border_px": 343.0 + }, + "edge_ratio": 1.2823589298338793, + "edge_lengths_px": [ + 24.1867733001709, + 30.08321762084961, + 24.698177337646484, + 31.016124725341797 + ] + }, + "confidence": 0.38262818252470787 + }, + { + "observation_id": "2ab38ca2-bfe8-4944-9a54-87e4861c5a32", + "type": "aruco", + "marker_id": 104, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 383.0, + 721.0 + ], + [ + 352.0, + 733.0 + ], + [ + 347.0, + 711.0 + ], + [ + 377.0, + 700.0 + ] + ], + "center_px": [ + 364.75, + 716.25 + ], + "quality": { + "area_px": 719.0, + "perimeter_px": 109.59598731994629, + "sharpness": { + "laplacian_var": 1568.6537959065176 + }, + "contrast": { + "p05": 10.0, + "p95": 151.0, + "dynamic_range": 141.0, + "mean_gray": 82.06425702811245, + "std_gray": 57.58063917308077 + }, + "geometry": { + "distance_to_center_norm": 0.5636144280433655, + "distance_to_border_px": 347.0 + }, + "edge_ratio": 1.5220254828056081, + "edge_lengths_px": [ + 33.241539001464844, + 22.56102752685547, + 31.95309066772461, + 21.840330123901367 + ] + }, + "confidence": 0.3149312141934442 + }, + { + "observation_id": "636d7439-bf90-49da-9635-c42b1fb41796", + "type": "aruco", + "marker_id": 100, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 474.0, + 711.0 + ], + [ + 444.0, + 723.0 + ], + [ + 438.0, + 701.0 + ], + [ + 468.0, + 691.0 + ] + ], + "center_px": [ + 456.0, + 706.5 + ], + "quality": { + "area_px": 696.0, + "perimeter_px": 107.61788749694824, + "sharpness": { + "laplacian_var": 1492.6497692877188 + }, + "contrast": { + "p05": 9.0, + "p95": 144.0, + "dynamic_range": 135.0, + "mean_gray": 73.39004149377594, + "std_gray": 54.036154183282136 + }, + "geometry": { + "distance_to_center_norm": 0.4818997383117676, + "distance_to_border_px": 357.0 + }, + "edge_ratio": 1.5474157235631478, + "edge_lengths_px": [ + 32.31098937988281, + 22.803508758544922, + 31.62277603149414, + 20.880613327026367 + ] + }, + "confidence": 0.29985477912268665 + }, + { + "observation_id": "1186cff0-6d8f-4137-b81e-f5f4efcd8da2", + "type": "aruco", + "marker_id": 102, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1004.0, + 669.0 + ], + [ + 977.0, + 680.0 + ], + [ + 964.0, + 660.0 + ], + [ + 990.0, + 650.0 + ] + ], + "center_px": [ + 983.75, + 664.75 + ], + "quality": { + "area_px": 658.5, + "perimeter_px": 104.46610641479492, + "sharpness": { + "laplacian_var": 4128.577760776979 + }, + "contrast": { + "p05": 9.0, + "p95": 186.0, + "dynamic_range": 177.0, + "mean_gray": 100.2742980561555, + "std_gray": 70.18953304384723 + }, + "geometry": { + "distance_to_center_norm": 0.11529368907213211, + "distance_to_border_px": 400.0 + }, + "edge_ratio": 1.235326853268169, + "edge_lengths_px": [ + 29.154760360717773, + 23.853721618652344, + 27.85677719116211, + 23.600847244262695 + ] + }, + "confidence": 0.35537153494120666 + }, + { + "observation_id": "e929f067-0009-4c99-9120-23a0f2501f8c", + "type": "aruco", + "marker_id": 92, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 964.0, + 691.0 + ], + [ + 937.0, + 699.0 + ], + [ + 925.0, + 679.0 + ], + [ + 952.0, + 670.0 + ] + ], + "center_px": [ + 944.5, + 684.75 + ], + "quality": { + "area_px": 655.5, + "perimeter_px": 104.13133430480957, + "sharpness": { + "laplacian_var": 3569.901142341604 + }, + "contrast": { + "p05": 10.0, + "p95": 184.0, + "dynamic_range": 174.0, + "mean_gray": 66.64091858037578, + "std_gray": 62.90318368522046 + }, + "geometry": { + "distance_to_center_norm": 0.13216853141784668, + "distance_to_border_px": 381.0 + }, + "edge_ratio": 1.2202338623099422, + "edge_lengths_px": [ + 28.160255432128906, + 23.323806762695312, + 28.460498809814453, + 24.1867733001709 + ] + }, + "confidence": 0.3581280715917397 + }, + { + "observation_id": "274063e1-7a13-4ae8-962e-8d8ff6569e00", + "type": "aruco", + "marker_id": 59, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1077.0, + 666.0 + ], + [ + 1051.0, + 675.0 + ], + [ + 1037.0, + 656.0 + ], + [ + 1063.0, + 646.0 + ] + ], + "center_px": [ + 1057.0, + 660.75 + ], + "quality": { + "area_px": 640.0, + "perimeter_px": 103.38436889648438, + "sharpness": { + "laplacian_var": 3906.5216635160677 + }, + "contrast": { + "p05": 15.950000000000003, + "p95": 188.0, + "dynamic_range": 172.05, + "mean_gray": 103.47608695652174, + "std_gray": 69.0163612762838 + }, + "geometry": { + "distance_to_center_norm": 0.14061930775642395, + "distance_to_border_px": 405.0 + }, + "edge_ratio": 1.1803295408360401, + "edge_lengths_px": [ + 27.513633728027344, + 23.600847244262695, + 27.85677719116211, + 24.413110733032227 + ] + }, + "confidence": 0.3614809694286344 + }, + { + "observation_id": "047b43ad-0965-47f0-9faa-46cebe85e10e", + "type": "aruco", + "marker_id": 57, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1181.0, + 649.0 + ], + [ + 1155.0, + 658.0 + ], + [ + 1140.0, + 639.0 + ], + [ + 1165.0, + 630.0 + ] + ], + "center_px": [ + 1160.25, + 644.0 + ], + "quality": { + "area_px": 624.0, + "perimeter_px": 103.13121604919434, + "sharpness": { + "laplacian_var": 4726.990281287457 + }, + "contrast": { + "p05": 18.900000000000002, + "p95": 196.09999999999997, + "dynamic_range": 177.19999999999996, + "mean_gray": 93.18451025056947, + "std_gray": 67.03111939507617 + }, + "geometry": { + "distance_to_center_norm": 0.20486189424991608, + "distance_to_border_px": 422.0 + }, + "edge_ratio": 1.1365777030585968, + "edge_lengths_px": [ + 27.513633728027344, + 24.20743751525879, + 26.570659637451172, + 24.83948516845703 + ] + }, + "confidence": 0.36601105131705447 + }, + { + "observation_id": "57b249c3-6eab-412a-bfe3-77f9e1f8e499", + "type": "aruco", + "marker_id": 217, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 684.0, + 684.0 + ], + [ + 675.0, + 665.0 + ], + [ + 703.0, + 655.0 + ], + [ + 712.0, + 676.0 + ] + ], + "center_px": [ + 693.5, + 670.0 + ], + "quality": { + "area_px": 641.0, + "perimeter_px": 102.72369194030762, + "sharpness": { + "laplacian_var": 3602.6137866379627 + }, + "contrast": { + "p05": 6.400000000000002, + "p95": 167.0, + "dynamic_range": 160.6, + "mean_gray": 67.87527839643653, + "std_gray": 62.74455966425671 + }, + "geometry": { + "distance_to_center_norm": 0.2692050635814667, + "distance_to_border_px": 396.0 + }, + "edge_ratio": 1.4142135685075397, + "edge_lengths_px": [ + 21.02379608154297, + 29.73213768005371, + 22.847318649291992, + 29.120439529418945 + ] + }, + "confidence": 0.302170296516325 + }, + { + "observation_id": "df424b6a-1da2-40e9-b88c-689642bb2843", + "type": "aruco", + "marker_id": 94, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 452.0, + 650.0 + ], + [ + 422.0, + 660.0 + ], + [ + 416.0, + 642.0 + ], + [ + 446.0, + 632.0 + ] + ], + "center_px": [ + 434.0, + 646.0 + ], + "quality": { + "area_px": 600.0, + "perimeter_px": 101.1928825378418, + "sharpness": { + "laplacian_var": 1590.6070247933885 + }, + "contrast": { + "p05": 6.0, + "p95": 143.0, + "dynamic_range": 137.0, + "mean_gray": 54.61363636363637, + "std_gray": 51.40185524998583 + }, + "geometry": { + "distance_to_center_norm": 0.4871511161327362, + "distance_to_border_px": 416.0 + }, + "edge_ratio": 1.6666667001753679, + "edge_lengths_px": [ + 31.62277603149414, + 18.973665237426758, + 31.62277603149414, + 18.973665237426758 + ] + }, + "confidence": 0.23999999517474713 + }, + { + "observation_id": "7b751ba5-b4b7-4927-be51-4f151f15a045", + "type": "aruco", + "marker_id": 48, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1081.0, + 599.0 + ], + [ + 1058.0, + 608.0 + ], + [ + 1043.0, + 590.0 + ], + [ + 1068.0, + 580.0 + ] + ], + "center_px": [ + 1062.5, + 594.25 + ], + "quality": { + "area_px": 577.0, + "perimeter_px": 98.07647895812988, + "sharpness": { + "laplacian_var": 3972.5110809688576 + }, + "contrast": { + "p05": 11.0, + "p95": 189.0, + "dynamic_range": 178.0, + "mean_gray": 68.62117647058824, + "std_gray": 62.29890017746541 + }, + "geometry": { + "distance_to_center_norm": 0.10528919845819473, + "distance_to_border_px": 472.0 + }, + "edge_ratio": 1.1695830394922426, + "edge_lengths_px": [ + 24.698177337646484, + 23.430749893188477, + 26.925823211669922, + 23.021728515625 + ] + }, + "confidence": 0.3288921382047948 + }, + { + "observation_id": "7a534545-ebef-45fc-a79b-f93f558603ce", + "type": "aruco", + "marker_id": 93, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 471.0, + 592.0 + ], + [ + 442.0, + 601.0 + ], + [ + 436.0, + 584.0 + ], + [ + 464.0, + 574.0 + ] + ], + "center_px": [ + 453.25, + 587.75 + ], + "quality": { + "area_px": 560.5, + "perimeter_px": 97.43755340576172, + "sharpness": { + "laplacian_var": 1312.8408357397655 + }, + "contrast": { + "p05": 6.0, + "p95": 129.75, + "dynamic_range": 123.75, + "mean_gray": 48.41379310344828, + "std_gray": 45.79302555041152 + }, + "geometry": { + "distance_to_center_norm": 0.46211180090904236, + "distance_to_border_px": 436.0 + }, + "edge_ratio": 1.6843168281467025, + "edge_lengths_px": [ + 30.364452362060547, + 18.027755737304688, + 29.73213768005371, + 19.313207626342773 + ] + }, + "confidence": 0.22185058085409132 + }, + { + "observation_id": "cb6468a0-1827-41ea-a601-0df1953b4873", + "type": "aruco", + "marker_id": 71, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1010.0, + 567.0 + ], + [ + 986.0, + 576.0 + ], + [ + 973.0, + 558.0 + ], + [ + 997.0, + 550.0 + ] + ], + "center_px": [ + 991.5, + 562.75 + ], + "quality": { + "area_px": 530.5, + "perimeter_px": 94.53477096557617, + "sharpness": { + "laplacian_var": 4352.0730311669095 + }, + "contrast": { + "p05": 9.05, + "p95": 190.0, + "dynamic_range": 180.95, + "mean_gray": 101.47120418848168, + "std_gray": 71.65535575585103 + }, + "geometry": { + "distance_to_center_norm": 0.03527729585766792, + "distance_to_border_px": 504.0 + }, + "edge_ratio": 1.1977052567352982, + "edge_lengths_px": [ + 25.63201141357422, + 22.203603744506836, + 25.298221588134766, + 21.40093421936035 + ] + }, + "confidence": 0.2952868952338828 + }, + { + "observation_id": "5ecfb6ed-c6be-4757-b2e5-165048fa1e8a", + "type": "aruco", + "marker_id": 49, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 435.0, + 545.0 + ], + [ + 408.0, + 555.0 + ], + [ + 402.0, + 537.0 + ], + [ + 430.0, + 530.0 + ] + ], + "center_px": [ + 418.75, + 541.75 + ], + "quality": { + "area_px": 500.5, + "perimeter_px": 92.43915367126465, + "sharpness": { + "laplacian_var": 1315.402420154731 + }, + "contrast": { + "p05": 6.0, + "p95": 136.0, + "dynamic_range": 130.0, + "mean_gray": 40.901408450704224, + "std_gray": 43.966618236373684 + }, + "geometry": { + "distance_to_center_norm": 0.4913986325263977, + "distance_to_border_px": 402.0 + }, + "edge_ratio": 1.8253767527278661, + "edge_lengths_px": [ + 28.792360305786133, + 18.973665237426758, + 28.861740112304688, + 15.81138801574707 + ] + }, + "confidence": 0.1827933144037421 + }, + { + "observation_id": "e6f22e3d-c8a9-4958-9b4f-1364290a49a5", + "type": "aruco", + "marker_id": 207, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 609.0, + 528.0 + ], + [ + 601.0, + 512.0 + ], + [ + 627.0, + 504.0 + ], + [ + 635.0, + 520.0 + ] + ], + "center_px": [ + 618.0, + 516.0 + ], + "quality": { + "area_px": 480.0, + "perimeter_px": 90.1829719543457, + "sharpness": { + "laplacian_var": 3232.8886898323417 + }, + "contrast": { + "p05": 5.0, + "p95": 165.84999999999997, + "dynamic_range": 160.84999999999997, + "mean_gray": 64.71802325581395, + "std_gray": 59.24853173177841 + }, + "geometry": { + "distance_to_center_norm": 0.3112623691558838, + "distance_to_border_px": 504.0 + }, + "edge_ratio": 1.5206906592766263, + "edge_lengths_px": [ + 17.8885440826416, + 27.20294189453125, + 17.8885440826416, + 27.20294189453125 + ] + }, + "confidence": 0.21043070005586806 + }, + { + "observation_id": "1ffea816-7ab1-4dbd-b641-1a477d04bae6", + "type": "aruco", + "marker_id": 65, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 994.0, + 524.0 + ], + [ + 970.0, + 532.0 + ], + [ + 958.0, + 516.0 + ], + [ + 982.0, + 509.0 + ] + ], + "center_px": [ + 976.0, + 520.25 + ], + "quality": { + "area_px": 462.0, + "perimeter_px": 89.50759506225586, + "sharpness": { + "laplacian_var": 4695.1677716811455 + }, + "contrast": { + "p05": 10.0, + "p95": 190.84999999999997, + "dynamic_range": 180.84999999999997, + "mean_gray": 90.7746913580247, + "std_gray": 69.49088563713327 + }, + "geometry": { + "distance_to_center_norm": 0.023076558485627174, + "distance_to_border_px": 509.0 + }, + "edge_ratio": 1.3169727592738296, + "edge_lengths_px": [ + 25.298221588134766, + 20.0, + 25.0, + 19.209373474121094 + ] + }, + "confidence": 0.2338696816856176 + }, + { + "observation_id": "8c1408be-0b52-4169-b7da-d1d81600b0d4", + "type": "aruco", + "marker_id": 205, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 705.0, + 496.0 + ], + [ + 697.0, + 480.0 + ], + [ + 721.0, + 473.0 + ], + [ + 731.0, + 488.0 + ] + ], + "center_px": [ + 713.5, + 484.25 + ], + "quality": { + "area_px": 455.0, + "perimeter_px": 88.11924171447754, + "sharpness": { + "laplacian_var": 4069.732301994522 + }, + "contrast": { + "p05": 6.0, + "p95": 169.95, + "dynamic_range": 163.95, + "mean_gray": 72.33540372670808, + "std_gray": 61.64494046119547 + }, + "geometry": { + "distance_to_center_norm": 0.22944749891757965, + "distance_to_border_px": 473.0 + }, + "edge_ratio": 1.5206906592766263, + "edge_lengths_px": [ + 17.8885440826416, + 25.0, + 18.027755737304688, + 27.20294189453125 + ] + }, + "confidence": 0.1994707677612916 + }, + { + "observation_id": "138727c3-f2cd-45c1-a287-627ae6770e9b", + "type": "aruco", + "marker_id": 78, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 1029.0, + 495.0 + ], + [ + 1006.0, + 503.0 + ], + [ + 994.0, + 487.0 + ], + [ + 1017.0, + 480.0 + ] + ], + "center_px": [ + 1011.5, + 491.25 + ], + "quality": { + "area_px": 446.5, + "perimeter_px": 87.60259437561035, + "sharpness": { + "laplacian_var": 5483.93673257024 + }, + "contrast": { + "p05": 7.0, + "p95": 192.55, + "dynamic_range": 185.55, + "mean_gray": 85.75806451612904, + "std_gray": 69.47347729793583 + }, + "geometry": { + "distance_to_center_norm": 0.06438230723142624, + "distance_to_border_px": 480.0 + }, + "edge_ratio": 1.2676931469439128, + "edge_lengths_px": [ + 24.351591110229492, + 20.0, + 24.041629791259766, + 19.209373474121094 + ] + }, + "confidence": 0.23480971509885154 + }, + { + "observation_id": "d35cb382-dc1e-4597-8337-5bf68489e21b", + "type": "aruco", + "marker_id": 80, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 999.0, + 472.0 + ], + [ + 976.0, + 479.0 + ], + [ + 965.0, + 464.0 + ], + [ + 987.0, + 457.0 + ] + ], + "center_px": [ + 981.75, + 468.0 + ], + "quality": { + "area_px": 418.0, + "perimeter_px": 84.93887138366699, + "sharpness": { + "laplacian_var": 3689.0193843464513 + }, + "contrast": { + "p05": 10.0, + "p95": 190.0, + "dynamic_range": 180.0, + "mean_gray": 77.18685121107266, + "std_gray": 68.26408900637725 + }, + "geometry": { + "distance_to_center_norm": 0.06828562170267105, + "distance_to_border_px": 457.0 + }, + "edge_ratio": 1.2924859630850953, + "edge_lengths_px": [ + 24.041629791259766, + 18.601076126098633, + 23.0867919921875, + 19.209373474121094 + ] + }, + "confidence": 0.21560517841254084 + }, + { + "observation_id": "1b6f7c18-1ac5-481d-ae4d-da4334dbabfb", + "type": "aruco", + "marker_id": 99, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 939.0, + 419.0 + ], + [ + 918.0, + 425.0 + ], + [ + 907.0, + 412.0 + ], + [ + 928.0, + 405.0 + ] + ], + "center_px": [ + 923.0, + 415.25 + ], + "quality": { + "area_px": 355.0, + "perimeter_px": 78.81015396118164, + "sharpness": { + "laplacian_var": 5302.074708244154 + }, + "contrast": { + "p05": 7.0, + "p95": 191.0, + "dynamic_range": 184.0, + "mean_gray": 84.91699604743083, + "std_gray": 70.10306520160202 + }, + "geometry": { + "distance_to_center_norm": 0.11813601106405258, + "distance_to_border_px": 405.0 + }, + "edge_ratio": 1.29986739921349, + "edge_lengths_px": [ + 21.840330123901367, + 17.029386520385742, + 22.135944366455078, + 17.804492950439453 + ] + }, + "confidence": 0.18206985328647093 + }, + { + "observation_id": "3637fb10-f856-45c5-ab97-7ff80f9dee22", + "type": "aruco", + "marker_id": 89, + "marker_size_m": 0.025, + "image_points_px": [ + [ + 969.0, + 388.0 + ], + [ + 948.0, + 395.0 + ], + [ + 937.0, + 381.0 + ], + [ + 958.0, + 375.0 + ] + ], + "center_px": [ + 953.0, + 384.75 + ], + "quality": { + "area_px": 355.0, + "perimeter_px": 78.81015396118164, + "sharpness": { + "laplacian_var": 5985.052789451483 + }, + "contrast": { + "p05": 5.0, + "p95": 192.39999999999998, + "dynamic_range": 187.39999999999998, + "mean_gray": 82.75494071146245, + "std_gray": 69.388486655442 + }, + "geometry": { + "distance_to_center_norm": 0.14109329879283905, + "distance_to_border_px": 375.0 + }, + "edge_ratio": 1.29986739921349, + "edge_lengths_px": [ + 22.135944366455078, + 17.804492950439453, + 21.840330123901367, + 17.029386520385742 + ] + }, + "confidence": 0.18206985328647093 + } + ], + "rejected_candidates": [ + { + "image_points_px": [ + [ + 737.0, + 702.0 + ], + [ + 750.0, + 727.0 + ], + [ + 714.0, + 741.0 + ], + [ + 702.0, + 714.0 + ] + ], + "center_px": [ + 725.75, + 721.0 + ], + "area_px": 1085.5 + }, + { + "image_points_px": [ + [ + 1412.0, + 669.0 + ], + [ + 1427.0, + 676.0 + ], + [ + 1414.0, + 711.0 + ], + [ + 1398.0, + 704.0 + ] + ], + "center_px": [ + 1412.75, + 690.0 + ], + "area_px": 637.0 + }, + { + "image_points_px": [ + [ + 1544.0, + 771.0 + ], + [ + 1535.0, + 778.0 + ], + [ + 1500.0, + 780.0 + ], + [ + 1508.0, + 772.0 + ] + ], + "center_px": [ + 1521.75, + 775.25 + ], + "area_px": 253.5 + }, + { + "image_points_px": [ + [ + 1365.0, + 342.0 + ], + [ + 1386.0, + 336.0 + ], + [ + 1402.0, + 349.0 + ], + [ + 1380.0, + 355.0 + ] + ], + "center_px": [ + 1383.25, + 345.5 + ], + "area_px": 372.5 + }, + { + "image_points_px": [ + [ + 866.0, + 437.0 + ], + [ + 876.0, + 452.0 + ], + [ + 853.0, + 458.0 + ], + [ + 843.0, + 444.0 + ] + ], + "center_px": [ + 859.5, + 447.75 + ], + "area_px": 398.5 + }, + { + "image_points_px": [ + [ + 1529.0, + 310.0 + ], + [ + 1549.0, + 305.0 + ], + [ + 1565.0, + 317.0 + ], + [ + 1546.0, + 322.0 + ] + ], + "center_px": [ + 1547.25, + 313.5 + ], + "area_px": 316.5 + }, + { + "image_points_px": [ + [ + 1495.0, + 283.0 + ], + [ + 1513.0, + 278.0 + ], + [ + 1531.0, + 290.0 + ], + [ + 1511.0, + 295.0 + ] + ], + "center_px": [ + 1512.5, + 286.5 + ], + "area_px": 313.0 + }, + { + "image_points_px": [ + [ + 1304.0, + 287.0 + ], + [ + 1325.0, + 282.0 + ], + [ + 1338.0, + 294.0 + ], + [ + 1318.0, + 299.0 + ] + ], + "center_px": [ + 1321.25, + 290.5 + ], + "area_px": 313.5 + }, + { + "image_points_px": [ + [ + 1492.0, + 283.0 + ], + [ + 1473.0, + 288.0 + ], + [ + 1458.0, + 276.0 + ], + [ + 1477.0, + 271.0 + ] + ], + "center_px": [ + 1475.0, + 279.5 + ], + "area_px": 303.0 + }, + { + "image_points_px": [ + [ + 1462.0, + 258.0 + ], + [ + 1480.0, + 253.0 + ], + [ + 1496.0, + 264.0 + ], + [ + 1477.0, + 269.0 + ] + ], + "center_px": [ + 1478.75, + 261.0 + ], + "area_px": 281.0 + }, + { + "image_points_px": [ + [ + 1133.0, + 724.0 + ], + [ + 1107.0, + 729.0 + ], + [ + 1097.0, + 725.0 + ], + [ + 1127.0, + 719.0 + ] + ], + "center_px": [ + 1116.0, + 724.25 + ], + "area_px": 170.0 + }, + { + "image_points_px": [ + [ + 1391.0, + 245.0 + ], + [ + 1410.0, + 240.0 + ], + [ + 1425.0, + 251.0 + ], + [ + 1407.0, + 255.0 + ] + ], + "center_px": [ + 1408.25, + 247.75 + ], + "area_px": 264.0 + }, + { + "image_points_px": [ + [ + 1311.0, + 268.0 + ], + [ + 1329.0, + 263.0 + ], + [ + 1344.0, + 275.0 + ], + [ + 1323.0, + 279.0 + ] + ], + "center_px": [ + 1326.75, + 271.25 + ], + "area_px": 285.0 + }, + { + "image_points_px": [ + [ + 1490.0, + 35.0 + ], + [ + 1495.0, + 40.0 + ], + [ + 1486.0, + 69.0 + ], + [ + 1481.0, + 63.0 + ] + ], + "center_px": [ + 1488.0, + 51.75 + ], + "area_px": 192.0 + }, + { + "image_points_px": [ + [ + 1427.0, + 251.0 + ], + [ + 1445.0, + 247.0 + ], + [ + 1460.0, + 258.0 + ], + [ + 1440.0, + 262.0 + ] + ], + "center_px": [ + 1443.0, + 254.5 + ], + "area_px": 265.0 + }, + { + "image_points_px": [ + [ + 867.0, + 820.0 + ], + [ + 875.0, + 827.0 + ], + [ + 886.0, + 851.0 + ], + [ + 877.0, + 842.0 + ] + ], + "center_px": [ + 876.25, + 835.0 + ], + "area_px": 111.5 + }, + { + "image_points_px": [ + [ + 1121.0, + 712.0 + ], + [ + 1093.0, + 717.0 + ], + [ + 1085.0, + 714.0 + ], + [ + 1113.0, + 710.0 + ] + ], + "center_px": [ + 1103.0, + 713.25 + ], + "area_px": 106.0 + }, + { + "image_points_px": [ + [ + 1349.0, + 256.0 + ], + [ + 1330.0, + 261.0 + ], + [ + 1317.0, + 250.0 + ], + [ + 1336.0, + 245.0 + ] + ], + "center_px": [ + 1333.0, + 253.0 + ], + "area_px": 274.0 + }, + { + "image_points_px": [ + [ + 1283.0, + 243.0 + ], + [ + 1302.0, + 239.0 + ], + [ + 1315.0, + 250.0 + ], + [ + 1295.0, + 254.0 + ] + ], + "center_px": [ + 1298.75, + 246.5 + ], + "area_px": 264.5 + }, + { + "image_points_px": [ + [ + 1248.0, + 237.0 + ], + [ + 1269.0, + 233.0 + ], + [ + 1280.0, + 243.0 + ], + [ + 1261.0, + 248.0 + ] + ], + "center_px": [ + 1264.5, + 240.25 + ], + "area_px": 264.0 + }, + { + "image_points_px": [ + [ + 1360.0, + 221.0 + ], + [ + 1341.0, + 225.0 + ], + [ + 1328.0, + 215.0 + ], + [ + 1346.0, + 210.0 + ] + ], + "center_px": [ + 1343.75, + 217.75 + ], + "area_px": 255.0 + }, + { + "image_points_px": [ + [ + 1529.0, + 331.0 + ], + [ + 1545.0, + 325.0 + ], + [ + 1560.0, + 337.0 + ], + [ + 1545.0, + 342.0 + ] + ], + "center_px": [ + 1544.75, + 333.75 + ], + "area_px": 263.5 + }, + { + "image_points_px": [ + [ + 1401.0, + 210.0 + ], + [ + 1418.0, + 206.0 + ], + [ + 1433.0, + 216.0 + ], + [ + 1413.0, + 220.0 + ] + ], + "center_px": [ + 1416.25, + 213.0 + ], + "area_px": 239.0 + }, + { + "image_points_px": [ + [ + 1362.0, + 221.0 + ], + [ + 1380.0, + 217.0 + ], + [ + 1394.0, + 227.0 + ], + [ + 1375.0, + 231.0 + ] + ], + "center_px": [ + 1377.75, + 224.0 + ], + "area_px": 239.0 + }, + { + "image_points_px": [ + [ + 1320.0, + 232.0 + ], + [ + 1302.0, + 237.0 + ], + [ + 1289.0, + 226.0 + ], + [ + 1307.0, + 221.0 + ] + ], + "center_px": [ + 1304.5, + 229.0 + ], + "area_px": 263.0 + }, + { + "image_points_px": [ + [ + 1494.0, + 303.0 + ], + [ + 1512.0, + 299.0 + ], + [ + 1524.0, + 309.0 + ], + [ + 1508.0, + 316.0 + ] + ], + "center_px": [ + 1509.5, + 306.75 + ], + "area_px": 267.0 + }, + { + "image_points_px": [ + [ + 1367.0, + 204.0 + ], + [ + 1385.0, + 200.0 + ], + [ + 1398.0, + 210.0 + ], + [ + 1379.0, + 214.0 + ] + ], + "center_px": [ + 1382.25, + 207.0 + ], + "area_px": 235.0 + }, + { + "image_points_px": [ + [ + 1351.0, + 238.0 + ], + [ + 1336.0, + 242.0 + ], + [ + 1325.0, + 234.0 + ], + [ + 1342.0, + 228.0 + ] + ], + "center_px": [ + 1338.5, + 235.5 + ], + "area_px": 194.0 + } + ] +} \ No newline at end of file diff --git a/test/homing/20260616_135403/cam2_camera_pose.json b/test/homing/20260616_135403/cam2_camera_pose.json new file mode 100644 index 0000000..094a124 --- /dev/null +++ b/test/homing/20260616_135403/cam2_camera_pose.json @@ -0,0 +1,649 @@ +{ + "schema_version": "1.0", + "created_utc": "2026-06-16T13:54:15Z", + "source": { + "detection_json": "/app/data/homing/20260616_135403/cam2_aruco_detection.json", + "robot_json": "/app/scripts/robot_1781069752019.json" + }, + "camera": { + "camera_id": "cam2", + "camera_matrix": [ + [ + 1388.99072265625, + 0.0, + 933.082763671875 + ], + [ + 0.0, + 1394.8729248046875, + 562.4996948242188 + ], + [ + 0.0, + 0.0, + 1.0 + ] + ], + "distortion_coefficients": [ + 0.019531700760126114, + -0.11213663965463638, + 0.0026758278254419565, + 0.0007694826927036047, + 0.05339815095067024 + ] + }, + "estimation": { + "method": "single_camera_marker_center_lm", + "description": "Rigid init from per-marker pose estimates, followed by LM on normalized marker-center reprojection residuals.", + "marker_size_m": 0.025, + "num_used_markers": 32, + "used_marker_ids": [ + 66, + 79, + 56, + 98, + 55, + 70, + 46, + 50, + 47, + 68, + 97, + 90, + 54, + 91, + 76, + 88, + 104, + 100, + 102, + 92, + 59, + 57, + 94, + 48, + 93, + 71, + 49, + 65, + 78, + 80, + 99, + 89 + ], + "history": { + "iters": [ + 0, + 1, + 2, + 3 + ], + "rms": [ + 0.008550789594314975, + 0.00045373090039006124, + 0.0003190410648876359, + 0.0003190403707802743 + ], + "lambda": [ + 0.001, + 0.0005, + 0.00025, + 0.000125 + ] + }, + "residual_rms_px": 0.626368910138774, + "residual_median_px": 0.5961997903192752, + "residual_max_px": 1.3067638413247398, + "sigma2_normalized": 1.1231642281994808e-07 + }, + "camera_pose": { + "world_to_camera": { + "rotation_matrix": [ + [ + -0.449922114610672, + -0.8930371999740601, + -0.0073920562863349915 + ], + [ + -0.6306139826774597, + 0.3235495984554291, + -0.705437183380127 + ], + [ + 0.6323733329772949, + -0.3127302825450897, + -0.708733856678009 + ] + ], + "translation_m": [ + 0.1338866800069809, + 0.5455181002616882, + 0.6366544365882874 + ], + "rvec_rad": [ + 1.349480297992647, + -2.198460889345346, + 0.9017792032946432 + ] + }, + "camera_in_world": { + "position_m": [ + 0.0016466081142425537, + 0.14216473698616028, + 0.8370369672775269 + ], + "position_mm": [ + 1.6466081142425537, + 142.16473388671875, + 837.0369873046875 + ], + "orientation_deg": { + "roll": -156.19041442871094, + "pitch": -39.225440979003906, + "yaw": -125.506591796875 + } + }, + "uncertainty": { + "pose_covariance_6x6": [ + [ + 1.4849414393769387e-07, + -1.4240380921300118e-07, + -1.2729418557956881e-10, + 2.2091987446935928e-08, + 8.2905909888743e-08, + 9.837994947994132e-08 + ], + [ + -1.424038092130027e-07, + 3.3055803639260066e-07, + -7.21239223506363e-08, + -1.0929630274807451e-07, + -1.150185748138138e-07, + -1.8060634186505822e-07 + ], + [ + -1.2729418557402184e-10, + -7.212392235064104e-08, + 6.47873152834935e-07, + 1.561383497117808e-07, + -6.815040811984151e-08, + -1.5243012171916859e-09 + ], + [ + 2.2091987446937626e-08, + -1.0929630274807578e-07, + 1.5613834971178012e-07, + 7.216729604962e-08, + 1.1563414877868103e-08, + 4.303836385840717e-08 + ], + [ + 8.29059098887427e-08, + -1.1501857481381275e-07, + -6.815040811984441e-08, + 1.156341487786719e-08, + 6.864195938949862e-08, + 8.21476149744511e-08 + ], + [ + 9.837994947994174e-08, + -1.8060634186505764e-07, + -1.5243012171946075e-09, + 4.303836385840626e-08, + 8.214761497445146e-08, + 1.4386634085355377e-07 + ] + ], + "parameter_std": { + "rvec_std_deg": [ + 0.0220788930578102, + 0.0329417367623057, + 0.04611769833945156 + ], + "tvec_std_m": [ + 0.000268639714207747, + 0.00026199610567620776, + 0.0003792971669463849 + ] + }, + "camera_center_std_m": [ + 0.0005069549028542055, + 0.0007540595500202172, + 0.00042129810324603365 + ], + "camera_center_std_mm": [ + 0.5069549028542054, + 0.7540595500202172, + 0.4212981032460337 + ], + "orientation_std_deg": { + "roll": 0.03877837514008846, + "pitch": 0.03559501730728608, + "yaw": 0.019333959001429417 + } + } + }, + "observations": { + "markers": [ + { + "marker_id": 66, + "observed_center_px": [ + 1493.0, + 1050.25 + ], + "projected_center_px": [ + 1494.0186767578125, + 1050.6241455078125 + ], + "reprojection_error_px": 1.0852129735326888, + "confidence": 0.08368267584972333 + }, + { + "marker_id": 79, + "observed_center_px": [ + 1142.5, + 1052.5 + ], + "projected_center_px": [ + 1142.43701171875, + 1052.92236328125 + ], + "reprojection_error_px": 0.4270342666848829, + "confidence": 0.06288522219119905 + }, + { + "marker_id": 56, + "observed_center_px": [ + 568.5, + 1026.25 + ], + "projected_center_px": [ + 568.430419921875, + 1026.8428955078125 + ], + "reprojection_error_px": 0.5969643795538586, + "confidence": 0.3964459016633029 + }, + { + "marker_id": 98, + "observed_center_px": [ + 322.5, + 1023.25 + ], + "projected_center_px": [ + 322.2366638183594, + 1022.9930419921875 + ], + "reprojection_error_px": 0.36793119239884114, + "confidence": 0.4222467925074662 + }, + { + "marker_id": 55, + "observed_center_px": [ + 1298.75, + 1021.0 + ], + "projected_center_px": [ + 1298.875732421875, + 1021.7003784179688 + ], + "reprojection_error_px": 0.7115747116550462, + "confidence": 0.5099828684402014 + }, + { + "marker_id": 70, + "observed_center_px": [ + 337.25, + 980.75 + ], + "projected_center_px": [ + 337.37994384765625, + 980.953125 + ], + "reprojection_error_px": 0.24113309430418445, + "confidence": 0.5822711562236141 + }, + { + "marker_id": 46, + "observed_center_px": [ + 528.25, + 990.0 + ], + "projected_center_px": [ + 528.1993408203125, + 989.808837890625 + ], + "reprojection_error_px": 0.19776072549247456, + "confidence": 0.608327148176666 + }, + { + "marker_id": 50, + "observed_center_px": [ + 476.25, + 962.0 + ], + "projected_center_px": [ + 476.15234375, + 961.6090087890625 + ], + "reprojection_error_px": 0.4030023203338104, + "confidence": 0.5940980546668021 + }, + { + "marker_id": 47, + "observed_center_px": [ + 1273.0, + 933.0 + ], + "projected_center_px": [ + 1273.08642578125, + 933.1593017578125 + ], + "reprojection_error_px": 0.18123593933551163, + "confidence": 0.6783989990234374 + }, + { + "marker_id": 68, + "observed_center_px": [ + 534.75, + 936.75 + ], + "projected_center_px": [ + 534.9307861328125, + 936.669921875 + ], + "reprojection_error_px": 0.1977274182323092, + "confidence": 0.5476861321035912 + }, + { + "marker_id": 97, + "observed_center_px": [ + 1394.0, + 935.75 + ], + "projected_center_px": [ + 1394.4114990234375, + 936.25732421875 + ], + "reprojection_error_px": 0.6532299053321993, + "confidence": 0.6020873966469932 + }, + { + "marker_id": 90, + "observed_center_px": [ + 302.75, + 942.0 + ], + "projected_center_px": [ + 303.2016906738281, + 941.5814208984375 + ], + "reprojection_error_px": 0.6158189093298251, + "confidence": 0.4933910249582603 + }, + { + "marker_id": 54, + "observed_center_px": [ + 1325.25, + 909.25 + ], + "projected_center_px": [ + 1326.080322265625, + 909.7511596679688 + ], + "reprojection_error_px": 0.9698433263116166, + "confidence": 0.5932304176674892 + }, + { + "marker_id": 91, + "observed_center_px": [ + 268.5, + 859.75 + ], + "projected_center_px": [ + 268.9271545410156, + 859.4078369140625 + ], + "reprojection_error_px": 0.5472993507108722, + "confidence": 0.43401712608969617 + }, + { + "marker_id": 76, + "observed_center_px": [ + 499.75, + 814.75 + ], + "projected_center_px": [ + 499.89013671875, + 814.3128662109375 + ], + "reprojection_error_px": 0.45904711030803236, + "confidence": 0.4224323772427831 + }, + { + "marker_id": 88, + "observed_center_px": [ + 276.5, + 810.0 + ], + "projected_center_px": [ + 277.01470947265625, + 809.6713256835938 + ], + "reprojection_error_px": 0.6106984914892051, + "confidence": 0.3880318146180246 + }, + { + "marker_id": 104, + "observed_center_px": [ + 364.75, + 716.25 + ], + "projected_center_px": [ + 365.1983947753906, + 715.8483276367188 + ], + "reprojection_error_px": 0.6019954833896626, + "confidence": 0.3149312141934442 + }, + { + "marker_id": 100, + "observed_center_px": [ + 456.0, + 706.5 + ], + "projected_center_px": [ + 455.809326171875, + 706.3466186523438 + ], + "reprojection_error_px": 0.2447086973131308, + "confidence": 0.29985477912268665 + }, + { + "marker_id": 102, + "observed_center_px": [ + 983.75, + 664.75 + ], + "projected_center_px": [ + 983.1326904296875, + 664.3472900390625 + ], + "reprojection_error_px": 0.7370525206779271, + "confidence": 0.35537153494120666 + }, + { + "marker_id": 92, + "observed_center_px": [ + 944.5, + 684.75 + ], + "projected_center_px": [ + 944.1395874023438, + 684.6761474609375 + ], + "reprojection_error_px": 0.36790139721847215, + "confidence": 0.3581280715917397 + }, + { + "marker_id": 59, + "observed_center_px": [ + 1057.0, + 660.75 + ], + "projected_center_px": [ + 1056.674560546875, + 660.1974487304688 + ], + "reprojection_error_px": 0.6412672945900915, + "confidence": 0.3614809694286344 + }, + { + "marker_id": 57, + "observed_center_px": [ + 1160.25, + 644.0 + ], + "projected_center_px": [ + 1160.1585693359375, + 643.6640625 + ], + "reprojection_error_px": 0.3481573929089539, + "confidence": 0.36601105131705447 + }, + { + "marker_id": 94, + "observed_center_px": [ + 434.0, + 646.0 + ], + "projected_center_px": [ + 434.1164855957031, + 646.009765625 + ], + "reprojection_error_px": 0.11689423184209098, + "confidence": 0.23999999517474713 + }, + { + "marker_id": 48, + "observed_center_px": [ + 1062.5, + 594.25 + ], + "projected_center_px": [ + 1062.1007080078125, + 593.8082885742188 + ], + "reprojection_error_px": 0.5954352010846917, + "confidence": 0.3288921382047948 + }, + { + "marker_id": 93, + "observed_center_px": [ + 453.25, + 587.75 + ], + "projected_center_px": [ + 453.8382873535156, + 588.1190795898438 + ], + "reprojection_error_px": 0.6944794841790854, + "confidence": 0.22185058085409132 + }, + { + "marker_id": 71, + "observed_center_px": [ + 991.5, + 562.75 + ], + "projected_center_px": [ + 990.5108032226562, + 562.600341796875 + ], + "reprojection_error_px": 1.0004538180595166, + "confidence": 0.2952868952338828 + }, + { + "marker_id": 49, + "observed_center_px": [ + 418.75, + 541.75 + ], + "projected_center_px": [ + 419.1109313964844, + 542.364013671875 + ], + "reprojection_error_px": 0.712238908104283, + "confidence": 0.1827933144037421 + }, + { + "marker_id": 65, + "observed_center_px": [ + 976.0, + 520.25 + ], + "projected_center_px": [ + 975.2779541015625, + 520.2697143554688 + ], + "reprojection_error_px": 0.7223149834123371, + "confidence": 0.2338696816856176 + }, + { + "marker_id": 78, + "observed_center_px": [ + 1011.5, + 491.25 + ], + "projected_center_px": [ + 1010.1968994140625, + 491.1522216796875 + ], + "reprojection_error_px": 1.3067638413247398, + "confidence": 0.23480971509885154 + }, + { + "marker_id": 80, + "observed_center_px": [ + 981.75, + 468.0 + ], + "projected_center_px": [ + 981.4586181640625, + 468.0997619628906 + ], + "reprojection_error_px": 0.30798672626283524, + "confidence": 0.21560517841254084 + }, + { + "marker_id": 99, + "observed_center_px": [ + 923.0, + 415.25 + ], + "projected_center_px": [ + 922.6004028320312, + 415.1175231933594 + ], + "reprojection_error_px": 0.42098456141091795, + "confidence": 0.18206985328647093 + }, + { + "marker_id": 89, + "observed_center_px": [ + 953.0, + 384.75 + ], + "projected_center_px": [ + 952.2056274414062, + 385.0829162597656 + ], + "reprojection_error_px": 0.8613135305236496, + "confidence": 0.18206985328647093 + } + ] + }, + "qa": { + "sanity_notes": [] + } +} \ No newline at end of file diff --git a/test/homing/20260616_135403/cam2_debug.jpg b/test/homing/20260616_135403/cam2_debug.jpg new file mode 100644 index 0000000..6adb758 Binary files /dev/null and b/test/homing/20260616_135403/cam2_debug.jpg differ diff --git a/test/homing/20260616_135403/state_Arm1.json b/test/homing/20260616_135403/state_Arm1.json new file mode 100644 index 0000000..e993f13 --- /dev/null +++ b/test/homing/20260616_135403/state_Arm1.json @@ -0,0 +1,40 @@ +{ + "status": "ok", + "link": "Arm1", + "joint": "y", + "method": "primary", + "joint_origin_world_mm": [ + 302.7293528438215, + 101.1, + 71.2 + ], + "joint_axis_world": [ + -1.0, + 0.0, + 0.0 + ], + "mean_angle_deg": 35.99125404126597, + "circular_variance": 0.0, + "circular_std_deg": 0.0, + "num_pairs_used": 1, + "num_markers_matched": 2, + "per_pair": [ + { + "marker_ids": [ + 229, + 243 + ], + "link": "Arm1", + "tier": "primary", + "skipped": false, + "angle_deg": 35.99125404126596, + "baseline_model_mm": 49.49747468305833, + "baseline_obs_mm": 51.238902220972605, + "weight": 2536.1962654702925 + } + ], + "accumulated_state": { + "x": 192.72935284382152, + "y": 35.99125404126597 + } +} \ No newline at end of file diff --git a/test/homing/20260616_135403/state_Arm2.json b/test/homing/20260616_135403/state_Arm2.json new file mode 100644 index 0000000..b12d08b --- /dev/null +++ b/test/homing/20260616_135403/state_Arm2.json @@ -0,0 +1,101 @@ +{ + "status": "ok", + "link": "Arm2", + "joint": "a", + "method": "primary", + "joint_origin_world_mm": [ + 392.7293528438215, + -101.1766769713254, + 218.11543810450308 + ], + "joint_axis_world": [ + 0.0, + -0.8915707801303708, + -0.4528813796323736 + ], + "mean_angle_deg": -3.593602085604554, + "circular_variance": 0.007103593831153776, + "circular_std_deg": 6.841482910070501, + "num_pairs_used": 4, + "num_markers_matched": 4, + "per_pair": [ + { + "marker_ids": [ + 143, + 144 + ], + "link": "Arm2", + "tier": "primary", + "skipped": false, + "angle_deg": 3.320663295151834, + "baseline_model_mm": 26.788523662195356, + "baseline_obs_mm": 33.84171710449189, + "weight": 906.5696394230024 + }, + { + "marker_ids": [ + 143, + 146 + ], + "link": "Arm2", + "tier": "primary", + "skipped": true, + "reason": "bl_model=0.0 bl_obs=7.2 < 15.0" + }, + { + "marker_ids": [ + 143, + 148 + ], + "link": "Arm2", + "tier": "primary", + "skipped": false, + "angle_deg": -5.41540861073131, + "baseline_model_mm": 26.788523662195345, + "baseline_obs_mm": 24.016486953619907, + "weight": 643.3662290398527 + }, + { + "marker_ids": [ + 144, + 146 + ], + "link": "Arm2", + "tier": "primary", + "skipped": false, + "angle_deg": -1.9878159055548217, + "baseline_model_mm": 26.788523662195335, + "baseline_obs_mm": 27.246309858551403, + "weight": 729.8884163533103 + }, + { + "marker_ids": [ + 144, + 148 + ], + "link": "Arm2", + "tier": "primary", + "skipped": true, + "reason": "bl_model=0.0 bl_obs=10.7 < 15.0" + }, + { + "marker_ids": [ + 146, + 148 + ], + "link": "Arm2", + "tier": "primary", + "skipped": false, + "angle_deg": -16.595084006319954, + "baseline_model_mm": 26.788523662195324, + "baseline_obs_mm": 18.108584778091874, + "weight": 485.10225181678425 + } + ], + "accumulated_state": { + "x": 192.72935284382152, + "y": 35.99125404126597, + "z": -62.91995514975685, + "a": -3.593602085604554 + } +} \ No newline at end of file diff --git a/test/homing/20260616_135403/state_Ellbow.json b/test/homing/20260616_135403/state_Ellbow.json new file mode 100644 index 0000000..5dccc1a --- /dev/null +++ b/test/homing/20260616_135403/state_Ellbow.json @@ -0,0 +1,64 @@ +{ + "status": "ok", + "link": "Ellbow", + "joint": "z", + "method": "primary", + "joint_origin_world_mm": [ + 302.7293528438215, + -101.1766769713254, + 218.11543810450308 + ], + "joint_axis_world": [ + -1.0, + 0.0, + 0.0 + ], + "mean_angle_deg": -62.91995514975685, + "circular_variance": 2.1123632454655983e-05, + "circular_std_deg": 0.3724124787779045, + "num_pairs_used": 2, + "num_markers_matched": 3, + "per_pair": [ + { + "marker_ids": [ + 121, + 129 + ], + "link": "Ellbow", + "tier": "primary", + "skipped": false, + "angle_deg": -63.2924549345884, + "baseline_model_mm": 26.788523662195352, + "baseline_obs_mm": 29.39944917497193, + "weight": 787.5678398792452 + }, + { + "marker_ids": [ + 121, + 132 + ], + "link": "Ellbow", + "tier": "primary", + "skipped": false, + "angle_deg": -62.547632578212095, + "baseline_model_mm": 26.788523662195352, + "baseline_obs_mm": 29.413442147810667, + "weight": 787.9426909632401 + }, + { + "marker_ids": [ + 129, + 132 + ], + "link": "Ellbow", + "tier": "primary", + "skipped": true, + "reason": "bl_model=0.0 bl_obs=0.4 < 15.0" + } + ], + "accumulated_state": { + "x": 192.72935284382152, + "y": 35.99125404126597, + "z": -62.91995514975685 + } +} \ No newline at end of file