diff --git a/data/evaluations/Scene4/aruco_positions_initial.json b/data/evaluations/Scene4/aruco_positions_initial.json index 915e6d5..8aae280 100644 --- a/data/evaluations/Scene4/aruco_positions_initial.json +++ b/data/evaluations/Scene4/aruco_positions_initial.json @@ -1,7 +1,7 @@ { "schema_version": "1.2", "stage": "initial_triangulation", - "created_utc": "2026-05-31T08:47:11Z", + "created_utc": "2026-06-01T12:30:25Z", "summary": { "num_cameras": 7, "num_markers": 50, diff --git a/data/evaluations/Scene4/aruco_positions_optimized.json b/data/evaluations/Scene4/aruco_positions_optimized.json index 437beb9..240856f 100644 --- a/data/evaluations/Scene4/aruco_positions_optimized.json +++ b/data/evaluations/Scene4/aruco_positions_optimized.json @@ -1,6 +1,6 @@ { "schema_version": "1.2", - "created_utc": "2026-05-31T08:47:48Z", + "created_utc": "2026-06-01T12:31:31Z", "summary": { "num_cameras": 7, "num_markers": 50, diff --git a/data/evaluations/Scene4/render_a_aruco_detection.json b/data/evaluations/Scene4/render_a_aruco_detection.json index e2d1b1a..820ca3d 100644 --- a/data/evaluations/Scene4/render_a_aruco_detection.json +++ b/data/evaluations/Scene4/render_a_aruco_detection.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T08:47:06Z", + "created_utc": "2026-06-01T12:38:59Z", "vision_config": { "MarkerType": "DICT_4X4_250", "MarkerSize": 0.025 @@ -46,7 +46,7 @@ }, "detections": [ { - "observation_id": "47838397-be6e-45aa-a6f1-0f646a7c7e32", + "observation_id": "44109558-03cb-4d11-bd08-768cc37ee9dc", "type": "aruco", "marker_id": 219, "marker_size_m": 0.025, @@ -100,7 +100,7 @@ "confidence": 0.9601597205345928 }, { - "observation_id": "3e933766-f9eb-4688-8403-fa53df74032d", + "observation_id": "e2aaaf5e-4666-411e-b9cf-dd1166602e83", "type": "aruco", "marker_id": 42, "marker_size_m": 0.025, @@ -154,7 +154,7 @@ "confidence": 0.7977507265243933 }, { - "observation_id": "c0653e64-f844-4038-9d51-b1d78f9287ad", + "observation_id": "3b590630-b80a-4061-b9d0-7d4c07b7bc11", "type": "aruco", "marker_id": 218, "marker_size_m": 0.025, @@ -208,7 +208,7 @@ "confidence": 0.9114881811828396 }, { - "observation_id": "d220625a-6d4b-4caa-ac48-a4f58bd03e15", + "observation_id": "9228f5a3-d039-4f3c-9da7-2b49f72a382f", "type": "aruco", "marker_id": 243, "marker_size_m": 0.025, @@ -262,7 +262,7 @@ "confidence": 0.8788055127363418 }, { - "observation_id": "f47bdd0d-5cf1-45c1-9d34-8a3225a0d5b4", + "observation_id": "2172f251-719c-4585-8d14-0045867cfe89", "type": "aruco", "marker_id": 247, "marker_size_m": 0.025, @@ -316,7 +316,7 @@ "confidence": 0.7804137133263228 }, { - "observation_id": "abaf559c-aa07-4e86-bc8b-6dc5de0d4862", + "observation_id": "35b0c1d9-0342-472b-be65-b1f7a9286ed9", "type": "aruco", "marker_id": 246, "marker_size_m": 0.025, @@ -370,7 +370,7 @@ "confidence": 0.7125165224268091 }, { - "observation_id": "f2135fd0-f994-4db3-be7c-b31098957721", + "observation_id": "374b176d-eecc-403a-9f12-c213b213a5f5", "type": "aruco", "marker_id": 114, "marker_size_m": 0.025, @@ -424,7 +424,7 @@ "confidence": 0.4775336476164635 }, { - "observation_id": "92febfcc-e966-45cd-8b60-868e105a03c6", + "observation_id": "c73a38d2-c84a-4ee3-aa46-dc4f67173f8d", "type": "aruco", "marker_id": 120, "marker_size_m": 0.025, @@ -478,7 +478,7 @@ "confidence": 0.48472798261140293 }, { - "observation_id": "f25902ac-cf8e-4fdc-9788-5645b1c4a3f9", + "observation_id": "7998bb95-459e-494b-a10b-b784803f328d", "type": "aruco", "marker_id": 47, "marker_size_m": 0.025, @@ -532,7 +532,7 @@ "confidence": 0.12146268776527554 }, { - "observation_id": "9f1b0912-d591-4371-bfb9-a5fa6c571e60", + "observation_id": "70728a47-787b-4753-9f07-ed9ed93a1d1b", "type": "aruco", "marker_id": 210, "marker_size_m": 0.025, @@ -586,7 +586,7 @@ "confidence": 0.46829700346999537 }, { - "observation_id": "d5647595-eed8-4487-b564-5e6bd14436a8", + "observation_id": "95f6ceb3-6a73-48d5-a13b-6fe4343582fd", "type": "aruco", "marker_id": 85, "marker_size_m": 0.025, @@ -640,7 +640,7 @@ "confidence": 0.4560525484643318 }, { - "observation_id": "3a2b7364-a8bd-484d-aed5-314fbbc12d50", + "observation_id": "834a222f-4225-4342-8070-74ea49c5b0f8", "type": "aruco", "marker_id": 79, "marker_size_m": 0.025, @@ -694,7 +694,7 @@ "confidence": 0.5734281513866332 }, { - "observation_id": "0a981d4c-f32c-42bc-ba1c-7db45aca4f09", + "observation_id": "cc2d1afa-c0ef-4697-963c-3a2814f9773d", "type": "aruco", "marker_id": 96, "marker_size_m": 0.025, @@ -748,7 +748,7 @@ "confidence": 0.525542829627259 }, { - "observation_id": "4ba55d56-3956-4f58-9000-8c9e9b9ea4a0", + "observation_id": "89d81c95-61e8-4afb-acd0-21f763434708", "type": "aruco", "marker_id": 215, "marker_size_m": 0.025, @@ -802,7 +802,7 @@ "confidence": 0.456911083882938 }, { - "observation_id": "8800627a-400c-4cca-b4e2-89a1661fbcad", + "observation_id": "9749a99a-5444-41a2-a9e2-37b7dfe57fc5", "type": "aruco", "marker_id": 105, "marker_size_m": 0.025, @@ -856,7 +856,7 @@ "confidence": 0.43622925667631085 }, { - "observation_id": "077b0333-5b5a-4b9b-adb4-6b5a01517280", + "observation_id": "c90dc06c-55c0-418e-a622-90ec11369da5", "type": "aruco", "marker_id": 208, "marker_size_m": 0.025, @@ -910,7 +910,7 @@ "confidence": 0.4417935296159658 }, { - "observation_id": "c6a375f4-8084-490f-84f2-f59d68badae7", + "observation_id": "b487e11c-faa7-499e-9972-6d5409375476", "type": "aruco", "marker_id": 211, "marker_size_m": 0.025, @@ -964,7 +964,7 @@ "confidence": 0.3826078272694969 }, { - "observation_id": "af422433-75e2-4f3a-b2c1-d94d366d249d", + "observation_id": "b4bccfd1-3478-4800-bafa-6971665221b1", "type": "aruco", "marker_id": 75, "marker_size_m": 0.025, @@ -1018,7 +1018,7 @@ "confidence": 0.29844141482805986 }, { - "observation_id": "33e5f248-80ea-47b3-82d5-89d0865f9cf8", + "observation_id": "a611e7c5-aa9c-4c5c-b755-a81b7695c1b1", "type": "aruco", "marker_id": 102, "marker_size_m": 0.025, @@ -1072,7 +1072,7 @@ "confidence": 0.2521714913889437 }, { - "observation_id": "df611a6c-c7bf-46c6-9751-9a4c1df50115", + "observation_id": "5657f220-8852-49fa-9505-fc03bc0ebe44", "type": "aruco", "marker_id": 214, "marker_size_m": 0.025, @@ -1126,7 +1126,7 @@ "confidence": 0.38467027802270787 }, { - "observation_id": "7769664a-962f-4d15-83a0-353f114f5be1", + "observation_id": "1dded302-fde5-4e65-bd40-50bfe59f2a2b", "type": "aruco", "marker_id": 92, "marker_size_m": 0.025, @@ -1180,7 +1180,7 @@ "confidence": 0.31777455864589965 }, { - "observation_id": "203a986b-496b-4aa9-b09d-92f87f1e9c96", + "observation_id": "947e6510-f8af-4867-a162-6a40ef047627", "type": "aruco", "marker_id": 217, "marker_size_m": 0.025, @@ -1234,7 +1234,7 @@ "confidence": 0.3029173397022545 }, { - "observation_id": "e714abfe-bd7f-4f26-a013-7e8d30fc3e86", + "observation_id": "95f3a159-c4bf-4a1a-9860-05994d6cf8ec", "type": "aruco", "marker_id": 61, "marker_size_m": 0.025, @@ -1288,7 +1288,7 @@ "confidence": 0.1527342148240039 }, { - "observation_id": "10d67411-73d3-4a16-95fc-4b6fb66ce9d2", + "observation_id": "86f955f5-a2c1-4a57-abd6-f09e00cd68c0", "type": "aruco", "marker_id": 83, "marker_size_m": 0.025, @@ -1342,7 +1342,7 @@ "confidence": 0.19743498130596515 }, { - "observation_id": "fe02d1ed-cbfe-4986-b8c4-07822592c803", + "observation_id": "eb2003a3-90a5-4923-a211-c9acf598de4f", "type": "aruco", "marker_id": 206, "marker_size_m": 0.025, @@ -1396,7 +1396,7 @@ "confidence": 0.2849187633475991 }, { - "observation_id": "a64c5eb5-f28a-4443-b1b1-e38533229ae0", + "observation_id": "1ae4253b-50d1-409a-9823-5e7c59974646", "type": "aruco", "marker_id": 207, "marker_size_m": 0.025, @@ -1450,7 +1450,7 @@ "confidence": 0.24627951083020566 }, { - "observation_id": "921da138-9354-401f-b719-aad7dcb82b95", + "observation_id": "fa04c51a-fce3-449d-aecb-9eb18b58acb1", "type": "aruco", "marker_id": 93, "marker_size_m": 0.025, diff --git a/data/evaluations/Scene4/render_a_camera_pose.json b/data/evaluations/Scene4/render_a_camera_pose.json index 41a2e9f..b96f84e 100644 --- a/data/evaluations/Scene4/render_a_camera_pose.json +++ b/data/evaluations/Scene4/render_a_camera_pose.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T08:47:09Z", + "created_utc": "2026-06-01T12:39:04Z", "source": { "detection_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\evaluations\\Scene4\\render_a_aruco_detection.json", "robot_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\robot\\robot.json" diff --git a/data/evaluations/Scene4/render_b_aruco_detection.json b/data/evaluations/Scene4/render_b_aruco_detection.json index 4b27dac..09a38c3 100644 --- a/data/evaluations/Scene4/render_b_aruco_detection.json +++ b/data/evaluations/Scene4/render_b_aruco_detection.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T08:47:07Z", + "created_utc": "2026-06-01T12:39:00Z", "vision_config": { "MarkerType": "DICT_4X4_250", "MarkerSize": 0.025 @@ -46,7 +46,7 @@ }, "detections": [ { - "observation_id": "6aab51d3-8f8e-4b78-b4d4-cca9fa9b98ae", + "observation_id": "fe0a2cf0-2197-4f51-b085-f3405d4f42aa", "type": "aruco", "marker_id": 114, "marker_size_m": 0.025, @@ -100,7 +100,7 @@ "confidence": 0.80343703773924 }, { - "observation_id": "082bf1b8-a4c4-4c38-88fd-0cd995c7e479", + "observation_id": "d8dbf9c7-f93f-436e-b64a-f8308039eda3", "type": "aruco", "marker_id": 120, "marker_size_m": 0.025, @@ -154,7 +154,7 @@ "confidence": 0.7694115459687173 }, { - "observation_id": "16876b6c-315f-4a34-81c0-242a4fe4d482", + "observation_id": "5a1a8c48-5b97-4c5e-be74-ae9599453b0f", "type": "aruco", "marker_id": 243, "marker_size_m": 0.025, @@ -208,7 +208,7 @@ "confidence": 0.770675991358623 }, { - "observation_id": "9e8d2195-7a17-44c9-9ce6-7c84adbaa920", + "observation_id": "39454e6a-6bd1-4a64-ae3b-fd46338f3d25", "type": "aruco", "marker_id": 219, "marker_size_m": 0.025, @@ -262,7 +262,7 @@ "confidence": 0.6459779993693033 }, { - "observation_id": "7f252298-54c7-448d-a3de-d72e687ce77f", + "observation_id": "2e21a031-bb5d-4d5a-9908-4c9059da2282", "type": "aruco", "marker_id": 247, "marker_size_m": 0.025, @@ -316,7 +316,7 @@ "confidence": 0.6729142857142857 }, { - "observation_id": "2643b320-0e47-46a8-8379-129e66bbee84", + "observation_id": "2852564f-d5d4-471b-8220-7099c409aa1d", "type": "aruco", "marker_id": 246, "marker_size_m": 0.025, @@ -370,7 +370,7 @@ "confidence": 0.6507344589435812 }, { - "observation_id": "8a11802b-a1ad-4f63-8f4b-2ee6d490eef3", + "observation_id": "f3f8786b-acb0-46e0-9be1-c5a399871039", "type": "aruco", "marker_id": 218, "marker_size_m": 0.025, @@ -424,7 +424,7 @@ "confidence": 0.5993310137356028 }, { - "observation_id": "c1d9cbb1-18fd-473f-a177-bf60900ada21", + "observation_id": "3bbf6533-d32c-4276-b8ee-f1da5a5a823e", "type": "aruco", "marker_id": 44, "marker_size_m": 0.025, @@ -478,7 +478,7 @@ "confidence": 0.46011560227730974 }, { - "observation_id": "626151f8-b54e-48ce-8ec1-104711123983", + "observation_id": "bd2800e6-5fbf-4e49-9448-2630290bb0f2", "type": "aruco", "marker_id": 42, "marker_size_m": 0.025, @@ -532,7 +532,7 @@ "confidence": 0.0456345257443131 }, { - "observation_id": "95a84990-d6a4-42c9-9e9d-9dff35ca6309", + "observation_id": "26ed215c-7e3c-4b29-b2d5-06726c033f09", "type": "aruco", "marker_id": 63, "marker_size_m": 0.025, @@ -586,7 +586,7 @@ "confidence": 0.1539593300495616 }, { - "observation_id": "ee9e53b4-e504-4389-bacf-0d4f4fad0888", + "observation_id": "afefe8e9-77a4-4f67-bbc9-fdcb28b7b355", "type": "aruco", "marker_id": 102, "marker_size_m": 0.025, @@ -640,7 +640,7 @@ "confidence": 0.39637168760361213 }, { - "observation_id": "6940a210-9090-4489-972a-fc96cd0dbff6", + "observation_id": "7348f772-d89a-42c6-9c08-eebd24909b3d", "type": "aruco", "marker_id": 64, "marker_size_m": 0.025, @@ -694,7 +694,7 @@ "confidence": 0.4633649853376546 }, { - "observation_id": "070b352d-fd05-4038-8290-5beadbbfef88", + "observation_id": "5b4796e4-688c-484d-984d-af848f97562f", "type": "aruco", "marker_id": 58, "marker_size_m": 0.025, @@ -748,7 +748,7 @@ "confidence": 0.3638956157928849 }, { - "observation_id": "78223644-d61c-4a3c-8e97-418d3249791f", + "observation_id": "49fbee39-de95-4344-83c3-35d813b23aae", "type": "aruco", "marker_id": 92, "marker_size_m": 0.025, @@ -802,7 +802,7 @@ "confidence": 0.46896024883690896 }, { - "observation_id": "02e00e55-85f9-4f0a-8216-776d9caf8300", + "observation_id": "254ac7ad-2a62-4299-87cf-4608468f0113", "type": "aruco", "marker_id": 96, "marker_size_m": 0.025, @@ -856,7 +856,7 @@ "confidence": 0.44372569385651617 }, { - "observation_id": "df5fb02f-0ad6-447c-afa4-63b614af09ae", + "observation_id": "2aafd9ad-8294-40e5-b8c4-8397c7069a9e", "type": "aruco", "marker_id": 103, "marker_size_m": 0.025, @@ -910,7 +910,7 @@ "confidence": 0.45199802144368495 }, { - "observation_id": "e8214723-46f6-4d85-96ac-e27f720ffd85", + "observation_id": "6ecdcc3e-c7d3-46c5-b8fe-0a8e9cdb10be", "type": "aruco", "marker_id": 51, "marker_size_m": 0.025, @@ -964,7 +964,7 @@ "confidence": 0.45199802144368495 }, { - "observation_id": "e23e2c6d-d0f1-40b0-922a-7c51e2dbd83e", + "observation_id": "086a56a9-db3f-4da8-88cc-fad22bd9073b", "type": "aruco", "marker_id": 62, "marker_size_m": 0.025, @@ -1018,7 +1018,7 @@ "confidence": 0.44348322079976393 }, { - "observation_id": "506cca57-5935-4563-8f31-c13b4925889a", + "observation_id": "f5277845-c781-43e9-aad1-c7d209965635", "type": "aruco", "marker_id": 205, "marker_size_m": 0.025, @@ -1072,7 +1072,7 @@ "confidence": 0.3958181457519531 }, { - "observation_id": "a0fcaf48-6973-4616-afd3-5c528ea43e9a", + "observation_id": "d69af31c-84a4-4fb6-9980-0818c7893b9c", "type": "aruco", "marker_id": 217, "marker_size_m": 0.025, @@ -1126,7 +1126,7 @@ "confidence": 0.4015868133874269 }, { - "observation_id": "b0e0409b-cd3c-4fb7-8280-441914fb7924", + "observation_id": "ec172895-8fd1-4f96-85f1-a01aaa3ab035", "type": "aruco", "marker_id": 208, "marker_size_m": 0.025, @@ -1180,7 +1180,7 @@ "confidence": 0.3776 }, { - "observation_id": "f76e08ae-1b93-43e6-8415-4f02895c9ab1", + "observation_id": "67e9ecf5-4aeb-45c4-962f-2603024131b3", "type": "aruco", "marker_id": 210, "marker_size_m": 0.025, @@ -1234,7 +1234,7 @@ "confidence": 0.3320910299473707 }, { - "observation_id": "15018bcd-f7be-46b3-9ca5-0106eb98ab2a", + "observation_id": "137b3477-8774-4bc6-8c97-21967a32a691", "type": "aruco", "marker_id": 206, "marker_size_m": 0.025, @@ -1288,7 +1288,7 @@ "confidence": 0.3579602826436361 }, { - "observation_id": "14a99a02-7aa5-4239-9d1a-0532822098ba", + "observation_id": "857e233a-65a2-417d-b0d2-eea89e3e9a18", "type": "aruco", "marker_id": 207, "marker_size_m": 0.025, @@ -1342,7 +1342,7 @@ "confidence": 0.343462485354258 }, { - "observation_id": "85986399-de4c-4d08-a06d-0b502e6b2b6e", + "observation_id": "e901c6fa-3362-4a34-bf85-95793699da92", "type": "aruco", "marker_id": 214, "marker_size_m": 0.025, @@ -1396,7 +1396,7 @@ "confidence": 0.3244367816091954 }, { - "observation_id": "28819d00-f6b7-4f9a-b84b-0fa65f93567b", + "observation_id": "ce3e90c6-3287-4a84-ac2e-73275069ec31", "type": "aruco", "marker_id": 94, "marker_size_m": 0.025, @@ -1450,7 +1450,7 @@ "confidence": 0.06057156860351561 }, { - "observation_id": "19751dd7-e8f6-40d3-87fe-a317bb39fc64", + "observation_id": "6bf5e710-8059-4279-a7e4-ec6c9795fb9d", "type": "aruco", "marker_id": 76, "marker_size_m": 0.025, @@ -1504,7 +1504,7 @@ "confidence": 0.2459421895345052 }, { - "observation_id": "b05b3442-249a-4049-9ee9-52fab70fd806", + "observation_id": "f4002814-f5e4-485c-acb0-c097cf551c2e", "type": "aruco", "marker_id": 100, "marker_size_m": 0.025, @@ -1558,7 +1558,7 @@ "confidence": 0.24407473894265982 }, { - "observation_id": "7fcc6be4-ba8c-47db-822d-7b1166e7687f", + "observation_id": "0da68db6-9b7f-4e47-a7af-b7461d42e46e", "type": "aruco", "marker_id": 75, "marker_size_m": 0.025, @@ -1612,7 +1612,7 @@ "confidence": 0.23896265492072474 }, { - "observation_id": "8203bb0e-9610-4fcb-a657-07da2e5efa4f", + "observation_id": "6fc4aefe-44f9-42fc-98ee-6df03dd1ef33", "type": "aruco", "marker_id": 68, "marker_size_m": 0.025, @@ -1666,7 +1666,7 @@ "confidence": 0.24909137483284013 }, { - "observation_id": "997abfa1-eb73-4059-a522-4c3a809e30b4", + "observation_id": "36e190fb-2d99-47da-860f-d5ce99949c0d", "type": "aruco", "marker_id": 46, "marker_size_m": 0.025, @@ -1720,7 +1720,7 @@ "confidence": 0.23734254719660833 }, { - "observation_id": "dffbadef-3d8a-40a4-b2af-0b4c6716fe72", + "observation_id": "f8a88985-c2f6-4ac0-ac79-411eaa37e209", "type": "aruco", "marker_id": 50, "marker_size_m": 0.025, @@ -1774,7 +1774,7 @@ "confidence": 0.21965114789131363 }, { - "observation_id": "8798463c-9700-4b8f-a92f-c95a20f50fa9", + "observation_id": "93718e9d-dceb-4150-b430-e28908c36f62", "type": "aruco", "marker_id": 72, "marker_size_m": 0.025, @@ -1828,7 +1828,7 @@ "confidence": 0.21841319450965294 }, { - "observation_id": "f5547d61-969f-43cd-b1ab-2c675642f73c", + "observation_id": "3f2a6ca5-6962-4c24-8263-4ff387aaef7e", "type": "aruco", "marker_id": 104, "marker_size_m": 0.025, @@ -1882,7 +1882,7 @@ "confidence": 0.22417849731445313 }, { - "observation_id": "9e1204a9-d33a-41b6-84e1-c937808249ac", + "observation_id": "ed250cb9-65b1-4e09-83da-d928a3ad844c", "type": "aruco", "marker_id": 53, "marker_size_m": 0.025, @@ -1936,7 +1936,7 @@ "confidence": 0.22367025973033955 }, { - "observation_id": "2f9601fd-2ea6-4b1e-9012-9c3b1cdbb7e8", + "observation_id": "258286b4-d8c6-4521-8c38-f70a7c3512e6", "type": "aruco", "marker_id": 84, "marker_size_m": 0.025, @@ -1990,7 +1990,7 @@ "confidence": 0.21633306884765624 }, { - "observation_id": "224abf5b-2d4d-46ee-80a1-2865fd7cdcb2", + "observation_id": "c83c00ca-cd46-4ab1-adab-48d1ff64f056", "type": "aruco", "marker_id": 60, "marker_size_m": 0.025, @@ -2044,7 +2044,7 @@ "confidence": 0.2000031054889577 }, { - "observation_id": "6207cccf-06ae-4761-bd81-361e3c22f8bf", + "observation_id": "c0b59de2-361d-40b9-ae38-81b9490eef13", "type": "aruco", "marker_id": 67, "marker_size_m": 0.025, @@ -2098,7 +2098,7 @@ "confidence": 0.19627771759033205 }, { - "observation_id": "e8cf49ff-9083-465e-a4f7-b755ba2fcad9", + "observation_id": "c6edf188-51a4-40a1-9692-1c21b237a7d4", "type": "aruco", "marker_id": 86, "marker_size_m": 0.025, @@ -2152,7 +2152,7 @@ "confidence": 0.18966921411877496 }, { - "observation_id": "885fc5c0-30dd-4c72-b8b8-f7fd8cf97d19", + "observation_id": "ae07c431-9c4a-4b0c-b746-770b7c893d7c", "type": "aruco", "marker_id": 70, "marker_size_m": 0.025, @@ -2206,7 +2206,7 @@ "confidence": 0.193995418548584 }, { - "observation_id": "905aec40-0624-4f4b-8ff5-4b21f3ef65fa", + "observation_id": "0f240018-89fa-4c58-ac24-a3999faaa2b1", "type": "aruco", "marker_id": 88, "marker_size_m": 0.025, @@ -2260,7 +2260,7 @@ "confidence": 0.2032033303021305 }, { - "observation_id": "670f78f0-1bf6-4695-b0e2-adcfb9605369", + "observation_id": "8a45fbfc-cbcd-4cc7-a799-16eadbf18e4c", "type": "aruco", "marker_id": 73, "marker_size_m": 0.025, @@ -2314,7 +2314,7 @@ "confidence": 0.1929997138977051 }, { - "observation_id": "89894577-9d7a-4e8a-aa6c-eab38b66716c", + "observation_id": "0c73cf5a-0427-49a3-8333-f2ffe2722ffc", "type": "aruco", "marker_id": 82, "marker_size_m": 0.025, @@ -2368,7 +2368,7 @@ "confidence": 0.19249963767972095 }, { - "observation_id": "ebee6900-dc82-44da-a887-7656afde3cdb", + "observation_id": "15d9c41d-7b71-49c6-882c-567ee764196d", "type": "aruco", "marker_id": 98, "marker_size_m": 0.025, @@ -2422,7 +2422,7 @@ "confidence": 0.1899538473288218 }, { - "observation_id": "2aef8bd4-d3eb-4131-a6c0-ba06153ad499", + "observation_id": "4a1a16f8-c933-439b-a545-5e4fda212642", "type": "aruco", "marker_id": 83, "marker_size_m": 0.025, @@ -2476,7 +2476,7 @@ "confidence": 0.17676838843571283 }, { - "observation_id": "9568032e-d400-4bfb-8776-acd22ca10e90", + "observation_id": "ad9bf2c3-1405-446c-b51b-44250af0e010", "type": "aruco", "marker_id": 61, "marker_size_m": 0.025, @@ -2530,7 +2530,7 @@ "confidence": 0.1668050360320266 }, { - "observation_id": "0ffbe58e-4317-4b1f-847d-454ee59bc667", + "observation_id": "7d2c13fe-06e1-46c6-a1e3-2a29d69ebe56", "type": "aruco", "marker_id": 90, "marker_size_m": 0.025, @@ -2584,7 +2584,7 @@ "confidence": 0.17612778902053833 }, { - "observation_id": "2dc36177-77bc-4b16-98f1-2ebae1bb9806", + "observation_id": "3a1a4106-e7c3-4d72-819d-ef25b9962862", "type": "aruco", "marker_id": 91, "marker_size_m": 0.025, diff --git a/data/evaluations/Scene4/render_b_camera_pose.json b/data/evaluations/Scene4/render_b_camera_pose.json index 885f282..e89cd3a 100644 --- a/data/evaluations/Scene4/render_b_camera_pose.json +++ b/data/evaluations/Scene4/render_b_camera_pose.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T08:47:10Z", + "created_utc": "2026-06-01T12:39:05Z", "source": { "detection_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\evaluations\\Scene4\\render_b_aruco_detection.json", "robot_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\robot\\robot.json" diff --git a/data/evaluations/Scene4/render_c_aruco_detection.json b/data/evaluations/Scene4/render_c_aruco_detection.json index 16ef633..07102ce 100644 --- a/data/evaluations/Scene4/render_c_aruco_detection.json +++ b/data/evaluations/Scene4/render_c_aruco_detection.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T08:47:07Z", + "created_utc": "2026-06-01T12:39:01Z", "vision_config": { "MarkerType": "DICT_4X4_250", "MarkerSize": 0.025 @@ -46,7 +46,7 @@ }, "detections": [ { - "observation_id": "28b40528-3f47-4b34-bed6-9cbffc75f09d", + "observation_id": "73fa7cb9-bdee-43b8-b4a6-42c3668baac3", "type": "aruco", "marker_id": 42, "marker_size_m": 0.025, @@ -100,7 +100,7 @@ "confidence": 0.8343550641259049 }, { - "observation_id": "bd049558-ecd2-4a34-ade7-1be26c010823", + "observation_id": "07686c0e-10b6-48e2-b13c-3e8436bb834e", "type": "aruco", "marker_id": 41, "marker_size_m": 0.025, @@ -154,7 +154,7 @@ "confidence": 0.7789736723135801 }, { - "observation_id": "481a9285-9060-409b-9e13-f225f1befe11", + "observation_id": "2f94b38d-59d8-46b0-941d-d6b12fd04ad5", "type": "aruco", "marker_id": 44, "marker_size_m": 0.025, @@ -208,7 +208,7 @@ "confidence": 0.734766387939453 }, { - "observation_id": "c1291740-3e8a-43ef-8f5f-d12025f3219e", + "observation_id": "b42b25e1-b9fc-4036-a705-301174699a63", "type": "aruco", "marker_id": 219, "marker_size_m": 0.025, @@ -262,7 +262,7 @@ "confidence": 0.6138985440690424 }, { - "observation_id": "d082660a-f4f3-44c8-a6a6-62f07f35087b", + "observation_id": "da7c2892-65e9-4f39-aa60-9fdbb956043c", "type": "aruco", "marker_id": 114, "marker_size_m": 0.025, @@ -316,7 +316,7 @@ "confidence": 0.5645808242627047 }, { - "observation_id": "7f1b7764-c669-4fd4-bf3e-9727533f6499", + "observation_id": "0dd0dbf0-5b65-4efc-b39f-bfe5ac96f6b1", "type": "aruco", "marker_id": 243, "marker_size_m": 0.025, @@ -370,7 +370,7 @@ "confidence": 0.755998822943334 }, { - "observation_id": "fb63a2c0-f203-4787-a7c6-49bae65ef133", + "observation_id": "e04b2446-097f-4c47-8f9d-761cc5045a0a", "type": "aruco", "marker_id": 120, "marker_size_m": 0.025, @@ -424,7 +424,7 @@ "confidence": 0.5284366390074502 }, { - "observation_id": "91412bdc-d88b-470a-a8bc-d33ce48c8598", + "observation_id": "beb1d9df-07d5-48e1-a827-4ad0821f0408", "type": "aruco", "marker_id": 218, "marker_size_m": 0.025, @@ -478,7 +478,7 @@ "confidence": 0.5315859761486594 }, { - "observation_id": "021daa16-c95f-49cc-a61d-f8d093fae96d", + "observation_id": "b108c1c1-00f6-4ec2-baa8-2dd4153a66f8", "type": "aruco", "marker_id": 242, "marker_size_m": 0.025, @@ -532,7 +532,7 @@ "confidence": 0.6006520365292345 }, { - "observation_id": "55ba6a69-7bb2-4231-9b5e-170fda6b841c", + "observation_id": "0429dbf4-5f3e-472e-bbb7-88b99d9a4f5a", "type": "aruco", "marker_id": 246, "marker_size_m": 0.025, @@ -586,7 +586,7 @@ "confidence": 0.3823850960994706 }, { - "observation_id": "82fbe71a-39ad-42da-8187-b3c3e012ec68", + "observation_id": "cae8b3a0-fe38-4cdd-b851-fd8d8c04690a", "type": "aruco", "marker_id": 247, "marker_size_m": 0.025, @@ -640,7 +640,7 @@ "confidence": 0.3808358629990202 }, { - "observation_id": "a7b5c93a-3346-49cb-8745-29550d51c781", + "observation_id": "4d8b3a92-6626-43d5-b890-bc1c7951967c", "type": "aruco", "marker_id": 208, "marker_size_m": 0.025, @@ -694,7 +694,7 @@ "confidence": 0.2964796698261984 }, { - "observation_id": "5c788bd2-e930-4250-ab34-432ff4be26b5", + "observation_id": "1fc7ad0f-8cbe-46a5-8901-0bb7b6f878ea", "type": "aruco", "marker_id": 215, "marker_size_m": 0.025, @@ -748,7 +748,7 @@ "confidence": 0.2743742952602821 }, { - "observation_id": "8ca922db-623b-4acf-8457-1c29629bd2c3", + "observation_id": "661a0f09-0909-422d-8bcb-1e541200079c", "type": "aruco", "marker_id": 210, "marker_size_m": 0.025, @@ -802,7 +802,7 @@ "confidence": 0.233781757000696 }, { - "observation_id": "bfe2089b-34da-4273-bc5e-530c81aa42db", + "observation_id": "93193d2e-cde2-4535-bd07-ad42886e7faa", "type": "aruco", "marker_id": 53, "marker_size_m": 0.025, diff --git a/data/evaluations/Scene4/render_c_camera_pose.json b/data/evaluations/Scene4/render_c_camera_pose.json index 4e8fee5..5104221 100644 --- a/data/evaluations/Scene4/render_c_camera_pose.json +++ b/data/evaluations/Scene4/render_c_camera_pose.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T08:47:10Z", + "created_utc": "2026-06-01T12:39:05Z", "source": { "detection_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\evaluations\\Scene4\\render_c_aruco_detection.json", "robot_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\robot\\robot.json" diff --git a/data/evaluations/Scene4/render_d_aruco_detection.json b/data/evaluations/Scene4/render_d_aruco_detection.json index f0b19af..7f98765 100644 --- a/data/evaluations/Scene4/render_d_aruco_detection.json +++ b/data/evaluations/Scene4/render_d_aruco_detection.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T08:47:07Z", + "created_utc": "2026-06-01T12:39:01Z", "vision_config": { "MarkerType": "DICT_4X4_250", "MarkerSize": 0.025 @@ -46,7 +46,7 @@ }, "detections": [ { - "observation_id": "c7800982-7597-49f0-a539-664a5a7b9f0f", + "observation_id": "63516b30-cccd-44c6-abd6-59bb22705260", "type": "aruco", "marker_id": 44, "marker_size_m": 0.025, @@ -100,7 +100,7 @@ "confidence": 0.9829005790795233 }, { - "observation_id": "2e5134ba-500f-494c-8250-ec316939eed2", + "observation_id": "3d9d6277-c9cc-4a6c-a27d-a1f04ccc36a3", "type": "aruco", "marker_id": 114, "marker_size_m": 0.025, @@ -154,7 +154,7 @@ "confidence": 0.7952853072848569 }, { - "observation_id": "c78334cf-0a73-4de6-a876-1b9ac6558381", + "observation_id": "ee9204a8-f2b6-483f-bfcc-9d13a44b52ae", "type": "aruco", "marker_id": 120, "marker_size_m": 0.025, @@ -208,7 +208,7 @@ "confidence": 0.7534617346649917 }, { - "observation_id": "693762cb-1dcf-4784-97f8-1831334569ed", + "observation_id": "d05e5d3e-e5f3-47dd-8258-36d34b57f2ee", "type": "aruco", "marker_id": 115, "marker_size_m": 0.025, @@ -262,7 +262,7 @@ "confidence": 0.7282777200221999 }, { - "observation_id": "177177d6-6f49-46ac-a9df-40327a4e0e53", + "observation_id": "3ae5fc25-b290-4b69-8c8d-4953ad32f9bd", "type": "aruco", "marker_id": 95, "marker_size_m": 0.025, @@ -316,7 +316,7 @@ "confidence": 0.5518116657099041 }, { - "observation_id": "30cb20f9-6091-43ab-b7e4-3a700987491e", + "observation_id": "7c734697-b05f-46cd-aed7-30ddf2f89e4a", "type": "aruco", "marker_id": 79, "marker_size_m": 0.025, @@ -370,7 +370,7 @@ "confidence": 0.589171450268867 }, { - "observation_id": "08d4c176-3b7d-4366-a0c6-782ee6acd47d", + "observation_id": "d8980bf9-3418-4c1a-8048-a2f4b4cdc2c3", "type": "aruco", "marker_id": 208, "marker_size_m": 0.025, @@ -424,7 +424,7 @@ "confidence": 0.4569666605043164 }, { - "observation_id": "4021c02f-cfa4-4e8f-9592-a4c05f5f799f", + "observation_id": "1745de3b-38e9-430c-bdd2-02b005fe8a1b", "type": "aruco", "marker_id": 69, "marker_size_m": 0.025, @@ -478,7 +478,7 @@ "confidence": 0.5412868278516675 }, { - "observation_id": "6b51617e-c611-413c-b849-7d7fbf2c8aea", + "observation_id": "2f7b97cc-3904-4095-a15d-18b1af3dd5ed", "type": "aruco", "marker_id": 51, "marker_size_m": 0.025, @@ -532,7 +532,7 @@ "confidence": 0.5367694875460974 }, { - "observation_id": "cd3418b9-2ab6-4687-865f-7ec70111db52", + "observation_id": "325c319b-9ee4-4f82-a519-1343766270ab", "type": "aruco", "marker_id": 103, "marker_size_m": 0.025, @@ -586,7 +586,7 @@ "confidence": 0.5683985238307451 }, { - "observation_id": "e1a9f903-9fb4-4495-9aca-9dc90140f462", + "observation_id": "954ed70d-b44e-4753-9755-2f9829ddc455", "type": "aruco", "marker_id": 58, "marker_size_m": 0.025, @@ -640,7 +640,7 @@ "confidence": 0.5703994452422884 }, { - "observation_id": "dbf23df8-d025-4344-adc6-afefebfa866a", + "observation_id": "5a476087-84f0-45e8-8c4e-e90412197f0b", "type": "aruco", "marker_id": 215, "marker_size_m": 0.025, @@ -694,7 +694,7 @@ "confidence": 0.408432388349621 }, { - "observation_id": "3b17118d-d631-49e9-91e5-4394e2ce4586", + "observation_id": "b3ec733c-6965-481f-9174-3e1c09ad8d60", "type": "aruco", "marker_id": 214, "marker_size_m": 0.025, @@ -748,7 +748,7 @@ "confidence": 0.32753550791646946 }, { - "observation_id": "9af71b24-2089-4df1-bfad-0d556b02cd27", + "observation_id": "2d3bcba2-4b4d-4b0b-b67d-8263e6ceffda", "type": "aruco", "marker_id": 64, "marker_size_m": 0.025, @@ -802,7 +802,7 @@ "confidence": 0.4466430195499723 }, { - "observation_id": "795aa7d5-5dca-4baf-9200-069c52e314ca", + "observation_id": "281f43dc-bf2f-4c59-aac0-db3d30869c1b", "type": "aruco", "marker_id": 211, "marker_size_m": 0.025, @@ -856,7 +856,7 @@ "confidence": 0.29690586628373444 }, { - "observation_id": "960cb8db-1da7-4fee-91ee-3e49f768a39a", + "observation_id": "f103c2f7-62db-4b37-827c-4196dc382473", "type": "aruco", "marker_id": 72, "marker_size_m": 0.025, @@ -910,7 +910,7 @@ "confidence": 0.03479010216782576 }, { - "observation_id": "6dfc58e6-a930-48a0-9738-e3bdc8a8e44b", + "observation_id": "e24431ac-4ca2-465f-90bb-7ace791ee924", "type": "aruco", "marker_id": 84, "marker_size_m": 0.025, @@ -964,7 +964,7 @@ "confidence": 0.09228958358804855 }, { - "observation_id": "7e29173d-d504-457e-a775-9cef4f094361", + "observation_id": "00f84bce-5b4a-4d7e-8ac6-dc5e44261677", "type": "aruco", "marker_id": 86, "marker_size_m": 0.025, @@ -1018,7 +1018,7 @@ "confidence": 0.12403848180952393 }, { - "observation_id": "31f1d5f6-96b5-4610-aac5-9656d693736f", + "observation_id": "b5f4ad5f-0737-405a-b5aa-075fc57e2e13", "type": "aruco", "marker_id": 73, "marker_size_m": 0.025, diff --git a/data/evaluations/Scene4/render_d_camera_pose.json b/data/evaluations/Scene4/render_d_camera_pose.json index 087d7e4..1d12cb7 100644 --- a/data/evaluations/Scene4/render_d_camera_pose.json +++ b/data/evaluations/Scene4/render_d_camera_pose.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T08:47:10Z", + "created_utc": "2026-06-01T12:39:06Z", "source": { "detection_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\evaluations\\Scene4\\render_d_aruco_detection.json", "robot_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\robot\\robot.json" diff --git a/data/evaluations/Scene4/render_e_aruco_detection.json b/data/evaluations/Scene4/render_e_aruco_detection.json index 8d578fd..fb1799d 100644 --- a/data/evaluations/Scene4/render_e_aruco_detection.json +++ b/data/evaluations/Scene4/render_e_aruco_detection.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T08:47:08Z", + "created_utc": "2026-06-01T12:39:02Z", "vision_config": { "MarkerType": "DICT_4X4_250", "MarkerSize": 0.025 @@ -46,7 +46,7 @@ }, "detections": [ { - "observation_id": "e1959889-bda0-4a15-889c-dcb237998151", + "observation_id": "b01e9f3c-6fe9-4872-922e-411e5dbfc2ea", "type": "aruco", "marker_id": 44, "marker_size_m": 0.025, @@ -100,7 +100,7 @@ "confidence": 0.9774738327603469 }, { - "observation_id": "3e54f3ff-6015-4c97-ace8-76df1f832966", + "observation_id": "62c8d5ce-5709-4fa6-96c1-1e5f97323074", "type": "aruco", "marker_id": 92, "marker_size_m": 0.025, @@ -154,7 +154,7 @@ "confidence": 0.15369374989294518 }, { - "observation_id": "dc12e7da-78a8-4898-ad88-3e9ec94c08cd", + "observation_id": "031bff8c-d03f-42bb-bbb2-25eeddc2f1e6", "type": "aruco", "marker_id": 217, "marker_size_m": 0.025, @@ -208,7 +208,7 @@ "confidence": 0.3233651345714012 }, { - "observation_id": "2aa4875f-083f-4a99-8c01-d6b220b69ac3", + "observation_id": "b884a4eb-e0bc-4c72-ac91-f1ac392b6b68", "type": "aruco", "marker_id": 85, "marker_size_m": 0.025, @@ -262,7 +262,7 @@ "confidence": 0.3248781943257027 }, { - "observation_id": "7a8cb838-ba44-48de-a105-4bf5918a6873", + "observation_id": "6b35c8a3-9e92-4558-96c3-6d43cfb412b2", "type": "aruco", "marker_id": 115, "marker_size_m": 0.025, @@ -316,7 +316,7 @@ "confidence": 0.5419921532895585 }, { - "observation_id": "e6a2a887-92c1-42f6-824f-b37a2e9e7bb7", + "observation_id": "eaeaa1dc-4aeb-4d1f-a334-8ab8f9fa1968", "type": "aruco", "marker_id": 105, "marker_size_m": 0.025, @@ -370,7 +370,7 @@ "confidence": 0.42546318190651866 }, { - "observation_id": "70957fc9-2b92-4587-b8cb-96d9159b4171", + "observation_id": "005f787d-a9bb-4150-812b-1286c4783e78", "type": "aruco", "marker_id": 244, "marker_size_m": 0.025, @@ -424,7 +424,7 @@ "confidence": 0.4483121499334993 }, { - "observation_id": "ae62e780-0a88-4645-9cc6-c9207f8c5a99", + "observation_id": "285fc325-51a8-4935-b80b-950d2cca3fdf", "type": "aruco", "marker_id": 206, "marker_size_m": 0.025, @@ -478,7 +478,7 @@ "confidence": 0.15136171428561934 }, { - "observation_id": "810be360-dc4c-4095-8831-c140c5b60957", + "observation_id": "c704aef8-def1-4f67-ae3a-bd8e263acc3e", "type": "aruco", "marker_id": 114, "marker_size_m": 0.025, @@ -532,7 +532,7 @@ "confidence": 0.430473829601915 }, { - "observation_id": "36adc3e6-d127-456d-aff9-785a052bac4f", + "observation_id": "328aa30c-3189-45d0-83db-dba19cd586e3", "type": "aruco", "marker_id": 120, "marker_size_m": 0.025, @@ -586,7 +586,7 @@ "confidence": 0.40218814597808433 }, { - "observation_id": "d4b087ec-b495-4b5f-998b-74f31f8d5dcb", + "observation_id": "8321281a-9485-4454-995d-ab8c0dd7f04c", "type": "aruco", "marker_id": 97, "marker_size_m": 0.025, @@ -640,7 +640,7 @@ "confidence": 0.22596816505744277 }, { - "observation_id": "a7d2f473-331a-43c3-a140-4aa5a0c2b219", + "observation_id": "4d748d62-69cf-4bed-a3d1-019372c684ec", "type": "aruco", "marker_id": 47, "marker_size_m": 0.025, @@ -694,7 +694,7 @@ "confidence": 0.24626971873720385 }, { - "observation_id": "be5118c7-495e-41d0-881a-02b544045b0f", + "observation_id": "4a3ea52f-7bca-46f9-9a64-5df042c17e37", "type": "aruco", "marker_id": 96, "marker_size_m": 0.025, @@ -748,7 +748,7 @@ "confidence": 0.28140192555287236 }, { - "observation_id": "ec8c2388-adac-4e80-a55b-0cc149da6a78", + "observation_id": "393e6269-6563-4d96-8f3e-7dfc0ff6bc65", "type": "aruco", "marker_id": 208, "marker_size_m": 0.025, @@ -802,7 +802,7 @@ "confidence": 0.20905304008181452 }, { - "observation_id": "f37486dc-e295-43f5-823c-c453e3e90e4a", + "observation_id": "7c21d48f-394d-4c3c-b4cd-46f62b6302f4", "type": "aruco", "marker_id": 62, "marker_size_m": 0.025, @@ -856,7 +856,7 @@ "confidence": 0.2664122029520185 }, { - "observation_id": "fc85af2e-53ff-4320-9de5-f6e2077e6954", + "observation_id": "fb07d6c6-544c-4401-8bcc-427f00077448", "type": "aruco", "marker_id": 66, "marker_size_m": 0.025, @@ -910,7 +910,7 @@ "confidence": 0.16725963004706537 }, { - "observation_id": "2c3d8edb-15fb-424f-a4a7-c05e75337a26", + "observation_id": "66eca3bb-779f-4760-91c2-d219117a278a", "type": "aruco", "marker_id": 55, "marker_size_m": 0.025, @@ -964,7 +964,7 @@ "confidence": 0.22298824455832925 }, { - "observation_id": "7f41ae4a-a449-4226-92b7-445670832ebe", + "observation_id": "d16e224f-71cc-4782-a795-f3a420153807", "type": "aruco", "marker_id": 40, "marker_size_m": 0.025, @@ -1018,7 +1018,7 @@ "confidence": 0.06522200557737874 }, { - "observation_id": "9d0fe286-bd31-4572-80d6-b09a8a074018", + "observation_id": "35df855b-d3a9-4f3a-8d55-286e8a6ab0ea", "type": "aruco", "marker_id": 79, "marker_size_m": 0.025, @@ -1072,7 +1072,7 @@ "confidence": 0.19757108839994864 }, { - "observation_id": "ef206c3f-3edb-408b-9d6c-c4e6c2f24213", + "observation_id": "dec2d1bb-fa98-4171-8357-ccc3feef9636", "type": "aruco", "marker_id": 72, "marker_size_m": 0.025, @@ -1126,7 +1126,7 @@ "confidence": 0.15675000342230294 }, { - "observation_id": "1e64dc44-786e-4705-b77b-5b962cce7411", + "observation_id": "870af66b-fc7b-4a84-aa78-32989d29ac46", "type": "aruco", "marker_id": 53, "marker_size_m": 0.025, @@ -1180,7 +1180,7 @@ "confidence": 0.13595850692924102 }, { - "observation_id": "bf4376b5-55ad-4fa9-baac-43b0a7205448", + "observation_id": "ff2537d0-4d0b-4c6a-a390-1eb9c229f1d5", "type": "aruco", "marker_id": 51, "marker_size_m": 0.025, @@ -1234,7 +1234,7 @@ "confidence": 0.12157403976480062 }, { - "observation_id": "030ffa08-f2ba-499d-b757-331688a40990", + "observation_id": "79c806e2-3282-4aeb-8fa1-20334f36500a", "type": "aruco", "marker_id": 95, "marker_size_m": 0.025, @@ -1288,7 +1288,7 @@ "confidence": 0.14922985097126407 }, { - "observation_id": "86ee27a0-bc7a-4601-a165-61a43687dc70", + "observation_id": "cbc8985f-eaa9-49f3-937c-715752fdc92d", "type": "aruco", "marker_id": 247, "marker_size_m": 0.025, @@ -1342,7 +1342,7 @@ "confidence": 0.1099085657112018 }, { - "observation_id": "2d16ba79-b6df-43bd-8b90-c520fa0773a0", + "observation_id": "74ad1afe-9dc2-4899-99fc-625938bb0589", "type": "aruco", "marker_id": 243, "marker_size_m": 0.025, @@ -1396,7 +1396,7 @@ "confidence": 0.13220570535010506 }, { - "observation_id": "58e3279c-d241-4d55-ad32-dab6234d8d84", + "observation_id": "5bce3260-0e1c-449a-ad22-6239210e8a03", "type": "aruco", "marker_id": 103, "marker_size_m": 0.025, @@ -1450,7 +1450,7 @@ "confidence": 0.11373255626245794 }, { - "observation_id": "3b94ef95-ff5d-41f8-b56e-83f7830db2ca", + "observation_id": "4e21f98e-21e8-40c4-8f25-88096cfe6d12", "type": "aruco", "marker_id": 84, "marker_size_m": 0.025, @@ -1504,7 +1504,7 @@ "confidence": 0.13255097071329755 }, { - "observation_id": "f194a7cb-b7f6-464d-aad2-c3cde87ab14f", + "observation_id": "442b9349-5ce5-43c9-afd2-ede9817319ae", "type": "aruco", "marker_id": 64, "marker_size_m": 0.025, @@ -1558,7 +1558,7 @@ "confidence": 0.09620577544552089 }, { - "observation_id": "68a654aa-ba54-4ee9-a5f7-1b496106bc28", + "observation_id": "523bf3cb-bcc3-4893-b8fa-a0c56cf253d5", "type": "aruco", "marker_id": 86, "marker_size_m": 0.025, @@ -1612,7 +1612,7 @@ "confidence": 0.11774828338549573 }, { - "observation_id": "c16cfc52-0ccf-41f6-bbac-cd224e4151ca", + "observation_id": "4a85a399-7713-48ef-b57d-2abfdcc20d6a", "type": "aruco", "marker_id": 210, "marker_size_m": 0.025, diff --git a/data/evaluations/Scene4/render_e_camera_pose.json b/data/evaluations/Scene4/render_e_camera_pose.json index c753ae6..5e2bf62 100644 --- a/data/evaluations/Scene4/render_e_camera_pose.json +++ b/data/evaluations/Scene4/render_e_camera_pose.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T08:47:10Z", + "created_utc": "2026-06-01T12:39:06Z", "source": { "detection_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\evaluations\\Scene4\\render_e_aruco_detection.json", "robot_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\robot\\robot.json" diff --git a/data/evaluations/Scene4/render_f_aruco_detection.json b/data/evaluations/Scene4/render_f_aruco_detection.json index 04fd22d..b7c19ac 100644 --- a/data/evaluations/Scene4/render_f_aruco_detection.json +++ b/data/evaluations/Scene4/render_f_aruco_detection.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T08:47:08Z", + "created_utc": "2026-06-01T12:39:03Z", "vision_config": { "MarkerType": "DICT_4X4_250", "MarkerSize": 0.025 @@ -46,7 +46,7 @@ }, "detections": [ { - "observation_id": "9fb92c22-8274-4e34-89d0-6cc9b25a21cf", + "observation_id": "60874d01-7e6e-4012-988a-2acb09e07544", "type": "aruco", "marker_id": 246, "marker_size_m": 0.025, @@ -100,7 +100,7 @@ "confidence": 0.8595541333255614 }, { - "observation_id": "40e5dd35-505f-413e-a0c4-76f33dac19a4", + "observation_id": "8f52fc86-80b5-480e-8c10-c1c359ec3afd", "type": "aruco", "marker_id": 247, "marker_size_m": 0.025, @@ -154,7 +154,7 @@ "confidence": 0.8446693980390577 }, { - "observation_id": "ede8e441-7f04-478c-b47a-5a98e0336dfe", + "observation_id": "520dc828-34f8-438b-baa9-ee1e7c8c644a", "type": "aruco", "marker_id": 120, "marker_size_m": 0.025, @@ -208,7 +208,7 @@ "confidence": 0.8383841261229988 }, { - "observation_id": "5564bf05-32cc-4b27-96f4-b450d7646ccb", + "observation_id": "e53b0a7e-c971-43ea-8ef6-7096bf65fd66", "type": "aruco", "marker_id": 114, "marker_size_m": 0.025, @@ -262,7 +262,7 @@ "confidence": 0.7722445599677091 }, { - "observation_id": "dd04b27d-fefc-4a86-a792-1c74b98ceed5", + "observation_id": "9303ebdb-e184-49a8-b1b0-20f391738f7b", "type": "aruco", "marker_id": 243, "marker_size_m": 0.025, @@ -316,7 +316,7 @@ "confidence": 0.6913219978931935 }, { - "observation_id": "280457bc-1662-4659-af7d-3736ca0fa43d", + "observation_id": "22f46d6c-c463-4ecd-beb1-753b2788497a", "type": "aruco", "marker_id": 40, "marker_size_m": 0.025, @@ -370,7 +370,7 @@ "confidence": 0.46826993269571887 }, { - "observation_id": "11eabbd5-188e-459e-b227-43c2bb616731", + "observation_id": "f57758b3-3fc0-445d-a82b-7741ec41b3f8", "type": "aruco", "marker_id": 218, "marker_size_m": 0.025, @@ -424,7 +424,7 @@ "confidence": 0.45659746024893416 }, { - "observation_id": "8116fb34-059b-4e13-88c1-cc998bbca2c7", + "observation_id": "ebb96164-fd9f-4c0a-a359-c902f15d6f1e", "type": "aruco", "marker_id": 46, "marker_size_m": 0.025, @@ -478,7 +478,7 @@ "confidence": 0.2988751797371847 }, { - "observation_id": "81c7a325-dfde-4532-87e0-d903afbd975c", + "observation_id": "ed06eb95-7cc7-4d7a-bb72-915ce6ca2e37", "type": "aruco", "marker_id": 219, "marker_size_m": 0.025, @@ -532,7 +532,7 @@ "confidence": 0.4719563350095902 }, { - "observation_id": "13f934d5-4384-42db-90d0-07bfdd026205", + "observation_id": "731f40e5-7885-4569-b4a2-b98ee523c500", "type": "aruco", "marker_id": 208, "marker_size_m": 0.025, @@ -586,7 +586,7 @@ "confidence": 0.5954364184044425 }, { - "observation_id": "2738e43b-1bc7-423b-a63b-dd01c1fda2e0", + "observation_id": "453a8d5d-45f6-4412-b1b5-b517bebfa3b0", "type": "aruco", "marker_id": 56, "marker_size_m": 0.025, @@ -640,7 +640,7 @@ "confidence": 0.5697620483284124 }, { - "observation_id": "8c22fb4b-c2b3-450a-9d07-4f887eb80578", + "observation_id": "cc84d225-14b4-4f99-8045-7b89d3d7f1b1", "type": "aruco", "marker_id": 62, "marker_size_m": 0.025, @@ -694,7 +694,7 @@ "confidence": 0.5711737708098855 }, { - "observation_id": "87718790-ff49-452d-90f8-695a69a78c9d", + "observation_id": "e942d364-5d3c-4760-a28d-41aa399254bc", "type": "aruco", "marker_id": 47, "marker_size_m": 0.025, @@ -748,7 +748,7 @@ "confidence": 0.5768583617164568 }, { - "observation_id": "b6929125-2ff5-4c97-9c46-04137d0a0853", + "observation_id": "3eee5192-167b-4525-b40c-a2f6dd6ad3ef", "type": "aruco", "marker_id": 96, "marker_size_m": 0.025, @@ -802,7 +802,7 @@ "confidence": 0.570786168435231 }, { - "observation_id": "1adc35ff-a482-4884-b26d-8697d5fab01b", + "observation_id": "d203b336-0c7d-4011-90a9-818d7866d702", "type": "aruco", "marker_id": 53, "marker_size_m": 0.025, @@ -856,7 +856,7 @@ "confidence": 0.21364841201201337 }, { - "observation_id": "efc60dbd-a3ca-4c35-ab3c-a53b9df9fbd5", + "observation_id": "d78ae257-fb84-484b-bdaa-997c44f07527", "type": "aruco", "marker_id": 97, "marker_size_m": 0.025, @@ -910,7 +910,7 @@ "confidence": 0.5705029634947052 }, { - "observation_id": "8631c7f3-70cb-4c3f-bb78-db524b3c102a", + "observation_id": "16ef8e1b-6b30-4c13-92a4-3c0e3a29ad92", "type": "aruco", "marker_id": 72, "marker_size_m": 0.025, @@ -964,7 +964,7 @@ "confidence": 0.5440516905787338 }, { - "observation_id": "7829d9fc-9b12-4272-8906-2d7a742c1516", + "observation_id": "a58db514-b080-43b6-afc7-5898b068cff4", "type": "aruco", "marker_id": 84, "marker_size_m": 0.025, @@ -1018,7 +1018,7 @@ "confidence": 0.06519221426443914 }, { - "observation_id": "17370d70-c669-47a8-ae50-8c63225e88f7", + "observation_id": "f6c8b510-33d0-4965-9dd0-333e98307c9e", "type": "aruco", "marker_id": 79, "marker_size_m": 0.025, @@ -1072,7 +1072,7 @@ "confidence": 0.5460974493377216 }, { - "observation_id": "4e29c39d-d70d-47f8-9b21-969f38ad9e6f", + "observation_id": "f6752d16-36e5-4fed-9257-8a6a0d51898d", "type": "aruco", "marker_id": 51, "marker_size_m": 0.025, @@ -1126,7 +1126,7 @@ "confidence": 0.4817209906880129 }, { - "observation_id": "abe73a5b-a80f-49e0-9640-f23b5c98d52f", + "observation_id": "f91b5f95-42de-4d09-a504-c4b12cbbc0f2", "type": "aruco", "marker_id": 103, "marker_size_m": 0.025, @@ -1180,7 +1180,7 @@ "confidence": 0.5046333482067283 }, { - "observation_id": "bff5c572-91a0-4451-9b12-55d41d03dfe8", + "observation_id": "48f9368d-3778-40ab-bec8-b520d6f4af84", "type": "aruco", "marker_id": 44, "marker_size_m": 0.025, @@ -1234,7 +1234,7 @@ "confidence": 0.31387842129667237 }, { - "observation_id": "293eeee8-c372-42c5-aed4-9a2d95724362", + "observation_id": "2570865f-4d33-40cd-b11f-2e59c7c17e0c", "type": "aruco", "marker_id": 73, "marker_size_m": 0.025, @@ -1288,7 +1288,7 @@ "confidence": 0.13607001327160623 }, { - "observation_id": "e7f3630f-1503-4b1d-b065-f32d4efe6048", + "observation_id": "293db9bc-f56c-4416-ad28-dd57170ffe4f", "type": "aruco", "marker_id": 210, "marker_size_m": 0.025, @@ -1342,7 +1342,7 @@ "confidence": 0.46988879526830113 }, { - "observation_id": "3b2d82c4-0038-4bc5-b496-cf1d3d2933a1", + "observation_id": "5dcf2be5-6ebe-4a4d-b616-7b9125a4ea38", "type": "aruco", "marker_id": 58, "marker_size_m": 0.025, @@ -1396,7 +1396,7 @@ "confidence": 0.4655541127751829 }, { - "observation_id": "94a8ab5c-920b-483f-b557-9e798350b435", + "observation_id": "03376f13-2be5-45fd-8c3d-e665f26ab164", "type": "aruco", "marker_id": 69, "marker_size_m": 0.025, @@ -1450,7 +1450,7 @@ "confidence": 0.4655541127751829 }, { - "observation_id": "af1459fc-5bee-451a-bb1a-a6850d9369fe", + "observation_id": "7f99cfd3-01ee-492e-99fc-18b28e43dda7", "type": "aruco", "marker_id": 82, "marker_size_m": 0.025, @@ -1504,7 +1504,7 @@ "confidence": 0.49001748422717006 }, { - "observation_id": "94734722-fda2-4f02-9f67-ab68b5b0841e", + "observation_id": "0b350cc2-cfab-4330-9fe6-600222d4eb2d", "type": "aruco", "marker_id": 101, "marker_size_m": 0.025, @@ -1558,7 +1558,7 @@ "confidence": 0.46225891142368675 }, { - "observation_id": "0edd8b80-f56d-4d9d-9fd4-d799eb0c919c", + "observation_id": "827bb163-83c3-4647-a06a-7436299a3c0a", "type": "aruco", "marker_id": 52, "marker_size_m": 0.025, @@ -1612,7 +1612,7 @@ "confidence": 0.46225891142368675 }, { - "observation_id": "032ff99b-d91d-4016-a0cd-75ae11b1c198", + "observation_id": "60bc5613-6517-443e-8374-21e315c3a9a9", "type": "aruco", "marker_id": 64, "marker_size_m": 0.025, @@ -1666,7 +1666,7 @@ "confidence": 0.43211414091114625 }, { - "observation_id": "7895db9d-08fa-47fc-ad50-e23ee7f32328", + "observation_id": "ac9cc54f-a69a-419c-ba58-dcc5a468a51b", "type": "aruco", "marker_id": 83, "marker_size_m": 0.025, @@ -1720,7 +1720,7 @@ "confidence": 0.4377857805109236 }, { - "observation_id": "ceb9c06b-47cf-40d0-b2cf-adee1e079dad", + "observation_id": "9e501bf5-642c-4d94-8bb9-e50d532454b1", "type": "aruco", "marker_id": 75, "marker_size_m": 0.025, diff --git a/data/evaluations/Scene4/render_f_camera_pose.json b/data/evaluations/Scene4/render_f_camera_pose.json index b423530..34ba26d 100644 --- a/data/evaluations/Scene4/render_f_camera_pose.json +++ b/data/evaluations/Scene4/render_f_camera_pose.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T08:47:11Z", + "created_utc": "2026-06-01T12:39:07Z", "source": { "detection_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\evaluations\\Scene4\\render_f_aruco_detection.json", "robot_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\robot\\robot.json" diff --git a/data/evaluations/Scene4/render_g_aruco_detection.json b/data/evaluations/Scene4/render_g_aruco_detection.json index 2a4d3cb..acd40c6 100644 --- a/data/evaluations/Scene4/render_g_aruco_detection.json +++ b/data/evaluations/Scene4/render_g_aruco_detection.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T08:47:09Z", + "created_utc": "2026-06-01T12:39:04Z", "vision_config": { "MarkerType": "DICT_4X4_250", "MarkerSize": 0.025 @@ -46,7 +46,7 @@ }, "detections": [ { - "observation_id": "6f9e7654-a6e3-4795-99f3-d1098a899578", + "observation_id": "0e43ec43-5f58-4467-a134-2c4ba16ca653", "type": "aruco", "marker_id": 229, "marker_size_m": 0.025, @@ -100,7 +100,7 @@ "confidence": 0.5315105976452267 }, { - "observation_id": "a4292486-d21a-4af7-819c-1ed79e415381", + "observation_id": "04fbd6f4-74f2-4810-99e7-75394f053767", "type": "aruco", "marker_id": 247, "marker_size_m": 0.025, @@ -154,7 +154,7 @@ "confidence": 0.5729494608527742 }, { - "observation_id": "03baadaa-520c-4abb-b8a7-4fada5328682", + "observation_id": "4586324d-8be9-4c43-9c0e-e6e80fab8ef3", "type": "aruco", "marker_id": 246, "marker_size_m": 0.025, @@ -208,7 +208,7 @@ "confidence": 0.5765483710806963 }, { - "observation_id": "25476efb-763e-460a-91d9-56bafa8fc456", + "observation_id": "e6100dc3-7135-48c3-ac69-afef90e0a044", "type": "aruco", "marker_id": 218, "marker_size_m": 0.025, @@ -262,7 +262,7 @@ "confidence": 0.4621566714491005 }, { - "observation_id": "b6d0798e-baf1-4f7f-af0e-acddb709b755", + "observation_id": "48895ec9-6841-452c-8067-fd676012f395", "type": "aruco", "marker_id": 198, "marker_size_m": 0.025, @@ -316,7 +316,7 @@ "confidence": 0.43078987568380794 }, { - "observation_id": "5e5f3558-11ec-4a2c-8be6-c59adbdf28d1", + "observation_id": "d774cc26-6a40-47f7-9c8d-12e34c816f4c", "type": "aruco", "marker_id": 84, "marker_size_m": 0.025, @@ -370,7 +370,7 @@ "confidence": 0.3490767193505014 }, { - "observation_id": "4012cbf6-af42-4029-911e-720d9601dc1e", + "observation_id": "c1e0bbff-0ddb-4e44-886b-50ea7041da5a", "type": "aruco", "marker_id": 64, "marker_size_m": 0.025, @@ -424,7 +424,7 @@ "confidence": 0.5331747682067169 }, { - "observation_id": "25901d5b-2a1c-4531-8299-5dc07448851d", + "observation_id": "db072350-65d7-43b0-949f-3f2b232dec46", "type": "aruco", "marker_id": 72, "marker_size_m": 0.025, @@ -478,7 +478,7 @@ "confidence": 0.43254677700170213 }, { - "observation_id": "5cfa5600-5262-4a7d-a69d-03db75b552fc", + "observation_id": "28574883-4c42-4354-8362-46bdc7523a4a", "type": "aruco", "marker_id": 219, "marker_size_m": 0.025, @@ -532,7 +532,7 @@ "confidence": 0.4062135721795724 }, { - "observation_id": "1c33de07-23d0-4572-93c7-e3acf913a7a7", + "observation_id": "fe1646ea-c4ee-4c6c-8d79-415d9f80db0f", "type": "aruco", "marker_id": 53, "marker_size_m": 0.025, @@ -586,7 +586,7 @@ "confidence": 0.27711751756945874 }, { - "observation_id": "4ab41dd3-62fb-480b-8c66-702389b226aa", + "observation_id": "7a5a67ae-3776-4e00-8f68-6ef3b6aa957e", "type": "aruco", "marker_id": 58, "marker_size_m": 0.025, @@ -640,7 +640,7 @@ "confidence": 0.48073279309443956 }, { - "observation_id": "6b6d8a74-4f99-445a-82e5-091d8fc067df", + "observation_id": "18b635b8-4bfc-4a64-bb26-742fc65fe3ef", "type": "aruco", "marker_id": 243, "marker_size_m": 0.025, @@ -694,7 +694,7 @@ "confidence": 0.29073788994886046 }, { - "observation_id": "0e8e4398-31d2-4fe2-82ce-40afd0d3dc24", + "observation_id": "f85c63e3-188b-47bb-81c8-c205c8dd905c", "type": "aruco", "marker_id": 69, "marker_size_m": 0.025, @@ -748,7 +748,7 @@ "confidence": 0.45546210617301425 }, { - "observation_id": "e48f8c4c-995c-4d9d-b87b-dbd77a3da6e2", + "observation_id": "7042aab7-d942-4133-919e-a08d8060a991", "type": "aruco", "marker_id": 103, "marker_size_m": 0.025, @@ -802,7 +802,7 @@ "confidence": 0.47991555158957017 }, { - "observation_id": "192f4fa2-f958-42bc-82a0-59df612ac1fb", + "observation_id": "22e21b40-a948-4e2f-a807-10dd57e50b6a", "type": "aruco", "marker_id": 51, "marker_size_m": 0.025, @@ -856,7 +856,7 @@ "confidence": 0.4668259742313624 }, { - "observation_id": "a16d40c2-4c9c-4ecb-beeb-4ab023808ee6", + "observation_id": "31bda626-6e7c-4725-be49-d805d4604f98", "type": "aruco", "marker_id": 56, "marker_size_m": 0.025, @@ -910,7 +910,7 @@ "confidence": 0.39662908657084783 }, { - "observation_id": "b9e74a92-cd82-4835-b29d-151c3fb8c6c5", + "observation_id": "735feed2-2c0c-48f8-a558-5bf75f048e14", "type": "aruco", "marker_id": 120, "marker_size_m": 0.025, @@ -964,7 +964,7 @@ "confidence": 0.3851482516876627 }, { - "observation_id": "5afec636-d2bf-435c-89d9-f8d036479136", + "observation_id": "0ac84d8c-fd18-45cc-832c-2e9a4ef75c20", "type": "aruco", "marker_id": 46, "marker_size_m": 0.025, @@ -1018,7 +1018,7 @@ "confidence": 0.1698001278724927 }, { - "observation_id": "fb3cfe63-1875-4fab-bc54-0a12a23346c3", + "observation_id": "6df22bf0-2cbd-48f3-bb2b-34f540a87c38", "type": "aruco", "marker_id": 68, "marker_size_m": 0.025, @@ -1072,7 +1072,7 @@ "confidence": 0.07718187630567852 }, { - "observation_id": "059b200b-5d64-4180-b337-1afe0cb7bdfe", + "observation_id": "4689b1ec-9f1b-4e24-b9a1-8f007d49c92c", "type": "aruco", "marker_id": 114, "marker_size_m": 0.025, @@ -1126,7 +1126,7 @@ "confidence": 0.3840475911850059 }, { - "observation_id": "721f86a3-ae50-44d8-b572-b26751895c29", + "observation_id": "9547b3d0-a4ea-43f2-95e2-ec5fe2158b35", "type": "aruco", "marker_id": 40, "marker_size_m": 0.025, @@ -1180,7 +1180,7 @@ "confidence": 0.2827516911478211 }, { - "observation_id": "3b2824ee-8dbc-4b88-9092-dbf8e189cbf7", + "observation_id": "f079fd34-3e10-49da-8792-5e893b9e1779", "type": "aruco", "marker_id": 95, "marker_size_m": 0.025, @@ -1234,7 +1234,7 @@ "confidence": 0.4181682027393045 }, { - "observation_id": "c65ae958-9591-4789-b061-9cc12f562c36", + "observation_id": "551dfa01-2b6c-4ef8-89a7-c066042fe23d", "type": "aruco", "marker_id": 55, "marker_size_m": 0.025, @@ -1288,7 +1288,7 @@ "confidence": 0.3865263920875397 }, { - "observation_id": "5d3b4fa9-1a98-4d68-8655-938ee93daf96", + "observation_id": "a338c014-3a34-4c54-9e59-872cd352e2e5", "type": "aruco", "marker_id": 66, "marker_size_m": 0.025, @@ -1342,7 +1342,7 @@ "confidence": 0.3829765144945479 }, { - "observation_id": "437d776a-cbe6-48a5-b2e1-a300bb6bf283", + "observation_id": "a7ddef97-0211-4b3f-baf5-af37f7eeedd8", "type": "aruco", "marker_id": 217, "marker_size_m": 0.025, @@ -1396,7 +1396,7 @@ "confidence": 0.3382587531306593 }, { - "observation_id": "21d95087-a5e1-4a3a-b970-04f13e2d9653", + "observation_id": "c9081401-82b0-442f-a616-dc305709b937", "type": "aruco", "marker_id": 205, "marker_size_m": 0.025, @@ -1450,7 +1450,7 @@ "confidence": 0.29591817114314195 }, { - "observation_id": "8a202d87-e0c3-4ade-9059-db618dfaa554", + "observation_id": "d0300eee-76ca-4421-a5bb-569d603cde9a", "type": "aruco", "marker_id": 92, "marker_size_m": 0.025, @@ -1504,7 +1504,7 @@ "confidence": 0.3158166687011719 }, { - "observation_id": "4817da56-afa5-4099-8c59-d81bbe1b4562", + "observation_id": "e5093d27-4a20-48c8-971f-cf35a42bcf1f", "type": "aruco", "marker_id": 105, "marker_size_m": 0.025, @@ -1558,7 +1558,7 @@ "confidence": 0.31800273344664126 }, { - "observation_id": "dc9990d7-442a-4269-b50a-be4a4c5def56", + "observation_id": "348bd199-0ba0-49e3-ac08-1152ba39bfb3", "type": "aruco", "marker_id": 85, "marker_size_m": 0.025, @@ -1612,7 +1612,7 @@ "confidence": 0.2969848480224609 }, { - "observation_id": "6121d9b2-36e0-4dec-b0a6-91e1e82e8754", + "observation_id": "56831078-4d76-414d-bdff-835fa2d2cea3", "type": "aruco", "marker_id": 102, "marker_size_m": 0.025, @@ -1666,7 +1666,7 @@ "confidence": 0.3170967427530611 }, { - "observation_id": "53c0c869-8130-46dc-b45b-8edb2178e6f1", + "observation_id": "bcb121fd-dc27-477d-955f-402f49341383", "type": "aruco", "marker_id": 59, "marker_size_m": 0.025, @@ -1720,7 +1720,7 @@ "confidence": 0.3170967427530611 }, { - "observation_id": "6d1009ad-303f-4309-bc3c-d9ff9fcd5537", + "observation_id": "3176af44-c8dc-43d1-a97c-116b57fa3540", "type": "aruco", "marker_id": 48, "marker_size_m": 0.025, @@ -1774,7 +1774,7 @@ "confidence": 0.17828567290874034 }, { - "observation_id": "240bf892-88b2-4a21-9b78-f315fa68b8b8", + "observation_id": "87c35bc2-55f2-4e24-a24f-e1b4cf13fc94", "type": "aruco", "marker_id": 57, "marker_size_m": 0.025, @@ -1828,7 +1828,7 @@ "confidence": 0.3167426670523156 }, { - "observation_id": "8f6d08f0-56b3-42af-8f75-52e28846f30c", + "observation_id": "9655d0c7-86c1-46e5-92ed-87264bdf541b", "type": "aruco", "marker_id": 63, "marker_size_m": 0.025, @@ -1882,7 +1882,7 @@ "confidence": 0.15449597168691093 }, { - "observation_id": "539569c4-e4b9-4403-ae1d-487d69ef5d61", + "observation_id": "0d057b5e-7dd5-4b2a-bca5-153bd94bab66", "type": "aruco", "marker_id": 71, "marker_size_m": 0.025, diff --git a/data/evaluations/Scene4/render_g_camera_pose.json b/data/evaluations/Scene4/render_g_camera_pose.json index 7f04366..32f02de 100644 --- a/data/evaluations/Scene4/render_g_camera_pose.json +++ b/data/evaluations/Scene4/render_g_camera_pose.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T08:47:11Z", + "created_utc": "2026-06-01T12:39:07Z", "source": { "detection_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\evaluations\\Scene4\\render_g_aruco_detection.json", "robot_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\robot\\robot.json" diff --git a/data/evaluations/Scene4/robot_state.json b/data/evaluations/Scene4/robot_state.json index c78c918..785c915 100644 --- a/data/evaluations/Scene4/robot_state.json +++ b/data/evaluations/Scene4/robot_state.json @@ -1,58 +1,58 @@ { "schema_version": "1.0", "method": "deterministic_geometric_sequential_prefix", - "created_utc": "2026-05-31T08:47:48Z", + "created_utc": "2026-06-01T12:39:08Z", "root_pose": { "translation_m": [ - 0.0014892389835960973, - 0.0036902958660568475, - -0.004599013006759942 + 0.0019224037975286157, + 0.012171944273737134, + -0.018053948299541114 ], "rotation_matrix": [ [ - 0.9999658268304668, - 0.006368640863178671, - -0.005271203355618567 + 0.9996311795809228, + 0.016393495873428504, + -0.021650822217672182 ], [ - -0.006305214173496513, - 0.9999085603487908, - 0.01196307717253042 + -0.015254209080218337, + 0.998542164908404, + 0.05177696404170404 ], [ - 0.005346909900752585, - -0.01192943229015687, - 0.9999145459486768 + 0.022468064335637708, + -0.0514276014712607, + 0.9984239519822843 ] ], "euler_xyz_deg": [ - -0.6835321064670821, - -0.3063568305236461, - -0.3612697191726321 + -2.94862992286624, + -1.2874335948229583, + -0.8742564124135219 ] }, "movements": { "x": { - "value_m": 0.05676870395702915, - "value_mm": 56.768703957029146, + "value_m": 0.07253974336302962, + "value_mm": 72.53974336302963, "joint_type": "linear", "link": "Base" }, "y": { - "value_rad": 2.2025331885734767, - "value_deg": 126.19585594275209, + "value_rad": -0.16779287946966148, + "value_deg": -9.613823825958923, "joint_type": "revolute", "link": "Arm1" }, "z": { - "value_rad": -1.0146056468008098, - "value_deg": -58.132621431827474, + "value_rad": 1.925767292056002, + "value_deg": 110.3383381591463, "joint_type": "revolute", "link": "Ellbow" }, "a": { - "value_rad": -0.9415837130435447, - "value_deg": -53.94877281565231, + "value_rad": -1.1466874518758399, + "value_deg": -65.70035141309631, "joint_type": "revolute", "link": "Arm2" }, @@ -78,217 +78,217 @@ "link_poses": { "Board": { "translation_m": [ - 0.0014892389835960973, - 0.0036902958660568475, - -0.004599013006759942 + 0.0019224037975286157, + 0.012171944273737134, + -0.018053948299541114 ], "rotation_matrix": [ [ - 0.9999658268304668, - 0.006368640863178671, - -0.005271203355618567 + 0.9996311795809228, + 0.016393495873428504, + -0.021650822217672182 ], [ - -0.006305214173496513, - 0.9999085603487908, - 0.01196307717253042 + -0.015254209080218337, + 0.998542164908404, + 0.05177696404170404 ], [ - 0.005346909900752585, - -0.01192943229015687, - 0.9999145459486768 + 0.022468064335637708, + -0.0514276014712607, + 0.9984239519822843 ] ] }, "Base": { "translation_m": [ - 0.058171663720334076, - 0.0035237662640168043, - 0.011703156873659316 + 0.07408897986645607, + 0.01189383928652047, + -0.000449337447054998 ], "rotation_matrix": [ [ - 0.9999658268304668, - 0.006368640863178671, - -0.005271203355618567 + 0.9996311795809228, + 0.016393495873428504, + -0.021650822217672182 ], [ - -0.006305214173496513, - 0.9999085603487908, - 0.01196307717253042 + -0.015254209080218337, + 0.998542164908404, + 0.05177696404170404 ], [ - 0.005346909900752585, - -0.01192943229015687, - 0.9999145459486768 + 0.022468064335637708, + -0.0514276014712607, + 0.9984239519822843 ] ] }, "Arm1": { "translation_m": [ - 0.16861851373390588, - 0.11135865569536546, - 0.055999092843095614 + 0.18484462017489262, + 0.12038839347968078, + 0.04139704651017179 ], "rotation_matrix": [ [ - 0.9999658268272859, - 0.0004928933932052256, - 0.008252407367749076 + 0.9996311795808948, + 0.012547430927217452, + -0.024084575702719584 ], [ - -0.006305214173476456, - -0.6001475407505242, - 0.7998644720226188 + -0.015254209080217908, + 0.993165507444127, + -0.11571336970519874 ], [ - 0.005346909900735576, - -0.7998891713143135, - -0.6001239240084604 + 0.022468064335637077, + 0.11603808340506865, + 0.9929906088602409 ] ] }, "Ellbow": { "translation_m": [ - 0.16849529038560457, - 0.26139554088299655, - 0.255971385671674 + 0.18170776244308826, + -0.12790298338135098, + 0.012387525658904625 ], "rotation_matrix": [ [ - 0.9999658268263417, - 0.00726876742736344, - 0.003938298026704718 + 0.9996311795782006, + 0.018222036397426856, + 0.02013609195407286 ], [ - -0.0063052141734705035, - 0.3624520071243725, - 0.931981108608429 + -0.015254209080176795, + -0.23668832050037894, + 0.9714658759021 ], [ - 0.005346909900730528, - -0.9319740916725403, - 0.3624854521258923 + 0.02246806433557652, + -0.9714147396073556, + -0.2363230622617475 ] ] }, "Arm2": { "translation_m": [ - 0.2584922147999753, - 0.2608280716073842, - 0.25645260756273974 + 0.2716745686051263, + -0.12927586219856688, + 0.014409651449106511 ], "rotation_matrix": [ [ - 0.5853041553632301, - 0.007268767427357459, - 0.8107812348131059 + 0.3930048448281811, + 0.01822203639740541, + 0.9193558338989338 ], [ - -0.7572091422303219, - 0.3624520071240742, - 0.543380950577451 + -0.8916768751436214, + -0.23668832050010036, + 0.3858639517620616 ], [ - -0.2899195761437936, - -0.9319740916717734, - 0.21764864303925793 + 0.22463201524180532, + -0.9714147396062123, + -0.0767714881975667 ] ] }, "Hand": { "translation_m": [ - 0.25667502294313593, - 0.17021506982636564, - 0.4894461304806831 + 0.2671190595057749, + -0.07010378207354179, + 0.25726333635065957 ], "rotation_matrix": [ [ - 0.5853041553632301, - 0.007268767427357459, - 0.8107812348131059 + 0.3930048448281811, + 0.01822203639740541, + 0.9193558338989338 ], [ - -0.7572091422303219, - 0.3624520071240742, - 0.543380950577451 + -0.8916768751436214, + -0.23668832050010036, + 0.3858639517620616 ], [ - -0.2899195761437936, - -0.9319740916717734, - 0.21764864303925793 + 0.22463201524180532, + -0.9714147396062123, + -0.0767714881975667 ] ] }, "Palm": { "translation_m": [ - 0.25667502294313593, - 0.17021506982636564, - 0.4894461304806831 + 0.2671190595057749, + -0.07010378207354179, + 0.25726333635065957 ], "rotation_matrix": [ [ - 0.5853041553632301, - 0.007268767427357459, - 0.8107812348131059 + 0.3930048448281811, + 0.01822203639740541, + 0.9193558338989338 ], [ - -0.7572091422303219, - 0.3624520071240742, - 0.543380950577451 + -0.8916768751436214, + -0.23668832050010036, + 0.3858639517620616 ], [ - -0.2899195761437936, - -0.9319740916717734, - 0.21764864303925793 + 0.22463201524180532, + -0.9714147396062123, + -0.0767714881975667 ] ] }, "FingerA": { "translation_m": [ - 0.2587618327046313, - 0.15450041300810174, - 0.52090554538462 + 0.26805330761117846, + -0.06538639835661277, + 0.2921613802978442 ], "rotation_matrix": [ [ - 0.5853041553632301, - 0.007268767427357459, - 0.8107812348131059 + 0.3930048448281811, + 0.01822203639740541, + 0.9193558338989338 ], [ - -0.7572091422303219, - 0.3624520071240742, - 0.543380950577451 + -0.8916768751436214, + -0.23668832050010036, + 0.3858639517620616 ], [ - -0.2899195761437936, - -0.9319740916717734, - 0.21764864303925793 + 0.22463201524180532, + -0.9714147396062123, + -0.0767714881975667 ] ] }, "FingerB": { "translation_m": [ - 0.2540793994617255, - 0.16055808614594433, - 0.5232249019937704 + 0.264909268852553, + -0.05825298335546379, + 0.2903643241759098 ], "rotation_matrix": [ [ - 0.5853041553632301, - 0.007268767427357459, - 0.8107812348131059 + 0.3930048448281811, + 0.01822203639740541, + 0.9193558338989338 ], [ - -0.7572091422303219, - 0.3624520071240742, - 0.543380950577451 + -0.8916768751436214, + -0.23668832050010036, + 0.3858639517620616 ], [ - -0.2899195761437936, - -0.9319740916717734, - 0.21764864303925793 + 0.22463201524180532, + -0.9714147396062123, + -0.0767714881975667 ] ] } @@ -311,19 +311,19 @@ "joint_variable": "x", "joint_type": "linear", "old": 0.0, - "new": 0.05576233817620622, + "new": 0.07938666692103401, "info": { "reason": "weighted_projection", "used_markers": 1, "axis_world": [ - 0.9999658268294671, - -0.00630521417349021, - 0.00534690990074724 + 0.9996311795799229, + -0.015254209080203078, + 0.022468064335615233 ], "per_marker": [ { "marker_id": 243, - "q_i": 0.05576233817620622, + "q_i": 0.07938666692103401, "weight": 1.0 } ] @@ -334,21 +334,21 @@ "joint_variable": "y", "joint_type": "revolute", "old": 0.0, - "new": 2.247421613248596, + "new": -0.7368976031326713, "info": { "reason": "2d_alignment+normal_tiebreak", "used_markers": 1, "axis_world": [ - -0.9999658268294671, - 0.00630521417349021, - -0.00534690990074724 + -0.9996311795799229, + 0.015254209080203078, + -0.022468064335615233 ], "axis_id": 0, - "theta_rad": -0.8941710403411969, - "theta_alt_rad": 2.247421613248596, - "score_theta": 0.25838862135863827, - "score_theta_alt": 0.16886719436329134, - "best_score": 0.16886719436329134, + "theta_rad": -0.7368976031326713, + "theta_alt_rad": 2.4046950504571214, + "score_theta": 0.20723346686265914, + "score_theta_alt": 0.24964332925065008, + "best_score": 0.20723346686265914, "per_marker": [ { "marker_id": 243, @@ -366,20 +366,20 @@ "link": "Base", "joint_variable": "x", "joint_type": "linear", - "old": 0.05576233817620622, - "new": 0.055762338176205996, + "old": 0.07938666692103401, + "new": 0.07938666692103402, "info": { "reason": "weighted_projection", "used_markers": 1, "axis_world": [ - 0.9999658268294671, - -0.00630521417349021, - 0.00534690990074724 + 0.9996311795799229, + -0.015254209080203078, + 0.022468064335615233 ], "per_marker": [ { "marker_id": 243, - "q_i": 0.055762338176205996, + "q_i": 0.07938666692103402, "weight": 1.0 } ] @@ -389,22 +389,22 @@ "link": "Arm1", "joint_variable": "y", "joint_type": "revolute", - "old": 2.247421613248596, - "new": 2.247421613248596, + "old": -0.7368976031326713, + "new": -0.7368976031326713, "info": { "reason": "2d_alignment+normal_tiebreak", "used_markers": 1, "axis_world": [ - -0.9999658268294671, - 0.00630521417349021, - -0.00534690990074724 + -0.9996311795799229, + 0.015254209080203078, + -0.022468064335615233 ], "axis_id": 0, - "theta_rad": -0.8941710403411969, - "theta_alt_rad": 2.247421613248596, - "score_theta": 0.25838862135863827, - "score_theta_alt": 0.16886719436329134, - "best_score": 0.16886719436329134, + "theta_rad": -0.7368976031326713, + "theta_alt_rad": 2.4046950504571214, + "score_theta": 0.20723346686265914, + "score_theta_alt": 0.24964332925065008, + "best_score": 0.20723346686265914, "per_marker": [ { "marker_id": 243, @@ -463,810 +463,810 @@ }, "marker_stats": { "num_markers_used": 40, - "mean_error_m": 0.018260071055228123, - "rms_error_m": 0.0658377918925389, - "median_error_m": 0.005953105148694126, - "worst_error_m": 0.41093453780777706 + "mean_error_m": 0.032743534983656494, + "rms_error_m": 0.08102124202436241, + "median_error_m": 0.015747403822132994, + "worst_error_m": 0.4552290268234871 }, "marker_reports": [ { "marker_id": 46, "link": "Board", "error_m": [ - -0.012685824952448077, - -0.009649285475931024, - 0.013323395661109926 + 0.007895331762659885, + -0.0006314475403442765, + -0.018285418768428742 ], - "error_norm_m": 0.020773823356875123, + "error_norm_m": 0.019927155571618317, "predicted_m": [ - 0.5395058025150521, - 0.1854026757912692, - -0.031239134022212588 + 0.5420655315117168, + 0.18774100566056906, + -0.04278882179590794 ], "observed_m": [ - 0.5521916274675002, - 0.19505196126720023, - -0.04456252968332251 + 0.5341701997490569, + 0.18837245320091334, + -0.0245034030274792 ] }, { "marker_id": 47, "link": "Board", "error_m": [ - 0.0014997958733345418, - 0.003055467265318912, - 0.0021079601686610737 + -0.00216719129998999, + 0.008630400445827136, + 0.006567463574039992 ], - "error_norm_m": 0.004003593878475735, + "error_norm_m": 0.011059480448123576, "predicted_m": [ - 0.3440265090521209, - -0.28532053889803843, - -0.026637853787601206 + 0.34191911988364, + -0.28061479516913906, + -0.02284067547682586 ], "observed_m": [ - 0.34252671317878636, - -0.28837600616335735, - -0.02874581395626228 + 0.34408631118363, + -0.2892451956149662, + -0.029408139050865853 ] }, { "marker_id": 51, "link": "Board", "error_m": [ - -0.00026502809332140664, - 0.001168205409359413, - 0.001015800525628361 + 0.0019825139298365047, + 0.010321285886508186, + -0.0032476596525796604 ], - "error_norm_m": 0.0015706032206044367, + "error_norm_m": 0.011000299861913887, "predicted_m": [ - 0.16833149285762106, - -0.1697585761438859, - -0.02894665192132234 + 0.16743059040785033, + -0.16363035886570018, + -0.03269111933196293 ], "observed_m": [ - 0.16859652095094246, - -0.1709267815532453, - -0.029962452446950703 + 0.16544807647801382, + -0.17395164475220837, + -0.029443459679383267 ] }, { "marker_id": 53, "link": "Board", "error_m": [ - 0.0007678858513761044, - 0.0004644961936310088, - -0.0033898841612772547 + 0.010190425417623772, + -0.004685057942000026, + -0.013386768405419927 ], - "error_norm_m": 0.003506667937161957, + "error_norm_m": 0.01746425224429604, "predicted_m": [ - 0.48921820646832004, - 0.21251838631581146, - -0.03182864788118077 + 0.4920634878794713, + 0.2152716630703021, + -0.04530082004171401 ], "observed_m": [ - 0.48845032061694393, - 0.21205389012218046, - -0.028438763719903514 + 0.4818730624618475, + 0.21995672101230213, + -0.031914051636294086 ] }, { "marker_id": 55, "link": "Board", "error_m": [ - 0.0006390076116649657, - 0.0010172761897459526, - 0.0010893034975956103 + -0.000648024175633255, + 0.005926273650224356, + 0.0030121560446546916 ], - "error_norm_m": 0.0016216546129998943, + "error_norm_m": 0.0066793516711503124, "predicted_m": [ - 0.2836711695056911, - -0.2609812012824432, - -0.027247224503367903 + 0.2818242253683257, + -0.2557666927064896, + -0.025432423381026713 ], "observed_m": [ - 0.28303216189402614, - -0.26199847747218913, - -0.028336528000963514 + 0.28247224954395894, + -0.26169296635671396, + -0.028444579425681404 ] }, { "marker_id": 56, "link": "Board", "error_m": [ - -0.012227744641920446, - -0.01125009231546012, - 0.017219838969664836 + -0.02817326017385502, + -0.024584323572284905, + 0.04561768174620743 ], - "error_norm_m": 0.023929169861814613, + "error_norm_m": 0.05898384899469341, "predicted_m": [ - 0.501370300013414, - 0.16887399652923807, - -0.03124242042623228 + 0.5037746388264569, + 0.17157557112637584, + -0.04278084140591921 ], "observed_m": [ - 0.5135980446553344, - 0.1801240888446982, - -0.048462259395897114 + 0.5319478990003119, + 0.19615989469866074, + -0.08839852315212664 ] }, { "marker_id": 58, "link": "Board", "error_m": [ - 0.00010200428773012721, - 0.0007143951371397228, - 0.0008366871229240555 + -0.0036283215191368137, + 0.011792552986691573, + -0.007131376636709666 ], - "error_norm_m": 0.0011049029949960075, + "error_norm_m": 0.014250808949837483, "predicted_m": [ - 0.05033236684247467, - -0.21504218041637846, - -0.029026924917424007 + 0.049009411644326, + -0.20779768176560154, + -0.03296862268918871 ], "observed_m": [ - 0.05023036255474454, - -0.21575657555351818, - -0.029863612040348063 + 0.05263773316346281, + -0.2195902347522931, + -0.025837246052479043 ] }, { "marker_id": 61, "link": "Board", "error_m": [ - -0.008035233032862025, - -0.022841936137153296, - 0.022813009358264184 + -0.0039243565853280555, + -0.019787233763559453, + 0.0009600037431695824 ], - "error_norm_m": 0.033267888606980094, + "error_norm_m": 0.020195464882231715, "predicted_m": [ - -0.01864731034125329, - 0.33930435858295105, - -0.03602281907713707 + -0.01439283208295973, + 0.34644084776416645, + -0.06308558759315597 ], "observed_m": [ - -0.010612077308391265, - 0.36214629472010434, - -0.058835828435401256 + -0.010468475497631675, + 0.3662280815277259, + -0.06404559133632555 ] }, { "marker_id": 62, "link": "Board", "error_m": [ - 0.0008765545330541302, - 0.005792750641072625, - 0.0010183034070573825 + -0.001397680135084567, + 0.009276782057794891, + 0.0008861811743844303 ], - "error_norm_m": 0.005946532575197896, + "error_norm_m": 0.009423243188078538, "predicted_m": [ - 0.4052041639383518, - -0.17427200523384054, - -0.027643942080317778 + 0.40419370849303327, + -0.17025967833482727, + -0.02721312353440715 ], "observed_m": [ - 0.40432760940529766, - -0.18006475587491316, - -0.02866224548737516 + 0.40559138862811783, + -0.17953646039262217, + -0.02809930470879158 ] }, { "marker_id": 63, "link": "Board", "error_m": [ - -0.015866484772870892, - 0.007385919787924855, - 0.018405415867788058 + -0.016894642595327913, + 0.007560854561507152, + 0.025439453433518014 ], - "error_norm_m": 0.025397962190451977, + "error_norm_m": 0.03146047140651683, "predicted_m": [ - 0.7775026220733696, - -0.23766637616559638, - -0.024922856918993215 + 0.7757554261997703, + -0.23690592122668272, + -0.015699620886694507 ], "observed_m": [ - 0.7933691068462405, - -0.24505229595352124, - -0.04332827278678127 + 0.7926500687950983, + -0.24446677578818987, + -0.04113907432021252 ] }, { "marker_id": 64, "link": "Board", "error_m": [ - 0.0004754752120111304, - 0.001776790098072356, - -0.0031453833947510286 + -0.004552252702011261, + 0.013858071762736263, + -0.010677996191135613 ], - "error_norm_m": 0.0036436926914629486, + "error_norm_m": 0.01807729958544759, "predicted_m": [ - -0.020834899571155665, - -0.18471497254973585, - -0.029764931844771598 + -0.021834431673870613, + -0.176872701518174, + -0.03610860049214109 ], "observed_m": [ - -0.021310374783166795, - -0.1864917626478082, - -0.02661954845002057 + -0.017282178971859352, + -0.19073077328091026, + -0.025430604301005477 ] }, { "marker_id": 66, "link": "Board", "error_m": [ - -0.0012731108183965945, - 0.0006876176784452737, - -0.00044442338918422586 + -0.006401515405434849, + 0.0017781585298348723, + 0.004280175892847616 ], - "error_norm_m": 0.0015136516694678826, + "error_norm_m": 0.007903236863270524, "predicted_m": [ - 0.20906269359216248, - -0.3611556011891355, - -0.026442038068722286 + 0.20623150165506418, + -0.35514160775885684, + -0.02191819801185144 ], "observed_m": [ - 0.21033580441055907, - -0.36184321886758075, - -0.02599761467953806 + 0.21263301706049903, + -0.3569197662886917, + -0.026198373904699056 ] }, { "marker_id": 68, "link": "Board", "error_m": [ - 0.005999286726092401, - -0.0002343850347767129, - -0.011976844580479873 + 0.009920935536029796, + 0.0036147367659919716, + -0.026317210500698983 ], - "error_norm_m": 0.0133974319804717, + "error_norm_m": 0.028356425239010184, "predicted_m": [ - 0.5764302815395409, - 0.17037061006940427, - -0.030864635819792405 + 0.5788292540408758, + 0.17239787079977498, + -0.04119592555242797 ], "observed_m": [ - 0.5704309948134485, - 0.17060499510418098, - -0.018887791239312533 + 0.568908318504846, + 0.168783134033783, + -0.014878715051728992 ] }, { "marker_id": 69, "link": "Board", "error_m": [ - -0.0064527243033683365, - 0.004026989242448709, - -0.008238690505665277 + -0.009765747793697124, + 0.010144855342052395, + -0.008205682086978694 ], - "error_norm_m": 0.011212952980469383, + "error_norm_m": 0.016297887543906795, "predicted_m": [ - 0.007451957280249863, - -0.277868565076297, - -0.028501314472499078 + 0.005510649546115061, + -0.2701576935695941, + -0.03067798440933005 ], "observed_m": [ - 0.0139046815836182, - -0.2818955543187457, - -0.0202626239668338 + 0.015276397339812184, + -0.2803025489116465, + -0.022472302322351357 ] }, { "marker_id": 72, "link": "Board", "error_m": [ - 0.002320191052193332, - -0.005075666293755082, - 0.0012102579833339552 + 0.01206183061354199, + -0.0026924053683481386, + -0.012113612864273517 ], - "error_norm_m": 0.005710551569722755, + "error_norm_m": 0.01730538705267182, "predicted_m": [ - 0.4438456271017049, - 0.19488539890785356, - -0.03185687359664922 + 0.4465264092455869, + 0.1980681929781142, + -0.04539614201517998 ], "observed_m": [ - 0.44152543604951155, - 0.19996106520160864, - -0.03306713157998317 + 0.4344645786320449, + 0.20076059834646234, + -0.033282529150906466 ] }, { "marker_id": 73, "link": "Board", "error_m": [ - 0.007409800631797803, - -0.006184057295090251, - -0.00213737086075539 + 0.0015939358789230362, + 0.01307317060974833, + -0.03553258191354361 ], - "error_norm_m": 0.009885143611923719, + "error_norm_m": 0.037894759516592685, "predicted_m": [ - 0.22547702357625732, - 0.3350451892583431, - -0.034684922969039106 + 0.22962253010294684, + 0.3400004979286803, + -0.05746012660960818 ], "observed_m": [ - 0.21806722294445952, - 0.34122924655343334, - -0.032547552108283716 + 0.2280285942240238, + 0.326927327318932, + -0.021927544696064564 ] }, { "marker_id": 75, "link": "Board", "error_m": [ - 0.004076281668749196, - 0.0007523988483592314, - 0.00040251454901708145 + -0.0010134425856457747, + -0.015618359499804751, + 0.005265080475666747 ], - "error_norm_m": 0.004164636146431457, + "error_norm_m": 0.016513064275136487, "predicted_m": [ - -0.022826768775181208, - 0.19808795553617334, - -0.034355324630626884 + -0.019987203644106936, + 0.20544680077663746, + -0.05589513413636127 ], "observed_m": [ - -0.026903050443930404, - 0.1973355566878141, - -0.034757839179643965 + -0.01897376105846116, + 0.2210651602764422, + -0.061160214612028016 ] }, { "marker_id": 79, "link": "Board", "error_m": [ - 0.0008208092470192718, - 0.0014626614911158742, - 0.0020261612549668136 + 0.00047735424737849197, + 0.006572400528108202, + -0.000397956849068775 ], - "error_norm_m": 0.0026302919778447317, + "error_norm_m": 0.006601718369719206, "predicted_m": [ - 0.31290915610661896, - -0.15770086556423232, - -0.028328748177466927 + 0.3120899194987721, + -0.15288350019892974, + -0.03011150002654553 ], "observed_m": [ - 0.3120883468595997, - -0.1591635270553482, - -0.03035490943243374 + 0.3116125652513936, + -0.15945590072703794, + -0.029713543177476754 ] }, { "marker_id": 82, "link": "Board", "error_m": [ - 0.004620758816891002, - -0.006660642371294712, - 0.004753340368137474 + 0.007144984498683116, + -0.1226123391767675, + 0.1569432012310248 ], - "error_norm_m": 0.009397330126026629, + "error_norm_m": 0.19928874763650617, "predicted_m": [ - 0.22267866825354082, - 0.2991946735990578, - -0.03427075579123611 + 0.22646544327444398, + 0.304221993790752, + -0.055673161470176646 ], "observed_m": [ - 0.21805790943664982, - 0.30585531597035254, - -0.039024096159373585 + 0.21932045877576087, + 0.4268343329675195, + -0.21261636270120143 ] }, { "marker_id": 83, "link": "Board", "error_m": [ - 0.005418482748924862, - 0.004927118208021497, - -0.008572161024609653 + -0.0042926929946417725, + -0.013398273717934894, + -0.005745035140862921 ], - "error_norm_m": 0.011274679319965165, + "error_norm_m": 0.015196920100359194, "predicted_m": [ - 0.047952004101645365, - 0.342274247442862, - -0.0357072625914086 + 0.05221818580454903, + 0.348810280462645, + -0.06176400343867677 ], "observed_m": [ - 0.0425335213527205, - 0.3373471292348405, - -0.027135101566798946 + 0.056510878799190804, + 0.3622085541805799, + -0.05601896829781385 ] }, { "marker_id": 84, "link": "Board", "error_m": [ - 0.0042035394232649015, - -0.004062165066029411, - -0.001160529984860395 + 0.017540563212802673, + -0.010434471361215614, + -0.013233216494029719 ], - "error_norm_m": 0.005959677722190355, + "error_norm_m": 0.02432421775079757, "predicted_m": [ - 0.410755001782214, - 0.2591907623010232, - -0.032800671688123485 + 0.41408958781511274, + 0.26258576175293025, + -0.04944533142473166 ], "observed_m": [ - 0.4065514623589491, - 0.26325292736705264, - -0.03164014170326309 + 0.39654902460231006, + 0.27302023311414586, + -0.03621211493070194 ] }, { "marker_id": 85, "link": "Board", "error_m": [ - 0.00025609833219297773, - 0.0015252105778676972, - 0.004000367524038789 + -0.00026024434744487124, + 0.000995853133054947, + 0.012418126233019036 ], - "error_norm_m": 0.004288915246303635, + "error_norm_m": 0.012460710642743773, "predicted_m": [ - 0.5042041073073622, - -0.31253918335750047, - -0.025467806364690516 + 0.5017803060025984, + -0.3092325977374013, + -0.017890003926044614 ], "observed_m": [ - 0.5039480089751692, - -0.31406439393536817, - -0.029468173888729306 + 0.5020405503500432, + -0.31022845087045625, + -0.03030813015906365 ] }, { "marker_id": 86, "link": "Board", "error_m": [ - 0.005073142385576934, - -0.002882827650883657, - -0.00277504259692744 + 0.005119978759483168, + 0.0051937441900155035, + -0.024585506760890694 ], - "error_norm_m": 0.006461294788492351, + "error_norm_m": 0.025644420521795393, "predicted_m": [ - 0.3663704485521694, - 0.293058903395277, - -0.03343985350032342 + 0.370056694732192, + 0.29680713079718124, + -0.05217486022752074 ], "observed_m": [ - 0.36129730616659245, - 0.29594173104616067, - -0.03066481090339598 + 0.3649367159727088, + 0.29161338660716574, + -0.027589353466630048 ] }, { "marker_id": 92, "link": "Board", "error_m": [ - -0.0022231448409536503, - 0.002027638456878089, - 0.0009436235838031978 + -0.0040650859796993455, + 0.00716592616144629, + 0.005916398562679989 ], - "error_norm_m": 0.003153429270425988, + "error_norm_m": 0.010142938120984983, "predicted_m": [ - 0.6455239184881204, - -0.1855268250468046, - -0.026242405738769736 + 0.6443353751026841, + -0.18365243834182884, + -0.021311120710433118 ], "observed_m": [ - 0.6477470633290741, - -0.18755446350368268, - -0.027186029322572934 + 0.6484004610823835, + -0.19081836450327513, + -0.027227519273113107 ] }, { "marker_id": 95, "link": "Board", "error_m": [ - 0.0008970886199909656, - 0.001369673710777508, - 0.002558847672888321 + -0.002655917912978728, + 0.006827652227407333, + -0.00022795801062122645 ], - "error_norm_m": 0.0030378405947577795, + "error_norm_m": 0.007329577051474933, "predicted_m": [ - 0.1859213318573731, - -0.27185425732038365, - -0.027632441485459517 + 0.1839918904792754, + -0.2657499110383315, + -0.027036200764427018 ], "observed_m": [ - 0.18502424323738215, - -0.27322393103116116, - -0.030191289158347838 + 0.18664780839225412, + -0.27257756326573884, + -0.02680824275380579 ] }, { "marker_id": 96, "link": "Board", "error_m": [ - 0.0016048708315765103, - 0.003033724580266406, - 0.002550677091032117 + -0.0003330489368492118, + 0.006534855641922105, + 0.0016518584152897288 ], - "error_norm_m": 0.0042761020611853644, + "error_norm_m": 0.0067486217910963904, "predicted_m": [ - 0.370202818787732, - -0.18544072260513306, - -0.027694833409366182 + 0.3690898694722732, + -0.181100244069962, + -0.027412172640893313 ], "observed_m": [ - 0.36859794795615547, - -0.18847444718539946, - -0.0302455105003983 + 0.3694229184091224, + -0.1876350997118841, + -0.02906403105618304 ] }, { "marker_id": 97, "link": "Board", "error_m": [ - -0.0007633652578301064, - -0.006294814223912815, - 0.0025212819624152658 + 0.0002234266098899429, + -0.001703688491849431, + 0.008865359330947977 ], - "error_norm_m": 0.006823802119378733, + "error_norm_m": 0.009030341632191633, "predicted_m": [ - 0.3036821331717976, - -0.3581923999751065, - -0.025978689171064048 + 0.30085497208872897, + -0.35302984583077157, + -0.019975801386937803 ], "observed_m": [ - 0.3044454984296277, - -0.3518975857511937, - -0.028499971133479313 + 0.300631545478839, + -0.35132615733892214, + -0.02884116071788578 ] }, { "marker_id": 102, "link": "Board", "error_m": [ - -0.004217172044255979, - 0.0012818222005649416, - 0.007364179515894815 + -0.006605472273244595, + 0.005727217418135866, + 0.015832561515091527 ], - "error_norm_m": 0.008582467485929678, + "error_norm_m": 0.01808599699868269, "predicted_m": [ - 0.6498807339562016, - -0.22371233969491253, - -0.025762582817033888 + 0.6483081027262264, + -0.22182697671650253, + -0.019245290342345872 ], "observed_m": [ - 0.6540979060004576, - -0.22499416189547747, - -0.0331267623329287 + 0.654913574999471, + -0.2275541941346384, + -0.0350778518574374 ] }, { "marker_id": 103, "link": "Board", "error_m": [ - -0.0005248079291564622, - 0.0020058196713332588, - -0.0015791934782283593 + -0.0004628579451216863, + 0.011151957883560049, + -0.005196230324720625 ], - "error_norm_m": 0.002606259380432412, + "error_norm_m": 0.012311832182969584, "predicted_m": [ - 0.10614407281302585, - -0.18499565619410507, - -0.029092184530364915 + 0.10510726012716916, + -0.17829043906142777, + -0.033282348035566865 ], "observed_m": [ - 0.10666888074218231, - -0.18700147586543833, - -0.027512991052136556 + 0.10557011807229084, + -0.18944239694498782, + -0.02808611771084624 ] }, { "marker_id": 105, "link": "Board", "error_m": [ - -0.0016530819970690391, - 0.00242105838692408, - 0.0029719622723411374 + -0.0007442236148308412, + 0.003659016775769186, + 0.009758098129132975 ], - "error_norm_m": 0.00417453752530125, + "error_norm_m": 0.010448097992075911, "predicted_m": [ - 0.5247595567590854, - -0.2661711789404367, - -0.025914196571593565 + 0.5227951312590223, + -0.2631094373451257, + -0.019826184411018216 ], "observed_m": [ - 0.5264126387561544, - -0.26859223732736076, - -0.028886158843934702 + 0.5235393548738532, + -0.2667684541208949, + -0.02958428254015119 ] }, { "marker_id": 205, "link": "Board", "error_m": [ - 0.001425331050775469, - 0.003360710169565073, - -0.011089866759590186 + 0.014332872658958107, + 0.019444247927015365, + -0.032248762424642204 ], - "error_norm_m": 0.011675233881750983, + "error_norm_m": 0.04029258857440367, "predicted_m": [ - 0.7508888500677534, - -0.09102679627230495, - 0.0007847926887032176 + 0.7501638786079469, + -0.08912197428897047, + 0.0037251112701953155 ], "observed_m": [ - 0.7494635190169779, - -0.09438750644187002, - 0.011874659448293403 + 0.7358310059489888, + -0.10856622221598583, + 0.03597387369483752 ] }, { "marker_id": 206, "link": "Board", "error_m": [ - 0.004417582605729442, - 0.0034371783095402033, - -0.007928626745045336 + 0.0030432648939281437, + -0.0007510465654346253, + -0.006402658259601998 ], - "error_norm_m": 0.00970527448721906, + "error_norm_m": 0.007128784254507659, "predicted_m": [ - 0.651401758653761, - -0.010403590027052035, - -0.0007042528845845903 + 0.651512240319729, + -0.007713180188276315, + -0.002635903281069312 ], "observed_m": [ - 0.6469841760480316, - -0.013840768336592238, - 0.007224373860460745 + 0.6484689754258008, + -0.006962133622841689, + 0.0037667549785326865 ] }, { "marker_id": 207, "link": "Board", "error_m": [ - 0.004538146533493492, - 0.003396137731705844, - -0.012334950443628177 + 0.002108795921038853, + -0.005278021166740238, + -0.003292708202213847 ], - "error_norm_m": 0.013574959591060965, + "error_norm_m": 0.006568596119268898, "predicted_m": [ - 0.7513983413368077, - -0.011034111444401688, - -0.00016956189450933155 + 0.7514753582778212, + -0.009238601096298147, + -0.00038909684750553994 ], "observed_m": [ - 0.7468601948033142, - -0.014430249176107532, - 0.012165388549118845 + 0.7493665623567823, + -0.0039605799295579095, + 0.002903611354708307 ] }, { "marker_id": 208, "link": "Board", "error_m": [ - 0.0024300150463291703, - 0.003007354145040428, - -0.0035371785130940453 + 0.0005659718848211592, + 0.005974973451685045, + -0.010586207674555946 ], - "error_norm_m": 0.005240303799644845, + "error_norm_m": 0.012169158756938638, "predicted_m": [ - 0.35090251933556676, - -0.08850471060290635, - -0.001353971271597816 + 0.35031140677557776, + -0.08302029065688313, + -0.005262114464059768 ], "observed_m": [ - 0.3484725042892376, - -0.09151206474794678, - 0.002183207241496229 + 0.3497454348907566, + -0.08899526410856817, + 0.005324093210496179 ] }, { "marker_id": 210, "link": "Board", "error_m": [ - 0.00311325211669285, - 0.0013000795136633124, - -0.004188782755158783 + 0.0035239332237271027, + 0.008874902306851047, + -0.019692754042329164 ], - "error_norm_m": 0.005378517124064509, + "error_norm_m": 0.0218857615378837, "predicted_m": [ - 0.021359601341935174, - -0.01643039070123714, - -0.00395351179915715 + 0.0215806622250132, + -0.0080884501168228, + -0.01627650779780846 ], "observed_m": [ - 0.018246349225242323, - -0.017730470214900453, - 0.00023527095600163288 + 0.018056729001286097, + -0.016963352423673847, + 0.003416246244520705 ] }, { "marker_id": 211, "link": "Board", "error_m": [ - 0.0012021663450060838, - 0.0036674520960670483, - -0.009075339052334019 + 0.0018608685919185297, + 0.007536852132166777, + -0.016705736727285002 ], - "error_norm_m": 0.009861905886431425, + "error_norm_m": 0.018421417197921956, "predicted_m": [ - 0.2514154279215743, - -0.00788150435765343, - -0.002843016844885624 + 0.25165976848735977, + -0.0016114965561889781, + -0.011623129015324394 ], "observed_m": [ - 0.2502132615765682, - -0.011548956453720479, - 0.0062323222074483955 + 0.24979889989544124, + -0.009148348688355755, + 0.005082607711960607 ] }, { "marker_id": 214, "link": "Board", "error_m": [ - 0.0012373542216077005, - 0.0031460461405335635, - -0.00901503003888733 + 0.0015684750862626218, + 0.00574582775206614, + -0.013908941678217828 ], - "error_norm_m": 0.009628053717659525, + "error_norm_m": 0.01513054226591714, "predicted_m": [ - 0.351412010604621, - -0.008512025775003082, - -0.0023083258548103652 + 0.35162288644545203, + -0.0031369174642108125, + -0.009376322581760623 ], "observed_m": [ - 0.3501746563830133, - -0.011658071915536646, - 0.006706704184076964 + 0.3500544113591894, + -0.008882745216276952, + 0.004532619096457205 ] }, { "marker_id": 215, "link": "Board", "error_m": [ - -0.00011825939198178981, - 0.0036032087497955695, - -0.004835824521741555 + 0.000845131230164442, + 0.007216838764547803, + -0.011914373933465288 ], - "error_norm_m": 0.006031773983122394, + "error_norm_m": 0.013955261186237836, "predicted_m": [ - 0.25090593665252003, - -0.08787418918555669, - -0.0018886622616730749 + 0.25034828881748544, + -0.0814948697488613, + -0.007508920897623539 ], "observed_m": [ - 0.2510241960445018, - -0.09147739793535226, - 0.0029471622600684808 + 0.249503157587321, + -0.08871170851340911, + 0.004405453035841749 ] }, { "marker_id": 217, "link": "Board", "error_m": [ - 0.0008810603033599929, - 0.0033206712331084742, - -0.003707805550344541 + -0.004014614981723508, + 0.017577259273614684, + -0.004377445959401687 ], - "error_norm_m": 0.005054794426652457, + "error_norm_m": 0.01855368454379977, "predicted_m": [ - 0.6508922673847067, - -0.0903962748549553, - 0.00025010169862795884 + 0.6502007606498547, + -0.08759655338094864, + 0.0014783048366315433 ], "observed_m": [ - 0.6500112070813467, - -0.09371694608806377, - 0.0039579072489725 + 0.6542153756315782, + -0.10517381265456333, + 0.0058557507960332305 ] }, { "marker_id": 243, "link": "Arm1", "error_m": [ - 0.002911757844801438, - 0.405535143417425, - -0.06633222054893911 + 0.010926669040788761, + 0.04973858521635084, + -0.4523716922034446 ], - "error_norm_m": 0.41093453780777706, + "error_norm_m": 0.4552290268234871, "predicted_m": [ - 0.167577388484122, - 0.2924641475994514, - 0.27605756151081007 + 0.19237555447674304, + -0.10038331195515142, + -0.13881122042026806 ], "observed_m": [ - 0.16466563063932055, - -0.11307099581797364, - 0.3423897820597492 + 0.18144888543595428, + -0.15012189717150226, + 0.31356047178317653 ] } ], @@ -1290,30 +1290,30 @@ "link": "Base", "joint_variable": "x", "joint_type": "linear", - "old": 0.055762338176205996, - "new": 0.042466531765584625, + "old": 0.07938666692103402, + "new": 0.07215835667657483, "info": { "reason": "weighted_projection", "used_markers": 3, "axis_world": [ - 0.9999658268294671, - -0.00630521417349021, - 0.00534690990074724 + 0.9996311795799229, + -0.015254209080203078, + 0.022468064335615233 ], "per_marker": [ { "marker_id": 243, - "q_i": 0.055762338176205996, + "q_i": 0.07938666692103402, "weight": 1.0 }, { "marker_id": 246, - "q_i": 0.03265784607785855, + "q_i": 0.05602961483089345, "weight": 1.0 }, { "marker_id": 247, - "q_i": 0.03897941104268933, + "q_i": 0.08105878827779704, "weight": 1.0 } ] @@ -1323,22 +1323,22 @@ "link": "Arm1", "joint_variable": "y", "joint_type": "revolute", - "old": 2.247421613248596, - "new": 2.341735144272061, + "old": -0.7368976031326713, + "new": -0.6419108701295015, "info": { "reason": "2d_alignment+normal_tiebreak", "used_markers": 3, "axis_world": [ - -0.9999658268294671, - 0.00630521417349021, - -0.00534690990074724 + -0.9996311795799229, + 0.015254209080203078, + -0.022468064335615233 ], "axis_id": 0, - "theta_rad": -0.7998575093177328, - "theta_alt_rad": 2.341735144272061, - "score_theta": 0.6551490665470304, - "score_theta_alt": 0.6207843717363043, - "best_score": 0.6207843717363043, + "theta_rad": -0.6419108701295015, + "theta_alt_rad": 2.499681783460291, + "score_theta": 0.5112455268615865, + "score_theta_alt": 0.8669823358189679, + "best_score": 0.5112455268615865, "per_marker": [ { "marker_id": 243, @@ -1360,21 +1360,21 @@ "joint_variable": "z", "joint_type": "revolute", "old": 0.0, - "new": -2.6497974675649116, + "new": -0.40236514567185955, "info": { "reason": "2d_alignment+normal_tiebreak", "used_markers": 2, "axis_world": [ - -0.9999658268294671, - 0.00630521417349021, - -0.00534690990074724 + -0.999631179579923, + 0.01525420908020308, + -0.022468064335615236 ], "axis_id": 0, - "theta_rad": -2.6497974675649116, - "theta_alt_rad": 0.4917951860248815, - "score_theta": 0.3496623915632294, - "score_theta_alt": 0.6082340513834691, - "best_score": 0.3496623915632294, + "theta_rad": -0.4023651456718594, + "theta_alt_rad": 2.739227507917933, + "score_theta": 0.3836561731885004, + "score_theta_alt": 0.5770814115071045, + "best_score": 0.3836561731885004, "per_marker": [ { "marker_id": 246, @@ -1396,30 +1396,30 @@ "link": "Base", "joint_variable": "x", "joint_type": "linear", - "old": 0.042466531765584625, - "new": 0.04246653176577006, + "old": 0.07215835667657483, + "new": 0.0721583566765767, "info": { "reason": "weighted_projection", "used_markers": 3, "axis_world": [ - 0.9999658268294671, - -0.00630521417349021, - 0.00534690990074724 + 0.9996311795799229, + -0.015254209080203078, + 0.022468064335615233 ], "per_marker": [ { "marker_id": 243, - "q_i": 0.05576233817620599, + "q_i": 0.07938666692103402, "weight": 1.0 }, { "marker_id": 246, - "q_i": 0.032657846078209894, + "q_i": 0.05602961483089698, "weight": 1.0 }, { "marker_id": 247, - "q_i": 0.038979411042894284, + "q_i": 0.08105878827779911, "weight": 1.0 } ] @@ -1429,22 +1429,22 @@ "link": "Arm1", "joint_variable": "y", "joint_type": "revolute", - "old": 2.341735144272061, - "new": 2.1743321918219856, + "old": -0.6419108701295015, + "new": -0.6519211760926327, "info": { "reason": "2d_alignment+normal_tiebreak", "used_markers": 3, "axis_world": [ - -0.9999658268294671, - 0.00630521417349021, - -0.00534690990074724 + -0.9996311795799229, + 0.015254209080203078, + -0.022468064335615233 ], "axis_id": 0, - "theta_rad": -0.9672604617678078, - "theta_alt_rad": 2.1743321918219856, - "score_theta": 0.874951948731808, - "score_theta_alt": 0.43403612519303647, - "best_score": 0.43403612519303647, + "theta_rad": -0.6519211760926328, + "theta_alt_rad": 2.4896714774971604, + "score_theta": 0.5312800483233868, + "score_theta_alt": 0.8743595129731793, + "best_score": 0.5312800483233868, "per_marker": [ { "marker_id": 243, @@ -1465,22 +1465,22 @@ "link": "Ellbow", "joint_variable": "z", "joint_type": "revolute", - "old": -2.6497974675649116, - "new": -2.775266504500333, + "old": -0.40236514567185955, + "new": -0.4101046699037387, "info": { "reason": "2d_alignment+normal_tiebreak", "used_markers": 2, "axis_world": [ - -0.9999658268294671, - 0.00630521417349021, - -0.005346909900747239 + -0.999631179579923, + 0.01525420908020308, + -0.022468064335615233 ], "axis_id": 0, - "theta_rad": -2.775266504500333, - "theta_alt_rad": 0.36632614908946026, - "score_theta": 0.2915532352384555, - "score_theta_alt": 0.5402098635546895, - "best_score": 0.2915532352384555, + "theta_rad": -0.4101046699037389, + "theta_alt_rad": 2.731487983686055, + "score_theta": 0.3896114322584153, + "score_theta_alt": 0.5791222762119865, + "best_score": 0.3896114322584153, "per_marker": [ { "marker_id": 246, @@ -1543,850 +1543,850 @@ }, "marker_stats": { "num_markers_used": 42, - "mean_error_m": 0.03460339250572968, - "rms_error_m": 0.10160538456713963, - "median_error_m": 0.005995725852656375, - "worst_error_m": 0.3929053484217573 + "mean_error_m": 0.05039363756277761, + "rms_error_m": 0.11821775252473529, + "median_error_m": 0.01640547590952164, + "worst_error_m": 0.4346121389883154 }, "marker_reports": [ { "marker_id": 46, "link": "Board", "error_m": [ - -0.012685824952448077, - -0.009649285475931024, - 0.013323395661109926 + 0.007895331762659885, + -0.0006314475403442765, + -0.018285418768428742 ], - "error_norm_m": 0.020773823356875123, + "error_norm_m": 0.019927155571618317, "predicted_m": [ - 0.5395058025150521, - 0.1854026757912692, - -0.031239134022212588 + 0.5420655315117168, + 0.18774100566056906, + -0.04278882179590794 ], "observed_m": [ - 0.5521916274675002, - 0.19505196126720023, - -0.04456252968332251 + 0.5341701997490569, + 0.18837245320091334, + -0.0245034030274792 ] }, { "marker_id": 47, "link": "Board", "error_m": [ - 0.0014997958733345418, - 0.003055467265318912, - 0.0021079601686610737 + -0.00216719129998999, + 0.008630400445827136, + 0.006567463574039992 ], - "error_norm_m": 0.004003593878475735, + "error_norm_m": 0.011059480448123576, "predicted_m": [ - 0.3440265090521209, - -0.28532053889803843, - -0.026637853787601206 + 0.34191911988364, + -0.28061479516913906, + -0.02284067547682586 ], "observed_m": [ - 0.34252671317878636, - -0.28837600616335735, - -0.02874581395626228 + 0.34408631118363, + -0.2892451956149662, + -0.029408139050865853 ] }, { "marker_id": 51, "link": "Board", "error_m": [ - -0.00026502809332140664, - 0.001168205409359413, - 0.001015800525628361 + 0.0019825139298365047, + 0.010321285886508186, + -0.0032476596525796604 ], - "error_norm_m": 0.0015706032206044367, + "error_norm_m": 0.011000299861913887, "predicted_m": [ - 0.16833149285762106, - -0.1697585761438859, - -0.02894665192132234 + 0.16743059040785033, + -0.16363035886570018, + -0.03269111933196293 ], "observed_m": [ - 0.16859652095094246, - -0.1709267815532453, - -0.029962452446950703 + 0.16544807647801382, + -0.17395164475220837, + -0.029443459679383267 ] }, { "marker_id": 53, "link": "Board", "error_m": [ - 0.0007678858513761044, - 0.0004644961936310088, - -0.0033898841612772547 + 0.010190425417623772, + -0.004685057942000026, + -0.013386768405419927 ], - "error_norm_m": 0.003506667937161957, + "error_norm_m": 0.01746425224429604, "predicted_m": [ - 0.48921820646832004, - 0.21251838631581146, - -0.03182864788118077 + 0.4920634878794713, + 0.2152716630703021, + -0.04530082004171401 ], "observed_m": [ - 0.48845032061694393, - 0.21205389012218046, - -0.028438763719903514 + 0.4818730624618475, + 0.21995672101230213, + -0.031914051636294086 ] }, { "marker_id": 55, "link": "Board", "error_m": [ - 0.0006390076116649657, - 0.0010172761897459526, - 0.0010893034975956103 + -0.000648024175633255, + 0.005926273650224356, + 0.0030121560446546916 ], - "error_norm_m": 0.0016216546129998943, + "error_norm_m": 0.0066793516711503124, "predicted_m": [ - 0.2836711695056911, - -0.2609812012824432, - -0.027247224503367903 + 0.2818242253683257, + -0.2557666927064896, + -0.025432423381026713 ], "observed_m": [ - 0.28303216189402614, - -0.26199847747218913, - -0.028336528000963514 + 0.28247224954395894, + -0.26169296635671396, + -0.028444579425681404 ] }, { "marker_id": 56, "link": "Board", "error_m": [ - -0.012227744641920446, - -0.01125009231546012, - 0.017219838969664836 + -0.02817326017385502, + -0.024584323572284905, + 0.04561768174620743 ], - "error_norm_m": 0.023929169861814613, + "error_norm_m": 0.05898384899469341, "predicted_m": [ - 0.501370300013414, - 0.16887399652923807, - -0.03124242042623228 + 0.5037746388264569, + 0.17157557112637584, + -0.04278084140591921 ], "observed_m": [ - 0.5135980446553344, - 0.1801240888446982, - -0.048462259395897114 + 0.5319478990003119, + 0.19615989469866074, + -0.08839852315212664 ] }, { "marker_id": 58, "link": "Board", "error_m": [ - 0.00010200428773012721, - 0.0007143951371397228, - 0.0008366871229240555 + -0.0036283215191368137, + 0.011792552986691573, + -0.007131376636709666 ], - "error_norm_m": 0.0011049029949960075, + "error_norm_m": 0.014250808949837483, "predicted_m": [ - 0.05033236684247467, - -0.21504218041637846, - -0.029026924917424007 + 0.049009411644326, + -0.20779768176560154, + -0.03296862268918871 ], "observed_m": [ - 0.05023036255474454, - -0.21575657555351818, - -0.029863612040348063 + 0.05263773316346281, + -0.2195902347522931, + -0.025837246052479043 ] }, { "marker_id": 61, "link": "Board", "error_m": [ - -0.008035233032862025, - -0.022841936137153296, - 0.022813009358264184 + -0.0039243565853280555, + -0.019787233763559453, + 0.0009600037431695824 ], - "error_norm_m": 0.033267888606980094, + "error_norm_m": 0.020195464882231715, "predicted_m": [ - -0.01864731034125329, - 0.33930435858295105, - -0.03602281907713707 + -0.01439283208295973, + 0.34644084776416645, + -0.06308558759315597 ], "observed_m": [ - -0.010612077308391265, - 0.36214629472010434, - -0.058835828435401256 + -0.010468475497631675, + 0.3662280815277259, + -0.06404559133632555 ] }, { "marker_id": 62, "link": "Board", "error_m": [ - 0.0008765545330541302, - 0.005792750641072625, - 0.0010183034070573825 + -0.001397680135084567, + 0.009276782057794891, + 0.0008861811743844303 ], - "error_norm_m": 0.005946532575197896, + "error_norm_m": 0.009423243188078538, "predicted_m": [ - 0.4052041639383518, - -0.17427200523384054, - -0.027643942080317778 + 0.40419370849303327, + -0.17025967833482727, + -0.02721312353440715 ], "observed_m": [ - 0.40432760940529766, - -0.18006475587491316, - -0.02866224548737516 + 0.40559138862811783, + -0.17953646039262217, + -0.02809930470879158 ] }, { "marker_id": 63, "link": "Board", "error_m": [ - -0.015866484772870892, - 0.007385919787924855, - 0.018405415867788058 + -0.016894642595327913, + 0.007560854561507152, + 0.025439453433518014 ], - "error_norm_m": 0.025397962190451977, + "error_norm_m": 0.03146047140651683, "predicted_m": [ - 0.7775026220733696, - -0.23766637616559638, - -0.024922856918993215 + 0.7757554261997703, + -0.23690592122668272, + -0.015699620886694507 ], "observed_m": [ - 0.7933691068462405, - -0.24505229595352124, - -0.04332827278678127 + 0.7926500687950983, + -0.24446677578818987, + -0.04113907432021252 ] }, { "marker_id": 64, "link": "Board", "error_m": [ - 0.0004754752120111304, - 0.001776790098072356, - -0.0031453833947510286 + -0.004552252702011261, + 0.013858071762736263, + -0.010677996191135613 ], - "error_norm_m": 0.0036436926914629486, + "error_norm_m": 0.01807729958544759, "predicted_m": [ - -0.020834899571155665, - -0.18471497254973585, - -0.029764931844771598 + -0.021834431673870613, + -0.176872701518174, + -0.03610860049214109 ], "observed_m": [ - -0.021310374783166795, - -0.1864917626478082, - -0.02661954845002057 + -0.017282178971859352, + -0.19073077328091026, + -0.025430604301005477 ] }, { "marker_id": 66, "link": "Board", "error_m": [ - -0.0012731108183965945, - 0.0006876176784452737, - -0.00044442338918422586 + -0.006401515405434849, + 0.0017781585298348723, + 0.004280175892847616 ], - "error_norm_m": 0.0015136516694678826, + "error_norm_m": 0.007903236863270524, "predicted_m": [ - 0.20906269359216248, - -0.3611556011891355, - -0.026442038068722286 + 0.20623150165506418, + -0.35514160775885684, + -0.02191819801185144 ], "observed_m": [ - 0.21033580441055907, - -0.36184321886758075, - -0.02599761467953806 + 0.21263301706049903, + -0.3569197662886917, + -0.026198373904699056 ] }, { "marker_id": 68, "link": "Board", "error_m": [ - 0.005999286726092401, - -0.0002343850347767129, - -0.011976844580479873 + 0.009920935536029796, + 0.0036147367659919716, + -0.026317210500698983 ], - "error_norm_m": 0.0133974319804717, + "error_norm_m": 0.028356425239010184, "predicted_m": [ - 0.5764302815395409, - 0.17037061006940427, - -0.030864635819792405 + 0.5788292540408758, + 0.17239787079977498, + -0.04119592555242797 ], "observed_m": [ - 0.5704309948134485, - 0.17060499510418098, - -0.018887791239312533 + 0.568908318504846, + 0.168783134033783, + -0.014878715051728992 ] }, { "marker_id": 69, "link": "Board", "error_m": [ - -0.0064527243033683365, - 0.004026989242448709, - -0.008238690505665277 + -0.009765747793697124, + 0.010144855342052395, + -0.008205682086978694 ], - "error_norm_m": 0.011212952980469383, + "error_norm_m": 0.016297887543906795, "predicted_m": [ - 0.007451957280249863, - -0.277868565076297, - -0.028501314472499078 + 0.005510649546115061, + -0.2701576935695941, + -0.03067798440933005 ], "observed_m": [ - 0.0139046815836182, - -0.2818955543187457, - -0.0202626239668338 + 0.015276397339812184, + -0.2803025489116465, + -0.022472302322351357 ] }, { "marker_id": 72, "link": "Board", "error_m": [ - 0.002320191052193332, - -0.005075666293755082, - 0.0012102579833339552 + 0.01206183061354199, + -0.0026924053683481386, + -0.012113612864273517 ], - "error_norm_m": 0.005710551569722755, + "error_norm_m": 0.01730538705267182, "predicted_m": [ - 0.4438456271017049, - 0.19488539890785356, - -0.03185687359664922 + 0.4465264092455869, + 0.1980681929781142, + -0.04539614201517998 ], "observed_m": [ - 0.44152543604951155, - 0.19996106520160864, - -0.03306713157998317 + 0.4344645786320449, + 0.20076059834646234, + -0.033282529150906466 ] }, { "marker_id": 73, "link": "Board", "error_m": [ - 0.007409800631797803, - -0.006184057295090251, - -0.00213737086075539 + 0.0015939358789230362, + 0.01307317060974833, + -0.03553258191354361 ], - "error_norm_m": 0.009885143611923719, + "error_norm_m": 0.037894759516592685, "predicted_m": [ - 0.22547702357625732, - 0.3350451892583431, - -0.034684922969039106 + 0.22962253010294684, + 0.3400004979286803, + -0.05746012660960818 ], "observed_m": [ - 0.21806722294445952, - 0.34122924655343334, - -0.032547552108283716 + 0.2280285942240238, + 0.326927327318932, + -0.021927544696064564 ] }, { "marker_id": 75, "link": "Board", "error_m": [ - 0.004076281668749196, - 0.0007523988483592314, - 0.00040251454901708145 + -0.0010134425856457747, + -0.015618359499804751, + 0.005265080475666747 ], - "error_norm_m": 0.004164636146431457, + "error_norm_m": 0.016513064275136487, "predicted_m": [ - -0.022826768775181208, - 0.19808795553617334, - -0.034355324630626884 + -0.019987203644106936, + 0.20544680077663746, + -0.05589513413636127 ], "observed_m": [ - -0.026903050443930404, - 0.1973355566878141, - -0.034757839179643965 + -0.01897376105846116, + 0.2210651602764422, + -0.061160214612028016 ] }, { "marker_id": 79, "link": "Board", "error_m": [ - 0.0008208092470192718, - 0.0014626614911158742, - 0.0020261612549668136 + 0.00047735424737849197, + 0.006572400528108202, + -0.000397956849068775 ], - "error_norm_m": 0.0026302919778447317, + "error_norm_m": 0.006601718369719206, "predicted_m": [ - 0.31290915610661896, - -0.15770086556423232, - -0.028328748177466927 + 0.3120899194987721, + -0.15288350019892974, + -0.03011150002654553 ], "observed_m": [ - 0.3120883468595997, - -0.1591635270553482, - -0.03035490943243374 + 0.3116125652513936, + -0.15945590072703794, + -0.029713543177476754 ] }, { "marker_id": 82, "link": "Board", "error_m": [ - 0.004620758816891002, - -0.006660642371294712, - 0.004753340368137474 + 0.007144984498683116, + -0.1226123391767675, + 0.1569432012310248 ], - "error_norm_m": 0.009397330126026629, + "error_norm_m": 0.19928874763650617, "predicted_m": [ - 0.22267866825354082, - 0.2991946735990578, - -0.03427075579123611 + 0.22646544327444398, + 0.304221993790752, + -0.055673161470176646 ], "observed_m": [ - 0.21805790943664982, - 0.30585531597035254, - -0.039024096159373585 + 0.21932045877576087, + 0.4268343329675195, + -0.21261636270120143 ] }, { "marker_id": 83, "link": "Board", "error_m": [ - 0.005418482748924862, - 0.004927118208021497, - -0.008572161024609653 + -0.0042926929946417725, + -0.013398273717934894, + -0.005745035140862921 ], - "error_norm_m": 0.011274679319965165, + "error_norm_m": 0.015196920100359194, "predicted_m": [ - 0.047952004101645365, - 0.342274247442862, - -0.0357072625914086 + 0.05221818580454903, + 0.348810280462645, + -0.06176400343867677 ], "observed_m": [ - 0.0425335213527205, - 0.3373471292348405, - -0.027135101566798946 + 0.056510878799190804, + 0.3622085541805799, + -0.05601896829781385 ] }, { "marker_id": 84, "link": "Board", "error_m": [ - 0.0042035394232649015, - -0.004062165066029411, - -0.001160529984860395 + 0.017540563212802673, + -0.010434471361215614, + -0.013233216494029719 ], - "error_norm_m": 0.005959677722190355, + "error_norm_m": 0.02432421775079757, "predicted_m": [ - 0.410755001782214, - 0.2591907623010232, - -0.032800671688123485 + 0.41408958781511274, + 0.26258576175293025, + -0.04944533142473166 ], "observed_m": [ - 0.4065514623589491, - 0.26325292736705264, - -0.03164014170326309 + 0.39654902460231006, + 0.27302023311414586, + -0.03621211493070194 ] }, { "marker_id": 85, "link": "Board", "error_m": [ - 0.00025609833219297773, - 0.0015252105778676972, - 0.004000367524038789 + -0.00026024434744487124, + 0.000995853133054947, + 0.012418126233019036 ], - "error_norm_m": 0.004288915246303635, + "error_norm_m": 0.012460710642743773, "predicted_m": [ - 0.5042041073073622, - -0.31253918335750047, - -0.025467806364690516 + 0.5017803060025984, + -0.3092325977374013, + -0.017890003926044614 ], "observed_m": [ - 0.5039480089751692, - -0.31406439393536817, - -0.029468173888729306 + 0.5020405503500432, + -0.31022845087045625, + -0.03030813015906365 ] }, { "marker_id": 86, "link": "Board", "error_m": [ - 0.005073142385576934, - -0.002882827650883657, - -0.00277504259692744 + 0.005119978759483168, + 0.0051937441900155035, + -0.024585506760890694 ], - "error_norm_m": 0.006461294788492351, + "error_norm_m": 0.025644420521795393, "predicted_m": [ - 0.3663704485521694, - 0.293058903395277, - -0.03343985350032342 + 0.370056694732192, + 0.29680713079718124, + -0.05217486022752074 ], "observed_m": [ - 0.36129730616659245, - 0.29594173104616067, - -0.03066481090339598 + 0.3649367159727088, + 0.29161338660716574, + -0.027589353466630048 ] }, { "marker_id": 92, "link": "Board", "error_m": [ - -0.0022231448409536503, - 0.002027638456878089, - 0.0009436235838031978 + -0.0040650859796993455, + 0.00716592616144629, + 0.005916398562679989 ], - "error_norm_m": 0.003153429270425988, + "error_norm_m": 0.010142938120984983, "predicted_m": [ - 0.6455239184881204, - -0.1855268250468046, - -0.026242405738769736 + 0.6443353751026841, + -0.18365243834182884, + -0.021311120710433118 ], "observed_m": [ - 0.6477470633290741, - -0.18755446350368268, - -0.027186029322572934 + 0.6484004610823835, + -0.19081836450327513, + -0.027227519273113107 ] }, { "marker_id": 95, "link": "Board", "error_m": [ - 0.0008970886199909656, - 0.001369673710777508, - 0.002558847672888321 + -0.002655917912978728, + 0.006827652227407333, + -0.00022795801062122645 ], - "error_norm_m": 0.0030378405947577795, + "error_norm_m": 0.007329577051474933, "predicted_m": [ - 0.1859213318573731, - -0.27185425732038365, - -0.027632441485459517 + 0.1839918904792754, + -0.2657499110383315, + -0.027036200764427018 ], "observed_m": [ - 0.18502424323738215, - -0.27322393103116116, - -0.030191289158347838 + 0.18664780839225412, + -0.27257756326573884, + -0.02680824275380579 ] }, { "marker_id": 96, "link": "Board", "error_m": [ - 0.0016048708315765103, - 0.003033724580266406, - 0.002550677091032117 + -0.0003330489368492118, + 0.006534855641922105, + 0.0016518584152897288 ], - "error_norm_m": 0.0042761020611853644, + "error_norm_m": 0.0067486217910963904, "predicted_m": [ - 0.370202818787732, - -0.18544072260513306, - -0.027694833409366182 + 0.3690898694722732, + -0.181100244069962, + -0.027412172640893313 ], "observed_m": [ - 0.36859794795615547, - -0.18847444718539946, - -0.0302455105003983 + 0.3694229184091224, + -0.1876350997118841, + -0.02906403105618304 ] }, { "marker_id": 97, "link": "Board", "error_m": [ - -0.0007633652578301064, - -0.006294814223912815, - 0.0025212819624152658 + 0.0002234266098899429, + -0.001703688491849431, + 0.008865359330947977 ], - "error_norm_m": 0.006823802119378733, + "error_norm_m": 0.009030341632191633, "predicted_m": [ - 0.3036821331717976, - -0.3581923999751065, - -0.025978689171064048 + 0.30085497208872897, + -0.35302984583077157, + -0.019975801386937803 ], "observed_m": [ - 0.3044454984296277, - -0.3518975857511937, - -0.028499971133479313 + 0.300631545478839, + -0.35132615733892214, + -0.02884116071788578 ] }, { "marker_id": 102, "link": "Board", "error_m": [ - -0.004217172044255979, - 0.0012818222005649416, - 0.007364179515894815 + -0.006605472273244595, + 0.005727217418135866, + 0.015832561515091527 ], - "error_norm_m": 0.008582467485929678, + "error_norm_m": 0.01808599699868269, "predicted_m": [ - 0.6498807339562016, - -0.22371233969491253, - -0.025762582817033888 + 0.6483081027262264, + -0.22182697671650253, + -0.019245290342345872 ], "observed_m": [ - 0.6540979060004576, - -0.22499416189547747, - -0.0331267623329287 + 0.654913574999471, + -0.2275541941346384, + -0.0350778518574374 ] }, { "marker_id": 103, "link": "Board", "error_m": [ - -0.0005248079291564622, - 0.0020058196713332588, - -0.0015791934782283593 + -0.0004628579451216863, + 0.011151957883560049, + -0.005196230324720625 ], - "error_norm_m": 0.002606259380432412, + "error_norm_m": 0.012311832182969584, "predicted_m": [ - 0.10614407281302585, - -0.18499565619410507, - -0.029092184530364915 + 0.10510726012716916, + -0.17829043906142777, + -0.033282348035566865 ], "observed_m": [ - 0.10666888074218231, - -0.18700147586543833, - -0.027512991052136556 + 0.10557011807229084, + -0.18944239694498782, + -0.02808611771084624 ] }, { "marker_id": 105, "link": "Board", "error_m": [ - -0.0016530819970690391, - 0.00242105838692408, - 0.0029719622723411374 + -0.0007442236148308412, + 0.003659016775769186, + 0.009758098129132975 ], - "error_norm_m": 0.00417453752530125, + "error_norm_m": 0.010448097992075911, "predicted_m": [ - 0.5247595567590854, - -0.2661711789404367, - -0.025914196571593565 + 0.5227951312590223, + -0.2631094373451257, + -0.019826184411018216 ], "observed_m": [ - 0.5264126387561544, - -0.26859223732736076, - -0.028886158843934702 + 0.5235393548738532, + -0.2667684541208949, + -0.02958428254015119 ] }, { "marker_id": 205, "link": "Board", "error_m": [ - 0.001425331050775469, - 0.003360710169565073, - -0.011089866759590186 + 0.014332872658958107, + 0.019444247927015365, + -0.032248762424642204 ], - "error_norm_m": 0.011675233881750983, + "error_norm_m": 0.04029258857440367, "predicted_m": [ - 0.7508888500677534, - -0.09102679627230495, - 0.0007847926887032176 + 0.7501638786079469, + -0.08912197428897047, + 0.0037251112701953155 ], "observed_m": [ - 0.7494635190169779, - -0.09438750644187002, - 0.011874659448293403 + 0.7358310059489888, + -0.10856622221598583, + 0.03597387369483752 ] }, { "marker_id": 206, "link": "Board", "error_m": [ - 0.004417582605729442, - 0.0034371783095402033, - -0.007928626745045336 + 0.0030432648939281437, + -0.0007510465654346253, + -0.006402658259601998 ], - "error_norm_m": 0.00970527448721906, + "error_norm_m": 0.007128784254507659, "predicted_m": [ - 0.651401758653761, - -0.010403590027052035, - -0.0007042528845845903 + 0.651512240319729, + -0.007713180188276315, + -0.002635903281069312 ], "observed_m": [ - 0.6469841760480316, - -0.013840768336592238, - 0.007224373860460745 + 0.6484689754258008, + -0.006962133622841689, + 0.0037667549785326865 ] }, { "marker_id": 207, "link": "Board", "error_m": [ - 0.004538146533493492, - 0.003396137731705844, - -0.012334950443628177 + 0.002108795921038853, + -0.005278021166740238, + -0.003292708202213847 ], - "error_norm_m": 0.013574959591060965, + "error_norm_m": 0.006568596119268898, "predicted_m": [ - 0.7513983413368077, - -0.011034111444401688, - -0.00016956189450933155 + 0.7514753582778212, + -0.009238601096298147, + -0.00038909684750553994 ], "observed_m": [ - 0.7468601948033142, - -0.014430249176107532, - 0.012165388549118845 + 0.7493665623567823, + -0.0039605799295579095, + 0.002903611354708307 ] }, { "marker_id": 208, "link": "Board", "error_m": [ - 0.0024300150463291703, - 0.003007354145040428, - -0.0035371785130940453 + 0.0005659718848211592, + 0.005974973451685045, + -0.010586207674555946 ], - "error_norm_m": 0.005240303799644845, + "error_norm_m": 0.012169158756938638, "predicted_m": [ - 0.35090251933556676, - -0.08850471060290635, - -0.001353971271597816 + 0.35031140677557776, + -0.08302029065688313, + -0.005262114464059768 ], "observed_m": [ - 0.3484725042892376, - -0.09151206474794678, - 0.002183207241496229 + 0.3497454348907566, + -0.08899526410856817, + 0.005324093210496179 ] }, { "marker_id": 210, "link": "Board", "error_m": [ - 0.00311325211669285, - 0.0013000795136633124, - -0.004188782755158783 + 0.0035239332237271027, + 0.008874902306851047, + -0.019692754042329164 ], - "error_norm_m": 0.005378517124064509, + "error_norm_m": 0.0218857615378837, "predicted_m": [ - 0.021359601341935174, - -0.01643039070123714, - -0.00395351179915715 + 0.0215806622250132, + -0.0080884501168228, + -0.01627650779780846 ], "observed_m": [ - 0.018246349225242323, - -0.017730470214900453, - 0.00023527095600163288 + 0.018056729001286097, + -0.016963352423673847, + 0.003416246244520705 ] }, { "marker_id": 211, "link": "Board", "error_m": [ - 0.0012021663450060838, - 0.0036674520960670483, - -0.009075339052334019 + 0.0018608685919185297, + 0.007536852132166777, + -0.016705736727285002 ], - "error_norm_m": 0.009861905886431425, + "error_norm_m": 0.018421417197921956, "predicted_m": [ - 0.2514154279215743, - -0.00788150435765343, - -0.002843016844885624 + 0.25165976848735977, + -0.0016114965561889781, + -0.011623129015324394 ], "observed_m": [ - 0.2502132615765682, - -0.011548956453720479, - 0.0062323222074483955 + 0.24979889989544124, + -0.009148348688355755, + 0.005082607711960607 ] }, { "marker_id": 214, "link": "Board", "error_m": [ - 0.0012373542216077005, - 0.0031460461405335635, - -0.00901503003888733 + 0.0015684750862626218, + 0.00574582775206614, + -0.013908941678217828 ], - "error_norm_m": 0.009628053717659525, + "error_norm_m": 0.01513054226591714, "predicted_m": [ - 0.351412010604621, - -0.008512025775003082, - -0.0023083258548103652 + 0.35162288644545203, + -0.0031369174642108125, + -0.009376322581760623 ], "observed_m": [ - 0.3501746563830133, - -0.011658071915536646, - 0.006706704184076964 + 0.3500544113591894, + -0.008882745216276952, + 0.004532619096457205 ] }, { "marker_id": 215, "link": "Board", "error_m": [ - -0.00011825939198178981, - 0.0036032087497955695, - -0.004835824521741555 + 0.000845131230164442, + 0.007216838764547803, + -0.011914373933465288 ], - "error_norm_m": 0.006031773983122394, + "error_norm_m": 0.013955261186237836, "predicted_m": [ - 0.25090593665252003, - -0.08787418918555669, - -0.0018886622616730749 + 0.25034828881748544, + -0.0814948697488613, + -0.007508920897623539 ], "observed_m": [ - 0.2510241960445018, - -0.09147739793535226, - 0.0029471622600684808 + 0.249503157587321, + -0.08871170851340911, + 0.004405453035841749 ] }, { "marker_id": 217, "link": "Board", "error_m": [ - 0.0008810603033599929, - 0.0033206712331084742, - -0.003707805550344541 + -0.004014614981723508, + 0.017577259273614684, + -0.004377445959401687 ], - "error_norm_m": 0.005054794426652457, + "error_norm_m": 0.01855368454379977, "predicted_m": [ - 0.6508922673847067, - -0.0903962748549553, - 0.00025010169862795884 + 0.6502007606498547, + -0.08759655338094864, + 0.0014783048366315433 ], "observed_m": [ - 0.6500112070813467, - -0.09371694608806377, - 0.0039579072489725 + 0.6542153756315782, + -0.10517381265456333, + 0.0058557507960332305 ] }, { "marker_id": 243, "link": "Arm1", "error_m": [ - -0.010555537258469722, - 0.389065982954994, - -0.05376666587088946 + 0.0030442313280949485, + 0.03534133481652427, + -0.4331621336924618 ], - "error_norm_m": 0.3929053484217573, + "error_norm_m": 0.4346121389883154, "predicted_m": [ - 0.15411009338085083, - 0.27599498713702036, - 0.2886231161888597 + 0.18449311676404923, + -0.114780562354978, + -0.11960166190928528 ], "observed_m": [ - 0.16466563063932055, - -0.11307099581797364, - 0.3423897820597492 + 0.18144888543595428, + -0.15012189717150226, + 0.31356047178317653 ] }, { "marker_id": 246, "link": "Ellbow", "error_m": [ - 0.012555236860652713, - 0.37253563689893276, - -0.07428685921048511 + 0.02677293000620254, + 0.07784663277603267, + -0.4204556655931915 ], - "error_norm_m": 0.3800775870577993, + "error_norm_m": 0.42843885765077044, "predicted_m": [ - 0.2438542040097105, - 0.23577779122678744, - 0.2896289639860958 + 0.2735860527010144, + -0.11691208291075626, + -0.0792150632606324 ], "observed_m": [ - 0.2312989671490578, - -0.13675784567214536, - 0.3639158231965809 + 0.24681312269481184, + -0.19475871568678893, + 0.34124060233255904 ] }, { "marker_id": 247, "link": "Ellbow", "error_m": [ - 0.006062565584941421, - 0.3553752403841762, - -0.06256336625952014 + 0.00046222396424286383, + 0.02751821645243417, + -0.39801899830412135 ], - "error_norm_m": 0.36089124535974215, + "error_norm_m": 0.3989694084748006, "predicted_m": [ - 0.20635548550383057, - 0.2360142367582919, - 0.28942845486481894 + 0.23609988346675137, + -0.1163400500702484, + -0.08005761567321834 ], "observed_m": [ - 0.20029291991888915, - -0.11936100362588432, - 0.3519918211243391 + 0.2356376595025085, + -0.14385826652268258, + 0.317961382630903 ] } ], @@ -2411,55 +2411,55 @@ "link": "Base", "joint_variable": "x", "joint_type": "linear", - "old": 0.04246653176577006, - "new": 0.04476403875746596, + "old": 0.0721583566765767, + "new": 0.06036539553405373, "info": { "reason": "weighted_projection", "used_markers": 8, "axis_world": [ - 0.9999658268294671, - -0.00630521417349021, - 0.00534690990074724 + 0.9996311795799229, + -0.015254209080203078, + 0.022468064335615233 ], "per_marker": [ { "marker_id": 243, - "q_i": 0.05576233817620601, + "q_i": 0.07938666692103402, "weight": 1.0 }, { "marker_id": 246, - "q_i": 0.03265784607819604, + "q_i": 0.05602961483089859, "weight": 1.0 }, { "marker_id": 247, - "q_i": 0.0389794110428862, + "q_i": 0.08105878827780005, "weight": 1.0 }, { "marker_id": 120, - "q_i": 0.03908465927244201, + "q_i": 0.05834849326850647, "weight": 1.0 }, { "marker_id": 218, - "q_i": 0.00428711301336939, + "q_i": 0.008245410693012156, "weight": 1.0 }, { "marker_id": 114, - "q_i": 0.04800460630723797, + "q_i": 0.05395390438968481, "weight": 1.0 }, { "marker_id": 115, - "q_i": 0.13122631411834135, + "q_i": 0.13467523330363856, "weight": 1.0 }, { "marker_id": 219, - "q_i": 0.008110022051048715, + "q_i": 0.01122505258785522, "weight": 1.0 } ] @@ -2469,22 +2469,22 @@ "link": "Arm1", "joint_variable": "y", "joint_type": "revolute", - "old": 2.1743321918219856, - "new": 2.146047310904782, + "old": -0.6519211760926327, + "new": -0.6514312290618247, "info": { "reason": "2d_alignment+normal_tiebreak", "used_markers": 8, "axis_world": [ - -0.9999658268294671, - 0.00630521417349021, - -0.00534690990074724 + -0.9996311795799229, + 0.015254209080203078, + -0.022468064335615233 ], "axis_id": 0, - "theta_rad": -0.9955453426850104, - "theta_alt_rad": 2.146047310904782, - "score_theta": 1.9409938165226586, - "score_theta_alt": 1.0989773370652702, - "best_score": 1.0989773370652702, + "theta_rad": -0.6514312290618246, + "theta_alt_rad": 2.490161424527969, + "score_theta": 1.8768481157361248, + "score_theta_alt": 3.1652579672227588, + "best_score": 1.8768481157361248, "per_marker": [ { "marker_id": 243, @@ -2525,22 +2525,22 @@ "link": "Ellbow", "joint_variable": "z", "joint_type": "revolute", - "old": -2.775266504500333, - "new": -0.9993455149410977, + "old": -0.4101046699037387, + "new": 1.4578495646523564, "info": { "reason": "2d_alignment+normal_tiebreak", "used_markers": 7, "axis_world": [ - -0.9999658268294671, - 0.00630521417349021, - -0.00534690990074724 + -0.999631179579923, + 0.01525420908020308, + -0.022468064335615236 ], "axis_id": 0, - "theta_rad": 2.142247138648695, - "theta_alt_rad": -0.9993455149410977, - "score_theta": 2.0589675061728876, - "score_theta_alt": 1.3205386744867353, - "best_score": 1.3205386744867353, + "theta_rad": -1.6837430889374367, + "theta_alt_rad": 1.4578495646523564, + "score_theta": 2.1671521471209187, + "score_theta_alt": 0.7481164620118095, + "best_score": 0.7481164620118095, "per_marker": [ { "marker_id": 246, @@ -2578,21 +2578,21 @@ "joint_variable": "a", "joint_type": "revolute", "old": 0.0, - "new": -0.9168044723458806, + "new": -0.9280827828682447, "info": { "reason": "2d_alignment+normal_tiebreak", "used_markers": 5, "axis_world": [ - -0.007424904728598183, - -0.40055477978096615, - 0.9162427294022 + -0.026973588916499855, + -0.6537059232346972, + 0.7562678040395716 ], "axis_id": 2, - "theta_rad": -0.9168044723458808, - "theta_alt_rad": 2.2247881812439125, - "score_theta": 0.9895740730519235, - "score_theta_alt": 1.2593388700019863, - "best_score": 0.9895740730519235, + "theta_rad": 2.2135098707215475, + "theta_alt_rad": -0.9280827828682447, + "score_theta": 0.5234144848366329, + "score_theta_alt": 0.4577967285459642, + "best_score": 0.4577967285459642, "per_marker": [ { "marker_id": 120, @@ -2626,55 +2626,55 @@ "link": "Base", "joint_variable": "x", "joint_type": "linear", - "old": 0.04476403875746596, - "new": 0.05676870395702915, + "old": 0.06036539553405373, + "new": 0.07253974336302962, "info": { "reason": "weighted_projection", "used_markers": 8, "axis_world": [ - 0.9999658268294671, - -0.00630521417349021, - 0.00534690990074724 + 0.9996311795799229, + -0.015254209080203078, + 0.022468064335615233 ], "per_marker": [ { "marker_id": 243, - "q_i": 0.05576233817620601, + "q_i": 0.07938666692103402, "weight": 1.0 }, { "marker_id": 246, - "q_i": 0.032657846077926406, + "q_i": 0.05602961483104335, "weight": 1.0 }, { "marker_id": 247, - "q_i": 0.03897941104272891, + "q_i": 0.08105878827788449, "weight": 1.0 }, { "marker_id": 120, - "q_i": 0.06842088921707805, + "q_i": 0.08807578085324477, "weight": 1.0 }, { "marker_id": 218, - "q_i": 0.01799453309723278, + "q_i": 0.02226746901986768, "weight": 1.0 }, { "marker_id": 114, - "q_i": 0.07734083625187398, + "q_i": 0.0836811919744231, "weight": 1.0 }, { "marker_id": 115, - "q_i": 0.14117633565827495, + "q_i": 0.1445713241120288, "weight": 1.0 }, { "marker_id": 219, - "q_i": 0.021817442134912064, + "q_i": 0.025247110914710734, "weight": 1.0 } ] @@ -2684,22 +2684,22 @@ "link": "Arm1", "joint_variable": "y", "joint_type": "revolute", - "old": 2.146047310904782, - "new": 2.2025331885734767, + "old": -0.6514312290618247, + "new": -0.16779287946966148, "info": { "reason": "2d_alignment+normal_tiebreak", "used_markers": 8, "axis_world": [ - -0.9999658268294671, - 0.00630521417349021, - -0.00534690990074724 + -0.9996311795799229, + 0.015254209080203078, + -0.022468064335615233 ], "axis_id": 0, - "theta_rad": -0.9390594650163167, - "theta_alt_rad": 2.2025331885734767, - "score_theta": 2.7125355036469765, - "score_theta_alt": 1.4817960447275145, - "best_score": 1.4817960447275145, + "theta_rad": -0.16779287946966157, + "theta_alt_rad": 2.973799774120131, + "score_theta": 0.40848547611494357, + "score_theta_alt": 4.038934603547279, + "best_score": 0.40848547611494357, "per_marker": [ { "marker_id": 243, @@ -2740,22 +2740,22 @@ "link": "Ellbow", "joint_variable": "z", "joint_type": "revolute", - "old": -0.9993455149410977, - "new": -1.0146056468008098, + "old": 1.4578495646523564, + "new": 1.925767292056002, "info": { "reason": "2d_alignment+normal_tiebreak", "used_markers": 7, "axis_world": [ - -0.9999658268294671, - 0.00630521417349021, - -0.005346909900747239 + -0.999631179579923, + 0.01525420908020308, + -0.022468064335615233 ], "axis_id": 0, - "theta_rad": 2.1269870067889833, - "theta_alt_rad": -1.0146056468008098, - "score_theta": 2.1639401669822225, - "score_theta_alt": 1.3745974432028025, - "best_score": 1.3745974432028025, + "theta_rad": -1.2158253615337913, + "theta_alt_rad": 1.925767292056002, + "score_theta": 1.210726275397398, + "score_theta_alt": 0.5394744999967191, + "best_score": 0.5394744999967191, "per_marker": [ { "marker_id": 246, @@ -2792,22 +2792,22 @@ "link": "Arm2", "joint_variable": "a", "joint_type": "revolute", - "old": -0.9168044723458806, - "new": -0.9415837130435447, + "old": -0.9280827828682447, + "new": -1.1466874518758399, "info": { "reason": "2d_alignment+normal_tiebreak", "used_markers": 5, "axis_world": [ - -0.007268767427366146, - -0.36245200712450737, - 0.9319740916728871 + -0.018222036397425166, + 0.236688320500357, + 0.9714147396072654 ], "axis_id": 2, - "theta_rad": -0.9415837130435445, - "theta_alt_rad": 2.2000089405462484, - "score_theta": 1.054826916033487, - "score_theta_alt": 1.3239486124763613, - "best_score": 1.054826916033487, + "theta_rad": -1.1466874518758399, + "theta_alt_rad": 1.9949052017139532, + "score_theta": 0.3580336246587261, + "score_theta_alt": 0.4172551491372727, + "best_score": 0.3580336246587261, "per_marker": [ { "marker_id": 120, @@ -2882,950 +2882,950 @@ }, "marker_stats": { "num_markers_used": 47, - "mean_error_m": 0.07951549317070679, - "rms_error_m": 0.17716738948089994, - "median_error_m": 0.006823802119378733, - "worst_error_m": 0.48127974586886396 + "mean_error_m": 0.059486942035126236, + "rms_error_m": 0.1095094670694353, + "median_error_m": 0.01746425224429604, + "worst_error_m": 0.3504914440162874 }, "marker_reports": [ { "marker_id": 46, "link": "Board", "error_m": [ - -0.012685824952448077, - -0.009649285475931024, - 0.013323395661109926 + 0.007895331762659885, + -0.0006314475403442765, + -0.018285418768428742 ], - "error_norm_m": 0.020773823356875123, + "error_norm_m": 0.019927155571618317, "predicted_m": [ - 0.5395058025150521, - 0.1854026757912692, - -0.031239134022212588 + 0.5420655315117168, + 0.18774100566056906, + -0.04278882179590794 ], "observed_m": [ - 0.5521916274675002, - 0.19505196126720023, - -0.04456252968332251 + 0.5341701997490569, + 0.18837245320091334, + -0.0245034030274792 ] }, { "marker_id": 47, "link": "Board", "error_m": [ - 0.0014997958733345418, - 0.003055467265318912, - 0.0021079601686610737 + -0.00216719129998999, + 0.008630400445827136, + 0.006567463574039992 ], - "error_norm_m": 0.004003593878475735, + "error_norm_m": 0.011059480448123576, "predicted_m": [ - 0.3440265090521209, - -0.28532053889803843, - -0.026637853787601206 + 0.34191911988364, + -0.28061479516913906, + -0.02284067547682586 ], "observed_m": [ - 0.34252671317878636, - -0.28837600616335735, - -0.02874581395626228 + 0.34408631118363, + -0.2892451956149662, + -0.029408139050865853 ] }, { "marker_id": 51, "link": "Board", "error_m": [ - -0.00026502809332140664, - 0.001168205409359413, - 0.001015800525628361 + 0.0019825139298365047, + 0.010321285886508186, + -0.0032476596525796604 ], - "error_norm_m": 0.0015706032206044367, + "error_norm_m": 0.011000299861913887, "predicted_m": [ - 0.16833149285762106, - -0.1697585761438859, - -0.02894665192132234 + 0.16743059040785033, + -0.16363035886570018, + -0.03269111933196293 ], "observed_m": [ - 0.16859652095094246, - -0.1709267815532453, - -0.029962452446950703 + 0.16544807647801382, + -0.17395164475220837, + -0.029443459679383267 ] }, { "marker_id": 53, "link": "Board", "error_m": [ - 0.0007678858513761044, - 0.0004644961936310088, - -0.0033898841612772547 + 0.010190425417623772, + -0.004685057942000026, + -0.013386768405419927 ], - "error_norm_m": 0.003506667937161957, + "error_norm_m": 0.01746425224429604, "predicted_m": [ - 0.48921820646832004, - 0.21251838631581146, - -0.03182864788118077 + 0.4920634878794713, + 0.2152716630703021, + -0.04530082004171401 ], "observed_m": [ - 0.48845032061694393, - 0.21205389012218046, - -0.028438763719903514 + 0.4818730624618475, + 0.21995672101230213, + -0.031914051636294086 ] }, { "marker_id": 55, "link": "Board", "error_m": [ - 0.0006390076116649657, - 0.0010172761897459526, - 0.0010893034975956103 + -0.000648024175633255, + 0.005926273650224356, + 0.0030121560446546916 ], - "error_norm_m": 0.0016216546129998943, + "error_norm_m": 0.0066793516711503124, "predicted_m": [ - 0.2836711695056911, - -0.2609812012824432, - -0.027247224503367903 + 0.2818242253683257, + -0.2557666927064896, + -0.025432423381026713 ], "observed_m": [ - 0.28303216189402614, - -0.26199847747218913, - -0.028336528000963514 + 0.28247224954395894, + -0.26169296635671396, + -0.028444579425681404 ] }, { "marker_id": 56, "link": "Board", "error_m": [ - -0.012227744641920446, - -0.01125009231546012, - 0.017219838969664836 + -0.02817326017385502, + -0.024584323572284905, + 0.04561768174620743 ], - "error_norm_m": 0.023929169861814613, + "error_norm_m": 0.05898384899469341, "predicted_m": [ - 0.501370300013414, - 0.16887399652923807, - -0.03124242042623228 + 0.5037746388264569, + 0.17157557112637584, + -0.04278084140591921 ], "observed_m": [ - 0.5135980446553344, - 0.1801240888446982, - -0.048462259395897114 + 0.5319478990003119, + 0.19615989469866074, + -0.08839852315212664 ] }, { "marker_id": 58, "link": "Board", "error_m": [ - 0.00010200428773012721, - 0.0007143951371397228, - 0.0008366871229240555 + -0.0036283215191368137, + 0.011792552986691573, + -0.007131376636709666 ], - "error_norm_m": 0.0011049029949960075, + "error_norm_m": 0.014250808949837483, "predicted_m": [ - 0.05033236684247467, - -0.21504218041637846, - -0.029026924917424007 + 0.049009411644326, + -0.20779768176560154, + -0.03296862268918871 ], "observed_m": [ - 0.05023036255474454, - -0.21575657555351818, - -0.029863612040348063 + 0.05263773316346281, + -0.2195902347522931, + -0.025837246052479043 ] }, { "marker_id": 61, "link": "Board", "error_m": [ - -0.008035233032862025, - -0.022841936137153296, - 0.022813009358264184 + -0.0039243565853280555, + -0.019787233763559453, + 0.0009600037431695824 ], - "error_norm_m": 0.033267888606980094, + "error_norm_m": 0.020195464882231715, "predicted_m": [ - -0.01864731034125329, - 0.33930435858295105, - -0.03602281907713707 + -0.01439283208295973, + 0.34644084776416645, + -0.06308558759315597 ], "observed_m": [ - -0.010612077308391265, - 0.36214629472010434, - -0.058835828435401256 + -0.010468475497631675, + 0.3662280815277259, + -0.06404559133632555 ] }, { "marker_id": 62, "link": "Board", "error_m": [ - 0.0008765545330541302, - 0.005792750641072625, - 0.0010183034070573825 + -0.001397680135084567, + 0.009276782057794891, + 0.0008861811743844303 ], - "error_norm_m": 0.005946532575197896, + "error_norm_m": 0.009423243188078538, "predicted_m": [ - 0.4052041639383518, - -0.17427200523384054, - -0.027643942080317778 + 0.40419370849303327, + -0.17025967833482727, + -0.02721312353440715 ], "observed_m": [ - 0.40432760940529766, - -0.18006475587491316, - -0.02866224548737516 + 0.40559138862811783, + -0.17953646039262217, + -0.02809930470879158 ] }, { "marker_id": 63, "link": "Board", "error_m": [ - -0.015866484772870892, - 0.007385919787924855, - 0.018405415867788058 + -0.016894642595327913, + 0.007560854561507152, + 0.025439453433518014 ], - "error_norm_m": 0.025397962190451977, + "error_norm_m": 0.03146047140651683, "predicted_m": [ - 0.7775026220733696, - -0.23766637616559638, - -0.024922856918993215 + 0.7757554261997703, + -0.23690592122668272, + -0.015699620886694507 ], "observed_m": [ - 0.7933691068462405, - -0.24505229595352124, - -0.04332827278678127 + 0.7926500687950983, + -0.24446677578818987, + -0.04113907432021252 ] }, { "marker_id": 64, "link": "Board", "error_m": [ - 0.0004754752120111304, - 0.001776790098072356, - -0.0031453833947510286 + -0.004552252702011261, + 0.013858071762736263, + -0.010677996191135613 ], - "error_norm_m": 0.0036436926914629486, + "error_norm_m": 0.01807729958544759, "predicted_m": [ - -0.020834899571155665, - -0.18471497254973585, - -0.029764931844771598 + -0.021834431673870613, + -0.176872701518174, + -0.03610860049214109 ], "observed_m": [ - -0.021310374783166795, - -0.1864917626478082, - -0.02661954845002057 + -0.017282178971859352, + -0.19073077328091026, + -0.025430604301005477 ] }, { "marker_id": 66, "link": "Board", "error_m": [ - -0.0012731108183965945, - 0.0006876176784452737, - -0.00044442338918422586 + -0.006401515405434849, + 0.0017781585298348723, + 0.004280175892847616 ], - "error_norm_m": 0.0015136516694678826, + "error_norm_m": 0.007903236863270524, "predicted_m": [ - 0.20906269359216248, - -0.3611556011891355, - -0.026442038068722286 + 0.20623150165506418, + -0.35514160775885684, + -0.02191819801185144 ], "observed_m": [ - 0.21033580441055907, - -0.36184321886758075, - -0.02599761467953806 + 0.21263301706049903, + -0.3569197662886917, + -0.026198373904699056 ] }, { "marker_id": 68, "link": "Board", "error_m": [ - 0.005999286726092401, - -0.0002343850347767129, - -0.011976844580479873 + 0.009920935536029796, + 0.0036147367659919716, + -0.026317210500698983 ], - "error_norm_m": 0.0133974319804717, + "error_norm_m": 0.028356425239010184, "predicted_m": [ - 0.5764302815395409, - 0.17037061006940427, - -0.030864635819792405 + 0.5788292540408758, + 0.17239787079977498, + -0.04119592555242797 ], "observed_m": [ - 0.5704309948134485, - 0.17060499510418098, - -0.018887791239312533 + 0.568908318504846, + 0.168783134033783, + -0.014878715051728992 ] }, { "marker_id": 69, "link": "Board", "error_m": [ - -0.0064527243033683365, - 0.004026989242448709, - -0.008238690505665277 + -0.009765747793697124, + 0.010144855342052395, + -0.008205682086978694 ], - "error_norm_m": 0.011212952980469383, + "error_norm_m": 0.016297887543906795, "predicted_m": [ - 0.007451957280249863, - -0.277868565076297, - -0.028501314472499078 + 0.005510649546115061, + -0.2701576935695941, + -0.03067798440933005 ], "observed_m": [ - 0.0139046815836182, - -0.2818955543187457, - -0.0202626239668338 + 0.015276397339812184, + -0.2803025489116465, + -0.022472302322351357 ] }, { "marker_id": 72, "link": "Board", "error_m": [ - 0.002320191052193332, - -0.005075666293755082, - 0.0012102579833339552 + 0.01206183061354199, + -0.0026924053683481386, + -0.012113612864273517 ], - "error_norm_m": 0.005710551569722755, + "error_norm_m": 0.01730538705267182, "predicted_m": [ - 0.4438456271017049, - 0.19488539890785356, - -0.03185687359664922 + 0.4465264092455869, + 0.1980681929781142, + -0.04539614201517998 ], "observed_m": [ - 0.44152543604951155, - 0.19996106520160864, - -0.03306713157998317 + 0.4344645786320449, + 0.20076059834646234, + -0.033282529150906466 ] }, { "marker_id": 73, "link": "Board", "error_m": [ - 0.007409800631797803, - -0.006184057295090251, - -0.00213737086075539 + 0.0015939358789230362, + 0.01307317060974833, + -0.03553258191354361 ], - "error_norm_m": 0.009885143611923719, + "error_norm_m": 0.037894759516592685, "predicted_m": [ - 0.22547702357625732, - 0.3350451892583431, - -0.034684922969039106 + 0.22962253010294684, + 0.3400004979286803, + -0.05746012660960818 ], "observed_m": [ - 0.21806722294445952, - 0.34122924655343334, - -0.032547552108283716 + 0.2280285942240238, + 0.326927327318932, + -0.021927544696064564 ] }, { "marker_id": 75, "link": "Board", "error_m": [ - 0.004076281668749196, - 0.0007523988483592314, - 0.00040251454901708145 + -0.0010134425856457747, + -0.015618359499804751, + 0.005265080475666747 ], - "error_norm_m": 0.004164636146431457, + "error_norm_m": 0.016513064275136487, "predicted_m": [ - -0.022826768775181208, - 0.19808795553617334, - -0.034355324630626884 + -0.019987203644106936, + 0.20544680077663746, + -0.05589513413636127 ], "observed_m": [ - -0.026903050443930404, - 0.1973355566878141, - -0.034757839179643965 + -0.01897376105846116, + 0.2210651602764422, + -0.061160214612028016 ] }, { "marker_id": 79, "link": "Board", "error_m": [ - 0.0008208092470192718, - 0.0014626614911158742, - 0.0020261612549668136 + 0.00047735424737849197, + 0.006572400528108202, + -0.000397956849068775 ], - "error_norm_m": 0.0026302919778447317, + "error_norm_m": 0.006601718369719206, "predicted_m": [ - 0.31290915610661896, - -0.15770086556423232, - -0.028328748177466927 + 0.3120899194987721, + -0.15288350019892974, + -0.03011150002654553 ], "observed_m": [ - 0.3120883468595997, - -0.1591635270553482, - -0.03035490943243374 + 0.3116125652513936, + -0.15945590072703794, + -0.029713543177476754 ] }, { "marker_id": 82, "link": "Board", "error_m": [ - 0.004620758816891002, - -0.006660642371294712, - 0.004753340368137474 + 0.007144984498683116, + -0.1226123391767675, + 0.1569432012310248 ], - "error_norm_m": 0.009397330126026629, + "error_norm_m": 0.19928874763650617, "predicted_m": [ - 0.22267866825354082, - 0.2991946735990578, - -0.03427075579123611 + 0.22646544327444398, + 0.304221993790752, + -0.055673161470176646 ], "observed_m": [ - 0.21805790943664982, - 0.30585531597035254, - -0.039024096159373585 + 0.21932045877576087, + 0.4268343329675195, + -0.21261636270120143 ] }, { "marker_id": 83, "link": "Board", "error_m": [ - 0.005418482748924862, - 0.004927118208021497, - -0.008572161024609653 + -0.0042926929946417725, + -0.013398273717934894, + -0.005745035140862921 ], - "error_norm_m": 0.011274679319965165, + "error_norm_m": 0.015196920100359194, "predicted_m": [ - 0.047952004101645365, - 0.342274247442862, - -0.0357072625914086 + 0.05221818580454903, + 0.348810280462645, + -0.06176400343867677 ], "observed_m": [ - 0.0425335213527205, - 0.3373471292348405, - -0.027135101566798946 + 0.056510878799190804, + 0.3622085541805799, + -0.05601896829781385 ] }, { "marker_id": 84, "link": "Board", "error_m": [ - 0.0042035394232649015, - -0.004062165066029411, - -0.001160529984860395 + 0.017540563212802673, + -0.010434471361215614, + -0.013233216494029719 ], - "error_norm_m": 0.005959677722190355, + "error_norm_m": 0.02432421775079757, "predicted_m": [ - 0.410755001782214, - 0.2591907623010232, - -0.032800671688123485 + 0.41408958781511274, + 0.26258576175293025, + -0.04944533142473166 ], "observed_m": [ - 0.4065514623589491, - 0.26325292736705264, - -0.03164014170326309 + 0.39654902460231006, + 0.27302023311414586, + -0.03621211493070194 ] }, { "marker_id": 85, "link": "Board", "error_m": [ - 0.00025609833219297773, - 0.0015252105778676972, - 0.004000367524038789 + -0.00026024434744487124, + 0.000995853133054947, + 0.012418126233019036 ], - "error_norm_m": 0.004288915246303635, + "error_norm_m": 0.012460710642743773, "predicted_m": [ - 0.5042041073073622, - -0.31253918335750047, - -0.025467806364690516 + 0.5017803060025984, + -0.3092325977374013, + -0.017890003926044614 ], "observed_m": [ - 0.5039480089751692, - -0.31406439393536817, - -0.029468173888729306 + 0.5020405503500432, + -0.31022845087045625, + -0.03030813015906365 ] }, { "marker_id": 86, "link": "Board", "error_m": [ - 0.005073142385576934, - -0.002882827650883657, - -0.00277504259692744 + 0.005119978759483168, + 0.0051937441900155035, + -0.024585506760890694 ], - "error_norm_m": 0.006461294788492351, + "error_norm_m": 0.025644420521795393, "predicted_m": [ - 0.3663704485521694, - 0.293058903395277, - -0.03343985350032342 + 0.370056694732192, + 0.29680713079718124, + -0.05217486022752074 ], "observed_m": [ - 0.36129730616659245, - 0.29594173104616067, - -0.03066481090339598 + 0.3649367159727088, + 0.29161338660716574, + -0.027589353466630048 ] }, { "marker_id": 92, "link": "Board", "error_m": [ - -0.0022231448409536503, - 0.002027638456878089, - 0.0009436235838031978 + -0.0040650859796993455, + 0.00716592616144629, + 0.005916398562679989 ], - "error_norm_m": 0.003153429270425988, + "error_norm_m": 0.010142938120984983, "predicted_m": [ - 0.6455239184881204, - -0.1855268250468046, - -0.026242405738769736 + 0.6443353751026841, + -0.18365243834182884, + -0.021311120710433118 ], "observed_m": [ - 0.6477470633290741, - -0.18755446350368268, - -0.027186029322572934 + 0.6484004610823835, + -0.19081836450327513, + -0.027227519273113107 ] }, { "marker_id": 95, "link": "Board", "error_m": [ - 0.0008970886199909656, - 0.001369673710777508, - 0.002558847672888321 + -0.002655917912978728, + 0.006827652227407333, + -0.00022795801062122645 ], - "error_norm_m": 0.0030378405947577795, + "error_norm_m": 0.007329577051474933, "predicted_m": [ - 0.1859213318573731, - -0.27185425732038365, - -0.027632441485459517 + 0.1839918904792754, + -0.2657499110383315, + -0.027036200764427018 ], "observed_m": [ - 0.18502424323738215, - -0.27322393103116116, - -0.030191289158347838 + 0.18664780839225412, + -0.27257756326573884, + -0.02680824275380579 ] }, { "marker_id": 96, "link": "Board", "error_m": [ - 0.0016048708315765103, - 0.003033724580266406, - 0.002550677091032117 + -0.0003330489368492118, + 0.006534855641922105, + 0.0016518584152897288 ], - "error_norm_m": 0.0042761020611853644, + "error_norm_m": 0.0067486217910963904, "predicted_m": [ - 0.370202818787732, - -0.18544072260513306, - -0.027694833409366182 + 0.3690898694722732, + -0.181100244069962, + -0.027412172640893313 ], "observed_m": [ - 0.36859794795615547, - -0.18847444718539946, - -0.0302455105003983 + 0.3694229184091224, + -0.1876350997118841, + -0.02906403105618304 ] }, { "marker_id": 97, "link": "Board", "error_m": [ - -0.0007633652578301064, - -0.006294814223912815, - 0.0025212819624152658 + 0.0002234266098899429, + -0.001703688491849431, + 0.008865359330947977 ], - "error_norm_m": 0.006823802119378733, + "error_norm_m": 0.009030341632191633, "predicted_m": [ - 0.3036821331717976, - -0.3581923999751065, - -0.025978689171064048 + 0.30085497208872897, + -0.35302984583077157, + -0.019975801386937803 ], "observed_m": [ - 0.3044454984296277, - -0.3518975857511937, - -0.028499971133479313 + 0.300631545478839, + -0.35132615733892214, + -0.02884116071788578 ] }, { "marker_id": 102, "link": "Board", "error_m": [ - -0.004217172044255979, - 0.0012818222005649416, - 0.007364179515894815 + -0.006605472273244595, + 0.005727217418135866, + 0.015832561515091527 ], - "error_norm_m": 0.008582467485929678, + "error_norm_m": 0.01808599699868269, "predicted_m": [ - 0.6498807339562016, - -0.22371233969491253, - -0.025762582817033888 + 0.6483081027262264, + -0.22182697671650253, + -0.019245290342345872 ], "observed_m": [ - 0.6540979060004576, - -0.22499416189547747, - -0.0331267623329287 + 0.654913574999471, + -0.2275541941346384, + -0.0350778518574374 ] }, { "marker_id": 103, "link": "Board", "error_m": [ - -0.0005248079291564622, - 0.0020058196713332588, - -0.0015791934782283593 + -0.0004628579451216863, + 0.011151957883560049, + -0.005196230324720625 ], - "error_norm_m": 0.002606259380432412, + "error_norm_m": 0.012311832182969584, "predicted_m": [ - 0.10614407281302585, - -0.18499565619410507, - -0.029092184530364915 + 0.10510726012716916, + -0.17829043906142777, + -0.033282348035566865 ], "observed_m": [ - 0.10666888074218231, - -0.18700147586543833, - -0.027512991052136556 + 0.10557011807229084, + -0.18944239694498782, + -0.02808611771084624 ] }, { "marker_id": 105, "link": "Board", "error_m": [ - -0.0016530819970690391, - 0.00242105838692408, - 0.0029719622723411374 + -0.0007442236148308412, + 0.003659016775769186, + 0.009758098129132975 ], - "error_norm_m": 0.00417453752530125, + "error_norm_m": 0.010448097992075911, "predicted_m": [ - 0.5247595567590854, - -0.2661711789404367, - -0.025914196571593565 + 0.5227951312590223, + -0.2631094373451257, + -0.019826184411018216 ], "observed_m": [ - 0.5264126387561544, - -0.26859223732736076, - -0.028886158843934702 + 0.5235393548738532, + -0.2667684541208949, + -0.02958428254015119 ] }, { "marker_id": 114, "link": "Arm2", "error_m": [ - -0.01967945957874967, - 0.40626224724922766, - 0.15146710852498407 + -0.014782037951953764, + 0.1628706212016688, + -0.056772314865493 ], - "error_norm_m": 0.43402601262392504, + "error_norm_m": 0.17311396140062527, "predicted_m": [ - 0.2515887414118118, - 0.16267220151381032, - 0.41350957882222195 + 0.25533097100129737, + -0.11781772333346427, + 0.19866687076756162 ], "observed_m": [ - 0.2712682009905615, - -0.24359004573541737, - 0.2620424702972379 + 0.27011300895325113, + -0.2806883445351331, + 0.2554391856330546 ] }, { "marker_id": 115, "link": "Arm2", "error_m": [ - -0.08263831836352861, - 0.43026185478832807, - 0.19918794751629437 + -0.06721826018371904, + 0.1446860864842704, + -0.03236082057013592 ], - "error_norm_m": 0.48127974586886396, + "error_norm_m": 0.16278691849234217, "predicted_m": [ - 0.22261618572133193, - 0.20015405405421124, - 0.42786059784133973 + 0.2358772311823024, + -0.073679718013855, + 0.18754758601309227 ], "observed_m": [ - 0.30525450408486055, - -0.23010780073411682, - 0.22867265032504536 + 0.30309549136602143, + -0.2183658044981254, + 0.2199084065832282 ] }, { "marker_id": 120, "link": "Arm2", "error_m": [ - -0.010468650802462287, - 0.36994895722319115, - 0.054306307323150615 + -0.01817078385619042, + 0.09414906378804294, + -0.1482526394575604 ], - "error_norm_m": 0.3740601537389767, + "error_norm_m": 0.17655896664923806, "predicted_m": [ - 0.2520975551317268, - 0.1880438420124955, - 0.34827139240519783 + 0.2566065135491158, + -0.1343859057684713, + 0.13066783899512674 ], "observed_m": [ - 0.2625662059341891, - -0.18190511521069566, - 0.2939650850820472 + 0.2747772974053062, + -0.22853496955651423, + 0.27892047845268714 ] }, { "marker_id": 205, "link": "Board", "error_m": [ - 0.001425331050775469, - 0.003360710169565073, - -0.011089866759590186 + 0.014332872658958107, + 0.019444247927015365, + -0.032248762424642204 ], - "error_norm_m": 0.011675233881750983, + "error_norm_m": 0.04029258857440367, "predicted_m": [ - 0.7508888500677534, - -0.09102679627230495, - 0.0007847926887032176 + 0.7501638786079469, + -0.08912197428897047, + 0.0037251112701953155 ], "observed_m": [ - 0.7494635190169779, - -0.09438750644187002, - 0.011874659448293403 + 0.7358310059489888, + -0.10856622221598583, + 0.03597387369483752 ] }, { "marker_id": 206, "link": "Board", "error_m": [ - 0.004417582605729442, - 0.0034371783095402033, - -0.007928626745045336 + 0.0030432648939281437, + -0.0007510465654346253, + -0.006402658259601998 ], - "error_norm_m": 0.00970527448721906, + "error_norm_m": 0.007128784254507659, "predicted_m": [ - 0.651401758653761, - -0.010403590027052035, - -0.0007042528845845903 + 0.651512240319729, + -0.007713180188276315, + -0.002635903281069312 ], "observed_m": [ - 0.6469841760480316, - -0.013840768336592238, - 0.007224373860460745 + 0.6484689754258008, + -0.006962133622841689, + 0.0037667549785326865 ] }, { "marker_id": 207, "link": "Board", "error_m": [ - 0.004538146533493492, - 0.003396137731705844, - -0.012334950443628177 + 0.002108795921038853, + -0.005278021166740238, + -0.003292708202213847 ], - "error_norm_m": 0.013574959591060965, + "error_norm_m": 0.006568596119268898, "predicted_m": [ - 0.7513983413368077, - -0.011034111444401688, - -0.00016956189450933155 + 0.7514753582778212, + -0.009238601096298147, + -0.00038909684750553994 ], "observed_m": [ - 0.7468601948033142, - -0.014430249176107532, - 0.012165388549118845 + 0.7493665623567823, + -0.0039605799295579095, + 0.002903611354708307 ] }, { "marker_id": 208, "link": "Board", "error_m": [ - 0.0024300150463291703, - 0.003007354145040428, - -0.0035371785130940453 + 0.0005659718848211592, + 0.005974973451685045, + -0.010586207674555946 ], - "error_norm_m": 0.005240303799644845, + "error_norm_m": 0.012169158756938638, "predicted_m": [ - 0.35090251933556676, - -0.08850471060290635, - -0.001353971271597816 + 0.35031140677557776, + -0.08302029065688313, + -0.005262114464059768 ], "observed_m": [ - 0.3484725042892376, - -0.09151206474794678, - 0.002183207241496229 + 0.3497454348907566, + -0.08899526410856817, + 0.005324093210496179 ] }, { "marker_id": 210, "link": "Board", "error_m": [ - 0.00311325211669285, - 0.0013000795136633124, - -0.004188782755158783 + 0.0035239332237271027, + 0.008874902306851047, + -0.019692754042329164 ], - "error_norm_m": 0.005378517124064509, + "error_norm_m": 0.0218857615378837, "predicted_m": [ - 0.021359601341935174, - -0.01643039070123714, - -0.00395351179915715 + 0.0215806622250132, + -0.0080884501168228, + -0.01627650779780846 ], "observed_m": [ - 0.018246349225242323, - -0.017730470214900453, - 0.00023527095600163288 + 0.018056729001286097, + -0.016963352423673847, + 0.003416246244520705 ] }, { "marker_id": 211, "link": "Board", "error_m": [ - 0.0012021663450060838, - 0.0036674520960670483, - -0.009075339052334019 + 0.0018608685919185297, + 0.007536852132166777, + -0.016705736727285002 ], - "error_norm_m": 0.009861905886431425, + "error_norm_m": 0.018421417197921956, "predicted_m": [ - 0.2514154279215743, - -0.00788150435765343, - -0.002843016844885624 + 0.25165976848735977, + -0.0016114965561889781, + -0.011623129015324394 ], "observed_m": [ - 0.2502132615765682, - -0.011548956453720479, - 0.0062323222074483955 + 0.24979889989544124, + -0.009148348688355755, + 0.005082607711960607 ] }, { "marker_id": 214, "link": "Board", "error_m": [ - 0.0012373542216077005, - 0.0031460461405335635, - -0.00901503003888733 + 0.0015684750862626218, + 0.00574582775206614, + -0.013908941678217828 ], - "error_norm_m": 0.009628053717659525, + "error_norm_m": 0.01513054226591714, "predicted_m": [ - 0.351412010604621, - -0.008512025775003082, - -0.0023083258548103652 + 0.35162288644545203, + -0.0031369174642108125, + -0.009376322581760623 ], "observed_m": [ - 0.3501746563830133, - -0.011658071915536646, - 0.006706704184076964 + 0.3500544113591894, + -0.008882745216276952, + 0.004532619096457205 ] }, { "marker_id": 215, "link": "Board", "error_m": [ - -0.00011825939198178981, - 0.0036032087497955695, - -0.004835824521741555 + 0.000845131230164442, + 0.007216838764547803, + -0.011914373933465288 ], - "error_norm_m": 0.006031773983122394, + "error_norm_m": 0.013955261186237836, "predicted_m": [ - 0.25090593665252003, - -0.08787418918555669, - -0.0018886622616730749 + 0.25034828881748544, + -0.0814948697488613, + -0.007508920897623539 ], "observed_m": [ - 0.2510241960445018, - -0.09147739793535226, - 0.0029471622600684808 + 0.249503157587321, + -0.08871170851340911, + 0.004405453035841749 ] }, { "marker_id": 217, "link": "Board", "error_m": [ - 0.0008810603033599929, - 0.0033206712331084742, - -0.003707805550344541 + -0.004014614981723508, + 0.017577259273614684, + -0.004377445959401687 ], - "error_norm_m": 0.005054794426652457, + "error_norm_m": 0.01855368454379977, "predicted_m": [ - 0.6508922673847067, - -0.0903962748549553, - 0.00025010169862795884 + 0.6502007606498547, + -0.08759655338094864, + 0.0014783048366315433 ], "observed_m": [ - 0.6500112070813467, - -0.09371694608806377, - 0.0039579072489725 + 0.6542153756315782, + -0.10517381265456333, + 0.0058557507960332305 ] }, { "marker_id": 218, "link": "Arm2", "error_m": [ - 0.04023284343235667, - 0.3839854893612175, - 0.050314152934565426 + 0.04950680404494656, + 0.1345840460010035, + -0.16638870705675796 ], - "error_norm_m": 0.38935209222007405, + "error_norm_m": 0.21965652942893496, "predicted_m": [ - 0.2781637582858243, - 0.1937311268314266, - 0.3506865206649456 + 0.2833888700976032, + -0.1339754609325824, + 0.13107022281846548 ], "observed_m": [ - 0.23793091485346762, - -0.19025436252979092, - 0.3003723677303802 + 0.23388206605265666, + -0.2685595069335859, + 0.29745892987522343 ] }, { "marker_id": 219, "link": "Arm2", "error_m": [ - 0.035933531300229776, - 0.4322291862527531, - 0.19627565765974186 + 0.04476113409704152, + 0.2314446600378962, + -0.02210347790619588 ], - "error_norm_m": 0.4760645144412529, + "error_norm_m": 0.23676729825138515, "predicted_m": [ - 0.27738600017109705, - 0.15494876206915068, - 0.45040774847382536 + 0.2814391122030808, + -0.10864981063907166, + 0.2350115999563302 ], "observed_m": [ - 0.24145246887086727, - -0.2772804241836024, - 0.2541320908140835 + 0.2366779781060393, + -0.34009447067696785, + 0.2571150778625261 ] }, { "marker_id": 243, "link": "Arm1", "error_m": [ - 0.0038124084775218448, - 0.3954717006272385, - -0.05842227539207423 + -0.00018028307531864352, + -0.012541878970393217, + -0.3052342790434493 ], - "error_norm_m": 0.39978189393391367, + "error_norm_m": 0.3054918924182269, "predicted_m": [ - 0.1684780391168424, - 0.2824007048092649, - 0.28396750666767495 + 0.18126860236063563, + -0.16266377614189548, + 0.00832619273972722 ], "observed_m": [ - 0.16466563063932055, - -0.11307099581797364, - 0.3423897820597492 + 0.18144888543595428, + -0.15012189717150226, + 0.31356047178317653 ] }, { "marker_id": 246, "link": "Ellbow", "error_m": [ - 0.027331088081852195, - 0.4302052560808246, - -0.09477622480943493 + 0.025566209128707024, + 0.09948415914479554, + -0.3351022580626137 ], - "error_norm_m": 0.4413684215306238, + "error_norm_m": 0.3504914440162874, "predicted_m": [ - 0.25863005523091, - 0.2934474104086792, - 0.26913959838714596 + 0.27237933182351887, + -0.09527455654199339, + 0.006138344269945348 ], "observed_m": [ - 0.2312989671490578, - -0.13675784567214536, - 0.3639158231965809 + 0.24681312269481184, + -0.19475871568678893, + 0.34124060233255904 ] }, { "marker_id": 247, "link": "Ellbow", "error_m": [ - 0.020838416806033017, - 0.4130448595660687, - -0.08305273185847051 + -0.0007444969131721602, + 0.04915574282119581, + -0.3126655907735418 ], - "error_norm_m": 0.4218270402642419, + "error_norm_m": 0.31650689247112007, "predicted_m": [ - 0.22113133672492216, - 0.29368385594018437, - 0.26893908926586857 + 0.23489316258933635, + -0.09470252370148677, + 0.005295791857361229 ], "observed_m": [ - 0.20029291991888915, - -0.11936100362588432, - 0.3519918211243391 + 0.2356376595025085, + -0.14385826652268258, + 0.317961382630903 ] } ], @@ -3838,1001 +3838,1001 @@ "marker_id": 40, "link": "FingerA", "observed_position_m": [ - 0.26754171267144905, - -0.36415485234896816, - 0.22944715198027135 + 0.2710032327553874, + -0.37105364411720365, + 0.24053356389733796 ], "predicted_position_m": [ - 0.25174667303542936, - 0.1274232408754857, - 0.5360720968750458 + 0.2566110521159071, + -0.07700427474146507, + 0.3194837106794734 ], "error_m": [ - -0.015795039636019692, - 0.4915780932244539, - 0.30662494489477443 + -0.014392180639480279, + 0.29404936937573856, + 0.07895014678213544 ], - "error_norm_m": 0.5795837832850543 + "error_norm_m": 0.30480369448343253 }, { "marker_id": 42, "link": "FingerA", "observed_position_m": [ - 0.28744698956709797, - -0.35168719844503543, - 0.22878287262176375 + 0.2870415300851357, + -0.3180461147228875, + 0.20905277320173554 ], "predicted_position_m": [ - 0.26660680976708595, - 0.1294771256461373, - 0.5541546269430921 + 0.272787193498394, + -0.06831317410110509, + 0.3341403548939538 ], "error_m": [ - -0.020840179800012015, - 0.4811643240911727, - 0.32537175432132837 + -0.014254336586741745, + 0.24973294062178242, + 0.12508758169221823 ], - "error_norm_m": 0.5812230194876583 + "error_norm_m": 0.27967236337675233 }, { "marker_id": 44, "link": "FingerB", "observed_position_m": [ - 0.3114364422937876, - -0.2851633006382941, - 0.21856212483615103 + 0.3060059381865538, + -0.2646984952147587, + 0.22392474325241385 ], "predicted_position_m": [ - 0.23226729608216232, - 0.1468772769187186, - 0.5200947893692511 + 0.24056029259064393, + -0.06635004369310933, + 0.294145192975678 ], "error_m": [ - -0.07916914621162527, - 0.4320405775570127, - 0.3015326645331001 + -0.06544564559590987, + 0.19834845152164937, + 0.07022044972326413 ], - "error_norm_m": 0.5327745884969608 + "error_norm_m": 0.2203546058239741 }, { "marker_id": 46, "link": "Board", "observed_position_m": [ - 0.5521916274675002, - 0.19505196126720023, - -0.04456252968332251 + 0.5341701997490569, + 0.18837245320091334, + -0.0245034030274792 ], "predicted_position_m": [ - 0.5395058025150521, - 0.1854026757912692, - -0.031239134022212588 + 0.5420655315117168, + 0.18774100566056906, + -0.04278882179590794 ], "error_m": [ - -0.012685824952448077, - -0.009649285475931024, - 0.013323395661109926 + 0.007895331762659885, + -0.0006314475403442765, + -0.018285418768428742 ], - "error_norm_m": 0.020773823356875123 + "error_norm_m": 0.019927155571618317 }, { "marker_id": 47, "link": "Board", "observed_position_m": [ - 0.34252671317878636, - -0.28837600616335735, - -0.02874581395626228 + 0.34408631118363, + -0.2892451956149662, + -0.029408139050865853 ], "predicted_position_m": [ - 0.3440265090521209, - -0.28532053889803843, - -0.026637853787601206 + 0.34191911988364, + -0.28061479516913906, + -0.02284067547682586 ], "error_m": [ - 0.0014997958733345418, - 0.003055467265318912, - 0.0021079601686610737 + -0.00216719129998999, + 0.008630400445827136, + 0.006567463574039992 ], - "error_norm_m": 0.004003593878475735 + "error_norm_m": 0.011059480448123576 }, { "marker_id": 51, "link": "Board", "observed_position_m": [ - 0.16859652095094246, - -0.1709267815532453, - -0.029962452446950703 + 0.16544807647801382, + -0.17395164475220837, + -0.029443459679383267 ], "predicted_position_m": [ - 0.16833149285762106, - -0.1697585761438859, - -0.02894665192132234 + 0.16743059040785033, + -0.16363035886570018, + -0.03269111933196293 ], "error_m": [ - -0.00026502809332140664, - 0.001168205409359413, - 0.001015800525628361 + 0.0019825139298365047, + 0.010321285886508186, + -0.0032476596525796604 ], - "error_norm_m": 0.0015706032206044367 + "error_norm_m": 0.011000299861913887 }, { "marker_id": 53, "link": "Board", "observed_position_m": [ - 0.48845032061694393, - 0.21205389012218046, - -0.028438763719903514 + 0.4818730624618475, + 0.21995672101230213, + -0.031914051636294086 ], "predicted_position_m": [ - 0.48921820646832004, - 0.21251838631581146, - -0.03182864788118077 + 0.4920634878794713, + 0.2152716630703021, + -0.04530082004171401 ], "error_m": [ - 0.0007678858513761044, - 0.0004644961936310088, - -0.0033898841612772547 + 0.010190425417623772, + -0.004685057942000026, + -0.013386768405419927 ], - "error_norm_m": 0.003506667937161957 + "error_norm_m": 0.01746425224429604 }, { "marker_id": 55, "link": "Board", "observed_position_m": [ - 0.28303216189402614, - -0.26199847747218913, - -0.028336528000963514 + 0.28247224954395894, + -0.26169296635671396, + -0.028444579425681404 ], "predicted_position_m": [ - 0.2836711695056911, - -0.2609812012824432, - -0.027247224503367903 + 0.2818242253683257, + -0.2557666927064896, + -0.025432423381026713 ], "error_m": [ - 0.0006390076116649657, - 0.0010172761897459526, - 0.0010893034975956103 + -0.000648024175633255, + 0.005926273650224356, + 0.0030121560446546916 ], - "error_norm_m": 0.0016216546129998943 + "error_norm_m": 0.0066793516711503124 }, { "marker_id": 56, "link": "Board", "observed_position_m": [ - 0.5135980446553344, - 0.1801240888446982, - -0.048462259395897114 + 0.5319478990003119, + 0.19615989469866074, + -0.08839852315212664 ], "predicted_position_m": [ - 0.501370300013414, - 0.16887399652923807, - -0.03124242042623228 + 0.5037746388264569, + 0.17157557112637584, + -0.04278084140591921 ], "error_m": [ - -0.012227744641920446, - -0.01125009231546012, - 0.017219838969664836 + -0.02817326017385502, + -0.024584323572284905, + 0.04561768174620743 ], - "error_norm_m": 0.023929169861814613 + "error_norm_m": 0.05898384899469341 }, { "marker_id": 58, "link": "Board", "observed_position_m": [ - 0.05023036255474454, - -0.21575657555351818, - -0.029863612040348063 + 0.05263773316346281, + -0.2195902347522931, + -0.025837246052479043 ], "predicted_position_m": [ - 0.05033236684247467, - -0.21504218041637846, - -0.029026924917424007 + 0.049009411644326, + -0.20779768176560154, + -0.03296862268918871 ], "error_m": [ - 0.00010200428773012721, - 0.0007143951371397228, - 0.0008366871229240555 + -0.0036283215191368137, + 0.011792552986691573, + -0.007131376636709666 ], - "error_norm_m": 0.0011049029949960075 + "error_norm_m": 0.014250808949837483 }, { "marker_id": 61, "link": "Board", "observed_position_m": [ - -0.010612077308391265, - 0.36214629472010434, - -0.058835828435401256 + -0.010468475497631675, + 0.3662280815277259, + -0.06404559133632555 ], "predicted_position_m": [ - -0.01864731034125329, - 0.33930435858295105, - -0.03602281907713707 + -0.01439283208295973, + 0.34644084776416645, + -0.06308558759315597 ], "error_m": [ - -0.008035233032862025, - -0.022841936137153296, - 0.022813009358264184 + -0.0039243565853280555, + -0.019787233763559453, + 0.0009600037431695824 ], - "error_norm_m": 0.033267888606980094 + "error_norm_m": 0.020195464882231715 }, { "marker_id": 62, "link": "Board", "observed_position_m": [ - 0.40432760940529766, - -0.18006475587491316, - -0.02866224548737516 + 0.40559138862811783, + -0.17953646039262217, + -0.02809930470879158 ], "predicted_position_m": [ - 0.4052041639383518, - -0.17427200523384054, - -0.027643942080317778 + 0.40419370849303327, + -0.17025967833482727, + -0.02721312353440715 ], "error_m": [ - 0.0008765545330541302, - 0.005792750641072625, - 0.0010183034070573825 + -0.001397680135084567, + 0.009276782057794891, + 0.0008861811743844303 ], - "error_norm_m": 0.005946532575197896 + "error_norm_m": 0.009423243188078538 }, { "marker_id": 63, "link": "Board", "observed_position_m": [ - 0.7933691068462405, - -0.24505229595352124, - -0.04332827278678127 + 0.7926500687950983, + -0.24446677578818987, + -0.04113907432021252 ], "predicted_position_m": [ - 0.7775026220733696, - -0.23766637616559638, - -0.024922856918993215 + 0.7757554261997703, + -0.23690592122668272, + -0.015699620886694507 ], "error_m": [ - -0.015866484772870892, - 0.007385919787924855, - 0.018405415867788058 + -0.016894642595327913, + 0.007560854561507152, + 0.025439453433518014 ], - "error_norm_m": 0.025397962190451977 + "error_norm_m": 0.03146047140651683 }, { "marker_id": 64, "link": "Board", "observed_position_m": [ - -0.021310374783166795, - -0.1864917626478082, - -0.02661954845002057 + -0.017282178971859352, + -0.19073077328091026, + -0.025430604301005477 ], "predicted_position_m": [ - -0.020834899571155665, - -0.18471497254973585, - -0.029764931844771598 + -0.021834431673870613, + -0.176872701518174, + -0.03610860049214109 ], "error_m": [ - 0.0004754752120111304, - 0.001776790098072356, - -0.0031453833947510286 + -0.004552252702011261, + 0.013858071762736263, + -0.010677996191135613 ], - "error_norm_m": 0.0036436926914629486 + "error_norm_m": 0.01807729958544759 }, { "marker_id": 66, "link": "Board", "observed_position_m": [ - 0.21033580441055907, - -0.36184321886758075, - -0.02599761467953806 + 0.21263301706049903, + -0.3569197662886917, + -0.026198373904699056 ], "predicted_position_m": [ - 0.20906269359216248, - -0.3611556011891355, - -0.026442038068722286 + 0.20623150165506418, + -0.35514160775885684, + -0.02191819801185144 ], "error_m": [ - -0.0012731108183965945, - 0.0006876176784452737, - -0.00044442338918422586 + -0.006401515405434849, + 0.0017781585298348723, + 0.004280175892847616 ], - "error_norm_m": 0.0015136516694678826 + "error_norm_m": 0.007903236863270524 }, { "marker_id": 68, "link": "Board", "observed_position_m": [ - 0.5704309948134485, - 0.17060499510418098, - -0.018887791239312533 + 0.568908318504846, + 0.168783134033783, + -0.014878715051728992 ], "predicted_position_m": [ - 0.5764302815395409, - 0.17037061006940427, - -0.030864635819792405 + 0.5788292540408758, + 0.17239787079977498, + -0.04119592555242797 ], "error_m": [ - 0.005999286726092401, - -0.0002343850347767129, - -0.011976844580479873 + 0.009920935536029796, + 0.0036147367659919716, + -0.026317210500698983 ], - "error_norm_m": 0.0133974319804717 + "error_norm_m": 0.028356425239010184 }, { "marker_id": 69, "link": "Board", "observed_position_m": [ - 0.0139046815836182, - -0.2818955543187457, - -0.0202626239668338 + 0.015276397339812184, + -0.2803025489116465, + -0.022472302322351357 ], "predicted_position_m": [ - 0.007451957280249863, - -0.277868565076297, - -0.028501314472499078 + 0.005510649546115061, + -0.2701576935695941, + -0.03067798440933005 ], "error_m": [ - -0.0064527243033683365, - 0.004026989242448709, - -0.008238690505665277 + -0.009765747793697124, + 0.010144855342052395, + -0.008205682086978694 ], - "error_norm_m": 0.011212952980469383 + "error_norm_m": 0.016297887543906795 }, { "marker_id": 72, "link": "Board", "observed_position_m": [ - 0.44152543604951155, - 0.19996106520160864, - -0.03306713157998317 + 0.4344645786320449, + 0.20076059834646234, + -0.033282529150906466 ], "predicted_position_m": [ - 0.4438456271017049, - 0.19488539890785356, - -0.03185687359664922 + 0.4465264092455869, + 0.1980681929781142, + -0.04539614201517998 ], "error_m": [ - 0.002320191052193332, - -0.005075666293755082, - 0.0012102579833339552 + 0.01206183061354199, + -0.0026924053683481386, + -0.012113612864273517 ], - "error_norm_m": 0.005710551569722755 + "error_norm_m": 0.01730538705267182 }, { "marker_id": 73, "link": "Board", "observed_position_m": [ - 0.21806722294445952, - 0.34122924655343334, - -0.032547552108283716 + 0.2280285942240238, + 0.326927327318932, + -0.021927544696064564 ], "predicted_position_m": [ - 0.22547702357625732, - 0.3350451892583431, - -0.034684922969039106 + 0.22962253010294684, + 0.3400004979286803, + -0.05746012660960818 ], "error_m": [ - 0.007409800631797803, - -0.006184057295090251, - -0.00213737086075539 + 0.0015939358789230362, + 0.01307317060974833, + -0.03553258191354361 ], - "error_norm_m": 0.009885143611923719 + "error_norm_m": 0.037894759516592685 }, { "marker_id": 75, "link": "Board", "observed_position_m": [ - -0.026903050443930404, - 0.1973355566878141, - -0.034757839179643965 + -0.01897376105846116, + 0.2210651602764422, + -0.061160214612028016 ], "predicted_position_m": [ - -0.022826768775181208, - 0.19808795553617334, - -0.034355324630626884 + -0.019987203644106936, + 0.20544680077663746, + -0.05589513413636127 ], "error_m": [ - 0.004076281668749196, - 0.0007523988483592314, - 0.00040251454901708145 + -0.0010134425856457747, + -0.015618359499804751, + 0.005265080475666747 ], - "error_norm_m": 0.004164636146431457 + "error_norm_m": 0.016513064275136487 }, { "marker_id": 79, "link": "Board", "observed_position_m": [ - 0.3120883468595997, - -0.1591635270553482, - -0.03035490943243374 + 0.3116125652513936, + -0.15945590072703794, + -0.029713543177476754 ], "predicted_position_m": [ - 0.31290915610661896, - -0.15770086556423232, - -0.028328748177466927 + 0.3120899194987721, + -0.15288350019892974, + -0.03011150002654553 ], "error_m": [ - 0.0008208092470192718, - 0.0014626614911158742, - 0.0020261612549668136 + 0.00047735424737849197, + 0.006572400528108202, + -0.000397956849068775 ], - "error_norm_m": 0.0026302919778447317 + "error_norm_m": 0.006601718369719206 }, { "marker_id": 82, "link": "Board", "observed_position_m": [ - 0.21805790943664982, - 0.30585531597035254, - -0.039024096159373585 + 0.21932045877576087, + 0.4268343329675195, + -0.21261636270120143 ], "predicted_position_m": [ - 0.22267866825354082, - 0.2991946735990578, - -0.03427075579123611 + 0.22646544327444398, + 0.304221993790752, + -0.055673161470176646 ], "error_m": [ - 0.004620758816891002, - -0.006660642371294712, - 0.004753340368137474 + 0.007144984498683116, + -0.1226123391767675, + 0.1569432012310248 ], - "error_norm_m": 0.009397330126026629 + "error_norm_m": 0.19928874763650617 }, { "marker_id": 83, "link": "Board", "observed_position_m": [ - 0.0425335213527205, - 0.3373471292348405, - -0.027135101566798946 + 0.056510878799190804, + 0.3622085541805799, + -0.05601896829781385 ], "predicted_position_m": [ - 0.047952004101645365, - 0.342274247442862, - -0.0357072625914086 + 0.05221818580454903, + 0.348810280462645, + -0.06176400343867677 ], "error_m": [ - 0.005418482748924862, - 0.004927118208021497, - -0.008572161024609653 + -0.0042926929946417725, + -0.013398273717934894, + -0.005745035140862921 ], - "error_norm_m": 0.011274679319965165 + "error_norm_m": 0.015196920100359194 }, { "marker_id": 84, "link": "Board", "observed_position_m": [ - 0.4065514623589491, - 0.26325292736705264, - -0.03164014170326309 + 0.39654902460231006, + 0.27302023311414586, + -0.03621211493070194 ], "predicted_position_m": [ - 0.410755001782214, - 0.2591907623010232, - -0.032800671688123485 + 0.41408958781511274, + 0.26258576175293025, + -0.04944533142473166 ], "error_m": [ - 0.0042035394232649015, - -0.004062165066029411, - -0.001160529984860395 + 0.017540563212802673, + -0.010434471361215614, + -0.013233216494029719 ], - "error_norm_m": 0.005959677722190355 + "error_norm_m": 0.02432421775079757 }, { "marker_id": 85, "link": "Board", "observed_position_m": [ - 0.5039480089751692, - -0.31406439393536817, - -0.029468173888729306 + 0.5020405503500432, + -0.31022845087045625, + -0.03030813015906365 ], "predicted_position_m": [ - 0.5042041073073622, - -0.31253918335750047, - -0.025467806364690516 + 0.5017803060025984, + -0.3092325977374013, + -0.017890003926044614 ], "error_m": [ - 0.00025609833219297773, - 0.0015252105778676972, - 0.004000367524038789 + -0.00026024434744487124, + 0.000995853133054947, + 0.012418126233019036 ], - "error_norm_m": 0.004288915246303635 + "error_norm_m": 0.012460710642743773 }, { "marker_id": 86, "link": "Board", "observed_position_m": [ - 0.36129730616659245, - 0.29594173104616067, - -0.03066481090339598 + 0.3649367159727088, + 0.29161338660716574, + -0.027589353466630048 ], "predicted_position_m": [ - 0.3663704485521694, - 0.293058903395277, - -0.03343985350032342 + 0.370056694732192, + 0.29680713079718124, + -0.05217486022752074 ], "error_m": [ - 0.005073142385576934, - -0.002882827650883657, - -0.00277504259692744 + 0.005119978759483168, + 0.0051937441900155035, + -0.024585506760890694 ], - "error_norm_m": 0.006461294788492351 + "error_norm_m": 0.025644420521795393 }, { "marker_id": 92, "link": "Board", "observed_position_m": [ - 0.6477470633290741, - -0.18755446350368268, - -0.027186029322572934 + 0.6484004610823835, + -0.19081836450327513, + -0.027227519273113107 ], "predicted_position_m": [ - 0.6455239184881204, - -0.1855268250468046, - -0.026242405738769736 + 0.6443353751026841, + -0.18365243834182884, + -0.021311120710433118 ], "error_m": [ - -0.0022231448409536503, - 0.002027638456878089, - 0.0009436235838031978 + -0.0040650859796993455, + 0.00716592616144629, + 0.005916398562679989 ], - "error_norm_m": 0.003153429270425988 + "error_norm_m": 0.010142938120984983 }, { "marker_id": 95, "link": "Board", "observed_position_m": [ - 0.18502424323738215, - -0.27322393103116116, - -0.030191289158347838 + 0.18664780839225412, + -0.27257756326573884, + -0.02680824275380579 ], "predicted_position_m": [ - 0.1859213318573731, - -0.27185425732038365, - -0.027632441485459517 + 0.1839918904792754, + -0.2657499110383315, + -0.027036200764427018 ], "error_m": [ - 0.0008970886199909656, - 0.001369673710777508, - 0.002558847672888321 + -0.002655917912978728, + 0.006827652227407333, + -0.00022795801062122645 ], - "error_norm_m": 0.0030378405947577795 + "error_norm_m": 0.007329577051474933 }, { "marker_id": 96, "link": "Board", "observed_position_m": [ - 0.36859794795615547, - -0.18847444718539946, - -0.0302455105003983 + 0.3694229184091224, + -0.1876350997118841, + -0.02906403105618304 ], "predicted_position_m": [ - 0.370202818787732, - -0.18544072260513306, - -0.027694833409366182 + 0.3690898694722732, + -0.181100244069962, + -0.027412172640893313 ], "error_m": [ - 0.0016048708315765103, - 0.003033724580266406, - 0.002550677091032117 + -0.0003330489368492118, + 0.006534855641922105, + 0.0016518584152897288 ], - "error_norm_m": 0.0042761020611853644 + "error_norm_m": 0.0067486217910963904 }, { "marker_id": 97, "link": "Board", "observed_position_m": [ - 0.3044454984296277, - -0.3518975857511937, - -0.028499971133479313 + 0.300631545478839, + -0.35132615733892214, + -0.02884116071788578 ], "predicted_position_m": [ - 0.3036821331717976, - -0.3581923999751065, - -0.025978689171064048 + 0.30085497208872897, + -0.35302984583077157, + -0.019975801386937803 ], "error_m": [ - -0.0007633652578301064, - -0.006294814223912815, - 0.0025212819624152658 + 0.0002234266098899429, + -0.001703688491849431, + 0.008865359330947977 ], - "error_norm_m": 0.006823802119378733 + "error_norm_m": 0.009030341632191633 }, { "marker_id": 102, "link": "Board", "observed_position_m": [ - 0.6540979060004576, - -0.22499416189547747, - -0.0331267623329287 + 0.654913574999471, + -0.2275541941346384, + -0.0350778518574374 ], "predicted_position_m": [ - 0.6498807339562016, - -0.22371233969491253, - -0.025762582817033888 + 0.6483081027262264, + -0.22182697671650253, + -0.019245290342345872 ], "error_m": [ - -0.004217172044255979, - 0.0012818222005649416, - 0.007364179515894815 + -0.006605472273244595, + 0.005727217418135866, + 0.015832561515091527 ], - "error_norm_m": 0.008582467485929678 + "error_norm_m": 0.01808599699868269 }, { "marker_id": 103, "link": "Board", "observed_position_m": [ - 0.10666888074218231, - -0.18700147586543833, - -0.027512991052136556 + 0.10557011807229084, + -0.18944239694498782, + -0.02808611771084624 ], "predicted_position_m": [ - 0.10614407281302585, - -0.18499565619410507, - -0.029092184530364915 + 0.10510726012716916, + -0.17829043906142777, + -0.033282348035566865 ], "error_m": [ - -0.0005248079291564622, - 0.0020058196713332588, - -0.0015791934782283593 + -0.0004628579451216863, + 0.011151957883560049, + -0.005196230324720625 ], - "error_norm_m": 0.002606259380432412 + "error_norm_m": 0.012311832182969584 }, { "marker_id": 105, "link": "Board", "observed_position_m": [ - 0.5264126387561544, - -0.26859223732736076, - -0.028886158843934702 + 0.5235393548738532, + -0.2667684541208949, + -0.02958428254015119 ], "predicted_position_m": [ - 0.5247595567590854, - -0.2661711789404367, - -0.025914196571593565 + 0.5227951312590223, + -0.2631094373451257, + -0.019826184411018216 ], "error_m": [ - -0.0016530819970690391, - 0.00242105838692408, - 0.0029719622723411374 + -0.0007442236148308412, + 0.003659016775769186, + 0.009758098129132975 ], - "error_norm_m": 0.00417453752530125 + "error_norm_m": 0.010448097992075911 }, { "marker_id": 114, "link": "Arm2", "observed_position_m": [ - 0.2712682009905615, - -0.24359004573541737, - 0.2620424702972379 + 0.27011300895325113, + -0.2806883445351331, + 0.2554391856330546 ], "predicted_position_m": [ - 0.2515887414118118, - 0.16267220151381032, - 0.41350957882222195 + 0.25533097100129737, + -0.11781772333346427, + 0.19866687076756162 ], "error_m": [ - -0.01967945957874967, - 0.40626224724922766, - 0.15146710852498407 + -0.014782037951953764, + 0.1628706212016688, + -0.056772314865493 ], - "error_norm_m": 0.43402601262392504 + "error_norm_m": 0.17311396140062527 }, { "marker_id": 115, "link": "Arm2", "observed_position_m": [ - 0.30525450408486055, - -0.23010780073411682, - 0.22867265032504536 + 0.30309549136602143, + -0.2183658044981254, + 0.2199084065832282 ], "predicted_position_m": [ - 0.22261618572133193, - 0.20015405405421124, - 0.42786059784133973 + 0.2358772311823024, + -0.073679718013855, + 0.18754758601309227 ], "error_m": [ - -0.08263831836352861, - 0.43026185478832807, - 0.19918794751629437 + -0.06721826018371904, + 0.1446860864842704, + -0.03236082057013592 ], - "error_norm_m": 0.48127974586886396 + "error_norm_m": 0.16278691849234217 }, { "marker_id": 120, "link": "Arm2", "observed_position_m": [ - 0.2625662059341891, - -0.18190511521069566, - 0.2939650850820472 + 0.2747772974053062, + -0.22853496955651423, + 0.27892047845268714 ], "predicted_position_m": [ - 0.2520975551317268, - 0.1880438420124955, - 0.34827139240519783 + 0.2566065135491158, + -0.1343859057684713, + 0.13066783899512674 ], "error_m": [ - -0.010468650802462287, - 0.36994895722319115, - 0.054306307323150615 + -0.01817078385619042, + 0.09414906378804294, + -0.1482526394575604 ], - "error_norm_m": 0.3740601537389767 + "error_norm_m": 0.17655896664923806 }, { "marker_id": 205, "link": "Board", "observed_position_m": [ - 0.7494635190169779, - -0.09438750644187002, - 0.011874659448293403 + 0.7358310059489888, + -0.10856622221598583, + 0.03597387369483752 ], "predicted_position_m": [ - 0.7508888500677534, - -0.09102679627230495, - 0.0007847926887032176 + 0.7501638786079469, + -0.08912197428897047, + 0.0037251112701953155 ], "error_m": [ - 0.001425331050775469, - 0.003360710169565073, - -0.011089866759590186 + 0.014332872658958107, + 0.019444247927015365, + -0.032248762424642204 ], - "error_norm_m": 0.011675233881750983 + "error_norm_m": 0.04029258857440367 }, { "marker_id": 206, "link": "Board", "observed_position_m": [ - 0.6469841760480316, - -0.013840768336592238, - 0.007224373860460745 + 0.6484689754258008, + -0.006962133622841689, + 0.0037667549785326865 ], "predicted_position_m": [ - 0.651401758653761, - -0.010403590027052035, - -0.0007042528845845903 + 0.651512240319729, + -0.007713180188276315, + -0.002635903281069312 ], "error_m": [ - 0.004417582605729442, - 0.0034371783095402033, - -0.007928626745045336 + 0.0030432648939281437, + -0.0007510465654346253, + -0.006402658259601998 ], - "error_norm_m": 0.00970527448721906 + "error_norm_m": 0.007128784254507659 }, { "marker_id": 207, "link": "Board", "observed_position_m": [ - 0.7468601948033142, - -0.014430249176107532, - 0.012165388549118845 + 0.7493665623567823, + -0.0039605799295579095, + 0.002903611354708307 ], "predicted_position_m": [ - 0.7513983413368077, - -0.011034111444401688, - -0.00016956189450933155 + 0.7514753582778212, + -0.009238601096298147, + -0.00038909684750553994 ], "error_m": [ - 0.004538146533493492, - 0.003396137731705844, - -0.012334950443628177 + 0.002108795921038853, + -0.005278021166740238, + -0.003292708202213847 ], - "error_norm_m": 0.013574959591060965 + "error_norm_m": 0.006568596119268898 }, { "marker_id": 208, "link": "Board", "observed_position_m": [ - 0.3484725042892376, - -0.09151206474794678, - 0.002183207241496229 + 0.3497454348907566, + -0.08899526410856817, + 0.005324093210496179 ], "predicted_position_m": [ - 0.35090251933556676, - -0.08850471060290635, - -0.001353971271597816 + 0.35031140677557776, + -0.08302029065688313, + -0.005262114464059768 ], "error_m": [ - 0.0024300150463291703, - 0.003007354145040428, - -0.0035371785130940453 + 0.0005659718848211592, + 0.005974973451685045, + -0.010586207674555946 ], - "error_norm_m": 0.005240303799644845 + "error_norm_m": 0.012169158756938638 }, { "marker_id": 210, "link": "Board", "observed_position_m": [ - 0.018246349225242323, - -0.017730470214900453, - 0.00023527095600163288 + 0.018056729001286097, + -0.016963352423673847, + 0.003416246244520705 ], "predicted_position_m": [ - 0.021359601341935174, - -0.01643039070123714, - -0.00395351179915715 + 0.0215806622250132, + -0.0080884501168228, + -0.01627650779780846 ], "error_m": [ - 0.00311325211669285, - 0.0013000795136633124, - -0.004188782755158783 + 0.0035239332237271027, + 0.008874902306851047, + -0.019692754042329164 ], - "error_norm_m": 0.005378517124064509 + "error_norm_m": 0.0218857615378837 }, { "marker_id": 211, "link": "Board", "observed_position_m": [ - 0.2502132615765682, - -0.011548956453720479, - 0.0062323222074483955 + 0.24979889989544124, + -0.009148348688355755, + 0.005082607711960607 ], "predicted_position_m": [ - 0.2514154279215743, - -0.00788150435765343, - -0.002843016844885624 + 0.25165976848735977, + -0.0016114965561889781, + -0.011623129015324394 ], "error_m": [ - 0.0012021663450060838, - 0.0036674520960670483, - -0.009075339052334019 + 0.0018608685919185297, + 0.007536852132166777, + -0.016705736727285002 ], - "error_norm_m": 0.009861905886431425 + "error_norm_m": 0.018421417197921956 }, { "marker_id": 214, "link": "Board", "observed_position_m": [ - 0.3501746563830133, - -0.011658071915536646, - 0.006706704184076964 + 0.3500544113591894, + -0.008882745216276952, + 0.004532619096457205 ], "predicted_position_m": [ - 0.351412010604621, - -0.008512025775003082, - -0.0023083258548103652 + 0.35162288644545203, + -0.0031369174642108125, + -0.009376322581760623 ], "error_m": [ - 0.0012373542216077005, - 0.0031460461405335635, - -0.00901503003888733 + 0.0015684750862626218, + 0.00574582775206614, + -0.013908941678217828 ], - "error_norm_m": 0.009628053717659525 + "error_norm_m": 0.01513054226591714 }, { "marker_id": 215, "link": "Board", "observed_position_m": [ - 0.2510241960445018, - -0.09147739793535226, - 0.0029471622600684808 + 0.249503157587321, + -0.08871170851340911, + 0.004405453035841749 ], "predicted_position_m": [ - 0.25090593665252003, - -0.08787418918555669, - -0.0018886622616730749 + 0.25034828881748544, + -0.0814948697488613, + -0.007508920897623539 ], "error_m": [ - -0.00011825939198178981, - 0.0036032087497955695, - -0.004835824521741555 + 0.000845131230164442, + 0.007216838764547803, + -0.011914373933465288 ], - "error_norm_m": 0.006031773983122394 + "error_norm_m": 0.013955261186237836 }, { "marker_id": 217, "link": "Board", "observed_position_m": [ - 0.6500112070813467, - -0.09371694608806377, - 0.0039579072489725 + 0.6542153756315782, + -0.10517381265456333, + 0.0058557507960332305 ], "predicted_position_m": [ - 0.6508922673847067, - -0.0903962748549553, - 0.00025010169862795884 + 0.6502007606498547, + -0.08759655338094864, + 0.0014783048366315433 ], "error_m": [ - 0.0008810603033599929, - 0.0033206712331084742, - -0.003707805550344541 + -0.004014614981723508, + 0.017577259273614684, + -0.004377445959401687 ], - "error_norm_m": 0.005054794426652457 + "error_norm_m": 0.01855368454379977 }, { "marker_id": 218, "link": "Arm2", "observed_position_m": [ - 0.23793091485346762, - -0.19025436252979092, - 0.3003723677303802 + 0.23388206605265666, + -0.2685595069335859, + 0.29745892987522343 ], "predicted_position_m": [ - 0.2781637582858243, - 0.1937311268314266, - 0.3506865206649456 + 0.2833888700976032, + -0.1339754609325824, + 0.13107022281846548 ], "error_m": [ - 0.04023284343235667, - 0.3839854893612175, - 0.050314152934565426 + 0.04950680404494656, + 0.1345840460010035, + -0.16638870705675796 ], - "error_norm_m": 0.38935209222007405 + "error_norm_m": 0.21965652942893496 }, { "marker_id": 219, "link": "Arm2", "observed_position_m": [ - 0.24145246887086727, - -0.2772804241836024, - 0.2541320908140835 + 0.2366779781060393, + -0.34009447067696785, + 0.2571150778625261 ], "predicted_position_m": [ - 0.27738600017109705, - 0.15494876206915068, - 0.45040774847382536 + 0.2814391122030808, + -0.10864981063907166, + 0.2350115999563302 ], "error_m": [ - 0.035933531300229776, - 0.4322291862527531, - 0.19627565765974186 + 0.04476113409704152, + 0.2314446600378962, + -0.02210347790619588 ], - "error_norm_m": 0.4760645144412529 + "error_norm_m": 0.23676729825138515 }, { "marker_id": 243, "link": "Arm1", "observed_position_m": [ - 0.16466563063932055, - -0.11307099581797364, - 0.3423897820597492 + 0.18144888543595428, + -0.15012189717150226, + 0.31356047178317653 ], "predicted_position_m": [ - 0.1684780391168424, - 0.2824007048092649, - 0.28396750666767495 + 0.18126860236063563, + -0.16266377614189548, + 0.00832619273972722 ], "error_m": [ - 0.0038124084775218448, - 0.3954717006272385, - -0.05842227539207423 + -0.00018028307531864352, + -0.012541878970393217, + -0.3052342790434493 ], - "error_norm_m": 0.39978189393391367 + "error_norm_m": 0.3054918924182269 }, { "marker_id": 246, "link": "Ellbow", "observed_position_m": [ - 0.2312989671490578, - -0.13675784567214536, - 0.3639158231965809 + 0.24681312269481184, + -0.19475871568678893, + 0.34124060233255904 ], "predicted_position_m": [ - 0.25863005523091, - 0.2934474104086792, - 0.26913959838714596 + 0.27237933182351887, + -0.09527455654199339, + 0.006138344269945348 ], "error_m": [ - 0.027331088081852195, - 0.4302052560808246, - -0.09477622480943493 + 0.025566209128707024, + 0.09948415914479554, + -0.3351022580626137 ], - "error_norm_m": 0.4413684215306238 + "error_norm_m": 0.3504914440162874 }, { "marker_id": 247, "link": "Ellbow", "observed_position_m": [ - 0.20029291991888915, - -0.11936100362588432, - 0.3519918211243391 + 0.2356376595025085, + -0.14385826652268258, + 0.317961382630903 ], "predicted_position_m": [ - 0.22113133672492216, - 0.29368385594018437, - 0.26893908926586857 + 0.23489316258933635, + -0.09470252370148677, + 0.005295791857361229 ], "error_m": [ - 0.020838416806033017, - 0.4130448595660687, - -0.08305273185847051 + -0.0007444969131721602, + 0.04915574282119581, + -0.3126655907735418 ], - "error_norm_m": 0.4218270402642419 + "error_norm_m": 0.31650689247112007 } ] } \ No newline at end of file diff --git a/data/evaluations/Scene9/render_a_aruco_detection.json b/data/evaluations/Scene9/render_a_aruco_detection.json index 280f842..48add02 100644 --- a/data/evaluations/Scene9/render_a_aruco_detection.json +++ b/data/evaluations/Scene9/render_a_aruco_detection.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T10:25:20Z", + "created_utc": "2026-05-31T20:34:15Z", "vision_config": { "MarkerType": "DICT_4X4_250", "MarkerSize": 0.025 @@ -46,7 +46,7 @@ }, "detections": [ { - "observation_id": "07252577-b78d-4dc9-86aa-7330f72deb1d", + "observation_id": "67a22d5d-4026-4e16-9f17-1060b5ea5c29", "type": "aruco", "marker_id": 42, "marker_size_m": 0.025, @@ -100,7 +100,7 @@ "confidence": 0.8374556851639195 }, { - "observation_id": "2ed73348-4823-409b-bc2b-07d392b86de2", + "observation_id": "346f6e91-7aa3-4100-b93f-ca5215b9caad", "type": "aruco", "marker_id": 43, "marker_size_m": 0.025, @@ -154,7 +154,7 @@ "confidence": 0.8294132973023032 }, { - "observation_id": "d7487e91-577a-4ae9-b4cd-904b9fd28d66", + "observation_id": "b232e7ff-255e-4f4e-b371-3aeea8d050d8", "type": "aruco", "marker_id": 219, "marker_size_m": 0.025, @@ -208,7 +208,7 @@ "confidence": 0.8981552472038941 }, { - "observation_id": "d09f9fde-716f-4051-ab6d-617304ef3117", + "observation_id": "178d6570-814d-4952-93c2-c2f68475a1de", "type": "aruco", "marker_id": 218, "marker_size_m": 0.025, @@ -262,7 +262,7 @@ "confidence": 0.6805707817398313 }, { - "observation_id": "a2bef799-eb10-4d35-898d-552e69ddb3ac", + "observation_id": "b942b747-333a-4ea7-ac87-efd7e8899eac", "type": "aruco", "marker_id": 229, "marker_size_m": 0.025, @@ -316,7 +316,7 @@ "confidence": 0.6358432130578832 }, { - "observation_id": "5716b245-f8ce-4a65-9262-f6133257facb", + "observation_id": "90b7a93c-81fd-4464-bd1e-e341a2bdcbaa", "type": "aruco", "marker_id": 47, "marker_size_m": 0.025, @@ -370,7 +370,7 @@ "confidence": 0.12146268776527554 }, { - "observation_id": "db738d4a-041d-4850-a310-4410550ec21d", + "observation_id": "d6a5cffb-fd8b-4b7f-8b32-f80dcc9527d0", "type": "aruco", "marker_id": 113, "marker_size_m": 0.025, @@ -424,7 +424,7 @@ "confidence": 0.3676840060581848 }, { - "observation_id": "8212ecdd-49de-439b-9302-b087d237a243", + "observation_id": "07b8af76-65e8-4941-82e3-1ddeab647fd5", "type": "aruco", "marker_id": 210, "marker_size_m": 0.025, @@ -478,7 +478,7 @@ "confidence": 0.46829700346999537 }, { - "observation_id": "e6ecadd4-75f7-4be6-8eb9-c7a893bf0d4a", + "observation_id": "fd3cc01c-3141-4534-9986-a55fda47d0ff", "type": "aruco", "marker_id": 243, "marker_size_m": 0.025, @@ -532,7 +532,7 @@ "confidence": 0.4531062923543488 }, { - "observation_id": "3aab1062-4f5a-4644-93e9-fc2f99c6d9d5", + "observation_id": "f7ae1dfd-024a-4284-985a-ca346e4eb5a5", "type": "aruco", "marker_id": 245, "marker_size_m": 0.025, @@ -586,7 +586,7 @@ "confidence": 0.5158823529411765 }, { - "observation_id": "59a12a89-4127-4faf-a3c0-6f54249782d8", + "observation_id": "29ebabdd-bdbd-4f1b-aa81-80b8fa62b49b", "type": "aruco", "marker_id": 198, "marker_size_m": 0.025, @@ -640,7 +640,7 @@ "confidence": 0.5036164123338793 }, { - "observation_id": "71cd0671-e57a-4d52-a107-5f331ebf7ef2", + "observation_id": "b1438e02-112a-48dd-8889-fb322f2799e3", "type": "aruco", "marker_id": 85, "marker_size_m": 0.025, @@ -694,7 +694,7 @@ "confidence": 0.4560525484643318 }, { - "observation_id": "c87c2e77-f2e3-4c59-9908-0da5b573b369", + "observation_id": "3e594a8a-ad7e-43a2-aa71-04b0b0cb5217", "type": "aruco", "marker_id": 79, "marker_size_m": 0.025, @@ -748,7 +748,7 @@ "confidence": 0.5734281513866332 }, { - "observation_id": "65e2b404-0cf0-4058-aa14-4f1b808e5489", + "observation_id": "e8da5709-31ad-4ab5-b777-a692e87259d8", "type": "aruco", "marker_id": 96, "marker_size_m": 0.025, @@ -802,7 +802,7 @@ "confidence": 0.525542829627259 }, { - "observation_id": "36e77981-3a0b-4b4c-b6ae-011b3ced58c0", + "observation_id": "744cc031-f8e1-436a-b30b-6827ca778984", "type": "aruco", "marker_id": 62, "marker_size_m": 0.025, @@ -856,7 +856,7 @@ "confidence": 0.5038606541951498 }, { - "observation_id": "d494b08e-3308-478e-836e-4cd895f1454e", + "observation_id": "4f4e19b9-00fb-4d87-b8a8-ddfc3139c8ca", "type": "aruco", "marker_id": 105, "marker_size_m": 0.025, @@ -910,7 +910,7 @@ "confidence": 0.43622925667631085 }, { - "observation_id": "808485d0-8179-4cc5-9e1d-ec62f0f66354", + "observation_id": "b25eed22-8b38-482d-b5d5-6d77dc3651ad", "type": "aruco", "marker_id": 75, "marker_size_m": 0.025, @@ -964,7 +964,7 @@ "confidence": 0.29844141482805986 }, { - "observation_id": "f0d25675-7a33-484b-909f-0267f6e3dd67", + "observation_id": "e481fef6-3682-4ed2-b7d4-dd47584c4442", "type": "aruco", "marker_id": 102, "marker_size_m": 0.025, @@ -1018,7 +1018,7 @@ "confidence": 0.2521714913889437 }, { - "observation_id": "5d4bbda7-c0d7-4e2f-a22c-d137d8c3664e", + "observation_id": "6bbb92a3-7cfd-4625-881a-71e9ac9fc80c", "type": "aruco", "marker_id": 92, "marker_size_m": 0.025, @@ -1072,7 +1072,7 @@ "confidence": 0.31777455864589965 }, { - "observation_id": "e33ab0fa-121d-4097-a5cf-886cad9eb349", + "observation_id": "4e4968c9-60d3-487b-a9c2-e7b457ae1345", "type": "aruco", "marker_id": 217, "marker_size_m": 0.025, @@ -1126,7 +1126,7 @@ "confidence": 0.3029173397022545 }, { - "observation_id": "1e1cad29-60b0-40ff-89ca-406c4272dfbe", + "observation_id": "b872d2c6-30d4-4d0f-ac46-4409ceead01d", "type": "aruco", "marker_id": 61, "marker_size_m": 0.025, @@ -1180,7 +1180,7 @@ "confidence": 0.1527342148240039 }, { - "observation_id": "36aa2935-a803-4509-8e38-9146138173e4", + "observation_id": "84259927-1320-40f6-9b10-13643d3722c5", "type": "aruco", "marker_id": 83, "marker_size_m": 0.025, @@ -1234,7 +1234,7 @@ "confidence": 0.19743498130596515 }, { - "observation_id": "14e7cb1b-933d-4c6b-9c3d-35660fe9349f", + "observation_id": "6cb603d3-e307-4bd1-b103-c94cc981299c", "type": "aruco", "marker_id": 206, "marker_size_m": 0.025, @@ -1288,7 +1288,7 @@ "confidence": 0.2849187633475991 }, { - "observation_id": "ca221065-cd43-4a9d-af60-b892c166d444", + "observation_id": "c7c04197-beb8-4950-a9ca-4de2c9192d1c", "type": "aruco", "marker_id": 207, "marker_size_m": 0.025, @@ -1342,7 +1342,7 @@ "confidence": 0.24627951083020566 }, { - "observation_id": "45d83bd5-faeb-4da3-bb45-e07df67f87a7", + "observation_id": "5f92c89f-d4b4-42bc-9ae6-e2d842b938ea", "type": "aruco", "marker_id": 72, "marker_size_m": 0.025, @@ -1396,7 +1396,7 @@ "confidence": 0.1970529186973567 }, { - "observation_id": "cb5ad474-e667-4577-a956-fae72c44a230", + "observation_id": "0a81577c-f821-446e-acef-d0fcc928084e", "type": "aruco", "marker_id": 84, "marker_size_m": 0.025, @@ -1450,7 +1450,7 @@ "confidence": 0.1988568274481309 }, { - "observation_id": "354be54e-6e82-49b0-90e1-eebd4f306e1d", + "observation_id": "657f9cfc-99fc-4b4b-8549-f5887bceb19d", "type": "aruco", "marker_id": 86, "marker_size_m": 0.025, @@ -1504,7 +1504,7 @@ "confidence": 0.17646704338372862 }, { - "observation_id": "ae2a2273-34af-4261-98d8-947c12679062", + "observation_id": "4763bd83-3dfb-4cce-bddd-887ffd3d113f", "type": "aruco", "marker_id": 93, "marker_size_m": 0.025, diff --git a/data/evaluations/Scene9/render_a_camera_pose.json b/data/evaluations/Scene9/render_a_camera_pose.json index eb43ffb..6731671 100644 --- a/data/evaluations/Scene9/render_a_camera_pose.json +++ b/data/evaluations/Scene9/render_a_camera_pose.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T10:25:23Z", + "created_utc": "2026-05-31T20:34:18Z", "source": { "detection_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\evaluations\\Scene9\\render_a_aruco_detection.json", "robot_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\robot\\robot.json" diff --git a/data/evaluations/Scene9/render_b_aruco_detection.json b/data/evaluations/Scene9/render_b_aruco_detection.json index 0a1ec74..b28bbb9 100644 --- a/data/evaluations/Scene9/render_b_aruco_detection.json +++ b/data/evaluations/Scene9/render_b_aruco_detection.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T10:25:20Z", + "created_utc": "2026-05-31T20:34:15Z", "vision_config": { "MarkerType": "DICT_4X4_250", "MarkerSize": 0.025 @@ -46,7 +46,7 @@ }, "detections": [ { - "observation_id": "01068640-be27-4517-aec5-25aae7340145", + "observation_id": "510916c6-1485-4f24-aa33-b1193a1fa6c6", "type": "aruco", "marker_id": 43, "marker_size_m": 0.025, @@ -100,7 +100,7 @@ "confidence": 0.7925285650886857 }, { - "observation_id": "e6b5925e-0c11-4377-bc3c-a519e9f39f43", + "observation_id": "91139bf6-1704-465c-a40b-f9ce94bbf46c", "type": "aruco", "marker_id": 63, "marker_size_m": 0.025, @@ -154,7 +154,7 @@ "confidence": 0.1539593300495616 }, { - "observation_id": "5bddacbc-162f-41f0-a120-ddb61f017cc0", + "observation_id": "7576d0a1-6cd9-4370-80b2-04ff857d9c0e", "type": "aruco", "marker_id": 229, "marker_size_m": 0.025, @@ -208,7 +208,7 @@ "confidence": 0.4787342723608016 }, { - "observation_id": "8783b700-77a1-4659-88b8-fc240c36212c", + "observation_id": "84fba295-d3ac-4e69-9a58-0cde131f74b4", "type": "aruco", "marker_id": 102, "marker_size_m": 0.025, @@ -262,7 +262,7 @@ "confidence": 0.39637168760361213 }, { - "observation_id": "5dc9e8fa-af4e-405a-b5d9-c447dc0a410b", + "observation_id": "14027746-489e-4cc0-9d69-89dbc086f119", "type": "aruco", "marker_id": 64, "marker_size_m": 0.025, @@ -316,7 +316,7 @@ "confidence": 0.4633649853376546 }, { - "observation_id": "3f9a4760-d443-49ae-b94c-34fb45410b82", + "observation_id": "6c6be389-03ea-4d1e-b8cd-4a9714b00715", "type": "aruco", "marker_id": 58, "marker_size_m": 0.025, @@ -370,7 +370,7 @@ "confidence": 0.3638956157928849 }, { - "observation_id": "e1cbfacd-7320-408b-ba10-33b475383fab", + "observation_id": "2dea0619-d038-4900-b2ee-b5a841379415", "type": "aruco", "marker_id": 113, "marker_size_m": 0.025, @@ -424,7 +424,7 @@ "confidence": 0.33787297122479 }, { - "observation_id": "3b32f333-2016-4fd2-a15c-ea910d42770d", + "observation_id": "cbc3ea5b-622b-4308-940c-4a01685d21e2", "type": "aruco", "marker_id": 92, "marker_size_m": 0.025, @@ -478,7 +478,7 @@ "confidence": 0.46896024883690896 }, { - "observation_id": "415d829e-9984-4318-8524-ee5af224e866", + "observation_id": "3a377ad5-4bc3-4647-af82-26e3a8c61667", "type": "aruco", "marker_id": 96, "marker_size_m": 0.025, @@ -532,7 +532,7 @@ "confidence": 0.44372569385651617 }, { - "observation_id": "52af5975-b6cc-4f2d-a07e-a650b128e2b3", + "observation_id": "aad6d120-6b5a-4b9c-90a7-3ccd8c3572ed", "type": "aruco", "marker_id": 103, "marker_size_m": 0.025, @@ -586,7 +586,7 @@ "confidence": 0.45199802144368495 }, { - "observation_id": "f16d21d0-6c14-467f-85bd-dd3acdacbfb7", + "observation_id": "824124ba-30c5-4dba-9993-7caab7810db2", "type": "aruco", "marker_id": 62, "marker_size_m": 0.025, @@ -640,7 +640,7 @@ "confidence": 0.44348322079976393 }, { - "observation_id": "0033762d-71b5-4327-b9b5-a859e3a5c740", + "observation_id": "bd6272ab-ff0d-4f80-a159-a4bb430a1467", "type": "aruco", "marker_id": 51, "marker_size_m": 0.025, @@ -694,7 +694,7 @@ "confidence": 0.44348322079976393 }, { - "observation_id": "d1fa1197-e5eb-4967-a466-7e9c7f5c440e", + "observation_id": "f44c4c0e-cb0e-46e2-968e-851bc82a7b26", "type": "aruco", "marker_id": 42, "marker_size_m": 0.025, @@ -748,7 +748,7 @@ "confidence": 0.24113570084112637 }, { - "observation_id": "874226da-78b7-4b23-9ab2-3d61e9abc737", + "observation_id": "84287a52-6997-4743-8d4f-cbe5005cecd0", "type": "aruco", "marker_id": 79, "marker_size_m": 0.025, @@ -802,7 +802,7 @@ "confidence": 0.41815762699787656 }, { - "observation_id": "dcbbb855-d629-4a37-8ada-7262b55b3c05", + "observation_id": "f5ceb28c-98b2-4cc8-8dab-b712e59e1005", "type": "aruco", "marker_id": 205, "marker_size_m": 0.025, @@ -856,7 +856,7 @@ "confidence": 0.3958181457519531 }, { - "observation_id": "adc921c9-ae5a-4406-b1b8-769d71ab0ce1", + "observation_id": "59ac044d-7e01-4021-872f-9ed5f0016f15", "type": "aruco", "marker_id": 198, "marker_size_m": 0.025, @@ -910,7 +910,7 @@ "confidence": 0.3918555899450243 }, { - "observation_id": "753bd80d-3796-40c4-8fb3-403428283e16", + "observation_id": "b298a6a6-e0a4-45eb-be17-50da5919327c", "type": "aruco", "marker_id": 217, "marker_size_m": 0.025, @@ -964,7 +964,7 @@ "confidence": 0.4015868133874269 }, { - "observation_id": "63a71e13-fe5c-41de-809a-d698eecca618", + "observation_id": "ff352796-9c20-4e9b-bacd-8f3c479e156c", "type": "aruco", "marker_id": 208, "marker_size_m": 0.025, @@ -1018,7 +1018,7 @@ "confidence": 0.3776 }, { - "observation_id": "9d562528-ffda-49ee-864a-6aafa7585f5d", + "observation_id": "9908343d-37d8-41cc-b5b5-d9fe37d725b9", "type": "aruco", "marker_id": 210, "marker_size_m": 0.025, @@ -1072,7 +1072,7 @@ "confidence": 0.3320910299473707 }, { - "observation_id": "78307cf0-8bb2-4905-b5d5-ef00e3164c90", + "observation_id": "7b584155-5f04-48e1-9844-5637fc702f19", "type": "aruco", "marker_id": 214, "marker_size_m": 0.025, @@ -1126,7 +1126,7 @@ "confidence": 0.3465862068965517 }, { - "observation_id": "eb787833-efc2-4abc-98f2-0247f364abb6", + "observation_id": "68141292-bd29-4277-a74c-acf8f5406c40", "type": "aruco", "marker_id": 206, "marker_size_m": 0.025, @@ -1180,7 +1180,7 @@ "confidence": 0.3579602826436361 }, { - "observation_id": "0534c618-efd8-4a33-9b15-a6e6db83cc1c", + "observation_id": "2111f2b4-2d23-4688-b170-96c2f10605e5", "type": "aruco", "marker_id": 207, "marker_size_m": 0.025, @@ -1234,7 +1234,7 @@ "confidence": 0.343462485354258 }, { - "observation_id": "9da11e9d-6d2b-4ee2-8267-625e043baba3", + "observation_id": "b85e551b-f979-48eb-86f7-28ded65f6b60", "type": "aruco", "marker_id": 245, "marker_size_m": 0.025, @@ -1288,7 +1288,7 @@ "confidence": 0.212625 }, { - "observation_id": "d0ac2453-7640-48fc-bbca-dc3013a61baa", + "observation_id": "7816cfee-8ad0-4255-b839-3acd7a4b2cd5", "type": "aruco", "marker_id": 243, "marker_size_m": 0.025, @@ -1342,7 +1342,7 @@ "confidence": 0.15432248002290727 }, { - "observation_id": "9eb315df-83be-43e9-acb1-738d1bc9c7ff", + "observation_id": "fca5ddbc-02d1-45bb-968c-28a9bf2274f0", "type": "aruco", "marker_id": 94, "marker_size_m": 0.025, @@ -1396,7 +1396,7 @@ "confidence": 0.06057156860351561 }, { - "observation_id": "7cacc81b-7305-4ae5-af1d-9bee6aeb647a", + "observation_id": "e4c224d2-104d-48dc-a5c5-45bcfa897e33", "type": "aruco", "marker_id": 76, "marker_size_m": 0.025, @@ -1450,7 +1450,7 @@ "confidence": 0.2459421895345052 }, { - "observation_id": "68c87cbb-3fa9-4643-b538-3a065e46f545", + "observation_id": "c04c91e2-33b8-4690-8c1e-faa54996af3b", "type": "aruco", "marker_id": 100, "marker_size_m": 0.025, @@ -1504,7 +1504,7 @@ "confidence": 0.24407473894265982 }, { - "observation_id": "0903146d-64ec-4882-acf0-ed62e64d436e", + "observation_id": "e271ab38-30e9-4f70-991a-4a78614052d0", "type": "aruco", "marker_id": 75, "marker_size_m": 0.025, @@ -1558,7 +1558,7 @@ "confidence": 0.23896265492072474 }, { - "observation_id": "deefe266-8d68-4216-9fbb-bcdaffd243e4", + "observation_id": "c677eeb1-3ddd-4090-b61d-3312ff93698a", "type": "aruco", "marker_id": 68, "marker_size_m": 0.025, @@ -1612,7 +1612,7 @@ "confidence": 0.24909137483284013 }, { - "observation_id": "340c3083-57e5-4889-b1c4-62b232c629b6", + "observation_id": "e2e965fe-0688-4956-b5c8-b472a1a866c0", "type": "aruco", "marker_id": 46, "marker_size_m": 0.025, @@ -1666,7 +1666,7 @@ "confidence": 0.23734254719660833 }, { - "observation_id": "687d1bc8-5183-4e14-ae4f-104d2cbbebd3", + "observation_id": "0b1fa639-5719-4a92-bb61-de3a5f537d8a", "type": "aruco", "marker_id": 50, "marker_size_m": 0.025, @@ -1720,7 +1720,7 @@ "confidence": 0.2211554500544793 }, { - "observation_id": "a47ce685-b6dc-46eb-9d9a-280ec8e56fdb", + "observation_id": "e4d57e40-7524-4912-9997-ed57b457fc94", "type": "aruco", "marker_id": 72, "marker_size_m": 0.025, @@ -1774,7 +1774,7 @@ "confidence": 0.21841319450965294 }, { - "observation_id": "e7d953e1-bba2-4121-8fb4-74811adcacc3", + "observation_id": "e9e486eb-586e-4f60-82cd-8e85af24a057", "type": "aruco", "marker_id": 104, "marker_size_m": 0.025, @@ -1828,7 +1828,7 @@ "confidence": 0.22417849731445313 }, { - "observation_id": "f39e0707-77cf-4757-b7bf-1a1a24407955", + "observation_id": "e7f14793-e43b-4833-9c66-4141dec2bc44", "type": "aruco", "marker_id": 53, "marker_size_m": 0.025, @@ -1882,7 +1882,7 @@ "confidence": 0.22367025973033955 }, { - "observation_id": "575acfb5-3d1e-4090-9fb6-ed15f60a3ff4", + "observation_id": "4d779391-632e-4fa2-9853-5cf1920fd3c2", "type": "aruco", "marker_id": 60, "marker_size_m": 0.025, @@ -1936,7 +1936,7 @@ "confidence": 0.19874429613402733 }, { - "observation_id": "fe8cc3dd-23f4-4c8c-846f-57623eea9c62", + "observation_id": "7a4ef42c-1ecc-457f-8ba8-be79ad9ab714", "type": "aruco", "marker_id": 67, "marker_size_m": 0.025, @@ -1990,7 +1990,7 @@ "confidence": 0.19627771759033205 }, { - "observation_id": "8fcd54f5-1f2c-47f7-b93a-4268a5be6da9", + "observation_id": "ed010846-c477-4e11-821d-c398fe02d4c5", "type": "aruco", "marker_id": 86, "marker_size_m": 0.025, @@ -2044,7 +2044,7 @@ "confidence": 0.18966921411877496 }, { - "observation_id": "7cbfc038-4fc4-43b9-b5ab-2f9d663e44b5", + "observation_id": "8b24e54f-2f2f-4a41-b036-d7e55b982d9c", "type": "aruco", "marker_id": 88, "marker_size_m": 0.025, @@ -2098,7 +2098,7 @@ "confidence": 0.17697203515072252 }, { - "observation_id": "2d33a74f-b95e-477e-8487-cecee4108905", + "observation_id": "31dd65cb-5813-47b5-9957-2dae2e0c89df", "type": "aruco", "marker_id": 70, "marker_size_m": 0.025, @@ -2152,7 +2152,7 @@ "confidence": 0.193995418548584 }, { - "observation_id": "796f565c-74c6-4201-82fe-f56c82aa967f", + "observation_id": "846b18ed-d381-4034-b6bd-d6b6fcb77418", "type": "aruco", "marker_id": 90, "marker_size_m": 0.025, @@ -2206,7 +2206,7 @@ "confidence": 0.17958947754575058 }, { - "observation_id": "0dcef397-888c-4f8b-adcf-09c1eda4d48d", + "observation_id": "2462b7ec-9d3b-49c8-8e34-4c1bf041a4e9", "type": "aruco", "marker_id": 83, "marker_size_m": 0.025, @@ -2260,7 +2260,7 @@ "confidence": 0.17676838843571283 }, { - "observation_id": "f4e38593-d83d-41e4-8aa9-c093f7b52629", + "observation_id": "db18b721-d773-47da-8622-1405b9f373b0", "type": "aruco", "marker_id": 61, "marker_size_m": 0.025, @@ -2314,7 +2314,7 @@ "confidence": 0.1668050360320266 }, { - "observation_id": "ade767bd-3d2c-4358-ab09-e8b895b5516a", + "observation_id": "205fe12e-ab3a-4d0c-8e00-ca28cb40ccf6", "type": "aruco", "marker_id": 91, "marker_size_m": 0.025, diff --git a/data/evaluations/Scene9/render_b_camera_pose.json b/data/evaluations/Scene9/render_b_camera_pose.json index 504125d..c0a3da8 100644 --- a/data/evaluations/Scene9/render_b_camera_pose.json +++ b/data/evaluations/Scene9/render_b_camera_pose.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T10:25:24Z", + "created_utc": "2026-05-31T20:34:18Z", "source": { "detection_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\evaluations\\Scene9\\render_b_aruco_detection.json", "robot_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\robot\\robot.json" diff --git a/data/evaluations/Scene9/render_c_aruco_detection.json b/data/evaluations/Scene9/render_c_aruco_detection.json index 6e366d8..da51df3 100644 --- a/data/evaluations/Scene9/render_c_aruco_detection.json +++ b/data/evaluations/Scene9/render_c_aruco_detection.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T10:25:21Z", + "created_utc": "2026-05-31T20:34:16Z", "vision_config": { "MarkerType": "DICT_4X4_250", "MarkerSize": 0.025 @@ -46,7 +46,7 @@ }, "detections": [ { - "observation_id": "cf64993e-b0a4-4fe2-a4e1-d8643c540187", + "observation_id": "4f5542a8-14df-46c1-82db-1a2d97500448", "type": "aruco", "marker_id": 113, "marker_size_m": 0.025, @@ -100,7 +100,7 @@ "confidence": 0.9487615650349993 }, { - "observation_id": "9ade8ea3-f326-4723-98d6-b421f37f1a9c", + "observation_id": "13234fdc-5a13-4483-8a76-a2bc6e98df26", "type": "aruco", "marker_id": 245, "marker_size_m": 0.025, @@ -154,7 +154,7 @@ "confidence": 0.9266602848500798 }, { - "observation_id": "571e5890-a3a4-4a23-a10c-70be6f47ae17", + "observation_id": "7ea6faca-9c46-4c3c-8552-b4595421a9eb", "type": "aruco", "marker_id": 243, "marker_size_m": 0.025, @@ -208,7 +208,7 @@ "confidence": 0.8890505808415132 }, { - "observation_id": "11cb203b-8d89-4e20-be1d-a5e9dbbd4a3c", + "observation_id": "5278689c-fb4a-4af8-8fe5-93419ea45e5f", "type": "aruco", "marker_id": 229, "marker_size_m": 0.025, @@ -262,7 +262,7 @@ "confidence": 0.3082915922280886 }, { - "observation_id": "49e82dbc-71de-489e-8ca0-86e9c4b2ab4a", + "observation_id": "4f80c066-e5e2-4ccf-9e4e-b7761c3af848", "type": "aruco", "marker_id": 208, "marker_size_m": 0.025, @@ -316,7 +316,7 @@ "confidence": 0.2964796698261984 }, { - "observation_id": "469170de-53fc-4e6d-a6a8-f92f01716d35", + "observation_id": "b1513300-6853-43ac-b878-e1ae65d2d3fe", "type": "aruco", "marker_id": 198, "marker_size_m": 0.025, @@ -370,7 +370,7 @@ "confidence": 0.21181999247805575 }, { - "observation_id": "ed58e338-4cb5-4be9-8742-caff231c4191", + "observation_id": "f3e582e8-fd00-41cf-a08c-77c541df935b", "type": "aruco", "marker_id": 214, "marker_size_m": 0.025, @@ -424,7 +424,7 @@ "confidence": 0.21966133686197709 }, { - "observation_id": "59f45fec-95ea-45d5-a313-01d1df02f5ca", + "observation_id": "e80baad4-7612-45c8-95cd-62c61fb3c41d", "type": "aruco", "marker_id": 210, "marker_size_m": 0.025, diff --git a/data/evaluations/Scene9/render_c_camera_pose.json b/data/evaluations/Scene9/render_c_camera_pose.json index 7283119..09371e0 100644 --- a/data/evaluations/Scene9/render_c_camera_pose.json +++ b/data/evaluations/Scene9/render_c_camera_pose.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T10:25:24Z", + "created_utc": "2026-05-31T20:34:18Z", "source": { "detection_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\evaluations\\Scene9\\render_c_aruco_detection.json", "robot_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\robot\\robot.json" diff --git a/data/evaluations/Scene9/render_d_aruco_detection.json b/data/evaluations/Scene9/render_d_aruco_detection.json index 81631bb..3300881 100644 --- a/data/evaluations/Scene9/render_d_aruco_detection.json +++ b/data/evaluations/Scene9/render_d_aruco_detection.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T10:25:21Z", + "created_utc": "2026-05-31T20:34:16Z", "vision_config": { "MarkerType": "DICT_4X4_250", "MarkerSize": 0.025 @@ -46,7 +46,7 @@ }, "detections": [ { - "observation_id": "acd36297-8590-4e39-9e07-2d14934c5b18", + "observation_id": "62159d0c-7b40-4e16-940f-ba2767d8b5a6", "type": "aruco", "marker_id": 113, "marker_size_m": 0.025, @@ -100,7 +100,7 @@ "confidence": 0.9819147066961816 }, { - "observation_id": "c7a8b343-4662-4b4a-91b8-cdd7f8446e9d", + "observation_id": "1fc62b88-87cf-4431-a2f7-3e53816f7d82", "type": "aruco", "marker_id": 245, "marker_size_m": 0.025, @@ -154,7 +154,7 @@ "confidence": 0.896516741806838 }, { - "observation_id": "cf69ef4e-b613-438a-96b9-d511cf7ecd86", + "observation_id": "172aef68-2afd-4e3a-9889-a65832c5e04f", "type": "aruco", "marker_id": 243, "marker_size_m": 0.025, @@ -208,7 +208,7 @@ "confidence": 0.8782459535277616 }, { - "observation_id": "5b126bae-1879-4dc7-8fc1-693a130fbc9c", + "observation_id": "2d83b0a9-eeb7-4eea-92c5-26b6fab011f1", "type": "aruco", "marker_id": 244, "marker_size_m": 0.025, @@ -262,7 +262,7 @@ "confidence": 0.49420707353484883 }, { - "observation_id": "0adc2d3d-2c76-4b58-ba67-0453b429ed43", + "observation_id": "a6adc44e-d309-4347-8774-3657ec0daab2", "type": "aruco", "marker_id": 208, "marker_size_m": 0.025, @@ -316,7 +316,7 @@ "confidence": 0.06739671544456982 }, { - "observation_id": "d56b98b1-2379-40c1-ab4a-97ddc90789cf", + "observation_id": "01e98ce0-0dcf-4d46-963f-24ec97298b77", "type": "aruco", "marker_id": 103, "marker_size_m": 0.025, @@ -370,7 +370,7 @@ "confidence": 0.17416420855033052 }, { - "observation_id": "e1dea64d-2ef1-4704-bd32-0d8d37fce07f", + "observation_id": "24c04561-73ac-4449-8531-9d8339d1f07d", "type": "aruco", "marker_id": 229, "marker_size_m": 0.025, @@ -424,7 +424,7 @@ "confidence": 0.4189637021373363 }, { - "observation_id": "d225f050-e98e-4cdb-98c7-7f4ec1993abe", + "observation_id": "5d001e51-cdd2-495c-9a83-b69e0dd68eba", "type": "aruco", "marker_id": 58, "marker_size_m": 0.025, @@ -478,7 +478,7 @@ "confidence": 0.24540823915500745 }, { - "observation_id": "8c1178ae-dc58-45e3-a325-f548f6ea7643", + "observation_id": "5bc6c7d7-afd3-4476-90fc-2c5d4f7e419e", "type": "aruco", "marker_id": 214, "marker_size_m": 0.025, @@ -532,7 +532,7 @@ "confidence": 0.32624039952470835 }, { - "observation_id": "498cfff6-84bf-4369-b8ff-d0b0acf8eff6", + "observation_id": "51592f44-1c5c-477a-9d79-e1ad40f54542", "type": "aruco", "marker_id": 64, "marker_size_m": 0.025, @@ -586,7 +586,7 @@ "confidence": 0.45882243623190877 }, { - "observation_id": "cc88dc5c-c96e-4e67-82a1-310dcecc12df", + "observation_id": "75a9e37b-d35c-46c0-8cab-8bff0d5cd43f", "type": "aruco", "marker_id": 124, "marker_size_m": 0.025, @@ -640,7 +640,7 @@ "confidence": 0.051262886894149665 }, { - "observation_id": "49db44ed-8e8a-4331-84d1-6f55790d7b47", + "observation_id": "37a0443d-aa46-443e-b12c-cf1d29945553", "type": "aruco", "marker_id": 211, "marker_size_m": 0.025, @@ -694,7 +694,7 @@ "confidence": 0.3071912693949274 }, { - "observation_id": "f63a04b0-f0d8-4170-99f3-6518cdb08b18", + "observation_id": "433745c3-3bd1-4a0e-96d7-628a9e937461", "type": "aruco", "marker_id": 72, "marker_size_m": 0.025, @@ -748,7 +748,7 @@ "confidence": 0.013395930107400523 }, { - "observation_id": "c4dd4579-b90d-4016-b3e1-eac48bda6442", + "observation_id": "a8bfa26a-c9ef-4963-929a-c0cd66fdd06c", "type": "aruco", "marker_id": 84, "marker_size_m": 0.025, @@ -802,7 +802,7 @@ "confidence": 0.07285288505606423 }, { - "observation_id": "65696218-7213-45e6-95c5-7e190bafc3e2", + "observation_id": "6e2ea730-94e9-4abc-abb3-f45cb792c57d", "type": "aruco", "marker_id": 86, "marker_size_m": 0.025, diff --git a/data/evaluations/Scene9/render_d_camera_pose.json b/data/evaluations/Scene9/render_d_camera_pose.json index 3ac43de..d83e849 100644 --- a/data/evaluations/Scene9/render_d_camera_pose.json +++ b/data/evaluations/Scene9/render_d_camera_pose.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T10:25:24Z", + "created_utc": "2026-05-31T20:34:19Z", "source": { "detection_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\evaluations\\Scene9\\render_d_aruco_detection.json", "robot_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\robot\\robot.json" diff --git a/data/evaluations/Scene9/render_e_aruco_detection.json b/data/evaluations/Scene9/render_e_aruco_detection.json index 4737558..a4cf723 100644 --- a/data/evaluations/Scene9/render_e_aruco_detection.json +++ b/data/evaluations/Scene9/render_e_aruco_detection.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T10:25:22Z", + "created_utc": "2026-05-31T20:34:16Z", "vision_config": { "MarkerType": "DICT_4X4_250", "MarkerSize": 0.025 @@ -46,7 +46,7 @@ }, "detections": [ { - "observation_id": "6fc71185-930f-4f82-8373-039be269c229", + "observation_id": "087a4182-fd74-451b-ae82-efe6961bb3d0", "type": "aruco", "marker_id": 92, "marker_size_m": 0.025, @@ -100,7 +100,7 @@ "confidence": 0.15369374989294518 }, { - "observation_id": "61c58ced-3657-4aee-a0a8-2dc1e52f188f", + "observation_id": "6280ab09-ea6b-43d4-a293-02574271eabe", "type": "aruco", "marker_id": 113, "marker_size_m": 0.025, @@ -154,7 +154,7 @@ "confidence": 0.6379583967674639 }, { - "observation_id": "56c7a16a-772b-4998-9078-04d725ed6014", + "observation_id": "babe888a-58a7-4b93-b1c8-939be23f7d0d", "type": "aruco", "marker_id": 217, "marker_size_m": 0.025, @@ -208,7 +208,7 @@ "confidence": 0.3233651345714012 }, { - "observation_id": "31696819-1ec7-4797-9bff-85b0cb2b5bb6", + "observation_id": "6c8a6edf-9a0e-4b8e-86ae-1af551e3a817", "type": "aruco", "marker_id": 105, "marker_size_m": 0.025, @@ -262,7 +262,7 @@ "confidence": 0.420622587927407 }, { - "observation_id": "d7f50fce-2ff0-491b-b7cb-149bc590cf17", + "observation_id": "5612df49-9322-4027-89dc-2c2c2e52b874", "type": "aruco", "marker_id": 85, "marker_size_m": 0.025, @@ -316,7 +316,7 @@ "confidence": 0.3128949822399185 }, { - "observation_id": "eb7f9038-c6ee-4e17-b0de-a38cd18ddebd", + "observation_id": "0f42e339-6b98-455e-a330-4a03c4b0f611", "type": "aruco", "marker_id": 206, "marker_size_m": 0.025, @@ -370,7 +370,7 @@ "confidence": 0.11623157468788738 }, { - "observation_id": "d4d2d4aa-e45d-4ddb-a590-e80eda4b032a", + "observation_id": "0d648a76-257f-4f3f-988f-a309c3ec7876", "type": "aruco", "marker_id": 244, "marker_size_m": 0.025, @@ -424,7 +424,7 @@ "confidence": 0.48895218467117135 }, { - "observation_id": "ab93b57a-0627-49cd-b984-cb5a79a35f56", + "observation_id": "6117d8df-1de6-47d6-a5e7-f7d2e8342dc0", "type": "aruco", "marker_id": 97, "marker_size_m": 0.025, @@ -478,7 +478,7 @@ "confidence": 0.22596816505744277 }, { - "observation_id": "1ad81425-7f91-45d0-b57b-c8d0818a41b7", + "observation_id": "e1e687e2-1724-457b-901c-d2e2fa569bd5", "type": "aruco", "marker_id": 245, "marker_size_m": 0.025, @@ -532,7 +532,7 @@ "confidence": 0.32694949112255345 }, { - "observation_id": "b48dfcec-0a2a-46a9-b33a-43b0ecdcc4d4", + "observation_id": "8fb4f342-49f9-4aca-bdfe-b5d5021b00a3", "type": "aruco", "marker_id": 47, "marker_size_m": 0.025, @@ -586,7 +586,7 @@ "confidence": 0.24626971873720385 }, { - "observation_id": "3f50ac96-2803-4036-9552-f5c55e9d954f", + "observation_id": "08ee9bb4-11bd-4097-b2db-c97798dbdc93", "type": "aruco", "marker_id": 96, "marker_size_m": 0.025, @@ -640,7 +640,7 @@ "confidence": 0.2205630261207473 }, { - "observation_id": "2e4f216d-8e34-4267-841d-2ec2180a49e6", + "observation_id": "ee4404fa-8fe5-4204-b84d-bd335ca480ce", "type": "aruco", "marker_id": 208, "marker_size_m": 0.025, @@ -694,7 +694,7 @@ "confidence": 0.22017552547080893 }, { - "observation_id": "c288b7ab-bf08-4fc0-b2df-07acd15f1ccc", + "observation_id": "bde7c5f2-db1b-4788-a1f8-6bb7a955e04d", "type": "aruco", "marker_id": 62, "marker_size_m": 0.025, @@ -748,7 +748,7 @@ "confidence": 0.24902550615732547 }, { - "observation_id": "0f6715ed-0518-44e9-87cb-2037e0c0edcf", + "observation_id": "6e7fde78-5661-492a-bb85-d21098b3624d", "type": "aruco", "marker_id": 124, "marker_size_m": 0.025, @@ -802,7 +802,7 @@ "confidence": 0.1717072854797086 }, { - "observation_id": "24e7ae54-0d18-48fd-a549-630fbc0d8974", + "observation_id": "6fc14e4d-6ac6-4027-b6e5-6e96e4ec868d", "type": "aruco", "marker_id": 79, "marker_size_m": 0.025, @@ -856,7 +856,7 @@ "confidence": 0.2093822185726055 }, { - "observation_id": "ccde6c14-9316-46d4-a2e5-b525942989ba", + "observation_id": "23a1ff79-0495-4970-a7bc-841534293457", "type": "aruco", "marker_id": 66, "marker_size_m": 0.025, @@ -910,7 +910,7 @@ "confidence": 0.16725963004706537 }, { - "observation_id": "a9d19be1-0346-4edd-b414-7cdddbd7b046", + "observation_id": "2adc985e-f3c4-4d36-a489-eaa53d748de7", "type": "aruco", "marker_id": 55, "marker_size_m": 0.025, @@ -964,7 +964,7 @@ "confidence": 0.22298824455832925 }, { - "observation_id": "4d14965d-15bf-41fe-9af7-fbe19be926d5", + "observation_id": "c3240208-5b4d-40de-b5ab-39afc4c88548", "type": "aruco", "marker_id": 53, "marker_size_m": 0.025, @@ -1018,7 +1018,7 @@ "confidence": 0.13595850692924102 }, { - "observation_id": "e0ca82e9-8ae2-4203-a93e-deb9be852c63", + "observation_id": "e256e786-c86f-4fd8-8ec4-0f0f3a34e42a", "type": "aruco", "marker_id": 243, "marker_size_m": 0.025, @@ -1072,7 +1072,7 @@ "confidence": 0.2298583378390498 }, { - "observation_id": "c8bef757-29ac-48c2-963a-d5c52a772606", + "observation_id": "24595212-9a3b-4e2b-a7d6-5d39a5cb223b", "type": "aruco", "marker_id": 214, "marker_size_m": 0.025, @@ -1126,7 +1126,7 @@ "confidence": 0.17248468175234963 }, { - "observation_id": "3d2f550e-8c4e-4f5a-a981-40b902dda77f", + "observation_id": "ac844a2b-7454-49ad-b0b6-ffc98daa75de", "type": "aruco", "marker_id": 51, "marker_size_m": 0.025, @@ -1180,7 +1180,7 @@ "confidence": 0.12157403976480062 }, { - "observation_id": "687e5bbc-d03e-4665-a206-7398ad988fe3", + "observation_id": "484a5752-8e57-48f6-8776-24baaa0faece", "type": "aruco", "marker_id": 95, "marker_size_m": 0.025, @@ -1234,7 +1234,7 @@ "confidence": 0.14922985097126407 }, { - "observation_id": "9a20c3d5-a6ba-470d-891d-2d685d393d73", + "observation_id": "69ef89b5-3cac-49c4-90e5-a2ee74240362", "type": "aruco", "marker_id": 122, "marker_size_m": 0.025, @@ -1288,7 +1288,7 @@ "confidence": 0.1374474660290558 }, { - "observation_id": "727c58a5-0255-41f7-b4af-dd829c4009aa", + "observation_id": "46447d39-c157-4276-bed1-aaf72d779e03", "type": "aruco", "marker_id": 103, "marker_size_m": 0.025, @@ -1342,7 +1342,7 @@ "confidence": 0.11373255626245794 }, { - "observation_id": "c564521c-9730-47d5-8293-fe67b0f7f7f0", + "observation_id": "fa2028b6-f95a-4d46-b903-dd9b6e203384", "type": "aruco", "marker_id": 60, "marker_size_m": 0.025, @@ -1396,7 +1396,7 @@ "confidence": 0.1208904643109979 }, { - "observation_id": "e360c493-84f1-4cc1-bdbb-124070ff3d49", + "observation_id": "56844b60-5be2-4144-9eec-3d423d8323d6", "type": "aruco", "marker_id": 72, "marker_size_m": 0.025, @@ -1450,7 +1450,7 @@ "confidence": 0.15549629518828512 }, { - "observation_id": "2c51d601-5297-48a7-8b2e-356724e40aff", + "observation_id": "3c548f42-f562-4dd2-8cb4-435b5523a476", "type": "aruco", "marker_id": 211, "marker_size_m": 0.025, @@ -1504,7 +1504,7 @@ "confidence": 0.13332463075982282 }, { - "observation_id": "1bb69ea4-2eb6-473c-8502-3defa78b93a8", + "observation_id": "585ff40e-feb5-421c-b5a4-fdfe4f0ffe95", "type": "aruco", "marker_id": 84, "marker_size_m": 0.025, @@ -1558,7 +1558,7 @@ "confidence": 0.13255097071329755 }, { - "observation_id": "7276115d-9eb1-4c73-81fd-33fa9ff7e6b7", + "observation_id": "60a6c00b-2ae8-4f32-b8de-9651580a458e", "type": "aruco", "marker_id": 86, "marker_size_m": 0.025, @@ -1612,7 +1612,7 @@ "confidence": 0.1265670983135443 }, { - "observation_id": "c49290ca-b544-441c-a823-50f8d3ba44a4", + "observation_id": "452571be-6bd4-4954-98a6-4259782c8434", "type": "aruco", "marker_id": 64, "marker_size_m": 0.025, diff --git a/data/evaluations/Scene9/render_e_camera_pose.json b/data/evaluations/Scene9/render_e_camera_pose.json index f2d769f..bedc912 100644 --- a/data/evaluations/Scene9/render_e_camera_pose.json +++ b/data/evaluations/Scene9/render_e_camera_pose.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T10:25:25Z", + "created_utc": "2026-05-31T20:34:19Z", "source": { "detection_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\evaluations\\Scene9\\render_e_aruco_detection.json", "robot_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\robot\\robot.json" diff --git a/data/evaluations/Scene9/render_f_aruco_detection.json b/data/evaluations/Scene9/render_f_aruco_detection.json index 5661931..0ebd7ca 100644 --- a/data/evaluations/Scene9/render_f_aruco_detection.json +++ b/data/evaluations/Scene9/render_f_aruco_detection.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T10:25:22Z", + "created_utc": "2026-05-31T20:34:17Z", "vision_config": { "MarkerType": "DICT_4X4_250", "MarkerSize": 0.025 @@ -46,7 +46,7 @@ }, "detections": [ { - "observation_id": "6ddfe847-9814-4c0d-9668-c35105142bec", + "observation_id": "4340a67e-546b-4c41-b6af-b97dd46642dd", "type": "aruco", "marker_id": 43, "marker_size_m": 0.025, @@ -100,7 +100,7 @@ "confidence": 0.850354724870378 }, { - "observation_id": "1d6e7db3-9a78-4ace-99e6-2e5e939a8194", + "observation_id": "acd51a2d-4136-47fc-852a-70689177fa34", "type": "aruco", "marker_id": 41, "marker_size_m": 0.025, @@ -154,7 +154,7 @@ "confidence": 0.3023072583773299 }, { - "observation_id": "843b3a74-fad4-47b1-80b5-659b5fd39894", + "observation_id": "77d60b7b-c067-4e3c-abbb-8380c5da0f3a", "type": "aruco", "marker_id": 46, "marker_size_m": 0.025, @@ -208,7 +208,7 @@ "confidence": 0.2988751797371847 }, { - "observation_id": "e008eefa-bde9-4e56-893b-8a242d07916a", + "observation_id": "819ab1d7-7d29-4b81-9062-b07c701f1350", "type": "aruco", "marker_id": 56, "marker_size_m": 0.025, @@ -262,7 +262,7 @@ "confidence": 0.5697620483284124 }, { - "observation_id": "c0297b0f-9fd9-44f5-9235-9f76b5400e20", + "observation_id": "bb8f3982-3298-4607-98e0-6c3a4c56bf4f", "type": "aruco", "marker_id": 208, "marker_size_m": 0.025, @@ -316,7 +316,7 @@ "confidence": 0.5829305549976826 }, { - "observation_id": "cbfc45a8-cb5d-4f49-af82-7847232cf35b", + "observation_id": "1ef7e9ca-13bb-4e2b-a3a4-0cd2bccefe83", "type": "aruco", "marker_id": 47, "marker_size_m": 0.025, @@ -370,7 +370,7 @@ "confidence": 0.5768583617164568 }, { - "observation_id": "a68e5a34-cba4-4d8a-996c-4d781f0c9581", + "observation_id": "bc995fa0-7605-4c8d-90bb-4af814e6061a", "type": "aruco", "marker_id": 62, "marker_size_m": 0.025, @@ -424,7 +424,7 @@ "confidence": 0.5593704450665263 }, { - "observation_id": "9feb6cc3-2216-4e37-94df-4e7aacf33c98", + "observation_id": "e461b461-3ef5-450c-a12a-ac55cb3d794c", "type": "aruco", "marker_id": 54, "marker_size_m": 0.025, @@ -478,7 +478,7 @@ "confidence": 0.5766374039623903 }, { - "observation_id": "397dfde9-511c-45e0-a6fd-51174f857bab", + "observation_id": "941f9bb4-6fb1-4626-9087-cbefd12708ee", "type": "aruco", "marker_id": 53, "marker_size_m": 0.025, @@ -532,7 +532,7 @@ "confidence": 0.21364841201201337 }, { - "observation_id": "057b424e-f5a5-4a46-8f9a-13419d869f5a", + "observation_id": "631f849f-8529-4736-a48a-56c96c63df45", "type": "aruco", "marker_id": 229, "marker_size_m": 0.025, @@ -586,7 +586,7 @@ "confidence": 0.5464657910873614 }, { - "observation_id": "b758b327-ded4-4b8c-8e7f-7ef3c63c6449", + "observation_id": "91689ac4-9a7d-4351-b639-cf6167c31caf", "type": "aruco", "marker_id": 97, "marker_size_m": 0.025, @@ -640,7 +640,7 @@ "confidence": 0.5705029634947052 }, { - "observation_id": "a0e9f5d6-1a3f-467c-927c-8f840e59a9e7", + "observation_id": "6dded9ad-709d-4344-9afe-84a004afe01f", "type": "aruco", "marker_id": 72, "marker_size_m": 0.025, @@ -694,7 +694,7 @@ "confidence": 0.5440516905787338 }, { - "observation_id": "e1f16cc8-2556-419f-a310-e04d6d67a82a", + "observation_id": "d82fedd2-e4a3-474b-9a26-ff1b582e197e", "type": "aruco", "marker_id": 55, "marker_size_m": 0.025, @@ -748,7 +748,7 @@ "confidence": 0.5461315019106076 }, { - "observation_id": "a8673501-6341-4af5-a033-84c0736ab193", + "observation_id": "67b636ba-958b-4c40-9e89-de2eb56df02e", "type": "aruco", "marker_id": 96, "marker_size_m": 0.025, @@ -802,7 +802,7 @@ "confidence": 0.5763709732716893 }, { - "observation_id": "fba0b4e6-a0aa-4d7e-8dab-4ca9ceffbc6d", + "observation_id": "6b6c2dc7-ef6d-4d08-aea3-d746e5f6a63b", "type": "aruco", "marker_id": 42, "marker_size_m": 0.025, @@ -856,7 +856,7 @@ "confidence": 0.2932628535560303 }, { - "observation_id": "75b08127-82a6-49d5-8839-06937726ff41", + "observation_id": "a7edbdb6-f08e-466b-9fee-3347c9b08986", "type": "aruco", "marker_id": 84, "marker_size_m": 0.025, @@ -910,7 +910,7 @@ "confidence": 0.06519221426443914 }, { - "observation_id": "6786a8ed-59e5-43ff-8110-d9c5755245fa", + "observation_id": "a7897d0b-c733-4e3b-a8db-43cf6944f367", "type": "aruco", "marker_id": 79, "marker_size_m": 0.025, @@ -964,7 +964,7 @@ "confidence": 0.5460974493377216 }, { - "observation_id": "31d831ff-3911-482f-b9cb-3a77510ecefb", + "observation_id": "d798d53b-ecae-48e8-ade1-c81a09646783", "type": "aruco", "marker_id": 66, "marker_size_m": 0.025, @@ -1018,7 +1018,7 @@ "confidence": 0.5349107016469481 }, { - "observation_id": "cce8a642-14c5-49b7-b26d-83a3324a7504", + "observation_id": "6717e240-6eb7-4b86-9ca0-58345243742c", "type": "aruco", "marker_id": 95, "marker_size_m": 0.025, @@ -1072,7 +1072,7 @@ "confidence": 0.5227826547122322 }, { - "observation_id": "088ccc39-f28b-48af-8994-5121fce0f677", + "observation_id": "a1932f32-df0d-4d1c-a709-ef1e66ebc81b", "type": "aruco", "marker_id": 103, "marker_size_m": 0.025, @@ -1126,7 +1126,7 @@ "confidence": 0.5046333482067283 }, { - "observation_id": "d2921bf5-88b2-4228-93e9-b314c1618c2a", + "observation_id": "f772f877-7ecd-473e-98cb-da1867c7665e", "type": "aruco", "marker_id": 52, "marker_size_m": 0.025, @@ -1180,7 +1180,7 @@ "confidence": 0.4723088830007061 }, { - "observation_id": "af43368a-46d6-47b3-910d-677baf8ba363", + "observation_id": "d1cb3430-fb40-413a-813b-69935f64c227", "type": "aruco", "marker_id": 73, "marker_size_m": 0.025, @@ -1234,7 +1234,7 @@ "confidence": 0.13607001327160623 }, { - "observation_id": "246998d9-f26e-4532-92f1-f5f3f59e5e35", + "observation_id": "645a8fff-2f5d-4222-8b9c-4a5710cc9385", "type": "aruco", "marker_id": 210, "marker_size_m": 0.025, @@ -1288,7 +1288,7 @@ "confidence": 0.46988879526830113 }, { - "observation_id": "05cf03d4-39eb-44de-83d2-325cb5c7c4bd", + "observation_id": "5917e84e-acd4-4f59-95a2-926ec5e58eb2", "type": "aruco", "marker_id": 58, "marker_size_m": 0.025, @@ -1342,7 +1342,7 @@ "confidence": 0.4655541127751829 }, { - "observation_id": "a5bb8f95-2ffe-493e-b89f-72fad459e4ca", + "observation_id": "0793b521-e3f5-4828-8315-911513e51eba", "type": "aruco", "marker_id": 69, "marker_size_m": 0.025, @@ -1396,7 +1396,7 @@ "confidence": 0.4655541127751829 }, { - "observation_id": "77d07710-1005-4c77-9244-553436afaf7e", + "observation_id": "41c0f927-51ad-456b-a7c3-4e8ff9e54772", "type": "aruco", "marker_id": 82, "marker_size_m": 0.025, @@ -1450,7 +1450,7 @@ "confidence": 0.49001748422717006 }, { - "observation_id": "0bd33220-1839-484f-95bc-44de9bce5d97", + "observation_id": "7023258e-89dc-49b3-a06d-4a28bcf34830", "type": "aruco", "marker_id": 101, "marker_size_m": 0.025, @@ -1504,7 +1504,7 @@ "confidence": 0.46225891142368675 }, { - "observation_id": "caf17446-e76c-440f-8cd9-c7e98d6b5951", + "observation_id": "8a6809ef-8d1e-44b3-a6ff-c97449b0a254", "type": "aruco", "marker_id": 64, "marker_size_m": 0.025, @@ -1558,7 +1558,7 @@ "confidence": 0.43211414091114625 }, { - "observation_id": "f150d187-dfd4-4f83-a5d1-98961098732a", + "observation_id": "ffcef9f7-fa42-4b89-95be-09b12acc120b", "type": "aruco", "marker_id": 81, "marker_size_m": 0.025, @@ -1612,7 +1612,7 @@ "confidence": 0.4468602604238168 }, { - "observation_id": "4bb4bd97-e41e-49e4-8c5b-98521aea2496", + "observation_id": "02bd9dda-2fde-4e66-93b8-5e2780868170", "type": "aruco", "marker_id": 83, "marker_size_m": 0.025, @@ -1666,7 +1666,7 @@ "confidence": 0.4377857805109236 }, { - "observation_id": "959fcf81-a6a5-47e7-affa-f9008534bb98", + "observation_id": "eeba6e41-6ab3-43bd-9433-a5450cc61039", "type": "aruco", "marker_id": 75, "marker_size_m": 0.025, @@ -1720,7 +1720,7 @@ "confidence": 0.22473325223116958 }, { - "observation_id": "29339bc4-3728-4704-b422-d14f40ecea8a", + "observation_id": "18425f53-7811-4549-a413-e43d54ea7e40", "type": "aruco", "marker_id": 113, "marker_size_m": 0.025, diff --git a/data/evaluations/Scene9/render_f_camera_pose.json b/data/evaluations/Scene9/render_f_camera_pose.json index f1e22fd..a2efb67 100644 --- a/data/evaluations/Scene9/render_f_camera_pose.json +++ b/data/evaluations/Scene9/render_f_camera_pose.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T10:25:25Z", + "created_utc": "2026-05-31T20:34:19Z", "source": { "detection_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\evaluations\\Scene9\\render_f_aruco_detection.json", "robot_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\robot\\robot.json" diff --git a/data/evaluations/Scene9/render_g_aruco_detection.json b/data/evaluations/Scene9/render_g_aruco_detection.json index dfd1919..7ff98fb 100644 --- a/data/evaluations/Scene9/render_g_aruco_detection.json +++ b/data/evaluations/Scene9/render_g_aruco_detection.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T10:25:23Z", + "created_utc": "2026-05-31T20:34:17Z", "vision_config": { "MarkerType": "DICT_4X4_250", "MarkerSize": 0.025 @@ -46,7 +46,7 @@ }, "detections": [ { - "observation_id": "89f2a226-35fc-4b08-b10a-42dd771b9d53", + "observation_id": "4ed22d16-c2d8-4fbc-9165-23bb3c671bb5", "type": "aruco", "marker_id": 41, "marker_size_m": 0.025, @@ -100,7 +100,7 @@ "confidence": 0.7407693857081211 }, { - "observation_id": "af0773a4-adfa-4bae-8d87-f364ba4246b1", + "observation_id": "1bca4d06-1a3b-4543-9cdd-784e7b28df4c", "type": "aruco", "marker_id": 42, "marker_size_m": 0.025, @@ -154,7 +154,7 @@ "confidence": 0.47851333141876906 }, { - "observation_id": "90d1ce64-bff4-4d3f-b495-9828603377c5", + "observation_id": "babe0171-8902-4db2-9a50-27a4ec7d84f5", "type": "aruco", "marker_id": 198, "marker_size_m": 0.025, @@ -208,7 +208,7 @@ "confidence": 0.5891588970505985 }, { - "observation_id": "01ee36ee-0a8e-4c2e-9536-341b642931d4", + "observation_id": "db3ca2c8-3d8d-47ff-a38b-742ae4c9cd29", "type": "aruco", "marker_id": 43, "marker_size_m": 0.025, @@ -262,7 +262,7 @@ "confidence": 0.38340186913811386 }, { - "observation_id": "5fc86ae6-dc58-4ae6-9375-c891e53bac96", + "observation_id": "6ec27886-7e79-4b00-9ec6-628cd009b08c", "type": "aruco", "marker_id": 84, "marker_size_m": 0.025, @@ -316,7 +316,7 @@ "confidence": 0.3490767193505014 }, { - "observation_id": "1322c03c-a58b-44f4-a882-b6d0f4e8b6c9", + "observation_id": "e7dd82cb-dde0-4160-bec7-054e7909d8e1", "type": "aruco", "marker_id": 229, "marker_size_m": 0.025, @@ -370,7 +370,7 @@ "confidence": 0.519411428244808 }, { - "observation_id": "c255fa4e-aee9-4400-882f-ac74c8aff039", + "observation_id": "6b4de8d0-a32a-449f-b04d-ee559444e718", "type": "aruco", "marker_id": 64, "marker_size_m": 0.025, @@ -424,7 +424,7 @@ "confidence": 0.5331747682067169 }, { - "observation_id": "9d36ead0-1e68-4b45-8bd4-97f9e3a677e9", + "observation_id": "740f2e43-ff17-4f67-9458-ab4fb221e9f4", "type": "aruco", "marker_id": 72, "marker_size_m": 0.025, @@ -478,7 +478,7 @@ "confidence": 0.43254677700170213 }, { - "observation_id": "4a355ea6-ad8e-47aa-8328-ea9371df477f", + "observation_id": "a16dc8e1-76f3-4955-98ec-bbc84353e784", "type": "aruco", "marker_id": 53, "marker_size_m": 0.025, @@ -532,7 +532,7 @@ "confidence": 0.27711751756945874 }, { - "observation_id": "e0ec4ae1-3371-4cdc-be4d-0a72a7446054", + "observation_id": "ec157b33-fe28-4527-b0a4-01f5b5b32c05", "type": "aruco", "marker_id": 58, "marker_size_m": 0.025, @@ -586,7 +586,7 @@ "confidence": 0.48073279309443956 }, { - "observation_id": "0e9ffeb3-8d24-400e-845a-e2c703621ab4", + "observation_id": "c09306da-02d6-4ee4-a39d-82d37977c242", "type": "aruco", "marker_id": 69, "marker_size_m": 0.025, @@ -640,7 +640,7 @@ "confidence": 0.45515519100712953 }, { - "observation_id": "faee1e72-775f-4c5d-bca3-f6ad68517fe7", + "observation_id": "45fb5703-ed8b-471a-bc43-0b4ad7645c6a", "type": "aruco", "marker_id": 215, "marker_size_m": 0.025, @@ -694,7 +694,7 @@ "confidence": 0.3775515964613595 }, { - "observation_id": "01d694e4-9b96-48ad-8045-7caf42ce8202", + "observation_id": "3fd57096-a6e8-4769-90e2-d837174de623", "type": "aruco", "marker_id": 103, "marker_size_m": 0.025, @@ -748,7 +748,7 @@ "confidence": 0.47991555158957017 }, { - "observation_id": "be35393c-2383-4661-a6f1-5f3610d12f80", + "observation_id": "1a3cdb7d-3652-43d6-abc8-31ea64d3f28b", "type": "aruco", "marker_id": 56, "marker_size_m": 0.025, @@ -802,7 +802,7 @@ "confidence": 0.39662908657084783 }, { - "observation_id": "a26a80d6-cf59-40a8-ab91-be2f6e2202b0", + "observation_id": "deee817b-c3c7-457d-ac86-33da00f01a6e", "type": "aruco", "marker_id": 46, "marker_size_m": 0.025, @@ -856,7 +856,7 @@ "confidence": 0.1698001278724927 }, { - "observation_id": "06d1df75-8efa-4f65-bc16-ac1d6876285f", + "observation_id": "0d469273-c77d-4957-8cc9-1f6c6d931af4", "type": "aruco", "marker_id": 68, "marker_size_m": 0.025, @@ -910,7 +910,7 @@ "confidence": 0.07718187630567852 }, { - "observation_id": "3ff3bfd5-ac16-4247-b696-05a854c73d8c", + "observation_id": "02a463ef-1804-4a53-a63f-2cb8458bed4b", "type": "aruco", "marker_id": 208, "marker_size_m": 0.025, @@ -964,7 +964,7 @@ "confidence": 0.4316478958478293 }, { - "observation_id": "97e6d81e-2741-40dc-9ee9-aad045cca8f5", + "observation_id": "c98f83f0-e394-4066-b019-6336c024481b", "type": "aruco", "marker_id": 95, "marker_size_m": 0.025, @@ -1018,7 +1018,7 @@ "confidence": 0.4181682027393045 }, { - "observation_id": "01b67ab6-8c50-4ce4-bed6-0158823efd10", + "observation_id": "0500566e-ae2e-4b4b-9c41-bf3f14800fa3", "type": "aruco", "marker_id": 55, "marker_size_m": 0.025, @@ -1072,7 +1072,7 @@ "confidence": 0.39668368657567366 }, { - "observation_id": "5371b799-160f-4bbe-85cc-13b1f810e89d", + "observation_id": "bdb0d68d-4129-4a69-9d7f-d08d652bddfc", "type": "aruco", "marker_id": 66, "marker_size_m": 0.025, @@ -1126,7 +1126,7 @@ "confidence": 0.3829765144945479 }, { - "observation_id": "070f02e4-16d1-429a-8aaa-12ba52832ba0", + "observation_id": "64b5825c-8a9b-4c80-897d-d1e4784a10d7", "type": "aruco", "marker_id": 217, "marker_size_m": 0.025, @@ -1180,7 +1180,7 @@ "confidence": 0.3382587531306593 }, { - "observation_id": "7293ca8e-6a90-4254-9a08-60f99f49abb2", + "observation_id": "7aebb928-3025-4810-a7b4-35b4559be3bf", "type": "aruco", "marker_id": 47, "marker_size_m": 0.025, @@ -1234,7 +1234,7 @@ "confidence": 0.36403279165733554 }, { - "observation_id": "cacec511-b043-4ca3-aad2-d6dd9ec22a85", + "observation_id": "bb0a4c02-152c-41e5-a371-69b6bea6619d", "type": "aruco", "marker_id": 97, "marker_size_m": 0.025, @@ -1288,7 +1288,7 @@ "confidence": 0.3623898971459892 }, { - "observation_id": "a54637d5-a3d5-4762-8f85-b4d191559761", + "observation_id": "e8584ad2-273d-4262-a830-621fe38ca751", "type": "aruco", "marker_id": 54, "marker_size_m": 0.025, @@ -1342,7 +1342,7 @@ "confidence": 0.3590718541167963 }, { - "observation_id": "16f58f33-e6e5-461c-bf93-88b7b0b3b97d", + "observation_id": "ada6e22d-6a63-4808-afea-66a6b2b3b4e1", "type": "aruco", "marker_id": 205, "marker_size_m": 0.025, @@ -1396,7 +1396,7 @@ "confidence": 0.29591817114314195 }, { - "observation_id": "7d767a3b-2803-4269-abe5-3ce24ceebcc9", + "observation_id": "a139d459-3682-4d55-a6b3-10cdbfdcfee4", "type": "aruco", "marker_id": 92, "marker_size_m": 0.025, @@ -1450,7 +1450,7 @@ "confidence": 0.3158166687011719 }, { - "observation_id": "cdd3d10b-e739-42de-bb66-1b25f7158e3f", + "observation_id": "b975fa8f-44a8-412a-94f4-deab777415a5", "type": "aruco", "marker_id": 105, "marker_size_m": 0.025, @@ -1504,7 +1504,7 @@ "confidence": 0.31800273344664126 }, { - "observation_id": "37e24568-f70c-4d6f-aec5-2f33a9ee3d71", + "observation_id": "e1350236-4eae-44f2-b963-94c28546d631", "type": "aruco", "marker_id": 85, "marker_size_m": 0.025, @@ -1558,7 +1558,7 @@ "confidence": 0.2969848480224609 }, { - "observation_id": "a2431c76-a23a-4a5f-b47d-b22b00ddd415", + "observation_id": "392187f5-b834-461a-9e43-986e2c912ba3", "type": "aruco", "marker_id": 102, "marker_size_m": 0.025, @@ -1612,7 +1612,7 @@ "confidence": 0.3170967427530611 }, { - "observation_id": "c193ec7b-1bde-4095-8f76-da8c5e340b8e", + "observation_id": "c085910a-f4d0-4bee-a5d2-7e2bff50a155", "type": "aruco", "marker_id": 59, "marker_size_m": 0.025, @@ -1666,7 +1666,7 @@ "confidence": 0.3170967427530611 }, { - "observation_id": "d415cabf-ddf6-4ab5-ba62-463b52fe51c7", + "observation_id": "1f7d0314-b32b-4ca0-80ed-7e109c2ae31a", "type": "aruco", "marker_id": 48, "marker_size_m": 0.025, @@ -1720,7 +1720,7 @@ "confidence": 0.17828567290874034 }, { - "observation_id": "4f84f376-49b7-4aac-9faa-f96f6506b37d", + "observation_id": "d94ccf50-2d35-4bd9-a6e5-ccebe10e5161", "type": "aruco", "marker_id": 57, "marker_size_m": 0.025, @@ -1774,7 +1774,7 @@ "confidence": 0.3167426670523156 }, { - "observation_id": "2134752b-c53b-4e3e-aa96-8f436e96f112", + "observation_id": "56f4064b-e40d-4434-a971-c7b9c3fe8426", "type": "aruco", "marker_id": 63, "marker_size_m": 0.025, @@ -1828,7 +1828,7 @@ "confidence": 0.15449597168691093 }, { - "observation_id": "a407682b-43a5-47e0-8929-bd602c104234", + "observation_id": "efac90a0-f0ab-4cee-b44b-9d25324c0a04", "type": "aruco", "marker_id": 71, "marker_size_m": 0.025, @@ -1882,7 +1882,7 @@ "confidence": 0.08171792300897739 }, { - "observation_id": "dc4c9c88-a776-4638-92cc-b67db3baf003", + "observation_id": "edd7aeff-78d1-41bd-9902-227c83bf1b78", "type": "aruco", "marker_id": 120, "marker_size_m": 0.025, diff --git a/data/evaluations/Scene9/render_g_camera_pose.json b/data/evaluations/Scene9/render_g_camera_pose.json index 45a2771..8656502 100644 --- a/data/evaluations/Scene9/render_g_camera_pose.json +++ b/data/evaluations/Scene9/render_g_camera_pose.json @@ -1,6 +1,6 @@ { "schema_version": "1.0", - "created_utc": "2026-05-31T10:25:25Z", + "created_utc": "2026-05-31T20:34:19Z", "source": { "detection_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\evaluations\\Scene9\\render_g_aruco_detection.json", "robot_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\data\\robot\\robot.json" diff --git a/data/evaluations/Scene9/robot_state.json b/data/evaluations/Scene9/robot_state.json index c5d71d6..033c1d7 100644 --- a/data/evaluations/Scene9/robot_state.json +++ b/data/evaluations/Scene9/robot_state.json @@ -1,58 +1,58 @@ { "schema_version": "1.0", "method": "deterministic_geometric_sequential_prefix", - "created_utc": "2026-05-31T10:26:00Z", + "created_utc": "2026-05-31T20:34:20Z", "root_pose": { "translation_m": [ - 0.0024599740249525714, - 0.005016308983537485, - -0.001265594404518032 + 0.0024976453548978816, + 0.009531480569759235, + -0.0107790671059569 ], "rotation_matrix": [ [ - 0.9999616284181071, - 0.008444232412078308, - 0.0023316582895388815 + 0.9998137460664411, + 0.013859783844868296, + -0.013430546093245236 ], [ - -0.008489384628346494, - 0.9997622066656643, - 0.020086325488607042 + -0.01341300573787106, + 0.999371811432341, + 0.03280356370146102 ], [ - -0.0021614902360092133, - -0.020105349088565403, - 0.9997955305451142 + 0.013876759479975687, + -0.03261730991687534, + 0.9993715758616116 ] ], "euler_xyz_deg": [ - -1.152031962022381, - 0.12384436441649664, - -0.4864128888732429 + -1.8693457853714255, + -0.7951052710818581, + -0.7686056758658355 ] }, "movements": { "x": { - "value_m": 0.05408348484325045, - "value_mm": 54.08348484325045, + "value_m": 0.06489017042145476, + "value_mm": 64.89017042145476, "joint_type": "linear", "link": "Base" }, "y": { - "value_rad": 0.10830851353283366, - "value_deg": 6.20562071076693, + "value_rad": -0.05801316485959296, + "value_deg": -3.3239095026513334, "joint_type": "revolute", "link": "Arm1" }, "z": { - "value_rad": 1.9912991164152878, - "value_deg": 114.09303511872598, + "value_rad": 1.6349046839253045, + "value_deg": 93.6731382950898, "joint_type": "revolute", "link": "Ellbow" }, "a": { - "value_rad": 2.373559574730061, - "value_deg": 135.99494605489903, + "value_rad": -2.968388705126404, + "value_deg": -170.07614475804638, "joint_type": "revolute", "link": "Arm2" }, @@ -78,217 +78,217 @@ "link_poses": { "Board": { "translation_m": [ - 0.0024599740249525714, - 0.005016308983537485, - -0.001265594404518032 + 0.0024976453548978816, + 0.009531480569759235, + -0.0107790671059569 ], "rotation_matrix": [ [ - 0.9999616284181071, - 0.008444232412078308, - 0.0023316582895388815 + 0.9998137460664411, + 0.013859783844868296, + -0.013430546093245236 ], [ - -0.008489384628346494, - 0.9997622066656643, - 0.020086325488607042 + -0.01341300573787106, + 0.999371811432341, + 0.03280356370146102 ], [ - -0.0021614902360092133, - -0.020105349088565403, - 0.9997955305451142 + 0.013876759479975687, + -0.03261730991687534, + 0.9993715758616116 ] ] }, "Base": { "translation_m": [ - 0.05657869013191384, - 0.004878554686479956, - 0.014614233159785875 + 0.06716084098930553, + 0.009185965360789078, + 0.006111343395381146 ], "rotation_matrix": [ [ - 0.9999616284181071, - 0.008444232412078308, - 0.0023316582895388815 + 0.9998137460664411, + 0.013859783844868296, + -0.013430546093245236 ], [ - -0.008489384628346494, - 0.9997622066656643, - 0.020086325488607042 + -0.01341300573787106, + 0.999371811432341, + 0.03280356370146102 ], [ - -0.0021614902360092133, - -0.020105349088565403, - 0.9997955305451142 + 0.013876759479975687, + -0.03261730991687534, + 0.9993715758616116 ] ] }, "Arm1": { "translation_m": [ - 0.16759137098143934, - 0.11282292534424089, - 0.057195890406789934 + 0.1780328351376638, + 0.11711885073088184, + 0.04908683838092846 ], "rotation_matrix": [ [ - 0.9999616284180953, - 0.008142707298373813, - 0.003230790810525697 + 0.9998137460664378, + 0.013057756127530911, + -0.014211550988656499 ], [ - -0.008489384628346393, - 0.9917326953674278, - 0.12803980352947267 + -0.013413005737871015, + 0.9995925477501572, + -0.025195828214557018 ], [ - -0.0021614902360091877, - -0.12806231786551017, - 0.9917637675892627 + 0.01387675947997564, + 0.02538175500739783, + 0.9995815134640457 ] ] }, "Ellbow": { "translation_m": [ - 0.16555569415684587, - -0.13511024849761605, - 0.08921146987316747 + 0.17476839610578107, + -0.13277928620665747, + 0.042741399629079004 ], "rotation_matrix": [ [ - 0.999961628415279, - -0.006273348461467673, - 0.006114473852200264 + 0.9998137460643102, + 0.013345819088128716, + 0.01394138764454428 ], [ - -0.008489384628322483, - -0.5217300815517609, - 0.853068374956507 + -0.013413005737842472, + -0.03889427997848535, + 0.9991533046835362 ], [ - -0.0021614902360031, - -0.8530875494938276, - -0.5217633188112073 + 0.01387675947994611, + -0.9991542043627816, + -0.03870802821784067 ] ] }, "Arm2": { "translation_m": [ - 0.255552240714221, - -0.13587429311416507, - 0.08901693575192719 + 0.264751633251569, + -0.13398645672306328, + 0.04399030798227415 ], "rotation_matrix": [ [ - -0.7150030648718144, - -0.006273348461446101, - -0.6990931714130618 + -0.9872568386436547, + 0.013345819088075736, + 0.15857434742063925 ], [ - 0.5987514454475817, - -0.5217300815499668, - -0.6076960001316714 + -0.15898100353198621, + -0.03889427997833095, + -0.9865152180776827 ], [ - -0.3609256485671765, - -0.853087549490894, - 0.37679478380549025 + -0.00699821856215066, + -0.9991542043588151, + 0.04052037560454855 ] ] }, "Hand": { "translation_m": [ - 0.25712057782958253, - -0.005441772726673372, - 0.3022888231246507 + 0.26141517847955004, + -0.12426288672848054, + 0.2937788590719779 ], "rotation_matrix": [ [ - -0.7150030648718144, - -0.006273348461446101, - -0.6990931714130618 + -0.9872568386436547, + 0.013345819088075736, + 0.15857434742063925 ], [ - 0.5987514454475817, - -0.5217300815499668, - -0.6076960001316714 + -0.15898100353198621, + -0.03889427997833095, + -0.9865152180776827 ], [ - -0.3609256485671765, - -0.853087549490894, - 0.37679478380549025 + -0.00699821856215066, + -0.9991542043588151, + 0.04052037560454855 ] ] }, "Palm": { "translation_m": [ - 0.25712057782958253, - -0.005441772726673372, - 0.3022888231246507 + 0.26141517847955004, + -0.12426288672848054, + 0.2937788590719779 ], "rotation_matrix": [ [ - -0.7150030648718144, - -0.006273348461446101, - -0.6990931714130618 + -0.9872568386436547, + 0.013345819088075736, + 0.15857434742063925 ], [ - 0.5987514454475817, - -0.5217300815499668, - -0.6076960001316714 + -0.15898100353198621, + -0.03889427997833095, + -0.9865152180776827 ], [ - -0.3609256485671765, - -0.853087549490894, - 0.37679478380549025 + -0.00699821856215066, + -0.9991542043588151, + 0.04052037560454855 ] ] }, "FingerA": { "translation_m": [ - 0.25448013276624587, - 0.015213785909365795, - 0.33070318476256333 + 0.2569990474568928, + -0.1235375109433669, + 0.32872126335028784 ], "rotation_matrix": [ [ - -0.7150030648718144, - -0.006273348461446101, - -0.6990931714130618 + -0.9872568386436547, + 0.013345819088075736, + 0.15857434742063925 ], [ - 0.5987514454475817, - -0.5217300815499668, - -0.6076960001316714 + -0.15898100353198621, + -0.03889427997833095, + -0.9865152180776827 ], [ - -0.3609256485671765, - -0.853087549490894, - 0.37679478380549025 + -0.00699821856215066, + -0.9991542043588151, + 0.04052037560454855 ] ] }, "FingerB": { "translation_m": [ - 0.2602001572852204, - 0.01042377434578514, - 0.3335905899511007 + 0.264897102166042, + -0.12226566291511101, + 0.3287772490987851 ], "rotation_matrix": [ [ - -0.7150030648718144, - -0.006273348461446101, - -0.6990931714130618 + -0.9872568386436547, + 0.013345819088075736, + 0.15857434742063925 ], [ - 0.5987514454475817, - -0.5217300815499668, - -0.6076960001316714 + -0.15898100353198621, + -0.03889427997833095, + -0.9865152180776827 ], [ - -0.3609256485671765, - -0.853087549490894, - 0.37679478380549025 + -0.00699821856215066, + -0.9991542043588151, + 0.04052037560454855 ] ] } @@ -311,29 +311,29 @@ "joint_variable": "x", "joint_type": "linear", "old": 0.0, - "new": 0.04362662540805054, + "new": 0.060672736696816276, "info": { "reason": "weighted_projection", "used_markers": 3, "axis_world": [ - 0.9999616284171068, - -0.008489384628338002, - -0.002161490236007051 + 0.9998137460654417, + -0.01341300573785765, + 0.013876759479961816 ], "per_marker": [ { "marker_id": 198, - "q_i": 0.018477416253846937, + "q_i": 0.05562494310371367, "weight": 1.0 }, { "marker_id": 229, - "q_i": 0.05502944059138241, + "q_i": 0.0653910610551676, "weight": 1.0 }, { "marker_id": 243, - "q_i": 0.05737301937892227, + "q_i": 0.061002205931567556, "weight": 1.0 } ] @@ -344,21 +344,21 @@ "joint_variable": "y", "joint_type": "revolute", "old": 0.0, - "new": -0.04236508039060549, + "new": -0.044355505891484626, "info": { "reason": "2d_alignment+normal_tiebreak", "used_markers": 3, "axis_world": [ - -0.9999616284171068, - 0.008489384628338002, - 0.002161490236007051 + -0.9998137460654417, + 0.01341300573785765, + -0.013876759479961816 ], "axis_id": 0, - "theta_rad": -0.042365080390605284, - "theta_alt_rad": 3.0992275731991876, - "score_theta": 0.004726475944067662, - "score_theta_alt": 0.9302118285148774, - "best_score": 0.004726475944067662, + "theta_rad": -0.04435550589148462, + "theta_alt_rad": 3.0972371476983085, + "score_theta": 0.008263514079157984, + "score_theta_alt": 0.9879189862451968, + "best_score": 0.008263514079157984, "per_marker": [ { "marker_id": 198, @@ -384,30 +384,30 @@ "link": "Base", "joint_variable": "x", "joint_type": "linear", - "old": 0.04362662540805054, - "new": 0.04362662540805053, + "old": 0.060672736696816276, + "new": 0.060672736696816276, "info": { "reason": "weighted_projection", "used_markers": 3, "axis_world": [ - 0.9999616284171068, - -0.008489384628338002, - -0.002161490236007051 + 0.9998137460654417, + -0.01341300573785765, + 0.013876759479961816 ], "per_marker": [ { "marker_id": 198, - "q_i": 0.01847741625384694, + "q_i": 0.05562494310371367, "weight": 1.0 }, { "marker_id": 229, - "q_i": 0.05502944059138241, + "q_i": 0.06539106105516762, "weight": 1.0 }, { "marker_id": 243, - "q_i": 0.057373019378922266, + "q_i": 0.06100220593156755, "weight": 1.0 } ] @@ -417,22 +417,22 @@ "link": "Arm1", "joint_variable": "y", "joint_type": "revolute", - "old": -0.04236508039060549, - "new": -0.04236508039060549, + "old": -0.044355505891484626, + "new": -0.044355505891484626, "info": { "reason": "2d_alignment+normal_tiebreak", "used_markers": 3, "axis_world": [ - -0.9999616284171068, - 0.008489384628338002, - 0.002161490236007051 + -0.9998137460654417, + 0.01341300573785765, + -0.013876759479961816 ], "axis_id": 0, - "theta_rad": -0.04236508039060527, - "theta_alt_rad": 3.0992275731991876, - "score_theta": 0.004726475944067662, - "score_theta_alt": 0.9302118285148774, - "best_score": 0.004726475944067662, + "theta_rad": -0.04435550589148462, + "theta_alt_rad": 3.0972371476983085, + "score_theta": 0.008263514079157984, + "score_theta_alt": 0.9879189862451968, + "best_score": 0.008263514079157984, "per_marker": [ { "marker_id": 198, @@ -498,830 +498,830 @@ }, "marker_stats": { "num_markers_used": 41, - "mean_error_m": 0.012104686557881932, - "rms_error_m": 0.01674241741984034, - "median_error_m": 0.007047035175658761, - "worst_error_m": 0.05957290626617817 + "mean_error_m": 0.017340990862884594, + "rms_error_m": 0.023940596901450104, + "median_error_m": 0.011053289198199687, + "worst_error_m": 0.07392562227989355 }, "marker_reports": [ { "marker_id": 46, "link": "Board", "error_m": [ - -0.013071464442725, - -0.012453648346596069, - 0.016511727974226224 + 0.005909038104734532, + -0.005912025002722032, + -0.004795093568657212 ], - "error_norm_m": 0.024466174619522028, + "error_norm_m": 0.009636477223975206, "predicted_m": [ - 0.5406516238004262, - 0.18530751827789943, - -0.033448441747951724 + 0.5420444932307554, + 0.18676055768314986, + -0.03666266949746651 ], "observed_m": [ - 0.5537230882431512, - 0.1977611666244955, - -0.04996016972217795 + 0.5361354551260209, + 0.1926725826858719, + -0.031867575928809296 ] }, { "marker_id": 47, "link": "Board", "error_m": [ - 0.0008721910810426392, - 0.003837784471127148, - 0.004571018690541762 + -0.0017790247426832662, + 0.003311081736141752, + 0.0036937551998724068 ], - "error_norm_m": 0.006031875230635755, + "error_norm_m": 0.005269916391658902, "predicted_m": [ - 0.3441935007486563, - -0.2849262112708967, - -0.02354307544450357 + 0.343058802608786, + -0.282341214532261, + -0.023938950227605407 ], "observed_m": [ - 0.34332130966761365, - -0.2887639957420238, - -0.028114094135045332 + 0.3448378273514693, + -0.28565229626840277, + -0.027632705427477814 ] }, { "marker_id": 51, "link": "Board", "error_m": [ - 0.0023129226144513737, - -0.002152002975723405, - 0.007277318284625859 + 0.0018130186400432402, + 0.007841589806590554, + -0.0012948464725381949 ], - "error_norm_m": 0.007933479012621942, + "error_norm_m": 0.008151944226466085, "predicted_m": [ - 0.1687367974887361, - -0.16899564696596553, - -0.02546298197884166 + 0.16824805424916736, + -0.16558666039338263, + -0.030120604195743066 ], "observed_m": [ - 0.16642387487428473, - -0.16684364399024212, - -0.03274030026346752 + 0.16643503560912412, + -0.17342825019997318, + -0.02882575772320487 ] }, { "marker_id": 53, "link": "Board", "error_m": [ - 0.0009220742534559734, - -0.00011407742484240146, - -0.004083807032116291 + 0.011437630887001893, + -0.00848091304718021, + -0.00523088908565672 ], - "error_norm_m": 0.0041881636146773845, + "error_norm_m": 0.015169294217186699, "predicted_m": [ - 0.4904198654590923, - 0.2125295197648856, - -0.03387819630621625 + 0.4919653338112853, + 0.21422054249906963, + -0.03823703468659834 ], "observed_m": [ - 0.4894977912056363, - 0.212643597189728, - -0.029794389274099962 + 0.48052770292428343, + 0.22270145554624984, + -0.03300614560094162 ] }, { "marker_id": 54, "link": "Board", "error_m": [ - 0.0026876126029042324, - -0.0015720752606889765, - -0.015421576774879476 + -0.0018633715935418849, + -0.00026202290098609193, + 0.0010998956810255936 ], - "error_norm_m": 0.015732759209752815, + "error_norm_m": 0.0021795825759531903, "predicted_m": [ - 0.3418616075192047, - -0.3289490972806476, - -0.022653198296289687 + 0.34048864418812924, + -0.32633725333460945, + -0.0225293561743478 ], "observed_m": [ - 0.33917399491630046, - -0.3273770220199586, - -0.007231621521410211 + 0.3423520157816711, + -0.32607523043362335, + -0.023629251855373394 ] }, { "marker_id": 55, "link": "Board", "error_m": [ - -7.456189087357012e-05, - 0.001625554336729007, - 0.0037037111592386797 + -0.0017318564561557004, + 0.0046670426208414995, + 0.0017811452939564022 ], - "error_norm_m": 0.004045424913194935, + "error_norm_m": 0.005287068390673825, "predicted_m": [ - 0.28388814642167004, - -0.26045821613532605, - -0.02389400783448468 + 0.28289215325522865, + -0.2575846449531435, + -0.02556014368934707 ], "observed_m": [ - 0.2839627083125436, - -0.26208377047205506, - -0.02759771899372336 + 0.28462400971138435, + -0.262251687573985, + -0.02734128898330347 ] }, { "marker_id": 56, "link": "Board", "error_m": [ - -0.01265274504762759, - -0.013561492382301393, - 0.018731716020361527 + -0.0302235496648251, + -0.029443948972544487, + 0.060700811724634623 ], - "error_norm_m": 0.026360637661918422, + "error_norm_m": 0.07392562227989355, "predicted_m": [ - 0.5024814732941351, - 0.1688643573695323, - -0.033029073570061046 + 0.5037891478927703, + 0.17051118901364073, + -0.036643410373183985 ], "observed_m": [ - 0.5151342183417627, - 0.18242584975183368, - -0.05176078959042257 + 0.5340126975575954, + 0.19995513798618522, + -0.09734422209781861 ] }, { "marker_id": 58, "link": "Board", "error_m": [ - 0.0001723402364918747, - 0.004035049643894895, - 0.003616032508958065 + -0.0022024017192950884, + 0.007832819714530759, + -0.0028935096217191057 ], - "error_norm_m": 0.005420979421806723, + "error_norm_m": 0.008635741771525868, "predicted_m": [ - 0.05064262618971274, - -0.21401541587418343, - -0.02428310374461435 + 0.04992201234930729, + -0.21000889996820854, + -0.030252662778657236 ], "observed_m": [ - 0.05047028595322087, - -0.21805046551807833, - -0.027899136253572415 + 0.05212441406860238, + -0.2178417196827393, + -0.02735915315693813 ] }, { "marker_id": 60, "link": "Board", "error_m": [ - 0.00463310817165119, - -0.0028117819517218257, - -0.005116707514237484 + 0.006548213459839247, + 0.0012692268576284804, + -0.012634590371468944 ], - "error_norm_m": 0.0074533552753443845, + "error_norm_m": 0.014287158926342252, "predicted_m": [ - 0.4391362102742091, - 0.28452301506431216, - -0.03520497641213836 + 0.441076943257675, + 0.28644158391102037, + -0.041291520606765046 ], "observed_m": [ - 0.43450310210255794, - 0.287334797016034, - -0.030088268897900873 + 0.43452872979783574, + 0.2851723570533919, + -0.028656930235296103 ] }, { "marker_id": 61, "link": "Board", "error_m": [ - -0.00691382558947783, - -0.02422789402762071, - 0.02410168760212969 + -0.004773031503023764, + -0.024724839033023305, + 0.016079162880633865 ], - "error_norm_m": 0.034866648513529226, + "error_norm_m": 0.029877064345074533, "predicted_m": [ - -0.017186993384537545, - 0.34040842616559613, - -0.03526353116172124 + -0.014896993714944018, + 0.3445556983026755, + -0.0493268992639042 ], "observed_m": [ - -0.010273167795059716, - 0.36463632019321685, - -0.05936521876385093 + -0.010123962211920254, + 0.3692805373356988, + -0.06540606214453806 ] }, { "marker_id": 62, "link": "Board", "error_m": [ - 0.0003521065756239006, - 0.00559001598665565, - 0.0026869724433836346 + 0.0002670158087336727, + 0.0036099577904157854, + 0.002012572681416889 ], - "error_norm_m": 0.006212252303566424, + "error_norm_m": 0.004141683412416126, "predicted_m": [ - 0.4056022056791012, - -0.17402606404855112, - -0.025914320861504775 + 0.40506207414509576, + -0.17178230432320996, + -0.026734695598987862 ], "observed_m": [ - 0.4052500991034773, - -0.17961608003520677, - -0.02860129330488841 + 0.4047950583363621, + -0.17539226211362574, + -0.02874726828040475 ] }, { "marker_id": 63, "link": "Board", "error_m": [ - -0.0158783209757567, - 0.007330017205507022, - 0.02254905104485634 + -0.016524322658683088, + 0.007443020870418315, + 0.027506496731969726 ], - "error_norm_m": 0.028536116278598967, + "error_norm_m": 0.03294023620849752, "predicted_m": [ - 0.7777723842017723, - -0.23822554041647467, - -0.02549247671060849 + 0.7768465175003292, + -0.23779298064965895, + -0.01957154057037569 ], "observed_m": [ - 0.793650705177529, - -0.2455555576219817, - -0.04804152775546483 + 0.7933708401590123, + -0.24523600152007727, + -0.047078037302345416 ] }, { "marker_id": 64, "link": "Board", "error_m": [ - -0.00024947886248814777, - 0.0031103977521285964, - 0.0015026763573656142 + -0.0015743230007710905, + 0.008489521641287107, + -0.005963280754507055 ], - "error_norm_m": 0.0034633582133906677, + "error_norm_m": 0.010493387821181168, "predicted_m": [ - -0.02046232194973048, - -0.18353671865193455, - -0.024729607632139067 + -0.021010566228709286, + -0.17919051815315568, + -0.03221751355546453 ], "observed_m": [ - -0.020212843087242333, - -0.18664711640406315, - -0.02623228398950468 + -0.019436243227938195, + -0.18768003979444278, + -0.026254232800957476 ] }, { "marker_id": 66, "link": "Board", "error_m": [ - -0.002169221374189595, - -0.003326372415850598, - 0.0022722362157080907 + -0.007998311016284065, + 0.0013790262614014615, + 0.0019330736586158047 ], - "error_norm_m": 0.004575295863564253, + "error_norm_m": 0.008343348627048988, "predicted_m": [ - 0.2090710727753069, - -0.36045632245526643, - -0.021710519015962968 + 0.20754094321470798, + -0.35717925773937836, + -0.023303675344947365 ], "observed_m": [ - 0.2112402941494965, - -0.35712995003941583, - -0.02398275523167106 + 0.21553925423099204, + -0.3585582840007798, + -0.02523674900356317 ] }, { "marker_id": 68, "link": "Board", "error_m": [ - 0.0059047524653308425, - -0.0031911635951974715, - -0.00924057582361612 + 0.007909606738037422, + -0.0011650636277719673, + -0.013591149304143003 ], - "error_norm_m": 0.011420939905285513, + "error_norm_m": 0.01576827801044461, "predicted_m": [ - 0.5775452286447659, - 0.1701967606003062, - -0.033230900949978014 + 0.5788524733092311, + 0.17147330540153524, + -0.03566621567474805 ], "observed_m": [ - 0.571640476179435, - 0.17338792419550367, - -0.023990325126361893 + 0.5709428665711936, + 0.1726383690293072, + -0.022075066370605047 ] }, { "marker_id": 69, "link": "Board", "error_m": [ - -0.010207407150906253, - -0.0032140932356206076, - -0.035567820288336355 + -0.01125874075257734, + -0.0019047553616383106, + -0.02453303098243099 ], - "error_norm_m": 0.03714285121170729, + "error_norm_m": 0.02706024658990296, "predicted_m": [ - 0.0076314251493094145, - -0.2767397820557746, - -0.0229226361119002 + 0.006575372055793682, + -0.27249947678584446, + -0.02878399526561177 ], "observed_m": [ - 0.017838832300215667, - -0.273525688820154, - 0.012645184176436158 + 0.017834112808371022, + -0.27059472142420615, + -0.004250964283180778 ] }, { "marker_id": 72, "link": "Board", "error_m": [ - 0.0021786185837171512, - -0.004019668474775084, - -0.0011331688472769746 + 0.01301934339557137, + -0.007156955177265112, + -0.0041459587385330385 ], - "error_norm_m": 0.004710433654862088, + "error_norm_m": 0.015424470289861113, "predicted_m": [ - 0.44501028151206423, - 0.19499801056971586, - -0.03342007940246738 + 0.4464653963378182, + 0.19691887227789812, + -0.03828059462695163 ], "observed_m": [ - 0.4428316629283471, - 0.19901767904449094, - -0.0322869105551904 + 0.4334460529422468, + 0.20407582745516323, + -0.03413463588841859 ] }, { "marker_id": 75, "link": "Board", "error_m": [ - 0.0053490747346992, - 0.0009851390679179728, - 0.001306643558522634 + -0.001489679189073504, + -0.020292205908477245, + 0.01741942628795258 ], - "error_norm_m": 0.005593783772149608, + "error_norm_m": 0.02678486843200487, "predicted_m": [ - -0.021659615353954997, - 0.199219859655652, - -0.03241656091498727 + -0.020134077270129586, + 0.20343842459667755, + -0.044765220009239874 ], "observed_m": [ - -0.027008690088654197, - 0.19823472058773403, - -0.033723204473509905 + -0.01864439808105608, + 0.2237306305051548, + -0.062184646297192454 ] }, { "marker_id": 79, "link": "Board", "error_m": [ - 0.0015068694512451186, - 0.005282261789669174, - 0.00288885743245252 + 0.0010722798357485908, + 0.004005774416510954, + 0.0006733588446190576 ], - "error_norm_m": 0.006206322777839621, + "error_norm_m": 0.004201121856808419, "predicted_m": [ - 0.31334077448953723, - -0.15725544722430798, - -0.026036083695623685 + 0.31290090195223613, + -0.15456298732822757, + -0.028538458960508453 ], "observed_m": [ - 0.3118339050382921, - -0.16253770901397716, - -0.028924941128076205 + 0.31182862211648754, + -0.15856876174473852, + -0.02921181780512751 ] }, { "marker_id": 83, "link": "Board", "error_m": [ - 0.006775247566416467, - 0.0036733811567694064, - -0.00797430575930876 + -0.005255378085870212, + -0.017837246385331296, + 0.008584734637097906 ], - "error_norm_m": 0.011089962175412757, + "error_norm_m": 0.020481309192184168, "predicted_m": [ - 0.04941907778341697, - 0.3432323968176374, - -0.03547560031504497 + 0.05171759016539374, + 0.3470505308214037, + -0.048513557298345625 ], "observed_m": [ - 0.0426438302170005, - 0.339559015660868, - -0.027501294555736213 + 0.05697296825126395, + 0.364887777206735, + -0.05709829193544353 ] }, { "marker_id": 84, "link": "Board", "error_m": [ - 0.004551836715352864, - -0.002718376770611375, - -0.004642404012657454 + 0.01886370011504146, + -0.015537334900553867, + -0.003952255443371466 ], - "error_norm_m": 0.007047035175658761, + "error_norm_m": 0.02475617662184215, "predicted_m": [ - 0.4120528422576719, - 0.2593671624020346, - -0.03463642235613811 + 0.41386004798904846, + 0.2614279410829299, + -0.04083623563520253 ], "observed_m": [ - 0.40750100554231905, - 0.262085539172646, - -0.029994018343480658 + 0.394996347874007, + 0.27696527598348375, + -0.03688398019183106 ] }, { "marker_id": 85, "link": "Board", "error_m": [ - -0.000916708693676993, - 0.002119426113185885, - 0.005238579736888606 + -0.0014332162830252848, + 0.0014130660453137156, + 0.008165047026109568 ], - "error_norm_m": 0.005724948867724244, + "error_norm_m": 0.008409450487453271, "predicted_m": [ - 0.5043160245339793, - -0.3124912515327591, - -0.023362709204236345 + 0.5030156718559659, + -0.3106855251799703, + -0.020858912152070003 ], "observed_m": [ - 0.5052327332276563, - -0.31461067764594497, - -0.02860128894112495 + 0.5044488881389911, + -0.312098591225284, + -0.02902395917817957 ] }, { "marker_id": 86, "link": "Board", "error_m": [ - 0.005183414741022241, - -0.001869012826053451, - -0.006179467547496376 + 0.00466511573223477, + 0.006131361200086172, + -0.014563902120428459 ], - "error_norm_m": 0.008279300483250976, + "error_norm_m": 0.0164761688488097, "predicted_m": [ - 0.3677381953969461, - 0.29332780147835846, - -0.03521535856749702 + 0.3697339050538343, + 0.29559506028485116, + -0.042550754548117284 ], "observed_m": [ - 0.36255478065592384, - 0.2951968143044119, - -0.02903589102000064 + 0.36506878932159953, + 0.289463699084765, + -0.027986852427688825 ] }, { "marker_id": 92, "link": "Board", "error_m": [ - -0.0017083594791625911, - 0.00170303643189873, - 0.0005736671286161663 + -0.0030843417438075615, + 0.007025737961659312, + 0.004194660704404177 ], - "error_norm_m": 0.0024794997827936494, + "error_norm_m": 0.008744674740867561, "predicted_m": [ - 0.6459007347108364, - -0.1858045111122829, - -0.026238095399216402 + 0.6452723062673585, + -0.18474053821588782, + -0.023081168789006144 ], "observed_m": [ - 0.647609094189999, - -0.18750754754418164, - -0.02681176252783257 + 0.6483566480111661, + -0.19176627617754713, + -0.02727582949341032 ] }, { "marker_id": 95, "link": "Board", "error_m": [ - -0.0001476915772945231, - -0.002753779608665352, - 0.003373259031671797 + -0.003518654131452137, + 0.005044333025852332, + -0.00048515309056019335 ], - "error_norm_m": 0.004357062247645791, + "error_norm_m": 0.006169408082933876, "predicted_m": [ - 0.18611487032737448, - -0.2711162407994176, - -0.023451863007203685 + 0.1850710976230811, + -0.2677572446660259, + -0.026540852664406197 ], "observed_m": [ - 0.186262561904669, - -0.26836246119075224, - -0.026825122038875483 + 0.18858975175453324, + -0.27280157769187824, + -0.026055699573846004 ] }, { "marker_id": 96, "link": "Board", "error_m": [ - 0.0008351041742055698, - 0.0038425930321047963, - 0.00430729768901832 + 0.00032807105204279985, + 0.004261768433921759, + 0.0018132550758337973 ], - "error_norm_m": 0.005832300881639977, + "error_norm_m": 0.00464308031048327, "predicted_m": [ - 0.3705773661912831, - -0.18511682137740493, - -0.025609820081442213 + 0.369980717057002, + -0.18269663296500055, + -0.026847899647670207 ], "observed_m": [ - 0.36974226201707755, - -0.18895941440950972, - -0.029917117770460532 + 0.3696526460049592, + -0.1869584013989223, + -0.028661154723504004 ] }, { "marker_id": 97, "link": "Board", "error_m": [ - -0.002038430423908888, - -0.003770267341488054, - 0.006702033713791033 + -0.004730285155796932, + 0.000687276705387152, + 0.004213699070405662 ], - "error_norm_m": 0.007955335965262584, + "error_norm_m": 0.006372064561887157, "predicted_m": [ - 0.30369750429104686, - -0.35770026478537825, - -0.021986571035044734 + 0.30217266442308105, + -0.3548903644334818, + -0.022107051521445743 ], "observed_m": [ - 0.30573593471495575, - -0.3539299974438902, - -0.028688604748835767 + 0.306902949578878, + -0.35557764113886897, + -0.026320750591851405 ] }, { "marker_id": 102, "link": "Board", "error_m": [ - -0.0031069906188920804, - 0.0012413262809079784, - 0.005990918260924717 + -0.004668507356966112, + 0.004636651351887733, + 0.01099065243696026 ], - "error_norm_m": 0.006861878988341128, + "error_norm_m": 0.012809681404744987, "predicted_m": [ - 0.6501783262927148, - -0.22399448808793507, - -0.025480818133082388 + 0.649342560147744, + -0.22293826636654013, + -0.02177265914897029 ], "observed_m": [ - 0.6532853169116069, - -0.22523581436884305, - -0.031471736394007105 + 0.6540110675047102, + -0.22757491771842786, + -0.03276331158593055 ] }, { "marker_id": 103, "link": "Board", "error_m": [ - 0.0006442089868049922, - 0.0031736767985359737, - 0.0037423451148866915 + 0.00020855262325139567, + 0.00728848879704197, + -0.0026312704778853648 ], - "error_norm_m": 0.004948977328616706, + "error_norm_m": 0.0077517190009095665, "predicted_m": [ - 0.10651719662765503, - -0.18409482436457583, - -0.025014528443833572 + 0.10595299033440675, + -0.18037402827980573, + -0.030472403637853997 ], "observed_m": [ - 0.10587298764085004, - -0.1872685011631118, - -0.028756873558720263 + 0.10574443771115535, + -0.1876625170768477, + -0.027841133159968633 ] }, { "marker_id": 105, "link": "Board", "error_m": [ - -0.0019246428729866594, - 0.0025750219350123005, - 0.0037087148619832193 + -0.0012341282300909473, + 0.003863389097407577, + 0.006227435062303922 ], - "error_norm_m": 0.004908111050274641, + "error_norm_m": 0.007431675131589608, "predicted_m": [ - 0.5249679039328917, - -0.266174303855376, - -0.024341399729036185 + 0.5239163783000583, + -0.2644864834446157, + -0.022094473916140396 ], "observed_m": [ - 0.5268925468058784, - -0.2687493257903883, - -0.028050114591019405 + 0.5251505065301493, + -0.2683498725420233, + -0.02832190897844432 ] }, { "marker_id": 198, "link": "Arm1", "error_m": [ - 0.025269418454218345, - 0.026071053187655818, - -0.04723015813726311 + 0.0064160898960205215, + 0.05797850300630067, + -0.04247643611658032 ], - "error_norm_m": 0.05957290626617817, + "error_norm_m": 0.07215899559702423, "predicted_m": [ - 0.15583826530737938, - -0.04782243093351786, - 0.08864871099022203 + 0.17120497007552116, + -0.04320349238191376, + 0.0821460777057791 ], "observed_m": [ - 0.13056884685316103, - -0.07389348412117368, - 0.13587886912748515 + 0.16478888017950064, + -0.10118199538821443, + 0.12462251382235942 ] }, { "marker_id": 205, "link": "Board", "error_m": [ - 0.0032965571069566435, - 0.0032027050878753044, - -0.01274684818948499 + 0.01787184502840633, + 0.01939057608520195, + -0.03762305905383564 ], - "error_norm_m": 0.01355015672990927, + "error_norm_m": 0.045944443170026356, "predicted_m": [ - 0.7516719139189326, - -0.09132330218998558, - -0.0007772920043905215 + 0.7511065451948625, + -0.0904618956934443, + 0.002863871869302129 ], "observed_m": [ - 0.748375356811976, - -0.09452600727786088, - 0.011969556185094469 + 0.7332347001664562, + -0.10985247177864625, + 0.040486930923137765 ] }, { "marker_id": 206, "link": "Board", "error_m": [ - 0.005307267981266461, - 0.0032227200669935636, - -0.009488265709367758 + 0.0035172399804275223, + -0.002986860807394809, + -0.004956628989282884 ], - "error_norm_m": 0.011339321153699776, + "error_norm_m": 0.006772037027369862, "predicted_m": [ - 0.6523512896700883, - -0.010493387193897797, - -0.0021695709078748326 + 0.6522339532958079, + -0.009170850205069928, + -0.0011331888720454656 ], "observed_m": [ - 0.6470440216888218, - -0.01371610726089136, - 0.007318694801492925 + 0.6487167133153804, + -0.0061839893976751185, + 0.003823440117237419 ] }, { "marker_id": 207, "link": "Board", "error_m": [ - 0.0054688122362741565, - 0.0032042277659066944, - -0.015391001964001989 + 0.0034450521876430162, + -0.006453855944835017, + -0.00391434061794011 ], - "error_norm_m": 0.0166450570532919, + "error_norm_m": 0.008297150330415979, "predicted_m": [ - 0.7523474525118989, - -0.011342325656732447, - -0.002385719931475754 + 0.752215327902452, + -0.010512150778857032, + 0.0002544870759521034 ], "observed_m": [ - 0.7468786402756248, - -0.014546553422639141, - 0.013005282032526235 + 0.748770275714809, + -0.004058294834022015, + 0.004168827693892214 ] }, { "marker_id": 208, "link": "Board", "error_m": [ - 0.002959970495894637, - 0.006205952039261331, - -0.0013024613557298882 + 0.0026732610778422705, + 0.014079457102600501, + -0.004986118813423876 ], - "error_norm_m": 0.0069979762526996584, + "error_norm_m": 0.01517362243881973, "predicted_m": [ - 0.3516872625516899, - -0.087927548338647, - 8.730409001316366e-05 + 0.3511810467682862, + -0.08509669339829588, + -0.002686831922688146 ], "observed_m": [ - 0.3487272920557953, - -0.09413350037790832, - 0.001389765445743052 + 0.34850778569044394, + -0.09917615050089638, + 0.0022992868907357297 ] }, { "marker_id": 210, "link": "Board", "error_m": [ - 0.004170160093314321, - 0.00224196415185921, - 0.0001882955000761091 + 0.003165080576081926, + -0.00494491295578487, + -0.002157218759001077 ], - "error_norm_m": 0.004738364027535453, + "error_norm_m": 0.006254877454240515, "predicted_m": [ - 0.022291021442560007, - -0.01514269694469615, - -0.000606778568303374 + 0.022212695435501365, + -0.010714374704534568, + -0.009549374245261396 ], "observed_m": [ - 0.018120861349245686, - -0.01738466109655536, - -0.0007950740683794831 + 0.01904761485941944, + -0.0057694617487496986, + -0.0073921554862603185 ] }, { "marker_id": 211, "link": "Board", "error_m": [ - 0.0016848423509987498, - 0.004142719827073311, - -0.006240210835369596 + 0.001777675885192731, + 0.007152318498723004, + -0.01161578587866537 ], - "error_norm_m": 0.007677307638958428, + "error_norm_m": 0.013756535648155493, "predicted_m": [ - 0.2523666383028454, - -0.0070976333425592, - -0.0013049748134711472 + 0.25230845486923154, + -0.0038056479099215024, + -0.00668389266403574 ], "observed_m": [ - 0.25068179595184664, - -0.011240353169632511, - 0.004935236021898448 + 0.2505307789840388, + -0.010957966408644507, + 0.004931893214629631 ] }, { "marker_id": 214, "link": "Board", "error_m": [ - 0.0015871867759205682, - 0.006286868700762466, - -0.006347334273071395 + 0.0038544636936867493, + 0.00010951264992545631, + -0.010358876324804485 ], - "error_norm_m": 0.009073727585529039, + "error_norm_m": 0.011053289198199687, "predicted_m": [ - 0.3523628011446562, - -0.007946571805393848, - -0.0015211238370720684 + 0.35228982947587567, + -0.005146948483708609, + -0.005296216716038172 ], "observed_m": [ - 0.3507756143687356, - -0.014233440506156315, - 0.004826210435999327 + 0.3484353657821889, + -0.005256461133634065, + 0.005062659608766313 ] }, { "marker_id": 217, "link": "Board", "error_m": [ - 0.0017035690049225227, - 0.0031238669959803844, - -0.0046688044032763675 + -0.0030030815376417275, + 0.016169941354732348, + -0.0047622245289590005 ], - "error_norm_m": 0.005870130059816479, + "error_norm_m": 0.017122040900588536, "predicted_m": [ - 0.651675751077122, - -0.09047436372715094, - -0.0005611429807896003 + 0.6511251705882184, + -0.0891205951196572, + 0.00147619592130456 ], "observed_m": [ - 0.6499721820721994, - -0.09359823072313132, - 0.004107661422486767 + 0.6541282521258601, + -0.10529053647438955, + 0.0062384204502635605 ] }, { "marker_id": 229, "link": "Arm1", "error_m": [ - -0.01133166813973846, - 0.01402945348896742, - -0.02198463276753672 + -0.003763120246823848, + 0.0403294419516374, + -0.0299036653260676 ], - "error_norm_m": 0.028435125214278784, + "error_norm_m": 0.050347335203126724, "predicted_m": [ - 0.15507007867414319, - -0.13779685819771828, - 0.08664563141726264 + 0.1700124134847137, + -0.13318940078559968, + 0.08109056951484564 ], "observed_m": [ - 0.16640174681388165, - -0.1518263116866857, - 0.10863026418479936 + 0.17377553373153753, + -0.17351884273723708, + 0.11099423484091324 ] }, { "marker_id": 243, "link": "Arm1", "error_m": [ - -0.01377754229473685, - -0.0004475551338301298, - -0.0124081939170494 + 4.2840664442406196e-05, + 0.005111587752395591, + -0.021888407351794058 ], - "error_norm_m": 0.01854681249067295, + "error_norm_m": 0.022477378429679975, "predicted_m": [ - 0.15470232178724008, - -0.17200732202397717, - 0.050875407491987025 + 0.1700397577224266, + -0.16777995741804264, + 0.045685871462886336 ], "observed_m": [ - 0.16847986408197693, - -0.17155976689014704, - 0.06328360140903642 + 0.1699969170579842, + -0.17289154517043823, + 0.0675742788146804 ] } ], @@ -1345,40 +1345,40 @@ "link": "Base", "joint_variable": "x", "joint_type": "linear", - "old": 0.04362662540805053, - "new": 0.03757740731058722, + "old": 0.060672736696816276, + "new": 0.061202970088263954, "info": { "reason": "weighted_projection", "used_markers": 5, "axis_world": [ - 0.9999616284171068, - -0.008489384628338002, - -0.002161490236007051 + 0.9998137460654417, + -0.01341300573785765, + 0.013876759479961816 ], "per_marker": [ { "marker_id": 198, - "q_i": 0.01847741625384694, + "q_i": 0.05562494310371367, "weight": 1.0 }, { "marker_id": 229, - "q_i": 0.05502944059138241, + "q_i": 0.06539106105516762, "weight": 1.0 }, { "marker_id": 243, - "q_i": 0.057373019378922266, + "q_i": 0.06100220593156755, "weight": 1.0 }, { "marker_id": 244, - "q_i": 0.018265441772227296, + "q_i": 0.0630514099548273, "weight": 1.0 }, { "marker_id": 245, - "q_i": 0.038741718556557225, + "q_i": 0.06094523039604362, "weight": 1.0 } ] @@ -1388,22 +1388,22 @@ "link": "Arm1", "joint_variable": "y", "joint_type": "revolute", - "old": -0.04236508039060549, - "new": 0.04994223166754619, + "old": -0.044355505891484626, + "new": -0.07079579369955846, "info": { "reason": "2d_alignment+normal_tiebreak", "used_markers": 5, "axis_world": [ - -0.9999616284171068, - 0.008489384628338002, - 0.002161490236007051 + -0.9998137460654417, + 0.01341300573785765, + -0.013876759479961816 ], "axis_id": 0, - "theta_rad": 0.04994223166754602, - "theta_alt_rad": -3.091650421922247, - "score_theta": 0.02891273451311965, - "score_theta_alt": 1.2691341254439497, - "best_score": 0.02891273451311965, + "theta_rad": -0.07079579369955859, + "theta_alt_rad": 3.070796859890235, + "score_theta": 0.016104396417854622, + "score_theta_alt": 1.5360416384024345, + "best_score": 0.016104396417854622, "per_marker": [ { "marker_id": 198, @@ -1433,21 +1433,21 @@ "joint_variable": "z", "joint_type": "revolute", "old": 0.0, - "new": 0.8658348685859414, + "new": 0.867856336251057, "info": { "reason": "2d_alignment+normal_tiebreak", "used_markers": 1, "axis_world": [ - -0.9999616284171068, - 0.008489384628338002, - 0.002161490236007051 + -0.9998137460654417, + 0.01341300573785765, + -0.013876759479961816 ], "axis_id": 0, - "theta_rad": 0.8658348685859413, - "theta_alt_rad": -2.2757577850038517, - "score_theta": 0.05103363271936026, - "score_theta_alt": 0.10814887071839685, - "best_score": 0.05103363271936026, + "theta_rad": -2.2737363173387357, + "theta_alt_rad": 0.867856336251057, + "score_theta": 0.08878565615324918, + "score_theta_alt": 0.02013388445094868, + "best_score": 0.02013388445094868, "per_marker": [ { "marker_id": 245, @@ -1465,40 +1465,40 @@ "link": "Base", "joint_variable": "x", "joint_type": "linear", - "old": 0.03757740731058722, - "new": 0.037577407310617525, + "old": 0.061202970088263954, + "new": 0.061202970088294485, "info": { "reason": "weighted_projection", "used_markers": 5, "axis_world": [ - 0.9999616284171068, - -0.008489384628338002, - -0.002161490236007051 + 0.9998137460654417, + -0.01341300573785765, + 0.013876759479961816 ], "per_marker": [ { "marker_id": 198, - "q_i": 0.018477416253846943, + "q_i": 0.05562494310371368, "weight": 1.0 }, { "marker_id": 229, - "q_i": 0.055029440591382414, + "q_i": 0.0653910610551676, "weight": 1.0 }, { "marker_id": 243, - "q_i": 0.05737301937892226, + "q_i": 0.061002205931567556, "weight": 1.0 }, { "marker_id": 244, - "q_i": 0.018265441772315368, + "q_i": 0.06305140995491607, "weight": 1.0 }, { "marker_id": 245, - "q_i": 0.038741718556620626, + "q_i": 0.06094523039610752, "weight": 1.0 } ] @@ -1508,22 +1508,22 @@ "link": "Arm1", "joint_variable": "y", "joint_type": "revolute", - "old": 0.04994223166754619, - "new": 0.0629039500755213, + "old": -0.07079579369955846, + "new": -0.059600761695578264, "info": { "reason": "2d_alignment+normal_tiebreak", "used_markers": 5, "axis_world": [ - -0.9999616284171068, - 0.008489384628338002, - 0.002161490236007051 + -0.9998137460654417, + 0.01341300573785765, + -0.013876759479961816 ], "axis_id": 0, - "theta_rad": 0.06290395007552124, - "theta_alt_rad": -3.0786887035142723, - "score_theta": 0.03536927002462712, - "score_theta_alt": 1.2893348683977335, - "best_score": 0.03536927002462712, + "theta_rad": -0.05960076169557827, + "theta_alt_rad": 3.081991891894215, + "score_theta": 0.012282375412612196, + "score_theta_alt": 1.5665667305798034, + "best_score": 0.012282375412612196, "per_marker": [ { "marker_id": 198, @@ -1552,22 +1552,22 @@ "link": "Ellbow", "joint_variable": "z", "joint_type": "revolute", - "old": 0.8658348685859414, - "new": 0.8539759995705478, + "old": 0.867856336251057, + "new": 0.9235650996583162, "info": { "reason": "2d_alignment+normal_tiebreak", "used_markers": 1, "axis_world": [ - -0.9999616284171068, - 0.008489384628338, - 0.002161490236007051 + -0.9998137460654417, + 0.013413005737857652, + -0.013876759479961816 ], "axis_id": 0, - "theta_rad": 0.8539759995705478, - "theta_alt_rad": -2.2876166540192457, - "score_theta": 0.051749684503961044, - "score_theta_alt": 0.1090570036119288, - "best_score": 0.051749684503961044, + "theta_rad": -2.218027553931477, + "theta_alt_rad": 0.9235650996583162, + "score_theta": 0.08628409271475003, + "score_theta_alt": 0.02202155236830828, + "best_score": 0.02202155236830828, "per_marker": [ { "marker_id": 245, @@ -1625,870 +1625,870 @@ }, "marker_stats": { "num_markers_used": 43, - "mean_error_m": 0.017160158284268312, - "rms_error_m": 0.031153676742377578, - "median_error_m": 0.0074533552753443845, - "worst_error_m": 0.13848630063452738 + "mean_error_m": 0.018468897161093106, + "rms_error_m": 0.02519983965672948, + "median_error_m": 0.012809681404744987, + "worst_error_m": 0.07392562227989355 }, "marker_reports": [ { "marker_id": 46, "link": "Board", "error_m": [ - -0.013071464442725, - -0.012453648346596069, - 0.016511727974226224 + 0.005909038104734532, + -0.005912025002722032, + -0.004795093568657212 ], - "error_norm_m": 0.024466174619522028, + "error_norm_m": 0.009636477223975206, "predicted_m": [ - 0.5406516238004262, - 0.18530751827789943, - -0.033448441747951724 + 0.5420444932307554, + 0.18676055768314986, + -0.03666266949746651 ], "observed_m": [ - 0.5537230882431512, - 0.1977611666244955, - -0.04996016972217795 + 0.5361354551260209, + 0.1926725826858719, + -0.031867575928809296 ] }, { "marker_id": 47, "link": "Board", "error_m": [ - 0.0008721910810426392, - 0.003837784471127148, - 0.004571018690541762 + -0.0017790247426832662, + 0.003311081736141752, + 0.0036937551998724068 ], - "error_norm_m": 0.006031875230635755, + "error_norm_m": 0.005269916391658902, "predicted_m": [ - 0.3441935007486563, - -0.2849262112708967, - -0.02354307544450357 + 0.343058802608786, + -0.282341214532261, + -0.023938950227605407 ], "observed_m": [ - 0.34332130966761365, - -0.2887639957420238, - -0.028114094135045332 + 0.3448378273514693, + -0.28565229626840277, + -0.027632705427477814 ] }, { "marker_id": 51, "link": "Board", "error_m": [ - 0.0023129226144513737, - -0.002152002975723405, - 0.007277318284625859 + 0.0018130186400432402, + 0.007841589806590554, + -0.0012948464725381949 ], - "error_norm_m": 0.007933479012621942, + "error_norm_m": 0.008151944226466085, "predicted_m": [ - 0.1687367974887361, - -0.16899564696596553, - -0.02546298197884166 + 0.16824805424916736, + -0.16558666039338263, + -0.030120604195743066 ], "observed_m": [ - 0.16642387487428473, - -0.16684364399024212, - -0.03274030026346752 + 0.16643503560912412, + -0.17342825019997318, + -0.02882575772320487 ] }, { "marker_id": 53, "link": "Board", "error_m": [ - 0.0009220742534559734, - -0.00011407742484240146, - -0.004083807032116291 + 0.011437630887001893, + -0.00848091304718021, + -0.00523088908565672 ], - "error_norm_m": 0.0041881636146773845, + "error_norm_m": 0.015169294217186699, "predicted_m": [ - 0.4904198654590923, - 0.2125295197648856, - -0.03387819630621625 + 0.4919653338112853, + 0.21422054249906963, + -0.03823703468659834 ], "observed_m": [ - 0.4894977912056363, - 0.212643597189728, - -0.029794389274099962 + 0.48052770292428343, + 0.22270145554624984, + -0.03300614560094162 ] }, { "marker_id": 54, "link": "Board", "error_m": [ - 0.0026876126029042324, - -0.0015720752606889765, - -0.015421576774879476 + -0.0018633715935418849, + -0.00026202290098609193, + 0.0010998956810255936 ], - "error_norm_m": 0.015732759209752815, + "error_norm_m": 0.0021795825759531903, "predicted_m": [ - 0.3418616075192047, - -0.3289490972806476, - -0.022653198296289687 + 0.34048864418812924, + -0.32633725333460945, + -0.0225293561743478 ], "observed_m": [ - 0.33917399491630046, - -0.3273770220199586, - -0.007231621521410211 + 0.3423520157816711, + -0.32607523043362335, + -0.023629251855373394 ] }, { "marker_id": 55, "link": "Board", "error_m": [ - -7.456189087357012e-05, - 0.001625554336729007, - 0.0037037111592386797 + -0.0017318564561557004, + 0.0046670426208414995, + 0.0017811452939564022 ], - "error_norm_m": 0.004045424913194935, + "error_norm_m": 0.005287068390673825, "predicted_m": [ - 0.28388814642167004, - -0.26045821613532605, - -0.02389400783448468 + 0.28289215325522865, + -0.2575846449531435, + -0.02556014368934707 ], "observed_m": [ - 0.2839627083125436, - -0.26208377047205506, - -0.02759771899372336 + 0.28462400971138435, + -0.262251687573985, + -0.02734128898330347 ] }, { "marker_id": 56, "link": "Board", "error_m": [ - -0.01265274504762759, - -0.013561492382301393, - 0.018731716020361527 + -0.0302235496648251, + -0.029443948972544487, + 0.060700811724634623 ], - "error_norm_m": 0.026360637661918422, + "error_norm_m": 0.07392562227989355, "predicted_m": [ - 0.5024814732941351, - 0.1688643573695323, - -0.033029073570061046 + 0.5037891478927703, + 0.17051118901364073, + -0.036643410373183985 ], "observed_m": [ - 0.5151342183417627, - 0.18242584975183368, - -0.05176078959042257 + 0.5340126975575954, + 0.19995513798618522, + -0.09734422209781861 ] }, { "marker_id": 58, "link": "Board", "error_m": [ - 0.0001723402364918747, - 0.004035049643894895, - 0.003616032508958065 + -0.0022024017192950884, + 0.007832819714530759, + -0.0028935096217191057 ], - "error_norm_m": 0.005420979421806723, + "error_norm_m": 0.008635741771525868, "predicted_m": [ - 0.05064262618971274, - -0.21401541587418343, - -0.02428310374461435 + 0.04992201234930729, + -0.21000889996820854, + -0.030252662778657236 ], "observed_m": [ - 0.05047028595322087, - -0.21805046551807833, - -0.027899136253572415 + 0.05212441406860238, + -0.2178417196827393, + -0.02735915315693813 ] }, { "marker_id": 60, "link": "Board", "error_m": [ - 0.00463310817165119, - -0.0028117819517218257, - -0.005116707514237484 + 0.006548213459839247, + 0.0012692268576284804, + -0.012634590371468944 ], - "error_norm_m": 0.0074533552753443845, + "error_norm_m": 0.014287158926342252, "predicted_m": [ - 0.4391362102742091, - 0.28452301506431216, - -0.03520497641213836 + 0.441076943257675, + 0.28644158391102037, + -0.041291520606765046 ], "observed_m": [ - 0.43450310210255794, - 0.287334797016034, - -0.030088268897900873 + 0.43452872979783574, + 0.2851723570533919, + -0.028656930235296103 ] }, { "marker_id": 61, "link": "Board", "error_m": [ - -0.00691382558947783, - -0.02422789402762071, - 0.02410168760212969 + -0.004773031503023764, + -0.024724839033023305, + 0.016079162880633865 ], - "error_norm_m": 0.034866648513529226, + "error_norm_m": 0.029877064345074533, "predicted_m": [ - -0.017186993384537545, - 0.34040842616559613, - -0.03526353116172124 + -0.014896993714944018, + 0.3445556983026755, + -0.0493268992639042 ], "observed_m": [ - -0.010273167795059716, - 0.36463632019321685, - -0.05936521876385093 + -0.010123962211920254, + 0.3692805373356988, + -0.06540606214453806 ] }, { "marker_id": 62, "link": "Board", "error_m": [ - 0.0003521065756239006, - 0.00559001598665565, - 0.0026869724433836346 + 0.0002670158087336727, + 0.0036099577904157854, + 0.002012572681416889 ], - "error_norm_m": 0.006212252303566424, + "error_norm_m": 0.004141683412416126, "predicted_m": [ - 0.4056022056791012, - -0.17402606404855112, - -0.025914320861504775 + 0.40506207414509576, + -0.17178230432320996, + -0.026734695598987862 ], "observed_m": [ - 0.4052500991034773, - -0.17961608003520677, - -0.02860129330488841 + 0.4047950583363621, + -0.17539226211362574, + -0.02874726828040475 ] }, { "marker_id": 63, "link": "Board", "error_m": [ - -0.0158783209757567, - 0.007330017205507022, - 0.02254905104485634 + -0.016524322658683088, + 0.007443020870418315, + 0.027506496731969726 ], - "error_norm_m": 0.028536116278598967, + "error_norm_m": 0.03294023620849752, "predicted_m": [ - 0.7777723842017723, - -0.23822554041647467, - -0.02549247671060849 + 0.7768465175003292, + -0.23779298064965895, + -0.01957154057037569 ], "observed_m": [ - 0.793650705177529, - -0.2455555576219817, - -0.04804152775546483 + 0.7933708401590123, + -0.24523600152007727, + -0.047078037302345416 ] }, { "marker_id": 64, "link": "Board", "error_m": [ - -0.00024947886248814777, - 0.0031103977521285964, - 0.0015026763573656142 + -0.0015743230007710905, + 0.008489521641287107, + -0.005963280754507055 ], - "error_norm_m": 0.0034633582133906677, + "error_norm_m": 0.010493387821181168, "predicted_m": [ - -0.02046232194973048, - -0.18353671865193455, - -0.024729607632139067 + -0.021010566228709286, + -0.17919051815315568, + -0.03221751355546453 ], "observed_m": [ - -0.020212843087242333, - -0.18664711640406315, - -0.02623228398950468 + -0.019436243227938195, + -0.18768003979444278, + -0.026254232800957476 ] }, { "marker_id": 66, "link": "Board", "error_m": [ - -0.002169221374189595, - -0.003326372415850598, - 0.0022722362157080907 + -0.007998311016284065, + 0.0013790262614014615, + 0.0019330736586158047 ], - "error_norm_m": 0.004575295863564253, + "error_norm_m": 0.008343348627048988, "predicted_m": [ - 0.2090710727753069, - -0.36045632245526643, - -0.021710519015962968 + 0.20754094321470798, + -0.35717925773937836, + -0.023303675344947365 ], "observed_m": [ - 0.2112402941494965, - -0.35712995003941583, - -0.02398275523167106 + 0.21553925423099204, + -0.3585582840007798, + -0.02523674900356317 ] }, { "marker_id": 68, "link": "Board", "error_m": [ - 0.0059047524653308425, - -0.0031911635951974715, - -0.00924057582361612 + 0.007909606738037422, + -0.0011650636277719673, + -0.013591149304143003 ], - "error_norm_m": 0.011420939905285513, + "error_norm_m": 0.01576827801044461, "predicted_m": [ - 0.5775452286447659, - 0.1701967606003062, - -0.033230900949978014 + 0.5788524733092311, + 0.17147330540153524, + -0.03566621567474805 ], "observed_m": [ - 0.571640476179435, - 0.17338792419550367, - -0.023990325126361893 + 0.5709428665711936, + 0.1726383690293072, + -0.022075066370605047 ] }, { "marker_id": 69, "link": "Board", "error_m": [ - -0.010207407150906253, - -0.0032140932356206076, - -0.035567820288336355 + -0.01125874075257734, + -0.0019047553616383106, + -0.02453303098243099 ], - "error_norm_m": 0.03714285121170729, + "error_norm_m": 0.02706024658990296, "predicted_m": [ - 0.0076314251493094145, - -0.2767397820557746, - -0.0229226361119002 + 0.006575372055793682, + -0.27249947678584446, + -0.02878399526561177 ], "observed_m": [ - 0.017838832300215667, - -0.273525688820154, - 0.012645184176436158 + 0.017834112808371022, + -0.27059472142420615, + -0.004250964283180778 ] }, { "marker_id": 72, "link": "Board", "error_m": [ - 0.0021786185837171512, - -0.004019668474775084, - -0.0011331688472769746 + 0.01301934339557137, + -0.007156955177265112, + -0.0041459587385330385 ], - "error_norm_m": 0.004710433654862088, + "error_norm_m": 0.015424470289861113, "predicted_m": [ - 0.44501028151206423, - 0.19499801056971586, - -0.03342007940246738 + 0.4464653963378182, + 0.19691887227789812, + -0.03828059462695163 ], "observed_m": [ - 0.4428316629283471, - 0.19901767904449094, - -0.0322869105551904 + 0.4334460529422468, + 0.20407582745516323, + -0.03413463588841859 ] }, { "marker_id": 75, "link": "Board", "error_m": [ - 0.0053490747346992, - 0.0009851390679179728, - 0.001306643558522634 + -0.001489679189073504, + -0.020292205908477245, + 0.01741942628795258 ], - "error_norm_m": 0.005593783772149608, + "error_norm_m": 0.02678486843200487, "predicted_m": [ - -0.021659615353954997, - 0.199219859655652, - -0.03241656091498727 + -0.020134077270129586, + 0.20343842459667755, + -0.044765220009239874 ], "observed_m": [ - -0.027008690088654197, - 0.19823472058773403, - -0.033723204473509905 + -0.01864439808105608, + 0.2237306305051548, + -0.062184646297192454 ] }, { "marker_id": 79, "link": "Board", "error_m": [ - 0.0015068694512451186, - 0.005282261789669174, - 0.00288885743245252 + 0.0010722798357485908, + 0.004005774416510954, + 0.0006733588446190576 ], - "error_norm_m": 0.006206322777839621, + "error_norm_m": 0.004201121856808419, "predicted_m": [ - 0.31334077448953723, - -0.15725544722430798, - -0.026036083695623685 + 0.31290090195223613, + -0.15456298732822757, + -0.028538458960508453 ], "observed_m": [ - 0.3118339050382921, - -0.16253770901397716, - -0.028924941128076205 + 0.31182862211648754, + -0.15856876174473852, + -0.02921181780512751 ] }, { "marker_id": 83, "link": "Board", "error_m": [ - 0.006775247566416467, - 0.0036733811567694064, - -0.00797430575930876 + -0.005255378085870212, + -0.017837246385331296, + 0.008584734637097906 ], - "error_norm_m": 0.011089962175412757, + "error_norm_m": 0.020481309192184168, "predicted_m": [ - 0.04941907778341697, - 0.3432323968176374, - -0.03547560031504497 + 0.05171759016539374, + 0.3470505308214037, + -0.048513557298345625 ], "observed_m": [ - 0.0426438302170005, - 0.339559015660868, - -0.027501294555736213 + 0.05697296825126395, + 0.364887777206735, + -0.05709829193544353 ] }, { "marker_id": 84, "link": "Board", "error_m": [ - 0.004551836715352864, - -0.002718376770611375, - -0.004642404012657454 + 0.01886370011504146, + -0.015537334900553867, + -0.003952255443371466 ], - "error_norm_m": 0.007047035175658761, + "error_norm_m": 0.02475617662184215, "predicted_m": [ - 0.4120528422576719, - 0.2593671624020346, - -0.03463642235613811 + 0.41386004798904846, + 0.2614279410829299, + -0.04083623563520253 ], "observed_m": [ - 0.40750100554231905, - 0.262085539172646, - -0.029994018343480658 + 0.394996347874007, + 0.27696527598348375, + -0.03688398019183106 ] }, { "marker_id": 85, "link": "Board", "error_m": [ - -0.000916708693676993, - 0.002119426113185885, - 0.005238579736888606 + -0.0014332162830252848, + 0.0014130660453137156, + 0.008165047026109568 ], - "error_norm_m": 0.005724948867724244, + "error_norm_m": 0.008409450487453271, "predicted_m": [ - 0.5043160245339793, - -0.3124912515327591, - -0.023362709204236345 + 0.5030156718559659, + -0.3106855251799703, + -0.020858912152070003 ], "observed_m": [ - 0.5052327332276563, - -0.31461067764594497, - -0.02860128894112495 + 0.5044488881389911, + -0.312098591225284, + -0.02902395917817957 ] }, { "marker_id": 86, "link": "Board", "error_m": [ - 0.005183414741022241, - -0.001869012826053451, - -0.006179467547496376 + 0.00466511573223477, + 0.006131361200086172, + -0.014563902120428459 ], - "error_norm_m": 0.008279300483250976, + "error_norm_m": 0.0164761688488097, "predicted_m": [ - 0.3677381953969461, - 0.29332780147835846, - -0.03521535856749702 + 0.3697339050538343, + 0.29559506028485116, + -0.042550754548117284 ], "observed_m": [ - 0.36255478065592384, - 0.2951968143044119, - -0.02903589102000064 + 0.36506878932159953, + 0.289463699084765, + -0.027986852427688825 ] }, { "marker_id": 92, "link": "Board", "error_m": [ - -0.0017083594791625911, - 0.00170303643189873, - 0.0005736671286161663 + -0.0030843417438075615, + 0.007025737961659312, + 0.004194660704404177 ], - "error_norm_m": 0.0024794997827936494, + "error_norm_m": 0.008744674740867561, "predicted_m": [ - 0.6459007347108364, - -0.1858045111122829, - -0.026238095399216402 + 0.6452723062673585, + -0.18474053821588782, + -0.023081168789006144 ], "observed_m": [ - 0.647609094189999, - -0.18750754754418164, - -0.02681176252783257 + 0.6483566480111661, + -0.19176627617754713, + -0.02727582949341032 ] }, { "marker_id": 95, "link": "Board", "error_m": [ - -0.0001476915772945231, - -0.002753779608665352, - 0.003373259031671797 + -0.003518654131452137, + 0.005044333025852332, + -0.00048515309056019335 ], - "error_norm_m": 0.004357062247645791, + "error_norm_m": 0.006169408082933876, "predicted_m": [ - 0.18611487032737448, - -0.2711162407994176, - -0.023451863007203685 + 0.1850710976230811, + -0.2677572446660259, + -0.026540852664406197 ], "observed_m": [ - 0.186262561904669, - -0.26836246119075224, - -0.026825122038875483 + 0.18858975175453324, + -0.27280157769187824, + -0.026055699573846004 ] }, { "marker_id": 96, "link": "Board", "error_m": [ - 0.0008351041742055698, - 0.0038425930321047963, - 0.00430729768901832 + 0.00032807105204279985, + 0.004261768433921759, + 0.0018132550758337973 ], - "error_norm_m": 0.005832300881639977, + "error_norm_m": 0.00464308031048327, "predicted_m": [ - 0.3705773661912831, - -0.18511682137740493, - -0.025609820081442213 + 0.369980717057002, + -0.18269663296500055, + -0.026847899647670207 ], "observed_m": [ - 0.36974226201707755, - -0.18895941440950972, - -0.029917117770460532 + 0.3696526460049592, + -0.1869584013989223, + -0.028661154723504004 ] }, { "marker_id": 97, "link": "Board", "error_m": [ - -0.002038430423908888, - -0.003770267341488054, - 0.006702033713791033 + -0.004730285155796932, + 0.000687276705387152, + 0.004213699070405662 ], - "error_norm_m": 0.007955335965262584, + "error_norm_m": 0.006372064561887157, "predicted_m": [ - 0.30369750429104686, - -0.35770026478537825, - -0.021986571035044734 + 0.30217266442308105, + -0.3548903644334818, + -0.022107051521445743 ], "observed_m": [ - 0.30573593471495575, - -0.3539299974438902, - -0.028688604748835767 + 0.306902949578878, + -0.35557764113886897, + -0.026320750591851405 ] }, { "marker_id": 102, "link": "Board", "error_m": [ - -0.0031069906188920804, - 0.0012413262809079784, - 0.005990918260924717 + -0.004668507356966112, + 0.004636651351887733, + 0.01099065243696026 ], - "error_norm_m": 0.006861878988341128, + "error_norm_m": 0.012809681404744987, "predicted_m": [ - 0.6501783262927148, - -0.22399448808793507, - -0.025480818133082388 + 0.649342560147744, + -0.22293826636654013, + -0.02177265914897029 ], "observed_m": [ - 0.6532853169116069, - -0.22523581436884305, - -0.031471736394007105 + 0.6540110675047102, + -0.22757491771842786, + -0.03276331158593055 ] }, { "marker_id": 103, "link": "Board", "error_m": [ - 0.0006442089868049922, - 0.0031736767985359737, - 0.0037423451148866915 + 0.00020855262325139567, + 0.00728848879704197, + -0.0026312704778853648 ], - "error_norm_m": 0.004948977328616706, + "error_norm_m": 0.0077517190009095665, "predicted_m": [ - 0.10651719662765503, - -0.18409482436457583, - -0.025014528443833572 + 0.10595299033440675, + -0.18037402827980573, + -0.030472403637853997 ], "observed_m": [ - 0.10587298764085004, - -0.1872685011631118, - -0.028756873558720263 + 0.10574443771115535, + -0.1876625170768477, + -0.027841133159968633 ] }, { "marker_id": 105, "link": "Board", "error_m": [ - -0.0019246428729866594, - 0.0025750219350123005, - 0.0037087148619832193 + -0.0012341282300909473, + 0.003863389097407577, + 0.006227435062303922 ], - "error_norm_m": 0.004908111050274641, + "error_norm_m": 0.007431675131589608, "predicted_m": [ - 0.5249679039328917, - -0.266174303855376, - -0.024341399729036185 + 0.5239163783000583, + -0.2644864834446157, + -0.022094473916140396 ], "observed_m": [ - 0.5268925468058784, - -0.2687493257903883, - -0.028050114591019405 + 0.5251505065301493, + -0.2683498725420233, + -0.02832190897844432 ] }, { "marker_id": 198, "link": "Arm1", "error_m": [ - 0.019292152268096857, - 0.03031427831633545, - -0.03050146897641169 + 0.006973683762435456, + 0.05748470049960011, + -0.04491792807952283 ], - "error_norm_m": 0.04713260250288207, + "error_norm_m": 0.07328535542456191, "predicted_m": [ - 0.1498609991212579, - -0.04357920580483823, - 0.10537740015107346 + 0.1717625639419361, + -0.04369729488861432, + 0.07970458574283659 ], "observed_m": [ - 0.13056884685316103, - -0.07389348412117368, - 0.13587886912748515 + 0.16478888017950064, + -0.10118199538821443, + 0.12462251382235942 ] }, { "marker_id": 205, "link": "Board", "error_m": [ - 0.0032965571069566435, - 0.0032027050878753044, - -0.01274684818948499 + 0.01787184502840633, + 0.01939057608520195, + -0.03762305905383564 ], - "error_norm_m": 0.01355015672990927, + "error_norm_m": 0.045944443170026356, "predicted_m": [ - 0.7516719139189326, - -0.09132330218998558, - -0.0007772920043905215 + 0.7511065451948625, + -0.0904618956934443, + 0.002863871869302129 ], "observed_m": [ - 0.748375356811976, - -0.09452600727786088, - 0.011969556185094469 + 0.7332347001664562, + -0.10985247177864625, + 0.040486930923137765 ] }, { "marker_id": 206, "link": "Board", "error_m": [ - 0.005307267981266461, - 0.0032227200669935636, - -0.009488265709367758 + 0.0035172399804275223, + -0.002986860807394809, + -0.004956628989282884 ], - "error_norm_m": 0.011339321153699776, + "error_norm_m": 0.006772037027369862, "predicted_m": [ - 0.6523512896700883, - -0.010493387193897797, - -0.0021695709078748326 + 0.6522339532958079, + -0.009170850205069928, + -0.0011331888720454656 ], "observed_m": [ - 0.6470440216888218, - -0.01371610726089136, - 0.007318694801492925 + 0.6487167133153804, + -0.0061839893976751185, + 0.003823440117237419 ] }, { "marker_id": 207, "link": "Board", "error_m": [ - 0.0054688122362741565, - 0.0032042277659066944, - -0.015391001964001989 + 0.0034450521876430162, + -0.006453855944835017, + -0.00391434061794011 ], - "error_norm_m": 0.0166450570532919, + "error_norm_m": 0.008297150330415979, "predicted_m": [ - 0.7523474525118989, - -0.011342325656732447, - -0.002385719931475754 + 0.752215327902452, + -0.010512150778857032, + 0.0002544870759521034 ], "observed_m": [ - 0.7468786402756248, - -0.014546553422639141, - 0.013005282032526235 + 0.748770275714809, + -0.004058294834022015, + 0.004168827693892214 ] }, { "marker_id": 208, "link": "Board", "error_m": [ - 0.002959970495894637, - 0.006205952039261331, - -0.0013024613557298882 + 0.0026732610778422705, + 0.014079457102600501, + -0.004986118813423876 ], - "error_norm_m": 0.0069979762526996584, + "error_norm_m": 0.01517362243881973, "predicted_m": [ - 0.3516872625516899, - -0.087927548338647, - 8.730409001316366e-05 + 0.3511810467682862, + -0.08509669339829588, + -0.002686831922688146 ], "observed_m": [ - 0.3487272920557953, - -0.09413350037790832, - 0.001389765445743052 + 0.34850778569044394, + -0.09917615050089638, + 0.0022992868907357297 ] }, { "marker_id": 210, "link": "Board", "error_m": [ - 0.004170160093314321, - 0.00224196415185921, - 0.0001882955000761091 + 0.003165080576081926, + -0.00494491295578487, + -0.002157218759001077 ], - "error_norm_m": 0.004738364027535453, + "error_norm_m": 0.006254877454240515, "predicted_m": [ - 0.022291021442560007, - -0.01514269694469615, - -0.000606778568303374 + 0.022212695435501365, + -0.010714374704534568, + -0.009549374245261396 ], "observed_m": [ - 0.018120861349245686, - -0.01738466109655536, - -0.0007950740683794831 + 0.01904761485941944, + -0.0057694617487496986, + -0.0073921554862603185 ] }, { "marker_id": 211, "link": "Board", "error_m": [ - 0.0016848423509987498, - 0.004142719827073311, - -0.006240210835369596 + 0.001777675885192731, + 0.007152318498723004, + -0.01161578587866537 ], - "error_norm_m": 0.007677307638958428, + "error_norm_m": 0.013756535648155493, "predicted_m": [ - 0.2523666383028454, - -0.0070976333425592, - -0.0013049748134711472 + 0.25230845486923154, + -0.0038056479099215024, + -0.00668389266403574 ], "observed_m": [ - 0.25068179595184664, - -0.011240353169632511, - 0.004935236021898448 + 0.2505307789840388, + -0.010957966408644507, + 0.004931893214629631 ] }, { "marker_id": 214, "link": "Board", "error_m": [ - 0.0015871867759205682, - 0.006286868700762466, - -0.006347334273071395 + 0.0038544636936867493, + 0.00010951264992545631, + -0.010358876324804485 ], - "error_norm_m": 0.009073727585529039, + "error_norm_m": 0.011053289198199687, "predicted_m": [ - 0.3523628011446562, - -0.007946571805393848, - -0.0015211238370720684 + 0.35228982947587567, + -0.005146948483708609, + -0.005296216716038172 ], "observed_m": [ - 0.3507756143687356, - -0.014233440506156315, - 0.004826210435999327 + 0.3484353657821889, + -0.005256461133634065, + 0.005062659608766313 ] }, { "marker_id": 217, "link": "Board", "error_m": [ - 0.0017035690049225227, - 0.0031238669959803844, - -0.0046688044032763675 + -0.0030030815376417275, + 0.016169941354732348, + -0.0047622245289590005 ], - "error_norm_m": 0.005870130059816479, + "error_norm_m": 0.017122040900588536, "predicted_m": [ - 0.651675751077122, - -0.09047436372715094, - -0.0005611429807896003 + 0.6511251705882184, + -0.0891205951196572, + 0.00147619592130456 ], "observed_m": [ - 0.6499721820721994, - -0.09359823072313132, - 0.004107661422486767 + 0.6541282521258601, + -0.10529053647438955, + 0.0062384204502635605 ] }, { "marker_id": 229, "link": "Arm1", "error_m": [ - -0.017286033875764995, - 0.018560107910301188, - 0.004209504447997073 + -0.0031861357617059827, + 0.039861931997769856, + -0.03371682803025282 ], - "error_norm_m": 0.025710007788676898, + "error_norm_m": 0.05230630531884748, "predicted_m": [ - 0.14911571293811665, - -0.1332662037763845, - 0.11283976863279643 + 0.17058939796983155, + -0.13365691073946723, + 0.07727740681066042 ], "observed_m": [ - 0.16640174681388165, - -0.1518263116866857, - 0.10863026418479936 + 0.17377553373153753, + -0.17351884273723708, + 0.11099423484091324 ] }, { "marker_id": 243, "link": "Arm1", "error_m": [ - -0.019754010182128884, - 0.0005139917653710357, - 0.017578800248631177 + 0.0006343789237579223, + 0.005187735479511096, + -0.026224673444487513 ], - "error_norm_m": 0.026448049530954004, + "error_norm_m": 0.026740391419990378, "predicted_m": [ - 0.14872585389984805, - -0.171045775124776, - 0.0808624016576676 + 0.17063129598174212, + -0.16770380969092713, + 0.04134960537019288 ], "observed_m": [ - 0.16847986408197693, - -0.17155976689014704, - 0.06328360140903642 + 0.1699969170579842, + -0.17289154517043823, + 0.0675742788146804 ] }, { "marker_id": 244, "link": "Ellbow", "error_m": [ - 0.018472521096691508, - -0.11716506346963601, - 0.07148125159736049 + -0.0014052453046001223, + 0.009823847467107794, + -0.02246122177353655 ], - "error_norm_m": 0.13848630063452738, + "error_norm_m": 0.0245558379409682, "predicted_m": [ - 0.27401089096769127, - -0.1372286712143839, - 0.07769018319082992 + 0.29606424545132154, + -0.13439614035505015, + 0.044028103223256974 ], "observed_m": [ - 0.25553836987099976, - -0.02006360774474789, - 0.006208931593469432 + 0.29746949075592166, + -0.14421998782215795, + 0.06648932499679353 ] }, { "marker_id": 245, "link": "Ellbow", "error_m": [ - -0.001885017660502114, - -0.09786944448990884, - 0.050991335739857375 + 0.0011092820978230722, + 0.011875190953467812, + -0.04987142669823408 ], - "error_norm_m": 0.11037254086446778, + "error_norm_m": 0.05127777167419826, "predicted_m": [ - 0.2387280130523592, - -0.16513234912878605, - 0.05703822723363333 + 0.26100716490059145, + -0.16127039831609746, + 0.02169482396786814 ], "observed_m": [ - 0.2406130307128613, - -0.06726290463887721, - 0.006046891493775955 + 0.2598978828027684, + -0.17314558926956528, + 0.07156625066610221 ] } ], @@ -2513,50 +2513,50 @@ "link": "Base", "joint_variable": "x", "joint_type": "linear", - "old": 0.037577407310617525, - "new": 0.05982604911054192, + "old": 0.061202970088294485, + "new": 0.07341210691100843, "info": { "reason": "weighted_projection", "used_markers": 7, "axis_world": [ - 0.9999616284171068, - -0.008489384628338002, - -0.002161490236007051 + 0.9998137460654417, + -0.01341300573785765, + 0.013876759479961816 ], "per_marker": [ { "marker_id": 198, - "q_i": 0.01847741625384694, + "q_i": 0.05562494310371367, "weight": 1.0 }, { "marker_id": 229, - "q_i": 0.05502944059138243, + "q_i": 0.0653910610551676, "weight": 1.0 }, { "marker_id": 243, - "q_i": 0.057373019378922266, + "q_i": 0.061002205931567556, "weight": 1.0 }, { "marker_id": 244, - "q_i": 0.018265441772313304, + "q_i": 0.06305140995492677, "weight": 1.0 }, { "marker_id": 245, - "q_i": 0.03874171855661917, + "q_i": 0.060945230396115206, "weight": 1.0 }, { "marker_id": 113, - "q_i": 0.07903330233853743, + "q_i": 0.07327054629001889, "weight": 1.0 }, { "marker_id": 124, - "q_i": 0.15186200488217189, + "q_i": 0.13459935164554934, "weight": 1.0 } ] @@ -2566,22 +2566,22 @@ "link": "Arm1", "joint_variable": "y", "joint_type": "revolute", - "old": 0.0629039500755213, - "new": -0.09350938312020762, + "old": -0.059600761695578264, + "new": -0.18000835282807515, "info": { "reason": "2d_alignment+normal_tiebreak", "used_markers": 7, "axis_world": [ - -0.9999616284171068, - 0.008489384628338002, - 0.002161490236007051 + -0.9998137460654417, + 0.01341300573785765, + -0.013876759479961816 ], "axis_id": 0, - "theta_rad": -0.09350938312020782, - "theta_alt_rad": 3.0480832704695855, - "score_theta": 0.07491204572703071, - "score_theta_alt": 2.6153424770335505, - "best_score": 0.07491204572703071, + "theta_rad": -0.18000835282807534, + "theta_alt_rad": 2.961584300761718, + "score_theta": 0.10879031349113559, + "score_theta_alt": 2.6289737421143533, + "best_score": 0.10879031349113559, "per_marker": [ { "marker_id": 198, @@ -2618,22 +2618,22 @@ "link": "Ellbow", "joint_variable": "z", "joint_type": "revolute", - "old": 0.8539759995705478, - "new": 1.8840808197242849, + "old": 0.9235650996583162, + "new": 1.484928793275004, "info": { "reason": "2d_alignment+normal_tiebreak", "used_markers": 3, "axis_world": [ - -0.9999616284171068, - 0.008489384628338002, - 0.002161490236007051 + -0.9998137460654417, + 0.01341300573785765, + -0.013876759479961816 ], "axis_id": 0, - "theta_rad": -1.2575118338655085, - "theta_alt_rad": 1.8840808197242849, - "score_theta": 0.4920753506580353, - "score_theta_alt": 0.15350153656020094, - "best_score": 0.15350153656020094, + "theta_rad": -1.656663860314789, + "theta_alt_rad": 1.484928793275004, + "score_theta": 0.5642088603114379, + "score_theta_alt": 0.07143828002274752, + "best_score": 0.07143828002274752, "per_marker": [ { "marker_id": 245, @@ -2655,21 +2655,21 @@ "joint_variable": "a", "joint_type": "revolute", "old": 0.0, - "new": 2.3924222908436192, + "new": -1.4264537625755171, "info": { "reason": "2d_alignment+normal_tiebreak", "used_markers": 2, "axis_world": [ - 0.004116502108577394, - 0.23756148554648482, - 0.9713637809766933 + -0.016600353623634944, + -0.23093848360224598, + 0.972826729201591 ], "axis_id": 2, - "theta_rad": 2.3924222908436192, - "theta_alt_rad": -0.7491703627461739, - "score_theta": 0.07691477417859664, - "score_theta_alt": 0.12502172818030396, - "best_score": 0.07691477417859664, + "theta_rad": -1.4264537625755171, + "theta_alt_rad": 1.7151388910142762, + "score_theta": 0.06820634970692561, + "score_theta_alt": 0.08447012836885415, + "best_score": 0.06820634970692561, "per_marker": [ { "marker_id": 113, @@ -2691,50 +2691,50 @@ "link": "Base", "joint_variable": "x", "joint_type": "linear", - "old": 0.05982604911054192, - "new": 0.05408348484325045, + "old": 0.07341210691100843, + "new": 0.06489017042145476, "info": { "reason": "weighted_projection", "used_markers": 7, "axis_world": [ - 0.9999616284171068, - -0.008489384628338002, - -0.002161490236007051 + 0.9998137460654417, + -0.01341300573785765, + 0.013876759479961816 ], "per_marker": [ { "marker_id": 198, - "q_i": 0.018477416253846943, + "q_i": 0.05562494310371367, "weight": 1.0 }, { "marker_id": 229, - "q_i": 0.055029440591382414, + "q_i": 0.06539106105516763, "weight": 1.0 }, { "marker_id": 243, - "q_i": 0.057373019378922266, + "q_i": 0.061002205931567556, "weight": 1.0 }, { "marker_id": 244, - "q_i": 0.01826544177255521, + "q_i": 0.06305140995505966, "weight": 1.0 }, { "marker_id": 245, - "q_i": 0.03874171855679333, + "q_i": 0.06094523039621089, "weight": 1.0 }, { "marker_id": 113, - "q_i": 0.09946424701353312, + "q_i": 0.04358252569475328, "weight": 1.0 }, { "marker_id": 124, - "q_i": 0.09123311033571992, + "q_i": 0.10463381681371065, "weight": 1.0 } ] @@ -2744,22 +2744,22 @@ "link": "Arm1", "joint_variable": "y", "joint_type": "revolute", - "old": -0.09350938312020762, - "new": 0.10830851353283366, + "old": -0.18000835282807515, + "new": -0.05801316485959296, "info": { "reason": "2d_alignment+normal_tiebreak", "used_markers": 7, "axis_world": [ - -0.9999616284171068, - 0.008489384628338002, - 0.002161490236007051 + -0.9998137460654417, + 0.01341300573785765, + -0.013876759479961816 ], "axis_id": 0, - "theta_rad": 0.10830851353283383, - "theta_alt_rad": -3.03328414005696, - "score_theta": 0.09672474731844032, - "score_theta_alt": 2.266871427513622, - "best_score": 0.09672474731844032, + "theta_rad": -0.058013164859592875, + "theta_alt_rad": 3.0835794887301997, + "score_theta": 0.02006340785810553, + "score_theta_alt": 2.49823200530699, + "best_score": 0.02006340785810553, "per_marker": [ { "marker_id": 198, @@ -2796,22 +2796,22 @@ "link": "Ellbow", "joint_variable": "z", "joint_type": "revolute", - "old": 1.8840808197242849, - "new": 1.9912991164152878, + "old": 1.484928793275004, + "new": 1.6349046839253045, "info": { "reason": "2d_alignment+normal_tiebreak", "used_markers": 3, "axis_world": [ - -0.9999616284171068, - 0.008489384628338002, - 0.002161490236007051 + -0.9998137460654417, + 0.01341300573785765, + -0.013876759479961814 ], "axis_id": 0, - "theta_rad": -1.1502935371745049, - "theta_alt_rad": 1.9912991164152878, - "score_theta": 0.3775106909876319, - "score_theta_alt": 0.18160113965174315, - "best_score": 0.18160113965174315, + "theta_rad": -1.5066879696644886, + "theta_alt_rad": 1.6349046839253045, + "score_theta": 0.4896902400990149, + "score_theta_alt": 0.06487537733146216, + "best_score": 0.06487537733146216, "per_marker": [ { "marker_id": 245, @@ -2832,22 +2832,22 @@ "link": "Arm2", "joint_variable": "a", "joint_type": "revolute", - "old": 2.3924222908436192, - "new": 2.373559574730061, + "old": -1.4264537625755171, + "new": -2.968388705126404, "info": { "reason": "2d_alignment+normal_tiebreak", "used_markers": 2, "axis_world": [ - 0.006273348461466701, - 0.5217300815516801, - 0.8530875494936955 + -0.013345819088128711, + 0.03889427997848533, + 0.9991542043627811 ], "axis_id": 2, - "theta_rad": 2.3735595747300606, - "theta_alt_rad": -0.768033078859732, - "score_theta": 0.09496592662492377, - "score_theta_alt": 0.17091671231100486, - "best_score": 0.09496592662492377, + "theta_rad": -2.968388705126404, + "theta_alt_rad": 0.17320394846338916, + "score_theta": 0.055691943258982926, + "score_theta_alt": 0.06780217490833534, + "best_score": 0.055691943258982926, "per_marker": [ { "marker_id": 113, @@ -2909,910 +2909,910 @@ }, "marker_stats": { "num_markers_used": 45, - "mean_error_m": 0.025396244420164686, - "rms_error_m": 0.05095182295267257, - "median_error_m": 0.007677307638958428, - "worst_error_m": 0.20177379793386727 + "mean_error_m": 0.019848749962387186, + "rms_error_m": 0.027116917243099923, + "median_error_m": 0.013756535648155493, + "worst_error_m": 0.07392562227989355 }, "marker_reports": [ { "marker_id": 46, "link": "Board", "error_m": [ - -0.013071464442725, - -0.012453648346596069, - 0.016511727974226224 + 0.005909038104734532, + -0.005912025002722032, + -0.004795093568657212 ], - "error_norm_m": 0.024466174619522028, + "error_norm_m": 0.009636477223975206, "predicted_m": [ - 0.5406516238004262, - 0.18530751827789943, - -0.033448441747951724 + 0.5420444932307554, + 0.18676055768314986, + -0.03666266949746651 ], "observed_m": [ - 0.5537230882431512, - 0.1977611666244955, - -0.04996016972217795 + 0.5361354551260209, + 0.1926725826858719, + -0.031867575928809296 ] }, { "marker_id": 47, "link": "Board", "error_m": [ - 0.0008721910810426392, - 0.003837784471127148, - 0.004571018690541762 + -0.0017790247426832662, + 0.003311081736141752, + 0.0036937551998724068 ], - "error_norm_m": 0.006031875230635755, + "error_norm_m": 0.005269916391658902, "predicted_m": [ - 0.3441935007486563, - -0.2849262112708967, - -0.02354307544450357 + 0.343058802608786, + -0.282341214532261, + -0.023938950227605407 ], "observed_m": [ - 0.34332130966761365, - -0.2887639957420238, - -0.028114094135045332 + 0.3448378273514693, + -0.28565229626840277, + -0.027632705427477814 ] }, { "marker_id": 51, "link": "Board", "error_m": [ - 0.0023129226144513737, - -0.002152002975723405, - 0.007277318284625859 + 0.0018130186400432402, + 0.007841589806590554, + -0.0012948464725381949 ], - "error_norm_m": 0.007933479012621942, + "error_norm_m": 0.008151944226466085, "predicted_m": [ - 0.1687367974887361, - -0.16899564696596553, - -0.02546298197884166 + 0.16824805424916736, + -0.16558666039338263, + -0.030120604195743066 ], "observed_m": [ - 0.16642387487428473, - -0.16684364399024212, - -0.03274030026346752 + 0.16643503560912412, + -0.17342825019997318, + -0.02882575772320487 ] }, { "marker_id": 53, "link": "Board", "error_m": [ - 0.0009220742534559734, - -0.00011407742484240146, - -0.004083807032116291 + 0.011437630887001893, + -0.00848091304718021, + -0.00523088908565672 ], - "error_norm_m": 0.0041881636146773845, + "error_norm_m": 0.015169294217186699, "predicted_m": [ - 0.4904198654590923, - 0.2125295197648856, - -0.03387819630621625 + 0.4919653338112853, + 0.21422054249906963, + -0.03823703468659834 ], "observed_m": [ - 0.4894977912056363, - 0.212643597189728, - -0.029794389274099962 + 0.48052770292428343, + 0.22270145554624984, + -0.03300614560094162 ] }, { "marker_id": 54, "link": "Board", "error_m": [ - 0.0026876126029042324, - -0.0015720752606889765, - -0.015421576774879476 + -0.0018633715935418849, + -0.00026202290098609193, + 0.0010998956810255936 ], - "error_norm_m": 0.015732759209752815, + "error_norm_m": 0.0021795825759531903, "predicted_m": [ - 0.3418616075192047, - -0.3289490972806476, - -0.022653198296289687 + 0.34048864418812924, + -0.32633725333460945, + -0.0225293561743478 ], "observed_m": [ - 0.33917399491630046, - -0.3273770220199586, - -0.007231621521410211 + 0.3423520157816711, + -0.32607523043362335, + -0.023629251855373394 ] }, { "marker_id": 55, "link": "Board", "error_m": [ - -7.456189087357012e-05, - 0.001625554336729007, - 0.0037037111592386797 + -0.0017318564561557004, + 0.0046670426208414995, + 0.0017811452939564022 ], - "error_norm_m": 0.004045424913194935, + "error_norm_m": 0.005287068390673825, "predicted_m": [ - 0.28388814642167004, - -0.26045821613532605, - -0.02389400783448468 + 0.28289215325522865, + -0.2575846449531435, + -0.02556014368934707 ], "observed_m": [ - 0.2839627083125436, - -0.26208377047205506, - -0.02759771899372336 + 0.28462400971138435, + -0.262251687573985, + -0.02734128898330347 ] }, { "marker_id": 56, "link": "Board", "error_m": [ - -0.01265274504762759, - -0.013561492382301393, - 0.018731716020361527 + -0.0302235496648251, + -0.029443948972544487, + 0.060700811724634623 ], - "error_norm_m": 0.026360637661918422, + "error_norm_m": 0.07392562227989355, "predicted_m": [ - 0.5024814732941351, - 0.1688643573695323, - -0.033029073570061046 + 0.5037891478927703, + 0.17051118901364073, + -0.036643410373183985 ], "observed_m": [ - 0.5151342183417627, - 0.18242584975183368, - -0.05176078959042257 + 0.5340126975575954, + 0.19995513798618522, + -0.09734422209781861 ] }, { "marker_id": 58, "link": "Board", "error_m": [ - 0.0001723402364918747, - 0.004035049643894895, - 0.003616032508958065 + -0.0022024017192950884, + 0.007832819714530759, + -0.0028935096217191057 ], - "error_norm_m": 0.005420979421806723, + "error_norm_m": 0.008635741771525868, "predicted_m": [ - 0.05064262618971274, - -0.21401541587418343, - -0.02428310374461435 + 0.04992201234930729, + -0.21000889996820854, + -0.030252662778657236 ], "observed_m": [ - 0.05047028595322087, - -0.21805046551807833, - -0.027899136253572415 + 0.05212441406860238, + -0.2178417196827393, + -0.02735915315693813 ] }, { "marker_id": 60, "link": "Board", "error_m": [ - 0.00463310817165119, - -0.0028117819517218257, - -0.005116707514237484 + 0.006548213459839247, + 0.0012692268576284804, + -0.012634590371468944 ], - "error_norm_m": 0.0074533552753443845, + "error_norm_m": 0.014287158926342252, "predicted_m": [ - 0.4391362102742091, - 0.28452301506431216, - -0.03520497641213836 + 0.441076943257675, + 0.28644158391102037, + -0.041291520606765046 ], "observed_m": [ - 0.43450310210255794, - 0.287334797016034, - -0.030088268897900873 + 0.43452872979783574, + 0.2851723570533919, + -0.028656930235296103 ] }, { "marker_id": 61, "link": "Board", "error_m": [ - -0.00691382558947783, - -0.02422789402762071, - 0.02410168760212969 + -0.004773031503023764, + -0.024724839033023305, + 0.016079162880633865 ], - "error_norm_m": 0.034866648513529226, + "error_norm_m": 0.029877064345074533, "predicted_m": [ - -0.017186993384537545, - 0.34040842616559613, - -0.03526353116172124 + -0.014896993714944018, + 0.3445556983026755, + -0.0493268992639042 ], "observed_m": [ - -0.010273167795059716, - 0.36463632019321685, - -0.05936521876385093 + -0.010123962211920254, + 0.3692805373356988, + -0.06540606214453806 ] }, { "marker_id": 62, "link": "Board", "error_m": [ - 0.0003521065756239006, - 0.00559001598665565, - 0.0026869724433836346 + 0.0002670158087336727, + 0.0036099577904157854, + 0.002012572681416889 ], - "error_norm_m": 0.006212252303566424, + "error_norm_m": 0.004141683412416126, "predicted_m": [ - 0.4056022056791012, - -0.17402606404855112, - -0.025914320861504775 + 0.40506207414509576, + -0.17178230432320996, + -0.026734695598987862 ], "observed_m": [ - 0.4052500991034773, - -0.17961608003520677, - -0.02860129330488841 + 0.4047950583363621, + -0.17539226211362574, + -0.02874726828040475 ] }, { "marker_id": 63, "link": "Board", "error_m": [ - -0.0158783209757567, - 0.007330017205507022, - 0.02254905104485634 + -0.016524322658683088, + 0.007443020870418315, + 0.027506496731969726 ], - "error_norm_m": 0.028536116278598967, + "error_norm_m": 0.03294023620849752, "predicted_m": [ - 0.7777723842017723, - -0.23822554041647467, - -0.02549247671060849 + 0.7768465175003292, + -0.23779298064965895, + -0.01957154057037569 ], "observed_m": [ - 0.793650705177529, - -0.2455555576219817, - -0.04804152775546483 + 0.7933708401590123, + -0.24523600152007727, + -0.047078037302345416 ] }, { "marker_id": 64, "link": "Board", "error_m": [ - -0.00024947886248814777, - 0.0031103977521285964, - 0.0015026763573656142 + -0.0015743230007710905, + 0.008489521641287107, + -0.005963280754507055 ], - "error_norm_m": 0.0034633582133906677, + "error_norm_m": 0.010493387821181168, "predicted_m": [ - -0.02046232194973048, - -0.18353671865193455, - -0.024729607632139067 + -0.021010566228709286, + -0.17919051815315568, + -0.03221751355546453 ], "observed_m": [ - -0.020212843087242333, - -0.18664711640406315, - -0.02623228398950468 + -0.019436243227938195, + -0.18768003979444278, + -0.026254232800957476 ] }, { "marker_id": 66, "link": "Board", "error_m": [ - -0.002169221374189595, - -0.003326372415850598, - 0.0022722362157080907 + -0.007998311016284065, + 0.0013790262614014615, + 0.0019330736586158047 ], - "error_norm_m": 0.004575295863564253, + "error_norm_m": 0.008343348627048988, "predicted_m": [ - 0.2090710727753069, - -0.36045632245526643, - -0.021710519015962968 + 0.20754094321470798, + -0.35717925773937836, + -0.023303675344947365 ], "observed_m": [ - 0.2112402941494965, - -0.35712995003941583, - -0.02398275523167106 + 0.21553925423099204, + -0.3585582840007798, + -0.02523674900356317 ] }, { "marker_id": 68, "link": "Board", "error_m": [ - 0.0059047524653308425, - -0.0031911635951974715, - -0.00924057582361612 + 0.007909606738037422, + -0.0011650636277719673, + -0.013591149304143003 ], - "error_norm_m": 0.011420939905285513, + "error_norm_m": 0.01576827801044461, "predicted_m": [ - 0.5775452286447659, - 0.1701967606003062, - -0.033230900949978014 + 0.5788524733092311, + 0.17147330540153524, + -0.03566621567474805 ], "observed_m": [ - 0.571640476179435, - 0.17338792419550367, - -0.023990325126361893 + 0.5709428665711936, + 0.1726383690293072, + -0.022075066370605047 ] }, { "marker_id": 69, "link": "Board", "error_m": [ - -0.010207407150906253, - -0.0032140932356206076, - -0.035567820288336355 + -0.01125874075257734, + -0.0019047553616383106, + -0.02453303098243099 ], - "error_norm_m": 0.03714285121170729, + "error_norm_m": 0.02706024658990296, "predicted_m": [ - 0.0076314251493094145, - -0.2767397820557746, - -0.0229226361119002 + 0.006575372055793682, + -0.27249947678584446, + -0.02878399526561177 ], "observed_m": [ - 0.017838832300215667, - -0.273525688820154, - 0.012645184176436158 + 0.017834112808371022, + -0.27059472142420615, + -0.004250964283180778 ] }, { "marker_id": 72, "link": "Board", "error_m": [ - 0.0021786185837171512, - -0.004019668474775084, - -0.0011331688472769746 + 0.01301934339557137, + -0.007156955177265112, + -0.0041459587385330385 ], - "error_norm_m": 0.004710433654862088, + "error_norm_m": 0.015424470289861113, "predicted_m": [ - 0.44501028151206423, - 0.19499801056971586, - -0.03342007940246738 + 0.4464653963378182, + 0.19691887227789812, + -0.03828059462695163 ], "observed_m": [ - 0.4428316629283471, - 0.19901767904449094, - -0.0322869105551904 + 0.4334460529422468, + 0.20407582745516323, + -0.03413463588841859 ] }, { "marker_id": 75, "link": "Board", "error_m": [ - 0.0053490747346992, - 0.0009851390679179728, - 0.001306643558522634 + -0.001489679189073504, + -0.020292205908477245, + 0.01741942628795258 ], - "error_norm_m": 0.005593783772149608, + "error_norm_m": 0.02678486843200487, "predicted_m": [ - -0.021659615353954997, - 0.199219859655652, - -0.03241656091498727 + -0.020134077270129586, + 0.20343842459667755, + -0.044765220009239874 ], "observed_m": [ - -0.027008690088654197, - 0.19823472058773403, - -0.033723204473509905 + -0.01864439808105608, + 0.2237306305051548, + -0.062184646297192454 ] }, { "marker_id": 79, "link": "Board", "error_m": [ - 0.0015068694512451186, - 0.005282261789669174, - 0.00288885743245252 + 0.0010722798357485908, + 0.004005774416510954, + 0.0006733588446190576 ], - "error_norm_m": 0.006206322777839621, + "error_norm_m": 0.004201121856808419, "predicted_m": [ - 0.31334077448953723, - -0.15725544722430798, - -0.026036083695623685 + 0.31290090195223613, + -0.15456298732822757, + -0.028538458960508453 ], "observed_m": [ - 0.3118339050382921, - -0.16253770901397716, - -0.028924941128076205 + 0.31182862211648754, + -0.15856876174473852, + -0.02921181780512751 ] }, { "marker_id": 83, "link": "Board", "error_m": [ - 0.006775247566416467, - 0.0036733811567694064, - -0.00797430575930876 + -0.005255378085870212, + -0.017837246385331296, + 0.008584734637097906 ], - "error_norm_m": 0.011089962175412757, + "error_norm_m": 0.020481309192184168, "predicted_m": [ - 0.04941907778341697, - 0.3432323968176374, - -0.03547560031504497 + 0.05171759016539374, + 0.3470505308214037, + -0.048513557298345625 ], "observed_m": [ - 0.0426438302170005, - 0.339559015660868, - -0.027501294555736213 + 0.05697296825126395, + 0.364887777206735, + -0.05709829193544353 ] }, { "marker_id": 84, "link": "Board", "error_m": [ - 0.004551836715352864, - -0.002718376770611375, - -0.004642404012657454 + 0.01886370011504146, + -0.015537334900553867, + -0.003952255443371466 ], - "error_norm_m": 0.007047035175658761, + "error_norm_m": 0.02475617662184215, "predicted_m": [ - 0.4120528422576719, - 0.2593671624020346, - -0.03463642235613811 + 0.41386004798904846, + 0.2614279410829299, + -0.04083623563520253 ], "observed_m": [ - 0.40750100554231905, - 0.262085539172646, - -0.029994018343480658 + 0.394996347874007, + 0.27696527598348375, + -0.03688398019183106 ] }, { "marker_id": 85, "link": "Board", "error_m": [ - -0.000916708693676993, - 0.002119426113185885, - 0.005238579736888606 + -0.0014332162830252848, + 0.0014130660453137156, + 0.008165047026109568 ], - "error_norm_m": 0.005724948867724244, + "error_norm_m": 0.008409450487453271, "predicted_m": [ - 0.5043160245339793, - -0.3124912515327591, - -0.023362709204236345 + 0.5030156718559659, + -0.3106855251799703, + -0.020858912152070003 ], "observed_m": [ - 0.5052327332276563, - -0.31461067764594497, - -0.02860128894112495 + 0.5044488881389911, + -0.312098591225284, + -0.02902395917817957 ] }, { "marker_id": 86, "link": "Board", "error_m": [ - 0.005183414741022241, - -0.001869012826053451, - -0.006179467547496376 + 0.00466511573223477, + 0.006131361200086172, + -0.014563902120428459 ], - "error_norm_m": 0.008279300483250976, + "error_norm_m": 0.0164761688488097, "predicted_m": [ - 0.3677381953969461, - 0.29332780147835846, - -0.03521535856749702 + 0.3697339050538343, + 0.29559506028485116, + -0.042550754548117284 ], "observed_m": [ - 0.36255478065592384, - 0.2951968143044119, - -0.02903589102000064 + 0.36506878932159953, + 0.289463699084765, + -0.027986852427688825 ] }, { "marker_id": 92, "link": "Board", "error_m": [ - -0.0017083594791625911, - 0.00170303643189873, - 0.0005736671286161663 + -0.0030843417438075615, + 0.007025737961659312, + 0.004194660704404177 ], - "error_norm_m": 0.0024794997827936494, + "error_norm_m": 0.008744674740867561, "predicted_m": [ - 0.6459007347108364, - -0.1858045111122829, - -0.026238095399216402 + 0.6452723062673585, + -0.18474053821588782, + -0.023081168789006144 ], "observed_m": [ - 0.647609094189999, - -0.18750754754418164, - -0.02681176252783257 + 0.6483566480111661, + -0.19176627617754713, + -0.02727582949341032 ] }, { "marker_id": 95, "link": "Board", "error_m": [ - -0.0001476915772945231, - -0.002753779608665352, - 0.003373259031671797 + -0.003518654131452137, + 0.005044333025852332, + -0.00048515309056019335 ], - "error_norm_m": 0.004357062247645791, + "error_norm_m": 0.006169408082933876, "predicted_m": [ - 0.18611487032737448, - -0.2711162407994176, - -0.023451863007203685 + 0.1850710976230811, + -0.2677572446660259, + -0.026540852664406197 ], "observed_m": [ - 0.186262561904669, - -0.26836246119075224, - -0.026825122038875483 + 0.18858975175453324, + -0.27280157769187824, + -0.026055699573846004 ] }, { "marker_id": 96, "link": "Board", "error_m": [ - 0.0008351041742055698, - 0.0038425930321047963, - 0.00430729768901832 + 0.00032807105204279985, + 0.004261768433921759, + 0.0018132550758337973 ], - "error_norm_m": 0.005832300881639977, + "error_norm_m": 0.00464308031048327, "predicted_m": [ - 0.3705773661912831, - -0.18511682137740493, - -0.025609820081442213 + 0.369980717057002, + -0.18269663296500055, + -0.026847899647670207 ], "observed_m": [ - 0.36974226201707755, - -0.18895941440950972, - -0.029917117770460532 + 0.3696526460049592, + -0.1869584013989223, + -0.028661154723504004 ] }, { "marker_id": 97, "link": "Board", "error_m": [ - -0.002038430423908888, - -0.003770267341488054, - 0.006702033713791033 + -0.004730285155796932, + 0.000687276705387152, + 0.004213699070405662 ], - "error_norm_m": 0.007955335965262584, + "error_norm_m": 0.006372064561887157, "predicted_m": [ - 0.30369750429104686, - -0.35770026478537825, - -0.021986571035044734 + 0.30217266442308105, + -0.3548903644334818, + -0.022107051521445743 ], "observed_m": [ - 0.30573593471495575, - -0.3539299974438902, - -0.028688604748835767 + 0.306902949578878, + -0.35557764113886897, + -0.026320750591851405 ] }, { "marker_id": 102, "link": "Board", "error_m": [ - -0.0031069906188920804, - 0.0012413262809079784, - 0.005990918260924717 + -0.004668507356966112, + 0.004636651351887733, + 0.01099065243696026 ], - "error_norm_m": 0.006861878988341128, + "error_norm_m": 0.012809681404744987, "predicted_m": [ - 0.6501783262927148, - -0.22399448808793507, - -0.025480818133082388 + 0.649342560147744, + -0.22293826636654013, + -0.02177265914897029 ], "observed_m": [ - 0.6532853169116069, - -0.22523581436884305, - -0.031471736394007105 + 0.6540110675047102, + -0.22757491771842786, + -0.03276331158593055 ] }, { "marker_id": 103, "link": "Board", "error_m": [ - 0.0006442089868049922, - 0.0031736767985359737, - 0.0037423451148866915 + 0.00020855262325139567, + 0.00728848879704197, + -0.0026312704778853648 ], - "error_norm_m": 0.004948977328616706, + "error_norm_m": 0.0077517190009095665, "predicted_m": [ - 0.10651719662765503, - -0.18409482436457583, - -0.025014528443833572 + 0.10595299033440675, + -0.18037402827980573, + -0.030472403637853997 ], "observed_m": [ - 0.10587298764085004, - -0.1872685011631118, - -0.028756873558720263 + 0.10574443771115535, + -0.1876625170768477, + -0.027841133159968633 ] }, { "marker_id": 105, "link": "Board", "error_m": [ - -0.0019246428729866594, - 0.0025750219350123005, - 0.0037087148619832193 + -0.0012341282300909473, + 0.003863389097407577, + 0.006227435062303922 ], - "error_norm_m": 0.004908111050274641, + "error_norm_m": 0.007431675131589608, "predicted_m": [ - 0.5249679039328917, - -0.266174303855376, - -0.024341399729036185 + 0.5239163783000583, + -0.2644864834446157, + -0.022094473916140396 ], "observed_m": [ - 0.5268925468058784, - -0.2687493257903883, - -0.028050114591019405 + 0.5251505065301493, + -0.2683498725420233, + -0.02832190897844432 ] }, { "marker_id": 113, "link": "Arm2", "error_m": [ - -0.04469518194079192, - 0.13957129050326852, - -0.040189499388485705 + -0.0023937631501873557, + -0.006388175409712316, + -0.06504155799621728 ], - "error_norm_m": 0.15196381241126244, + "error_norm_m": 0.06539834213234877, "predicted_m": [ - 0.23572119499181232, - -0.05915029827602125, - 0.25558271327343457 + 0.26707992460015834, + -0.15650315430933753, + 0.22705198444371497 ], "observed_m": [ - 0.28041637693260424, - -0.19872158877928978, - 0.2957722126619203 + 0.2694736877503457, + -0.15011497889962522, + 0.29209354243993224 ] }, { "marker_id": 124, "link": "Arm2", "error_m": [ - -0.03599982125294121, - 0.1964345845787417, - -0.028812018044395316 + 0.0005947359909202476, + 0.0010168575563119508, + -0.05864836890623654 ], - "error_norm_m": 0.20177379793386727, + "error_norm_m": 0.058660198478616976, "predicted_m": [ - 0.2819512112977912, - -0.042571705845387706, - 0.28847550679028416 + 0.2963828882238083, + -0.11990427428418927, + 0.2630500163865299 ], "observed_m": [ - 0.3179510325507324, - -0.2390062904241294, - 0.3172875248346795 + 0.29578815223288807, + -0.12092113184050123, + 0.32169838529276645 ] }, { "marker_id": 198, "link": "Arm1", "error_m": [ - 0.035832768638906914, - 0.03252057133015765, - -0.02348127599658939 + 0.010657309693155231, + 0.05748418449156162, + -0.044611403271373015 ], - "error_norm_m": 0.05378610592334518, + "error_norm_m": 0.07354037678987499, "predicted_m": [ - 0.16640161549206794, - -0.04137291279101603, - 0.11239759313089576 + 0.17544618987265587, + -0.04369781089665281, + 0.0800111105509864 ], "observed_m": [ - 0.13056884685316103, - -0.07389348412117368, - 0.13587886912748515 + 0.16478888017950064, + -0.10118199538821443, + 0.12462251382235942 ] }, { "marker_id": 205, "link": "Board", "error_m": [ - 0.0032965571069566435, - 0.0032027050878753044, - -0.01274684818948499 + 0.01787184502840633, + 0.01939057608520195, + -0.03762305905383564 ], - "error_norm_m": 0.01355015672990927, + "error_norm_m": 0.045944443170026356, "predicted_m": [ - 0.7516719139189326, - -0.09132330218998558, - -0.0007772920043905215 + 0.7511065451948625, + -0.0904618956934443, + 0.002863871869302129 ], "observed_m": [ - 0.748375356811976, - -0.09452600727786088, - 0.011969556185094469 + 0.7332347001664562, + -0.10985247177864625, + 0.040486930923137765 ] }, { "marker_id": 206, "link": "Board", "error_m": [ - 0.005307267981266461, - 0.0032227200669935636, - -0.009488265709367758 + 0.0035172399804275223, + -0.002986860807394809, + -0.004956628989282884 ], - "error_norm_m": 0.011339321153699776, + "error_norm_m": 0.006772037027369862, "predicted_m": [ - 0.6523512896700883, - -0.010493387193897797, - -0.0021695709078748326 + 0.6522339532958079, + -0.009170850205069928, + -0.0011331888720454656 ], "observed_m": [ - 0.6470440216888218, - -0.01371610726089136, - 0.007318694801492925 + 0.6487167133153804, + -0.0061839893976751185, + 0.003823440117237419 ] }, { "marker_id": 207, "link": "Board", "error_m": [ - 0.0054688122362741565, - 0.0032042277659066944, - -0.015391001964001989 + 0.0034450521876430162, + -0.006453855944835017, + -0.00391434061794011 ], - "error_norm_m": 0.0166450570532919, + "error_norm_m": 0.008297150330415979, "predicted_m": [ - 0.7523474525118989, - -0.011342325656732447, - -0.002385719931475754 + 0.752215327902452, + -0.010512150778857032, + 0.0002544870759521034 ], "observed_m": [ - 0.7468786402756248, - -0.014546553422639141, - 0.013005282032526235 + 0.748770275714809, + -0.004058294834022015, + 0.004168827693892214 ] }, { "marker_id": 208, "link": "Board", "error_m": [ - 0.002959970495894637, - 0.006205952039261331, - -0.0013024613557298882 + 0.0026732610778422705, + 0.014079457102600501, + -0.004986118813423876 ], - "error_norm_m": 0.0069979762526996584, + "error_norm_m": 0.01517362243881973, "predicted_m": [ - 0.3516872625516899, - -0.087927548338647, - 8.730409001316366e-05 + 0.3511810467682862, + -0.08509669339829588, + -0.002686831922688146 ], "observed_m": [ - 0.3487272920557953, - -0.09413350037790832, - 0.001389765445743052 + 0.34850778569044394, + -0.09917615050089638, + 0.0022992868907357297 ] }, { "marker_id": 210, "link": "Board", "error_m": [ - 0.004170160093314321, - 0.00224196415185921, - 0.0001882955000761091 + 0.003165080576081926, + -0.00494491295578487, + -0.002157218759001077 ], - "error_norm_m": 0.004738364027535453, + "error_norm_m": 0.006254877454240515, "predicted_m": [ - 0.022291021442560007, - -0.01514269694469615, - -0.000606778568303374 + 0.022212695435501365, + -0.010714374704534568, + -0.009549374245261396 ], "observed_m": [ - 0.018120861349245686, - -0.01738466109655536, - -0.0007950740683794831 + 0.01904761485941944, + -0.0057694617487496986, + -0.0073921554862603185 ] }, { "marker_id": 211, "link": "Board", "error_m": [ - 0.0016848423509987498, - 0.004142719827073311, - -0.006240210835369596 + 0.001777675885192731, + 0.007152318498723004, + -0.01161578587866537 ], - "error_norm_m": 0.007677307638958428, + "error_norm_m": 0.013756535648155493, "predicted_m": [ - 0.2523666383028454, - -0.0070976333425592, - -0.0013049748134711472 + 0.25230845486923154, + -0.0038056479099215024, + -0.00668389266403574 ], "observed_m": [ - 0.25068179595184664, - -0.011240353169632511, - 0.004935236021898448 + 0.2505307789840388, + -0.010957966408644507, + 0.004931893214629631 ] }, { "marker_id": 214, "link": "Board", "error_m": [ - 0.0015871867759205682, - 0.006286868700762466, - -0.006347334273071395 + 0.0038544636936867493, + 0.00010951264992545631, + -0.010358876324804485 ], - "error_norm_m": 0.009073727585529039, + "error_norm_m": 0.011053289198199687, "predicted_m": [ - 0.3523628011446562, - -0.007946571805393848, - -0.0015211238370720684 + 0.35228982947587567, + -0.005146948483708609, + -0.005296216716038172 ], "observed_m": [ - 0.3507756143687356, - -0.014233440506156315, - 0.004826210435999327 + 0.3484353657821889, + -0.005256461133634065, + 0.005062659608766313 ] }, { "marker_id": 217, "link": "Board", "error_m": [ - 0.0017035690049225227, - 0.0031238669959803844, - -0.0046688044032763675 + -0.0030030815376417275, + 0.016169941354732348, + -0.0047622245289590005 ], - "error_norm_m": 0.005870130059816479, + "error_norm_m": 0.017122040900588536, "predicted_m": [ - 0.651675751077122, - -0.09047436372715094, - -0.0005611429807896003 + 0.6511251705882184, + -0.0891205951196572, + 0.00147619592130456 ], "observed_m": [ - 0.6499721820721994, - -0.09359823072313132, - 0.004107661422486767 + 0.6541282521258601, + -0.10529053647438955, + 0.0062384204502635605 ] }, { "marker_id": 229, "link": "Arm1", "error_m": [ - -0.0007329749786673667, - 0.0211974563126012, - 0.015292937553992303 + 0.0004954580896405492, + 0.03985770254307011, + -0.03326748224059263 ], - "error_norm_m": 0.026148486485345512, + "error_norm_m": 0.0519192382971726, "predicted_m": [ - 0.16566877183521428, - -0.1306288553740845, - 0.12392320173879166 + 0.17427099182117808, + -0.13366114019416697, + 0.07772675260032061 ], "observed_m": [ - 0.16640174681388165, - -0.1518263116866857, - 0.10863026418479936 + 0.17377553373153753, + -0.17351884273723708, + 0.11099423484091324 ] }, { "marker_id": 243, "link": "Arm1", "error_m": [ - -0.003209164680574139, - 0.0017388740546709636, - 0.030410049589423907 + 0.004314457583333292, + 0.005126519792525236, + -0.025721240610860313 ], - "error_norm_m": 0.03062831266910199, + "error_norm_m": 0.026579653270562144, "predicted_m": [ - 0.1652706994014028, - -0.16982089283547608, - 0.09369365099846033 + 0.1743113746413175, + -0.167765025377913, + 0.04185303820382008 ], "observed_m": [ - 0.16847986408197693, - -0.17155976689014704, - 0.06328360140903642 + 0.1699969170579842, + -0.17289154517043823, + 0.0675742788146804 ] }, { "marker_id": 244, "link": "Ellbow", "error_m": [ - 0.03501252783775599, - -0.11610781383140847, - 0.08273235200019766 + 0.0022756236078981806, + 0.009764075898270164, + -0.02201333043272126 ], - "error_norm_m": 0.14680444000704904, + "error_norm_m": 0.024188889137208756, "predicted_m": [ - 0.29055089770875575, - -0.13617142157615636, - 0.08894128359366708 + 0.29974511436381984, + -0.13445591192388778, + 0.044475994564072266 ], "observed_m": [ - 0.25553836987099976, - -0.02006360774474789, - 0.006208931593469432 + 0.29746949075592166, + -0.14421998782215795, + 0.06648932499679353 ] }, { "marker_id": 245, "link": "Ellbow", "error_m": [ - 0.01472520341653269, - -0.0984687815987656, - 0.1012317604165435 + 0.004365801881241582, + 0.004188766882578215, + -0.026221161696203636 ], - "error_norm_m": 0.14198873857541, + "error_norm_m": 0.02691013405320184, "predicted_m": [ - 0.255338234129394, - -0.1657316862376428, - 0.10727865191031945 + 0.26426368468400996, + -0.16895682238698706, + 0.04534508896989858 ], "observed_m": [ - 0.2406130307128613, - -0.06726290463887721, - 0.006046891493775955 + 0.2598978828027684, + -0.17314558926956528, + 0.07156625066610221 ] } ], @@ -3825,961 +3825,961 @@ "marker_id": 41, "link": "FingerA", "observed_position_m": [ - 0.1571273925444109, - -0.2417091517279724, - 0.5004883537060872 + 0.16618766117232975, + -0.2569426700546937, + 0.4724411904678126 ], "predicted_position_m": [ - 0.23538482571309632, - 0.0015811624535499742, - 0.3417598943207742 + 0.259580019560386, + -0.14914250765911677, + 0.3319543309626314 ], "error_m": [ - 0.07825743316868541, - 0.24329031418152236, - -0.15872845938531305 + 0.09339235838805626, + 0.10780016239557691, + -0.1404868595051812 ], - "error_norm_m": 0.3008473477355752 + "error_norm_m": 0.2001988144605867 }, { "marker_id": 42, "link": "FingerA", "observed_position_m": [ - 0.14791429060362243, - -0.19727321113148424, - 0.51423694375173 + 0.22321886551095868, + -0.035360792452610305, + 0.42901134599473967 ], "predicted_position_m": [ - 0.24479252410298546, - 0.04440563426308586, - 0.35980982022711533 + 0.24274234463622293, + -0.12419157569332828, + 0.36859015628662656 ], "error_m": [ - 0.09687823349936303, - 0.2416788453945701, - -0.15442712352461468 + 0.019523479125264254, + -0.08883078324071797, + -0.06042118970811311 ], - "error_norm_m": 0.30272395497762683 + "error_norm_m": 0.10919154937108386 }, { "marker_id": 43, "link": "FingerB", "observed_position_m": [ - 0.1995420422389749, - -0.1786853796663364, - 0.4893315305410218 + 0.2734953381578942, + -0.036947160499206384, + 0.4303044703555823 ], "predicted_position_m": [ - 0.2569762611955935, - 0.0053686773553617805, - 0.3648389897247622 + 0.279135505912545, + -0.1362938383823756, + 0.35353382704898023 ], "error_m": [ - 0.05743421895661863, - 0.1840540570216982, - -0.1244925408162596 + 0.0056401677546508155, + -0.09934667788316923, + -0.07677064330660205 ], - "error_norm_m": 0.2295059435661556 + "error_norm_m": 0.12567937608228452 }, { "marker_id": 46, "link": "Board", "observed_position_m": [ - 0.5537230882431512, - 0.1977611666244955, - -0.04996016972217795 + 0.5361354551260209, + 0.1926725826858719, + -0.031867575928809296 ], "predicted_position_m": [ - 0.5406516238004262, - 0.18530751827789943, - -0.033448441747951724 + 0.5420444932307554, + 0.18676055768314986, + -0.03666266949746651 ], "error_m": [ - -0.013071464442725, - -0.012453648346596069, - 0.016511727974226224 + 0.005909038104734532, + -0.005912025002722032, + -0.004795093568657212 ], - "error_norm_m": 0.024466174619522028 + "error_norm_m": 0.009636477223975206 }, { "marker_id": 47, "link": "Board", "observed_position_m": [ - 0.34332130966761365, - -0.2887639957420238, - -0.028114094135045332 + 0.3448378273514693, + -0.28565229626840277, + -0.027632705427477814 ], "predicted_position_m": [ - 0.3441935007486563, - -0.2849262112708967, - -0.02354307544450357 + 0.343058802608786, + -0.282341214532261, + -0.023938950227605407 ], "error_m": [ - 0.0008721910810426392, - 0.003837784471127148, - 0.004571018690541762 + -0.0017790247426832662, + 0.003311081736141752, + 0.0036937551998724068 ], - "error_norm_m": 0.006031875230635755 + "error_norm_m": 0.005269916391658902 }, { "marker_id": 51, "link": "Board", "observed_position_m": [ - 0.16642387487428473, - -0.16684364399024212, - -0.03274030026346752 + 0.16643503560912412, + -0.17342825019997318, + -0.02882575772320487 ], "predicted_position_m": [ - 0.1687367974887361, - -0.16899564696596553, - -0.02546298197884166 + 0.16824805424916736, + -0.16558666039338263, + -0.030120604195743066 ], "error_m": [ - 0.0023129226144513737, - -0.002152002975723405, - 0.007277318284625859 + 0.0018130186400432402, + 0.007841589806590554, + -0.0012948464725381949 ], - "error_norm_m": 0.007933479012621942 + "error_norm_m": 0.008151944226466085 }, { "marker_id": 53, "link": "Board", "observed_position_m": [ - 0.4894977912056363, - 0.212643597189728, - -0.029794389274099962 + 0.48052770292428343, + 0.22270145554624984, + -0.03300614560094162 ], "predicted_position_m": [ - 0.4904198654590923, - 0.2125295197648856, - -0.03387819630621625 + 0.4919653338112853, + 0.21422054249906963, + -0.03823703468659834 ], "error_m": [ - 0.0009220742534559734, - -0.00011407742484240146, - -0.004083807032116291 + 0.011437630887001893, + -0.00848091304718021, + -0.00523088908565672 ], - "error_norm_m": 0.0041881636146773845 + "error_norm_m": 0.015169294217186699 }, { "marker_id": 54, "link": "Board", "observed_position_m": [ - 0.33917399491630046, - -0.3273770220199586, - -0.007231621521410211 + 0.3423520157816711, + -0.32607523043362335, + -0.023629251855373394 ], "predicted_position_m": [ - 0.3418616075192047, - -0.3289490972806476, - -0.022653198296289687 + 0.34048864418812924, + -0.32633725333460945, + -0.0225293561743478 ], "error_m": [ - 0.0026876126029042324, - -0.0015720752606889765, - -0.015421576774879476 + -0.0018633715935418849, + -0.00026202290098609193, + 0.0010998956810255936 ], - "error_norm_m": 0.015732759209752815 + "error_norm_m": 0.0021795825759531903 }, { "marker_id": 55, "link": "Board", "observed_position_m": [ - 0.2839627083125436, - -0.26208377047205506, - -0.02759771899372336 + 0.28462400971138435, + -0.262251687573985, + -0.02734128898330347 ], "predicted_position_m": [ - 0.28388814642167004, - -0.26045821613532605, - -0.02389400783448468 + 0.28289215325522865, + -0.2575846449531435, + -0.02556014368934707 ], "error_m": [ - -7.456189087357012e-05, - 0.001625554336729007, - 0.0037037111592386797 + -0.0017318564561557004, + 0.0046670426208414995, + 0.0017811452939564022 ], - "error_norm_m": 0.004045424913194935 + "error_norm_m": 0.005287068390673825 }, { "marker_id": 56, "link": "Board", "observed_position_m": [ - 0.5151342183417627, - 0.18242584975183368, - -0.05176078959042257 + 0.5340126975575954, + 0.19995513798618522, + -0.09734422209781861 ], "predicted_position_m": [ - 0.5024814732941351, - 0.1688643573695323, - -0.033029073570061046 + 0.5037891478927703, + 0.17051118901364073, + -0.036643410373183985 ], "error_m": [ - -0.01265274504762759, - -0.013561492382301393, - 0.018731716020361527 + -0.0302235496648251, + -0.029443948972544487, + 0.060700811724634623 ], - "error_norm_m": 0.026360637661918422 + "error_norm_m": 0.07392562227989355 }, { "marker_id": 58, "link": "Board", "observed_position_m": [ - 0.05047028595322087, - -0.21805046551807833, - -0.027899136253572415 + 0.05212441406860238, + -0.2178417196827393, + -0.02735915315693813 ], "predicted_position_m": [ - 0.05064262618971274, - -0.21401541587418343, - -0.02428310374461435 + 0.04992201234930729, + -0.21000889996820854, + -0.030252662778657236 ], "error_m": [ - 0.0001723402364918747, - 0.004035049643894895, - 0.003616032508958065 + -0.0022024017192950884, + 0.007832819714530759, + -0.0028935096217191057 ], - "error_norm_m": 0.005420979421806723 + "error_norm_m": 0.008635741771525868 }, { "marker_id": 60, "link": "Board", "observed_position_m": [ - 0.43450310210255794, - 0.287334797016034, - -0.030088268897900873 + 0.43452872979783574, + 0.2851723570533919, + -0.028656930235296103 ], "predicted_position_m": [ - 0.4391362102742091, - 0.28452301506431216, - -0.03520497641213836 + 0.441076943257675, + 0.28644158391102037, + -0.041291520606765046 ], "error_m": [ - 0.00463310817165119, - -0.0028117819517218257, - -0.005116707514237484 + 0.006548213459839247, + 0.0012692268576284804, + -0.012634590371468944 ], - "error_norm_m": 0.0074533552753443845 + "error_norm_m": 0.014287158926342252 }, { "marker_id": 61, "link": "Board", "observed_position_m": [ - -0.010273167795059716, - 0.36463632019321685, - -0.05936521876385093 + -0.010123962211920254, + 0.3692805373356988, + -0.06540606214453806 ], "predicted_position_m": [ - -0.017186993384537545, - 0.34040842616559613, - -0.03526353116172124 + -0.014896993714944018, + 0.3445556983026755, + -0.0493268992639042 ], "error_m": [ - -0.00691382558947783, - -0.02422789402762071, - 0.02410168760212969 + -0.004773031503023764, + -0.024724839033023305, + 0.016079162880633865 ], - "error_norm_m": 0.034866648513529226 + "error_norm_m": 0.029877064345074533 }, { "marker_id": 62, "link": "Board", "observed_position_m": [ - 0.4052500991034773, - -0.17961608003520677, - -0.02860129330488841 + 0.4047950583363621, + -0.17539226211362574, + -0.02874726828040475 ], "predicted_position_m": [ - 0.4056022056791012, - -0.17402606404855112, - -0.025914320861504775 + 0.40506207414509576, + -0.17178230432320996, + -0.026734695598987862 ], "error_m": [ - 0.0003521065756239006, - 0.00559001598665565, - 0.0026869724433836346 + 0.0002670158087336727, + 0.0036099577904157854, + 0.002012572681416889 ], - "error_norm_m": 0.006212252303566424 + "error_norm_m": 0.004141683412416126 }, { "marker_id": 63, "link": "Board", "observed_position_m": [ - 0.793650705177529, - -0.2455555576219817, - -0.04804152775546483 + 0.7933708401590123, + -0.24523600152007727, + -0.047078037302345416 ], "predicted_position_m": [ - 0.7777723842017723, - -0.23822554041647467, - -0.02549247671060849 + 0.7768465175003292, + -0.23779298064965895, + -0.01957154057037569 ], "error_m": [ - -0.0158783209757567, - 0.007330017205507022, - 0.02254905104485634 + -0.016524322658683088, + 0.007443020870418315, + 0.027506496731969726 ], - "error_norm_m": 0.028536116278598967 + "error_norm_m": 0.03294023620849752 }, { "marker_id": 64, "link": "Board", "observed_position_m": [ - -0.020212843087242333, - -0.18664711640406315, - -0.02623228398950468 + -0.019436243227938195, + -0.18768003979444278, + -0.026254232800957476 ], "predicted_position_m": [ - -0.02046232194973048, - -0.18353671865193455, - -0.024729607632139067 + -0.021010566228709286, + -0.17919051815315568, + -0.03221751355546453 ], "error_m": [ - -0.00024947886248814777, - 0.0031103977521285964, - 0.0015026763573656142 + -0.0015743230007710905, + 0.008489521641287107, + -0.005963280754507055 ], - "error_norm_m": 0.0034633582133906677 + "error_norm_m": 0.010493387821181168 }, { "marker_id": 66, "link": "Board", "observed_position_m": [ - 0.2112402941494965, - -0.35712995003941583, - -0.02398275523167106 + 0.21553925423099204, + -0.3585582840007798, + -0.02523674900356317 ], "predicted_position_m": [ - 0.2090710727753069, - -0.36045632245526643, - -0.021710519015962968 + 0.20754094321470798, + -0.35717925773937836, + -0.023303675344947365 ], "error_m": [ - -0.002169221374189595, - -0.003326372415850598, - 0.0022722362157080907 + -0.007998311016284065, + 0.0013790262614014615, + 0.0019330736586158047 ], - "error_norm_m": 0.004575295863564253 + "error_norm_m": 0.008343348627048988 }, { "marker_id": 68, "link": "Board", "observed_position_m": [ - 0.571640476179435, - 0.17338792419550367, - -0.023990325126361893 + 0.5709428665711936, + 0.1726383690293072, + -0.022075066370605047 ], "predicted_position_m": [ - 0.5775452286447659, - 0.1701967606003062, - -0.033230900949978014 + 0.5788524733092311, + 0.17147330540153524, + -0.03566621567474805 ], "error_m": [ - 0.0059047524653308425, - -0.0031911635951974715, - -0.00924057582361612 + 0.007909606738037422, + -0.0011650636277719673, + -0.013591149304143003 ], - "error_norm_m": 0.011420939905285513 + "error_norm_m": 0.01576827801044461 }, { "marker_id": 69, "link": "Board", "observed_position_m": [ - 0.017838832300215667, - -0.273525688820154, - 0.012645184176436158 + 0.017834112808371022, + -0.27059472142420615, + -0.004250964283180778 ], "predicted_position_m": [ - 0.0076314251493094145, - -0.2767397820557746, - -0.0229226361119002 + 0.006575372055793682, + -0.27249947678584446, + -0.02878399526561177 ], "error_m": [ - -0.010207407150906253, - -0.0032140932356206076, - -0.035567820288336355 + -0.01125874075257734, + -0.0019047553616383106, + -0.02453303098243099 ], - "error_norm_m": 0.03714285121170729 + "error_norm_m": 0.02706024658990296 }, { "marker_id": 72, "link": "Board", "observed_position_m": [ - 0.4428316629283471, - 0.19901767904449094, - -0.0322869105551904 + 0.4334460529422468, + 0.20407582745516323, + -0.03413463588841859 ], "predicted_position_m": [ - 0.44501028151206423, - 0.19499801056971586, - -0.03342007940246738 + 0.4464653963378182, + 0.19691887227789812, + -0.03828059462695163 ], "error_m": [ - 0.0021786185837171512, - -0.004019668474775084, - -0.0011331688472769746 + 0.01301934339557137, + -0.007156955177265112, + -0.0041459587385330385 ], - "error_norm_m": 0.004710433654862088 + "error_norm_m": 0.015424470289861113 }, { "marker_id": 75, "link": "Board", "observed_position_m": [ - -0.027008690088654197, - 0.19823472058773403, - -0.033723204473509905 + -0.01864439808105608, + 0.2237306305051548, + -0.062184646297192454 ], "predicted_position_m": [ - -0.021659615353954997, - 0.199219859655652, - -0.03241656091498727 + -0.020134077270129586, + 0.20343842459667755, + -0.044765220009239874 ], "error_m": [ - 0.0053490747346992, - 0.0009851390679179728, - 0.001306643558522634 + -0.001489679189073504, + -0.020292205908477245, + 0.01741942628795258 ], - "error_norm_m": 0.005593783772149608 + "error_norm_m": 0.02678486843200487 }, { "marker_id": 79, "link": "Board", "observed_position_m": [ - 0.3118339050382921, - -0.16253770901397716, - -0.028924941128076205 + 0.31182862211648754, + -0.15856876174473852, + -0.02921181780512751 ], "predicted_position_m": [ - 0.31334077448953723, - -0.15725544722430798, - -0.026036083695623685 + 0.31290090195223613, + -0.15456298732822757, + -0.028538458960508453 ], "error_m": [ - 0.0015068694512451186, - 0.005282261789669174, - 0.00288885743245252 + 0.0010722798357485908, + 0.004005774416510954, + 0.0006733588446190576 ], - "error_norm_m": 0.006206322777839621 + "error_norm_m": 0.004201121856808419 }, { "marker_id": 83, "link": "Board", "observed_position_m": [ - 0.0426438302170005, - 0.339559015660868, - -0.027501294555736213 + 0.05697296825126395, + 0.364887777206735, + -0.05709829193544353 ], "predicted_position_m": [ - 0.04941907778341697, - 0.3432323968176374, - -0.03547560031504497 + 0.05171759016539374, + 0.3470505308214037, + -0.048513557298345625 ], "error_m": [ - 0.006775247566416467, - 0.0036733811567694064, - -0.00797430575930876 + -0.005255378085870212, + -0.017837246385331296, + 0.008584734637097906 ], - "error_norm_m": 0.011089962175412757 + "error_norm_m": 0.020481309192184168 }, { "marker_id": 84, "link": "Board", "observed_position_m": [ - 0.40750100554231905, - 0.262085539172646, - -0.029994018343480658 + 0.394996347874007, + 0.27696527598348375, + -0.03688398019183106 ], "predicted_position_m": [ - 0.4120528422576719, - 0.2593671624020346, - -0.03463642235613811 + 0.41386004798904846, + 0.2614279410829299, + -0.04083623563520253 ], "error_m": [ - 0.004551836715352864, - -0.002718376770611375, - -0.004642404012657454 + 0.01886370011504146, + -0.015537334900553867, + -0.003952255443371466 ], - "error_norm_m": 0.007047035175658761 + "error_norm_m": 0.02475617662184215 }, { "marker_id": 85, "link": "Board", "observed_position_m": [ - 0.5052327332276563, - -0.31461067764594497, - -0.02860128894112495 + 0.5044488881389911, + -0.312098591225284, + -0.02902395917817957 ], "predicted_position_m": [ - 0.5043160245339793, - -0.3124912515327591, - -0.023362709204236345 + 0.5030156718559659, + -0.3106855251799703, + -0.020858912152070003 ], "error_m": [ - -0.000916708693676993, - 0.002119426113185885, - 0.005238579736888606 + -0.0014332162830252848, + 0.0014130660453137156, + 0.008165047026109568 ], - "error_norm_m": 0.005724948867724244 + "error_norm_m": 0.008409450487453271 }, { "marker_id": 86, "link": "Board", "observed_position_m": [ - 0.36255478065592384, - 0.2951968143044119, - -0.02903589102000064 + 0.36506878932159953, + 0.289463699084765, + -0.027986852427688825 ], "predicted_position_m": [ - 0.3677381953969461, - 0.29332780147835846, - -0.03521535856749702 + 0.3697339050538343, + 0.29559506028485116, + -0.042550754548117284 ], "error_m": [ - 0.005183414741022241, - -0.001869012826053451, - -0.006179467547496376 + 0.00466511573223477, + 0.006131361200086172, + -0.014563902120428459 ], - "error_norm_m": 0.008279300483250976 + "error_norm_m": 0.0164761688488097 }, { "marker_id": 92, "link": "Board", "observed_position_m": [ - 0.647609094189999, - -0.18750754754418164, - -0.02681176252783257 + 0.6483566480111661, + -0.19176627617754713, + -0.02727582949341032 ], "predicted_position_m": [ - 0.6459007347108364, - -0.1858045111122829, - -0.026238095399216402 + 0.6452723062673585, + -0.18474053821588782, + -0.023081168789006144 ], "error_m": [ - -0.0017083594791625911, - 0.00170303643189873, - 0.0005736671286161663 + -0.0030843417438075615, + 0.007025737961659312, + 0.004194660704404177 ], - "error_norm_m": 0.0024794997827936494 + "error_norm_m": 0.008744674740867561 }, { "marker_id": 95, "link": "Board", "observed_position_m": [ - 0.186262561904669, - -0.26836246119075224, - -0.026825122038875483 + 0.18858975175453324, + -0.27280157769187824, + -0.026055699573846004 ], "predicted_position_m": [ - 0.18611487032737448, - -0.2711162407994176, - -0.023451863007203685 + 0.1850710976230811, + -0.2677572446660259, + -0.026540852664406197 ], "error_m": [ - -0.0001476915772945231, - -0.002753779608665352, - 0.003373259031671797 + -0.003518654131452137, + 0.005044333025852332, + -0.00048515309056019335 ], - "error_norm_m": 0.004357062247645791 + "error_norm_m": 0.006169408082933876 }, { "marker_id": 96, "link": "Board", "observed_position_m": [ - 0.36974226201707755, - -0.18895941440950972, - -0.029917117770460532 + 0.3696526460049592, + -0.1869584013989223, + -0.028661154723504004 ], "predicted_position_m": [ - 0.3705773661912831, - -0.18511682137740493, - -0.025609820081442213 + 0.369980717057002, + -0.18269663296500055, + -0.026847899647670207 ], "error_m": [ - 0.0008351041742055698, - 0.0038425930321047963, - 0.00430729768901832 + 0.00032807105204279985, + 0.004261768433921759, + 0.0018132550758337973 ], - "error_norm_m": 0.005832300881639977 + "error_norm_m": 0.00464308031048327 }, { "marker_id": 97, "link": "Board", "observed_position_m": [ - 0.30573593471495575, - -0.3539299974438902, - -0.028688604748835767 + 0.306902949578878, + -0.35557764113886897, + -0.026320750591851405 ], "predicted_position_m": [ - 0.30369750429104686, - -0.35770026478537825, - -0.021986571035044734 + 0.30217266442308105, + -0.3548903644334818, + -0.022107051521445743 ], "error_m": [ - -0.002038430423908888, - -0.003770267341488054, - 0.006702033713791033 + -0.004730285155796932, + 0.000687276705387152, + 0.004213699070405662 ], - "error_norm_m": 0.007955335965262584 + "error_norm_m": 0.006372064561887157 }, { "marker_id": 102, "link": "Board", "observed_position_m": [ - 0.6532853169116069, - -0.22523581436884305, - -0.031471736394007105 + 0.6540110675047102, + -0.22757491771842786, + -0.03276331158593055 ], "predicted_position_m": [ - 0.6501783262927148, - -0.22399448808793507, - -0.025480818133082388 + 0.649342560147744, + -0.22293826636654013, + -0.02177265914897029 ], "error_m": [ - -0.0031069906188920804, - 0.0012413262809079784, - 0.005990918260924717 + -0.004668507356966112, + 0.004636651351887733, + 0.01099065243696026 ], - "error_norm_m": 0.006861878988341128 + "error_norm_m": 0.012809681404744987 }, { "marker_id": 103, "link": "Board", "observed_position_m": [ - 0.10587298764085004, - -0.1872685011631118, - -0.028756873558720263 + 0.10574443771115535, + -0.1876625170768477, + -0.027841133159968633 ], "predicted_position_m": [ - 0.10651719662765503, - -0.18409482436457583, - -0.025014528443833572 + 0.10595299033440675, + -0.18037402827980573, + -0.030472403637853997 ], "error_m": [ - 0.0006442089868049922, - 0.0031736767985359737, - 0.0037423451148866915 + 0.00020855262325139567, + 0.00728848879704197, + -0.0026312704778853648 ], - "error_norm_m": 0.004948977328616706 + "error_norm_m": 0.0077517190009095665 }, { "marker_id": 105, "link": "Board", "observed_position_m": [ - 0.5268925468058784, - -0.2687493257903883, - -0.028050114591019405 + 0.5251505065301493, + -0.2683498725420233, + -0.02832190897844432 ], "predicted_position_m": [ - 0.5249679039328917, - -0.266174303855376, - -0.024341399729036185 + 0.5239163783000583, + -0.2644864834446157, + -0.022094473916140396 ], "error_m": [ - -0.0019246428729866594, - 0.0025750219350123005, - 0.0037087148619832193 + -0.0012341282300909473, + 0.003863389097407577, + 0.006227435062303922 ], - "error_norm_m": 0.004908111050274641 + "error_norm_m": 0.007431675131589608 }, { "marker_id": 113, "link": "Arm2", "observed_position_m": [ - 0.28041637693260424, - -0.19872158877928978, - 0.2957722126619203 + 0.2694736877503457, + -0.15011497889962522, + 0.29209354243993224 ], "predicted_position_m": [ - 0.23572119499181232, - -0.05915029827602125, - 0.25558271327343457 + 0.26707992460015834, + -0.15650315430933753, + 0.22705198444371497 ], "error_m": [ - -0.04469518194079192, - 0.13957129050326852, - -0.040189499388485705 + -0.0023937631501873557, + -0.006388175409712316, + -0.06504155799621728 ], - "error_norm_m": 0.15196381241126244 + "error_norm_m": 0.06539834213234877 }, { "marker_id": 124, "link": "Arm2", "observed_position_m": [ - 0.3179510325507324, - -0.2390062904241294, - 0.3172875248346795 + 0.29578815223288807, + -0.12092113184050123, + 0.32169838529276645 ], "predicted_position_m": [ - 0.2819512112977912, - -0.042571705845387706, - 0.28847550679028416 + 0.2963828882238083, + -0.11990427428418927, + 0.2630500163865299 ], "error_m": [ - -0.03599982125294121, - 0.1964345845787417, - -0.028812018044395316 + 0.0005947359909202476, + 0.0010168575563119508, + -0.05864836890623654 ], - "error_norm_m": 0.20177379793386727 + "error_norm_m": 0.058660198478616976 }, { "marker_id": 198, "link": "Arm1", "observed_position_m": [ - 0.13056884685316103, - -0.07389348412117368, - 0.13587886912748515 + 0.16478888017950064, + -0.10118199538821443, + 0.12462251382235942 ], "predicted_position_m": [ - 0.16640161549206794, - -0.04137291279101603, - 0.11239759313089576 + 0.17544618987265587, + -0.04369781089665281, + 0.0800111105509864 ], "error_m": [ - 0.035832768638906914, - 0.03252057133015765, - -0.02348127599658939 + 0.010657309693155231, + 0.05748418449156162, + -0.044611403271373015 ], - "error_norm_m": 0.05378610592334518 + "error_norm_m": 0.07354037678987499 }, { "marker_id": 205, "link": "Board", "observed_position_m": [ - 0.748375356811976, - -0.09452600727786088, - 0.011969556185094469 + 0.7332347001664562, + -0.10985247177864625, + 0.040486930923137765 ], "predicted_position_m": [ - 0.7516719139189326, - -0.09132330218998558, - -0.0007772920043905215 + 0.7511065451948625, + -0.0904618956934443, + 0.002863871869302129 ], "error_m": [ - 0.0032965571069566435, - 0.0032027050878753044, - -0.01274684818948499 + 0.01787184502840633, + 0.01939057608520195, + -0.03762305905383564 ], - "error_norm_m": 0.01355015672990927 + "error_norm_m": 0.045944443170026356 }, { "marker_id": 206, "link": "Board", "observed_position_m": [ - 0.6470440216888218, - -0.01371610726089136, - 0.007318694801492925 + 0.6487167133153804, + -0.0061839893976751185, + 0.003823440117237419 ], "predicted_position_m": [ - 0.6523512896700883, - -0.010493387193897797, - -0.0021695709078748326 + 0.6522339532958079, + -0.009170850205069928, + -0.0011331888720454656 ], "error_m": [ - 0.005307267981266461, - 0.0032227200669935636, - -0.009488265709367758 + 0.0035172399804275223, + -0.002986860807394809, + -0.004956628989282884 ], - "error_norm_m": 0.011339321153699776 + "error_norm_m": 0.006772037027369862 }, { "marker_id": 207, "link": "Board", "observed_position_m": [ - 0.7468786402756248, - -0.014546553422639141, - 0.013005282032526235 + 0.748770275714809, + -0.004058294834022015, + 0.004168827693892214 ], "predicted_position_m": [ - 0.7523474525118989, - -0.011342325656732447, - -0.002385719931475754 + 0.752215327902452, + -0.010512150778857032, + 0.0002544870759521034 ], "error_m": [ - 0.0054688122362741565, - 0.0032042277659066944, - -0.015391001964001989 + 0.0034450521876430162, + -0.006453855944835017, + -0.00391434061794011 ], - "error_norm_m": 0.0166450570532919 + "error_norm_m": 0.008297150330415979 }, { "marker_id": 208, "link": "Board", "observed_position_m": [ - 0.3487272920557953, - -0.09413350037790832, - 0.001389765445743052 + 0.34850778569044394, + -0.09917615050089638, + 0.0022992868907357297 ], "predicted_position_m": [ - 0.3516872625516899, - -0.087927548338647, - 8.730409001316366e-05 + 0.3511810467682862, + -0.08509669339829588, + -0.002686831922688146 ], "error_m": [ - 0.002959970495894637, - 0.006205952039261331, - -0.0013024613557298882 + 0.0026732610778422705, + 0.014079457102600501, + -0.004986118813423876 ], - "error_norm_m": 0.0069979762526996584 + "error_norm_m": 0.01517362243881973 }, { "marker_id": 210, "link": "Board", "observed_position_m": [ - 0.018120861349245686, - -0.01738466109655536, - -0.0007950740683794831 + 0.01904761485941944, + -0.0057694617487496986, + -0.0073921554862603185 ], "predicted_position_m": [ - 0.022291021442560007, - -0.01514269694469615, - -0.000606778568303374 + 0.022212695435501365, + -0.010714374704534568, + -0.009549374245261396 ], "error_m": [ - 0.004170160093314321, - 0.00224196415185921, - 0.0001882955000761091 + 0.003165080576081926, + -0.00494491295578487, + -0.002157218759001077 ], - "error_norm_m": 0.004738364027535453 + "error_norm_m": 0.006254877454240515 }, { "marker_id": 211, "link": "Board", "observed_position_m": [ - 0.25068179595184664, - -0.011240353169632511, - 0.004935236021898448 + 0.2505307789840388, + -0.010957966408644507, + 0.004931893214629631 ], "predicted_position_m": [ - 0.2523666383028454, - -0.0070976333425592, - -0.0013049748134711472 + 0.25230845486923154, + -0.0038056479099215024, + -0.00668389266403574 ], "error_m": [ - 0.0016848423509987498, - 0.004142719827073311, - -0.006240210835369596 + 0.001777675885192731, + 0.007152318498723004, + -0.01161578587866537 ], - "error_norm_m": 0.007677307638958428 + "error_norm_m": 0.013756535648155493 }, { "marker_id": 214, "link": "Board", "observed_position_m": [ - 0.3507756143687356, - -0.014233440506156315, - 0.004826210435999327 + 0.3484353657821889, + -0.005256461133634065, + 0.005062659608766313 ], "predicted_position_m": [ - 0.3523628011446562, - -0.007946571805393848, - -0.0015211238370720684 + 0.35228982947587567, + -0.005146948483708609, + -0.005296216716038172 ], "error_m": [ - 0.0015871867759205682, - 0.006286868700762466, - -0.006347334273071395 + 0.0038544636936867493, + 0.00010951264992545631, + -0.010358876324804485 ], - "error_norm_m": 0.009073727585529039 + "error_norm_m": 0.011053289198199687 }, { "marker_id": 217, "link": "Board", "observed_position_m": [ - 0.6499721820721994, - -0.09359823072313132, - 0.004107661422486767 + 0.6541282521258601, + -0.10529053647438955, + 0.0062384204502635605 ], "predicted_position_m": [ - 0.651675751077122, - -0.09047436372715094, - -0.0005611429807896003 + 0.6511251705882184, + -0.0891205951196572, + 0.00147619592130456 ], "error_m": [ - 0.0017035690049225227, - 0.0031238669959803844, - -0.0046688044032763675 + -0.0030030815376417275, + 0.016169941354732348, + -0.0047622245289590005 ], - "error_norm_m": 0.005870130059816479 + "error_norm_m": 0.017122040900588536 }, { "marker_id": 229, "link": "Arm1", "observed_position_m": [ - 0.16640174681388165, - -0.1518263116866857, - 0.10863026418479936 + 0.17377553373153753, + -0.17351884273723708, + 0.11099423484091324 ], "predicted_position_m": [ - 0.16566877183521428, - -0.1306288553740845, - 0.12392320173879166 + 0.17427099182117808, + -0.13366114019416697, + 0.07772675260032061 ], "error_m": [ - -0.0007329749786673667, - 0.0211974563126012, - 0.015292937553992303 + 0.0004954580896405492, + 0.03985770254307011, + -0.03326748224059263 ], - "error_norm_m": 0.026148486485345512 + "error_norm_m": 0.0519192382971726 }, { "marker_id": 243, "link": "Arm1", "observed_position_m": [ - 0.16847986408197693, - -0.17155976689014704, - 0.06328360140903642 + 0.1699969170579842, + -0.17289154517043823, + 0.0675742788146804 ], "predicted_position_m": [ - 0.1652706994014028, - -0.16982089283547608, - 0.09369365099846033 + 0.1743113746413175, + -0.167765025377913, + 0.04185303820382008 ], "error_m": [ - -0.003209164680574139, - 0.0017388740546709636, - 0.030410049589423907 + 0.004314457583333292, + 0.005126519792525236, + -0.025721240610860313 ], - "error_norm_m": 0.03062831266910199 + "error_norm_m": 0.026579653270562144 }, { "marker_id": 244, "link": "Ellbow", "observed_position_m": [ - 0.25553836987099976, - -0.02006360774474789, - 0.006208931593469432 + 0.29746949075592166, + -0.14421998782215795, + 0.06648932499679353 ], "predicted_position_m": [ - 0.29055089770875575, - -0.13617142157615636, - 0.08894128359366708 + 0.29974511436381984, + -0.13445591192388778, + 0.044475994564072266 ], "error_m": [ - 0.03501252783775599, - -0.11610781383140847, - 0.08273235200019766 + 0.0022756236078981806, + 0.009764075898270164, + -0.02201333043272126 ], - "error_norm_m": 0.14680444000704904 + "error_norm_m": 0.024188889137208756 }, { "marker_id": 245, "link": "Ellbow", "observed_position_m": [ - 0.2406130307128613, - -0.06726290463887721, - 0.006046891493775955 + 0.2598978828027684, + -0.17314558926956528, + 0.07156625066610221 ], "predicted_position_m": [ - 0.255338234129394, - -0.1657316862376428, - 0.10727865191031945 + 0.26426368468400996, + -0.16895682238698706, + 0.04534508896989858 ], "error_m": [ - 0.01472520341653269, - -0.0984687815987656, - 0.1012317604165435 + 0.004365801881241582, + 0.004188766882578215, + -0.026221161696203636 ], - "error_norm_m": 0.14198873857541 + "error_norm_m": 0.02691013405320184 } ] } \ No newline at end of file diff --git a/data/robot/robot.json b/data/robot/robot.json index a795fd8..a3ff122 100644 --- a/data/robot/robot.json +++ b/data/robot/robot.json @@ -1,89 +1,26 @@ { - "coordinateSystem": { - "handedness": "right", - "x": "right", - "y": "backward", - "z": "up" - }, - "units": { - "length": "mm", - "rotation": "degree" - }, - "vision_config": { - "MarkerType": "DICT_4X4_250", - "MarkerSize": 0.025 - }, + "coordinateSystem": {"handedness": "right", "x": "right", "y": "backward", "z": "up"}, + "units": {"length": "mm", "rotation": "degree"}, + "vision_config": {"MarkerType": "DICT_4X4_250", "MarkerSize": 0.025}, "renderingInfo": { "width": 4896, "height": 3264, - "cameraPosition__1": [ - -10, - -800, - 500 - ], - "cameraPosition__2": [ - -500, - 300, - 1200 - ], - "cameraPosition__3": [ - -200, - -900, - 200 - ], - "cameraPosition__4": [ - 1200, - 200, - 300 - ], - "cameraPosition_a": [ - -300, - -800, - 500 - ], - "cameraPosition": [ - -200, - 200, - 1400 - ], - "cameraPosition_c": [ - 600, - -500, - 600 - ], - "cameraTarget": [ - 200, - -200, - 180 - ], - "cameraUpVector": [ - 0, - 0, - 1 - ], - "lightPosition": [ - -500, - -500, - 500 - ], - "lightTarget": [ - 0, - 0, - 0 - ], - "lightUpVector": [ - 0, - 0, - 1 - ], + "cameraPosition__1": [-10, -800, 500], + "cameraPosition__2": [-500, 300, 1200], + "cameraPosition__3": [-200, -900, 200], + "cameraPosition__4": [1200, 200, 300], + "cameraPosition_a": [-300, -800, 500], + "cameraPosition": [-200, 200, 1400], + "cameraPosition_c": [600, -500, 600], + "cameraTarget": [200, -200, 180], + "cameraUpVector": [0, 0, 1], + "lightPosition": [-500, -500, 500], + "lightTarget": [0, 0, 0], + "lightUpVector": [0, 0, 1], "metric": "mm", "showSkeleton": true, "showMarkers": true, - "backgroundColor": [ - 0.7, - 0.85, - 1.0 - ], + "backgroundColor": [0.7, 0.85, 1.0], "backgroundStrength": 0.2, "sunEnergy": 0.35, "areaEnergy": 120, @@ -103,141 +40,25 @@ "lensDistortion": true, "lensDistortionStrength": 0.002, "materials": { - "wood": { - "baseColor": [ - 0.72, - 0.52, - 0.33 - ], - "roughness": 0.85, - "metallic": 0.0 - }, - "plaWhite": { - "baseColor": [ - 0.95, - 0.95, - 0.95 - ], - "roughness": 0.45, - "metallic": 0.0 - }, - "steel": { - "baseColor": [ - 0.72, - 0.72, - 0.75 - ], - "roughness": 0.25, - "metallic": 1.0 - }, - "powderCoatBlue": { - "baseColor": [ - 0.15, - 0.25, - 0.7 - ], - "roughness": 0.55, - "metallic": 0.0 - }, - "defaultPlastic": { - "baseColor": [ - 0.95, - 0.95, - 0.95 - ], - "roughness": 0.4, - "metallic": 0.0 - }, - "skeletonRed": { - "baseColor": [ - 0.85, - 0.2, - 0.2 - ], - "roughness": 0.35, - "metallic": 0.0 - }, - "markerBlack": { - "baseColor": [ - 0.04, - 0.04, - 0.04 - ], - "roughness": 0.8, - "metallic": 0.0 - } + "wood": {"baseColor": [0.72, 0.52, 0.33], "roughness": 0.85, "metallic": 0.0}, + "plaWhite": {"baseColor": [0.95, 0.95, 0.95], "roughness": 0.45, "metallic": 0.0}, + "steel": {"baseColor": [0.72, 0.72, 0.75], "roughness": 0.25, "metallic": 1.0}, + "powderCoatBlue": {"baseColor": [0.15, 0.25, 0.7], "roughness": 0.55, "metallic": 0.0}, + "defaultPlastic": {"baseColor": [0.95, 0.95, 0.95], "roughness": 0.4, "metallic": 0.0}, + "skeletonRed": {"baseColor": [0.85, 0.2, 0.2], "roughness": 0.35, "metallic": 0.0}, + "markerBlack": {"baseColor": [0.04, 0.04, 0.04], "roughness": 0.8, "metallic": 0.0} }, - "skeletonDefaults": { - "radius": 4, - "color": [ - 0.85, - 0.2, - 0.2 - ] - }, - "markerDefaults": { - "size": 25, - "thickness": 1, - "color": [ - 0.04, - 0.04, - 0.04 - ] - }, - "defaultPosition": { - "x": 80, - "y": 20, - "z": 80, - "a": -120, - "b": 23, - "c": 9, - "e": 3 - } - }, - "defaultPosition__": { - "x": 10, - "y": 4, - "z": 20, - "a": 10, - "b": 2, - "c": 9, - "e": 1 - }, - "defaultPosition": { - "x": 60, - "y": -2, - "z": 95, - "a": 200, - "b": 60, - "c": 9, - "e": 8 - }, - "recognized": { - "x": null, - "y": null, - "z": null, - "a": null, - "b": null, - "c": null, - "e": null + "skeletonDefaults": {"radius": 4, "color": [0.85, 0.2, 0.2]}, + "markerDefaults": {"size": 25, "thickness": 1, "color": [0.04, 0.04, 0.04]}, + "defaultPosition": {"x": 80, "y": 20, "z": 80, "a": -120, "b": 23, "c": 9, "e": 3} }, + "defaultPosition__": {"x": 10, "y": 4, "z": 20, "a": 10, "b": 2, "c": 9, "e": 1}, + "defaultPosition": {"x": 60, "y": -2, "z": 95, "a": 200, "b": 60, "c": 9, "e": 8}, + "recognized": {"x": null, "y": null, "z": null, "a": null, "b": null, "c": null, "e": null}, "constraint_rules": { - "rigid_distance": { - "enabled": true, - "mode": "mst", - "weight": 1.0 - }, - "joint_axis_projection": { - "enabled": true, - "max_pairs": 2, - "weight": 0.35 - }, - "chain_axis_projection": { - "enabled": false, - "max_depth": 3, - "max_pairs": 2, - "weight": 0.15 - }, + "rigid_distance": {"enabled": true, "mode": "mst", "weight": 1.0}, + "joint_axis_projection": {"enabled": true, "max_pairs": 2, "weight": 0.35}, + "chain_axis_projection": {"enabled": false, "max_depth": 3, "max_pairs": 2, "weight": 0.15}, "axis_alignment_threshold": 0.95 }, "observation_weighting": { @@ -263,15 +84,20 @@ "spin_factor": 0.3, "weight_floor": 0.3 }, - "movements": { - "x": null, - "y": null, - "z": null, - "a": null, - "b": null, - "c": null, - "e": null - }, + "robot_test_poses": { + "sim04": {"x": 70, "y": 50,"z": -70,"a": 120,"b": 50,"c": 30,"e": 20}, + "sim05": {"x": 180,"y": 86,"z": -120,"a": -60,"b": 22,"c": 91,"e": 10}, + "sim06": {"x": 80, "y": 20, "z": 80, "a": -120, "b": 23, "c": 9, "e": 3}, + "sim07": {"x": 30, "y": -2, "z": 95, "a": 20, "b": 23, "c": 9, "e": 9}, + "sim08": {"x": 50, "y": -2, "z": 95, "a": 20, "b": 60, "c": 9, "e": 3}, + "sim09": {"x": 60, "y": -2, "z": 95, "a": 200, "b": 60, "c": 9, "e": 8}, + "sim09a": {"x": 60, "y": -2, "z": 95, "a": 200, "b": 60, "c": 9, "e": 8}, + "sim09b": {"x": 60, "y": -2, "z": 95, "a": 200, "b": 60, "c": 9, "e": 8}, + "sim010": {"x": 120, "y": 60, "z": -110, "a": 20, "b": 30, "c": 180, "e": 4}, + "sim011": {"x": 50, "y": 4, "z": 176, "a": 20, "b": 60, "c": 9, "e": 5}, + "sim012": {"x": 50, "y": 0, "z": 178, "a": 210, "b": 80, "c": 90, "e": 6} + }, + "movements": {"x": null, "y": null, "z": null, "a": null, "b": null, "c": null, "e": null}, "state_pose_params": { "numbers_of_Elements_to_consider_start": 3, "numbers_of_Elements_to_consider_final": 5, @@ -287,1220 +113,480 @@ "links": { "Board": { "parent": null, - "size": [ - 1000, - 200, - 25 - ], - "mountPosition": [ - 0, - 0, - 0 - ], - "mountRotation": [ - 0, - 0, - 0 - ], + "size": [1000, 200, 25], + "mountPosition": [0, 0, 0], + "mountRotation": [0, 0, 0], "skeleton": { - "from": [ - 0, - 0, - 16 - ], - "to": [ - 1000, - 0, - 16 - ], + "from": [0, 0, 16], + "to": [1000, 0, 16], "radius": 4, - "color": [ - 0.85, - 0.2, - 0.2 - ] + "color": [0.85, 0.2, 0.2] }, "markers": [ - { - "id": 210, - "position": [ - 20, - -20, - 0.3 - ], - "normal": [ - 0, - 0, - 1 - ] - }, - { - "id": 211, - "position": [ - 250, - -10, - 0.3 - ], - "normal": [ - 0, - 0, - 1 - ] - }, - { - "id": 215, - "position": [ - 250, - -90, - 0.3 - ], - "normal": [ - 0, - 0, - 1 - ] - }, - { - "id": 214, - "position": [ - 350, - -10, - 0.3 - ], - "normal": [ - 0, - 0, - 1 - ] - }, - { - "id": 208, - "position": [ - 350, - -90, - 0.3 - ], - "normal": [ - 0, - 0, - 1 - ] - }, - { - "id": 206, - "position": [ - 650, - -10, - 0.3 - ], - "normal": [ - 0, - 0, - 1 - ] - }, - { - "id": 205, - "position": [ - 750, - -90, - 0.3 - ], - "normal": [ - 0, - 0, - 1 - ] - }, - { - "id": 207, - "position": [ - 750, - -10, - 0.3 - ], - "normal": [ - 0, - 0, - 1 - ] - }, - { - "id": 217, - "position": [ - 650, - -90, - 0.3 - ], - "normal": [ - 0, - 0, - 1 - ] - }, + {"id": 210, "position": [20, -20, 0.3], "normal": [0, 0, 1]}, + {"id": 211, "position": [250, -10, 0.3], "normal": [0, 0, 1]}, + {"id": 215, "position": [250, -90, 0.3], "normal": [0, 0, 1]}, + {"id": 214, "position": [350, -10, 0.3], "normal": [0, 0, 1]}, + {"id": 208, "position": [350, -90, 0.3], "normal": [0, 0, 1]}, + {"id": 206, "position": [650, -10, 0.3], "normal": [0, 0, 1]}, + {"id": 205, "position": [750, -90, 0.3], "normal": [0, 0, 1]}, + {"id": 207, "position": [750, -10, 0.3], "normal": [0, 0, 1]}, + {"id": 217, "position": [650, -90, 0.3], "normal": [0, 0, 1]}, { "id": 46, - "position": [ - 536.71, - 185.44, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [536.71, 185.44, -27.3], + "normal": [0, 0, 1], "spin": 90, "info": "is placed on a white paper, A0_60Arucos_25mm_Seet223.pdf, with the following marker placements:" }, { "id": 47, - "position": [ - 344.23, - -286.54, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [344.23, -286.54, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 48, - "position": [ - 688.69, - -320.72, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [688.69, -320.72, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 49, - "position": [ - 1006.0, - 158.33, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [1006.0, 158.33, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 50, - "position": [ - 573.41, - 211.86, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [573.41, 211.86, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 51, - "position": [ - 167.8, - -172.08, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [167.8, -172.08, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 52, - "position": [ - 94.68, - 208.66, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [94.68, 208.66, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 53, - "position": [ - 486.25, - 212.24, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [486.25, 212.24, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 54, - "position": [ - 342.27, - -330.59, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [342.27, -330.59, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 55, - "position": [ - 283.72, - -262.58, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [283.72, -262.58, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 56, - "position": [ - 498.68, - 168.67, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [498.68, 168.67, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 57, - "position": [ - 602.86, - -364.05, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [602.86, -364.05, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 58, - "position": [ - 50.09, - -218.11, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [50.09, -218.11, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 59, - "position": [ - 626.21, - -278.75, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [626.21, -278.75, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 60, - "position": [ - 434.36, - 283.81, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [434.36, 283.81, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 61, - "position": [ - -22.42, - 335.83, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [-22.42, 335.83, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 62, - "position": [ - 404.7, - -175.1, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [404.7, -175.1, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 63, - "position": [ - 777.4, - -236.15, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [777.4, -236.15, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 64, - "position": [ - -21.27, - -188.23, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [-21.27, -188.23, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 65, - "position": [ - 803.39, - -297.37, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [803.39, -297.37, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 66, - "position": [ - 209.75, - -363.23, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [209.75, -363.23, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 67, - "position": [ - 523.07, - 267.04, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [523.07, 267.04, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 68, - "position": [ - 573.73, - 170.64, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [573.73, 170.64, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 69, - "position": [ - 7.61, - -281.21, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [7.61, -281.21, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 70, - "position": [ - 601.87, - 300.33, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [601.87, 300.33, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 71, - "position": [ - 749.75, - -284.01, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [749.75, -284.01, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 72, - "position": [ - 440.99, - 194.32, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [440.99, 194.32, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 73, - "position": [ - 221.73, - 333.11, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [221.73, 333.11, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 74, - "position": [ - 93.78, - 144.5, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [93.78, 144.5, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 75, - "position": [ - -25.7, - 194.58, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [-25.7, 194.58, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 76, - "position": [ - 685.21, - 166.8, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [685.21, 166.8, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 77, - "position": [ - 18.19, - 191.57, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [18.19, 191.57, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 78, - "position": [ - 823.11, - -344.38, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [823.11, -344.38, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 79, - "position": [ - 312.3, - -159.11, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [312.3, -159.11, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 80, - "position": [ - 863.59, - -335.92, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [863.59, -335.92, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 81, - "position": [ - 132.14, - 169.03, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [132.14, 169.03, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 82, - "position": [ - 219.16, - 297.24, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [219.16, 297.24, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 83, - "position": [ - 44.16, - 339.22, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [44.16, 339.22, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 84, - "position": [ - 407.49, - 258.42, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [407.49, 258.42, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 85, - "position": [ - 504.58, - -312.75, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [504.58, -312.75, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 86, - "position": [ - 362.89, - 292.01, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [362.89, 292.01, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 87, - "position": [ - 943.63, - -245.76, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [943.63, -245.76, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 88, - "position": [ - 765.87, - 316.04, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [765.87, 316.04, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 89, - "position": [ - 988.02, - -369.14, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [988.02, -369.14, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 90, - "position": [ - 643.17, - 316.43, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [643.17, 316.43, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 91, - "position": [ - 723.35, - 328.05, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [723.35, 328.05, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 92, - "position": [ - 645.09, - -184.84, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [645.09, -184.84, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 93, - "position": [ - 934.88, - 143.6, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [934.88, 143.6, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 94, - "position": [ - 875.7, - 173.65, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [875.7, 173.65, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 95, - "position": [ - 186.04, - -274.07, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [186.04, -274.07, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 96, - "position": [ - 369.77, - -186.49, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [369.77, -186.49, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 97, - "position": [ - 304.35, - -359.67, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [304.35, -359.67, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 98, - "position": [ - 575.27, - 315.06, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [575.27, 315.06, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 99, - "position": [ - 959.16, - -321.55, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [959.16, -321.55, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 100, - "position": [ - 803.25, - 172.36, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [803.25, 172.36, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 101, - "position": [ - 117.7, - 298.66, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [117.7, 298.66, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 102, - "position": [ - 649.69, - -223.0, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [649.69, -223.0, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 103, - "position": [ - 105.71, - -187.71, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [105.71, -187.71, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 104, - "position": [ - 826.71, - 239.16, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [826.71, 239.16, -27.3], + "normal": [0, 0, 1], "spin": 90 }, { "id": 105, - "position": [ - 524.84, - -266.25, - -27.3 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [524.84, -266.25, -27.3], + "normal": [0, 0, 1], "spin": 90 } ], "model": [ { "stlFile": "surfaces/Board.stl", - "originOfModel": [ - 0, - 0, - 0 - ], - "rotationOfModelDegree": [ - 0, - 0, - -90 - ], + "originOfModel": [0, 0, 0], + "rotationOfModelDegree": [0, 0, -90], "material": "wood" }, { "stlFile": "surfaces/BoardRail.stl", - "originOfModel": [ - 0, - 0, - 0 - ], - "rotationOfModelDegree": [ - 0, - 0, - -90 - ], + "originOfModel": [0, 0, 0], + "rotationOfModelDegree": [0, 0, -90], "material": "steel" } ] }, "Base": { "parent": "Board", - "size": [ - 150, - 200, - 150 - ], - "mountPosition": [ - 0, - 0, - 0 - ], - "mountRotation": [ - 0, - 0, - 0 - ], + "size": [150, 200, 150], + "mountPosition": [0, 0, 0], + "mountRotation": [0, 0, 0], "jointToParent": { "name": "Slider", "type": "linear", - "axis": [ - 1, - 0, - 0 - ], - "origin": [ - 0, - 0, - 16 - ], - "rotation": [ - 0, - 0, - 0 - ], + "axis": [1, 0, 0], + "origin": [0, 0, 16], + "rotation": [0, 0, 0], "variable": "x" }, "skeleton": { - "from": [ - 0, - 108, - 45 - ], - "to": [ - 110, - 108, - 45 - ], + "from": [0, 108, 45], + "to": [110, 108, 45], "radius": 4, - "color": [ - 0.2, - 0.8, - 0.2 - ] + "color": [0.2, 0.8, 0.2] }, "markers": [], "model": [ { "stlFile": "surfaces/Base.stl", - "originOfModel": [ - -30, - 0, - -35 - ], - "rotationOfModelDegree": [ - 0, - 0, - 0 - ], + "originOfModel": [-30, 0, -35], + "rotationOfModelDegree": [0, 0, 0], "material": "plaWhite" } ] }, "Arm1": { "parent": "Base", - "size": [ - 70, - 250, - 70 - ], - "mountPosition": [ - 0, - 0, - 0 - ], - "mountRotation": [ - 0, - 0, - 0 - ], + "size": [70, 250, 70], + "mountPosition": [0, 0, 0], + "mountRotation": [0, 0, 0], "jointToParent": { "name": "Joint1", "type": "revolute", - "axis": [ - -1, - 0, - 0 - ], - "origin": [ - 110, - 108, - 45 - ], - "rotation": [ - 0, - 0, - 0 - ], + "axis": [-1, 0, 0], + "origin": [110, 108, 45], + "rotation": [0, 0, 0], "variable": "y" }, "skeleton": { - "from": [ - 0, - 0, - 0 - ], - "to": [ - 0, - -250, - 0 - ], + "from": [0, 0, 0], + "to": [0, -250, 0], "radius": 4, - "color": [ - 0.2, - 0.2, - 0.9 - ] + "color": [0.2, 0.2, 0.9] }, "markers": [ { "id": 198, "name": "aruco_198", - "position": [ - 0, - -160, - 35 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [0, -160, 35], + "normal": [0, 0, 1], "size": 25, "spin": 0 }, { "id": 229, "name": "aruco_229", - "position": [ - 0, - -250, - 35 - ], - "normal": [ - 0, - 0, - 1 - ], + "position": [0, -250, 35], + "normal": [0, 0, 1], "size": 25, "spin": 0 }, { "id": 242, "name": "aruco_242", - "position": [ - 0, - -250, - -35 - ], - "normal": [ - 0, - 0, - -1 - ], + "position": [0, -250, -35], + "normal": [0, 0, -1], "size": 25, "spin": 0 }, { "id": 243, "name": "aruco_243", - "position": [ - 0, - -285, - 0 - ], - "normal": [ - 0, - -1, - 0 - ], + "position": [0, -285, 0], + "normal": [0, -1, 0], "size": 25, "spin": 0 } @@ -1508,672 +594,245 @@ "model": [ { "stlFile": "surfaces/Holm.stl", - "originOfModel__": [ - -25, - 29, - -28.5 - ], - "originOfModel": [ - -29, - 25, - 28.5 - ], - "rotationOfModelDegree__": [ - 0, - 0, - 0 - ], - "rotationOfModelDegree": [ - 180, - 0, - -90 - ], + "originOfModel__": [-25, 29, -28.5], + "originOfModel": [-29, 25, 28.5], + "rotationOfModelDegree__": [0, 0, 0], + "rotationOfModelDegree": [180, 0, -90], "material": "powderCoatBlue" } ] }, "Ellbow": { "parent": "Arm1", - "mountPosition": [ - 0, - 0, - 0 - ], - "mountRotation": [ - 0, - 0, - 0 - ], + "mountPosition": [0, 0, 0], + "mountRotation": [0, 0, 0], "jointToParent": { "name": "Joint2", "type": "revolute", - "axis": [ - -1, - 0, - 0 - ], - "origin": [ - 0, - -250, - 0 - ], - "rotation": [ - 0, - 0, - 0 - ], + "axis": [-1, 0, 0], + "origin": [0, -250, 0], + "rotation": [0, 0, 0], "variable": "z" }, "skeleton": { - "from": [ - 0, - 0, - 0 - ], - "to": [ - 90, - 0, - 0 - ], + "from": [0, 0, 0], + "to": [90, 0, 0], "radius": 4, - "color": [ - 0.9, - 0.2, - 0.2 - ] + "color": [0.9, 0.2, 0.2] }, "model": [ { "stlFile": "surfaces/Ellebogen.stl", - "originOfModel": [ - 90, - 0, - 0 - ], - "rotationOfModelDegree": [ - 0, - -90, - -90 - ], + "originOfModel": [90, 0, 0], + "rotationOfModelDegree": [0, -90, -90], "material": "defaultPlastic" } ], "markers": [ - { - "id": 244, - "name": "aruco_244", - "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": 246, - "name": "aruco_246", - "position": [ - 90, - 0, - 35 - ], - "normal": [ - 0, - 0, - 1 - ], - "size": 25 - }, - { - "id": 247, - "name": "aruco_247", - "position": [ - 52.5, - 0, - 35 - ], - "normal": [ - 0, - 0, - 1 - ], - "size": 25 - } + {"id": 244, "name": "aruco_244", "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": 246, "name": "aruco_246", "position": [90, 0, 35], "normal": [0, 0, 1], "size": 25}, + {"id": 247, "name": "aruco_247", "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": 231, "name": "aruco_231", "position": [90, 24.75, 24.75], "normal": [0, 1, 1], "size": 25} ] }, "Arm2": { "parent": "Ellbow", - "mountPosition": [ - 0, - 0, - 0 - ], - "mountRotation": [ - 0, - 0, - 0 - ], + "mountPosition": [0, 0, 0], + "mountRotation": [0, 0, 0], "jointToParent": { "name": "Joint3", "type": "revolute", - "axis": [ - 0, - -1, - 0 - ], - "origin": [ - 90, - 0, - 0 - ], - "rotation": [ - 0, - 0, - 0 - ], + "axis": [0, -1, 0], + "origin": [90, 0, 0], + "rotation": [0, 0, 0], "variable": "a" }, "skeleton": { - "from": [ - 0, - 0, - 0 - ], - "to": [ - 0, - -250, - 0 - ], + "from": [0, 0, 0], + "to": [0, -250, 0], "radius": 4, - "color": [ - 0.95, - 0.85, - 0.2 - ] + "color": [0.95, 0.85, 0.2] }, "model": [ { "stlFile": "surfaces/Unterarm.stl", - "originOfModel": [ - 0, - -250, - 0 - ], - "rotationOfModelDegree": [ - 180, - 0, - -90 - ], + "originOfModel": [0, -250, 0], + "rotationOfModelDegree": [180, 0, -90], "material": "defaultPlastic" } ], "markers": [ - { - "id": 120, - "position": [ - 24.75, - -112, - -24.75 - ], - "normal": [ - 1, - 0, - -1 - ] - }, + {"id": 120, "position": [24.75, -112, -24.75], "normal": [1, 0, -1]}, { "id": 122, "name": "aruco_122", - "position": [ - -35, - -112, - 0 - ], - "normal": [ - -1, - 0, - 0 - ] + "position": [-35, -112, 0], + "normal": [-1, 0, 0] }, { "id": 218, "name": "aruco_218", - "position": [ - 35, - -112, - 0 - ], - "normal": [ - 1, - 0, - 0 - ] + "position": [35, -112, 0], + "normal": [1, 0, 0] }, { "id": 113, "name": "aruco_113", - "position": [ - 0, - -182, - 30 - ], - "normal": [ - 0, - 0, - 1 - ] + "position": [0, -182, 30], + "normal": [0, 0, 1] }, { "id": 114, "name": "aruco_114", - "position": [ - 24.75, - -182, - -24.75 - ], - "normal": [ - 1, - 0, - -1 - ] + "position": [24.75, -182, -24.75], + "normal": [1, 0, -1] }, { "id": 115, "name": "aruco_115", - "position": [ - -24.75, - -182, - -24.75 - ], - "normal": [ - -1, - 0, - -1 - ] + "position": [-24.75, -182, -24.75], + "normal": [-1, 0, -1] }, { "id": 124, "name": "aruco_124", - "position": [ - -35, - -219, - 0 - ], - "normal": [ - -1, - 0, - 0 - ] + "position": [-35, -219, 0], + "normal": [-1, 0, 0] }, { "id": 219, "name": "aruco_219", - "position": [ - 35, - -219, - 0 - ], - "normal": [ - 1, - 0, - 0 - ] + "position": [35, -219, 0], + "normal": [1, 0, 0] } ] }, "Hand": { "parent": "Arm2", - "mountPosition": [ - 0, - 0, - 0 - ], - "mountRotation": [ - 0, - 0, - 0 - ], + "mountPosition": [0, 0, 0], + "mountRotation": [0, 0, 0], "jointToParent": { "name": "Joint4", "type": "revolute", - "axis": [ - 1, - 0, - 0 - ], - "origin": [ - 0, - -250, - 0 - ], - "rotation": [ - 0, - 0, - 0 - ], + "axis": [1, 0, 0], + "origin": [0, -250, 0], + "rotation": [0, 0, 0], "variable": "b" }, "skeleton": { - "from": [ - 0, - 0, - 0 - ], - "to": [ - 0, - -35, - 0 - ], + "from": [0, 0, 0], + "to": [0, -35, 0], "radius": 4, - "color": [ - 0.95, - 0.55, - 0.15 - ] + "color": [0.95, 0.55, 0.15] } }, "Palm": { "parent": "Hand", - "mountPosition": [ - 0, - 0, - 0 - ], - "mountRotation": [ - 0, - 0, - 0 - ], + "mountPosition": [0, 0, 0], + "mountRotation": [0, 0, 0], "jointToParent": { "name": "Joint3", "type": "revolute", - "axis": [ - 0, - -1, - 0 - ], - "origin": [ - 0, - 0, - 0 - ], - "rotation": [ - 0, - 0, - 0 - ], + "axis": [0, -1, 0], + "origin": [0, 0, 0], + "rotation": [0, 0, 0], "variable": "c" }, "skeleton": { - "from": [ - -50, - -35, - 0 - ], - "to": [ - 50, - -35, - 0 - ], + "from": [-50, -35, 0], + "to": [50, -35, 0], "radius": 7, - "color": [ - 0.95, - 0.2, - 0.2 - ] + "color": [0.95, 0.2, 0.2] } }, "FingerA": { "parent": "Palm", - "size": [ - 80, - 60, - 20 - ], - "mountPosition": [ - 0, - 0, - 0 - ], - "mountRotation": [ - 0, - 0, - 0 - ], + "size": [80, 60, 20], + "mountPosition": [0, 0, 0], + "mountRotation": [0, 0, 0], "jointToParent": { "name": "Slider", "type": "linear", - "axis": [ - 1, - 0, - 0 - ], - "origin": [ - 4, - -35, - 0 - ], - "rotation": [ - 0, - 0, - 0 - ], + "axis": [1, 0, 0], + "origin": [4, -35, 0], + "rotation": [0, 0, 0], "variable": "e" }, "skeleton": { - "from": [ - 0, - 0, - 0 - ], - "to": [ - 0, - -60, - 0 - ], + "from": [0, 0, 0], + "to": [0, -60, 0], "radius": 4, - "color": [ - 0.2, - 0.8, - 0.2 - ] + "color": [0.2, 0.8, 0.2] }, "markers": [ - { - "id": 40, - "position": [ - 12, - -24, - -17.1 - ], - "normal": [ - -10.98, - 0, - -23.56 - ] - }, - { - "id": 41, - "position": [ - 1.5, - -2.2, - 25.8 - ], - "normal": [ - 0, - -25.6, - 9.5 - ] - }, + {"id": 40, "position": [12, -24, -17.1], "normal": [-10.98, 0, -23.56]}, + {"id": 41, "position": [1.5, -2.2, 25.8], "normal": [0, -25.6, 9.5]}, { "id": 42, - "position": [ - 13.9, - -40, - 0 - ], - "normal": [ - 1, - -0.35, - 0.4 - ], + "position": [13.9, -40, 0], + "normal": [1, -0.35, 0.4], "spin": 27 } ], "model": [ { "stlFile": "surfaces/Finger.stl", - "originOfModel": [ - 24, - 0, - -9.1 - ], - "rotationOfModelDegree": [ - 90, - -90, - 0 - ], + "originOfModel": [24, 0, -9.1], + "rotationOfModelDegree": [90, -90, 0], "material": "defaultPlastic" } ] }, "FingerB": { "parent": "Palm", - "size": [ - 80, - 60, - 20 - ], - "mountPosition": [ - 0, - 0, - 0 - ], - "mountRotation": [ - 0, - 0, - 0 - ], + "size": [80, 60, 20], + "mountPosition": [0, 0, 0], + "mountRotation": [0, 0, 0], "jointToParent": { "name": "Slider", "type": "linear", - "axis": [ - -1, - 0, - 0 - ], - "origin": [ - -4, - -35, - 0 - ], - "rotation": [ - 0, - 0, - 0 - ], + "axis": [-1, 0, 0], + "origin": [-4, -35, 0], + "rotation": [0, 0, 0], "variable": "e" }, "skeleton": { - "from": [ - 0, - 0, - 0 - ], - "to": [ - 0, - -60, - 0 - ], + "from": [0, 0, 0], + "to": [0, -60, 0], "radius": 4, - "color": [ - 0.2, - 0.8, - 0.2 - ] + "color": [0.2, 0.8, 0.2] }, "markers": [ { "id": 43, - "position": [ - -12, - -24, - 17.1 - ], - "normal": [ - 10.98, - 0, - 23.56 - ], + "position": [-12, -24, 17.1], + "normal": [10.98, 0, 23.56], "spin": 90 }, { "id": 44, - "position": [ - -1.5, - -2.2, - -25.8 - ], - "normal": [ - 0, - -25.6, - -9.5 - ], + "position": [-1.5, -2.2, -25.8], + "normal": [0, -25.6, -9.5], "spin": 90 }, { "id": 45, - "position": [ - -13.9, - -40, - 0 - ], - "normal": [ - -1, - -0.35, - -0.4 - ], + "position": [-13.9, -40, 0], + "normal": [-1, -0.35, -0.4], "spin": -27 } ], "model": [ { "stlFile": "surfaces/Finger.stl", - "originOfModel": [ - -24, - 0, - 9.1 - ], - "rotationOfModelDegree": [ - 90, - 90, - 0 - ], + "originOfModel": [-24, 0, 9.1], + "rotationOfModelDegree": [90, 90, 0], "material": "defaultPlastic" } ] } } -} \ No newline at end of file +} diff --git a/data/robot/robot_r.json b/data/robot/robot_r.json new file mode 100644 index 0000000..cdcd16d Binary files /dev/null and b/data/robot/robot_r.json differ diff --git a/data/robot/robot_running_2026_05_30.json b/data/robot/robot_running_2026_05_30.json index 49b8b6c..49fbe47 100644 --- a/data/robot/robot_running_2026_05_30.json +++ b/data/robot/robot_running_2026_05_30.json @@ -172,6 +172,19 @@ "spin_factor": 0.3, "weight_floor": 0.3 }, + "robot_test_poses": { + "sim04": {"x": 70, "y": 50,"z": -70,"a": 120,"b": 50,"c": 30,"e": 20}, + "sim05": {"x": 180,"y": 86,"z": -120,"a": -60,"b": 22,"c": 91,"e": 10}, + "sim06": {"x": 80, "y": 20, "z": 80, "a": -120, "b": 23, "c": 9, "e": 3}, + "sim07": {"x": 30, "y": -2, "z": 95, "a": 20, "b": 23, "c": 9, "e": 9}, + "sim08": {"x": 50, "y": -2, "z": 95, "a": 20, "b": 60, "c": 9, "e": 3}, + "sim09": {"x": 60, "y": -2, "z": 95, "a": 200, "b": 60, "c": 9, "e": 8}, + "sim09a": {"x": 60, "y": -2, "z": 95, "a": 200, "b": 60, "c": 9, "e": 8}, + "sim09b": {"x": 60, "y": -2, "z": 95, "a": 200, "b": 60, "c": 9, "e": 8}, + "sim010": {"x": 120, "y": 60, "z": -110, "a": 20, "b": 30, "c": 180, "e": 4}, + "sim011": {"x": 50, "y": 4, "z": 176, "a": 20, "b": 60, "c": 9, "e": 5}, + "sim012": {"x": 50, "y": 0, "z": 178, "a": 210, "b": 80, "c": 90, "e": 6} + }, "movements": { "x": null, "y": null, @@ -183,7 +196,7 @@ }, "state_pose_params":{ "numbers_of_Elements_to_consider_start": 3, - "numbers_of_Elements_to_consider_final": 5, + "numbers_of_Elements_to_consider_final": 4, "solver_in_between_geometrical": false, "solver_after_geometrical": false, "geometric_passes_per_stage": 2, @@ -416,36 +429,13 @@ } ], "markers": [ - { - "id": 244, - "name": "aruco_244", - "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": 246, - "name": "aruco_246", - "position": [90, 0, 35], - "normal": [0, 0, 1], - "size": 25 - }, - { - "id": 247, - "name": "aruco_247", - "position": [52.5, 0, 35], - "normal": [0, 0, 1], - "size": 25 - } + {"id": 244, "name": "aruco_244", "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": 246, "name": "aruco_246", "position": [90, 0, 35], "normal": [0, 0, 1], "size": 25}, + {"id": 247, "name": "aruco_247", "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": 231, "name": "aruco_231", "position": [90, 24.75, 24.75], "normal": [0, 1, 1], "size": 25} ] }, diff --git a/pipeline/3_anchor_patch.py b/pipeline/3_anchor_patch.py new file mode 100644 index 0000000..e69de29 diff --git a/pipeline/3_multiview_bundle_adjustment_v5.py b/pipeline/3_multiview_bundle_adjustment_v5.py deleted file mode 100644 index 0381948..0000000 --- a/pipeline/3_multiview_bundle_adjustment_v5.py +++ /dev/null @@ -1,1462 +0,0 @@ -#!/usr/bin/env python3 -""" -3_multiview_bundle_adjustment_v4.py - -Multi-view ArUco marker position optimization with explicit, switchable -degrees-of-freedom constraints. - -Mathematical model ------------------- -We estimate 3D marker positions X_i ∈ R^3 by minimizing - - E(X) = - Σ_{i,c} w_ic || π_c(X_i) - u_ic ||² - + λ_r Σ_j w_j^r || ||X_a - X_b|| - d_j ||² - + λ_rev Σ_k w_k^rev || (X_b - X_a)·a_k - t_k ||² - + λ_pri Σ_m w_m^pri ( ||(X_b - X_a)·u_m - t_u||² - + ||(X_b - X_a)·v_m - t_v||² ) - -where: -- u_ic are observed normalized image coordinates for marker i in camera c -- π_c(.) is the normalized reprojection model -- w_ic are observation weights from detection quality / marker priors / range -- rigid-link constraints preserve internal marker geometry of a link -- revolute joints keep the projection along the joint axis constant -- prismatic joints keep the two orthogonal projection components constant - -Important design choices ------------------------- -- robot.json is used as a kinematic description, not as a direct source of - world-space marker positions. -- constraint families are explicit, switchable, and easy to compare across - versions. -- legacy chain-propagation constraints are retained only as an optional family - and are OFF by default. -- observation weighting remains separate from constraint weighting so both can - be tested independently. - -Dependencies: - numpy, opencv-python, scipy (optional for optimization) - -Example: - python 3_multiview_bundle_adjustment_v4.py ^ - -det cam1_aruco_detection.json cam2_aruco_detection.json cam3_aruco_detection.json ^ - -pose cam1_camera_pose.json cam2_camera_pose.json cam3_camera_pose.json ^ - -robot robot.json ^ - -lambdaWeight 100.0 -""" -from __future__ import annotations - -import argparse -import json -import os -import sys -import time -from dataclasses import dataclass -from itertools import combinations -from typing import Any, Dict, List, Optional, Tuple - -import cv2 -import numpy as np - - -# =================================================================== -# Path / JSON helpers -# =================================================================== - -def resolve_path(path: str) -> str: - path = os.path.expanduser(path) - if os.path.isabs(path): - return path - return os.path.abspath(path) - - -def load_json(path: str) -> Dict[str, Any]: - with open(resolve_path(path), "r", encoding="utf-8") as f: - return json.load(f) - - -def save_json(path: str, data: Dict[str, Any]) -> None: - with open(resolve_path(path), "w", encoding="utf-8") as f: - json.dump(data, f, indent=2) - - -# =================================================================== -# Units -# =================================================================== - -def get_length_scale(robot_data: Dict[str, Any]) -> float: - units = robot_data.get("units", {}) or {} - length_unit = str(units.get("length", "")).strip().lower() - if length_unit in ("mm", "millimeter", "millimeters"): - return 1.0 / 1000.0 - if length_unit in ("cm", "centimeter", "centimeters"): - return 1.0 / 100.0 - return 1.0 - - -# =================================================================== -# Small geometry helpers -# =================================================================== - -def safe_norm(v: np.ndarray, eps: float = 1e-12) -> float: - return float(np.linalg.norm(v) + eps) - - -def normalize_vector(v: np.ndarray, eps: float = 1e-12) -> np.ndarray: - return np.asarray(v, dtype=np.float64) / safe_norm(v, eps) - - -def clamp(v: float, lo: float, hi: float) -> float: - return float(max(lo, min(hi, v))) - - -def principal_axis_id(axis: np.ndarray, threshold: float = 0.95) -> Optional[int]: - """Return 0,1,2 for x,y,z if axis is close enough to a principal axis.""" - a = normalize_vector(np.asarray(axis, dtype=np.float64)) - idx = int(np.argmax(np.abs(a))) - if abs(a[idx]) >= threshold: - return idx - return None - - -def camera_center_from_world_to_cam(R_wc: np.ndarray, t_wc: np.ndarray) -> np.ndarray: - """world_to_camera: X_cam = R_wc * X_world + t_wc; camera center is -R^T t.""" - return -R_wc.T @ t_wc - - -def principal_axis_vector(axis: np.ndarray) -> np.ndarray: - """Convert a near-principal axis to an exact signed principal axis vector.""" - a = normalize_vector(axis) - idx = int(np.argmax(np.abs(a))) - out = np.zeros(3, dtype=np.float64) - out[idx] = 1.0 if a[idx] >= 0 else -1.0 - return normalize_vector(out) - - -def orthonormal_basis_from_axis(axis: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: - """ - Build two unit vectors orthogonal to axis, with a deterministic orientation. - """ - a = normalize_vector(axis) - ref = np.array([1.0, 0.0, 0.0], dtype=np.float64) - if abs(float(np.dot(a, ref))) > 0.90: - ref = np.array([0.0, 1.0, 0.0], dtype=np.float64) - u = np.cross(a, ref) - if np.linalg.norm(u) < 1e-12: - ref = np.array([0.0, 0.0, 1.0], dtype=np.float64) - u = np.cross(a, ref) - u = normalize_vector(u) - v = normalize_vector(np.cross(a, u)) - return u, v - - -# =================================================================== -# Configuration -# =================================================================== - -@dataclass -class ConstraintRuleConfig: - rigid_distance_enabled: bool = True - rigid_distance_mode: str = "mst" # mst | star | full - rigid_distance_weight: float = 1.0 - - # Revolute joints: keep the projection along the axis constant. - revolute_axis_enabled: bool = True - revolute_axis_max_pairs: int = 2 - revolute_axis_weight: float = 0.5 - - # Prismatic joints: keep the two orthogonal projection components constant. - prismatic_orthogonal_enabled: bool = True - prismatic_orthogonal_max_pairs: int = 2 - prismatic_orthogonal_weight: float = 0.35 - - # Legacy / optional chain propagation, disabled by default. - chain_axis_enabled: bool = False - chain_axis_max_depth: int = 3 - chain_axis_max_pairs: int = 2 - chain_axis_weight: float = 0.3 - - axis_alignment_threshold: float = 0.95 - - strict_unique_marker_ids: bool = False - show_skipped_constraints: bool = True - - enable_observation_weights: bool = True - weight_floor: float = 0.30 - weight_ceiling: float = 3.00 - ref_distance_m: float = 0.75 - ref_marker_size_px: float = 50.0 - use_detection_confidence: bool = True - use_detection_size_px: bool = True - use_initial_range: bool = True - use_marker_size_prior: bool = True - - -def _bool_or_default(value: Any, default: bool) -> bool: - if value is None: - return default - return bool(value) - - -def _float_or_default(value: Any, default: float) -> float: - if value is None: - return default - return float(value) - - -def _int_or_default(value: Any, default: int) -> int: - if value is None: - return default - return int(value) - - -def load_constraint_rule_config(robot_data: Dict[str, Any], args: argparse.Namespace) -> ConstraintRuleConfig: - """ - Merge built-in defaults with optional robot.json constraint_rules and CLI flags. - Backward compatibility: - - joint_axis_projection -> revolute_axis - """ - rules = robot_data.get("constraint_rules", {}) or {} - - cfg = ConstraintRuleConfig() - rigid = rules.get("rigid_distance", {}) or {} - revolute = rules.get("joint_revolute_axis", {}) or rules.get("joint_axis_projection", {}) or {} - prismatic = rules.get("joint_prismatic_orthogonal", {}) or {} - chain = rules.get("chain_axis_projection", {}) or {} - obs = rules.get("observation_weights", {}) or {} - - cfg.rigid_distance_enabled = _bool_or_default(rigid.get("enabled"), cfg.rigid_distance_enabled) - cfg.rigid_distance_mode = str(rigid.get("mode", cfg.rigid_distance_mode)).strip().lower() - cfg.rigid_distance_weight = _float_or_default(rigid.get("weight"), cfg.rigid_distance_weight) - - cfg.revolute_axis_enabled = _bool_or_default(revolute.get("enabled"), cfg.revolute_axis_enabled) - cfg.revolute_axis_max_pairs = _int_or_default(revolute.get("max_pairs"), cfg.revolute_axis_max_pairs) - cfg.revolute_axis_weight = _float_or_default(revolute.get("weight"), cfg.revolute_axis_weight) - - cfg.prismatic_orthogonal_enabled = _bool_or_default(prismatic.get("enabled"), cfg.prismatic_orthogonal_enabled) - cfg.prismatic_orthogonal_max_pairs = _int_or_default(prismatic.get("max_pairs"), cfg.prismatic_orthogonal_max_pairs) - cfg.prismatic_orthogonal_weight = _float_or_default(prismatic.get("weight"), cfg.prismatic_orthogonal_weight) - - cfg.chain_axis_enabled = _bool_or_default(chain.get("enabled"), cfg.chain_axis_enabled) - cfg.chain_axis_max_depth = _int_or_default(chain.get("max_depth"), cfg.chain_axis_max_depth) - cfg.chain_axis_max_pairs = _int_or_default(chain.get("max_pairs"), cfg.chain_axis_max_pairs) - cfg.chain_axis_weight = _float_or_default(chain.get("weight"), cfg.chain_axis_weight) - - cfg.axis_alignment_threshold = _float_or_default( - rules.get("axis_alignment_threshold"), cfg.axis_alignment_threshold - ) - - cfg.enable_observation_weights = _bool_or_default(obs.get("enabled"), cfg.enable_observation_weights) - cfg.weight_floor = _float_or_default(obs.get("weight_floor"), cfg.weight_floor) - cfg.weight_ceiling = _float_or_default(obs.get("weight_ceiling"), cfg.weight_ceiling) - cfg.ref_distance_m = _float_or_default(obs.get("ref_distance_m"), cfg.ref_distance_m) - cfg.ref_marker_size_px = _float_or_default(obs.get("ref_marker_size_px"), cfg.ref_marker_size_px) - cfg.use_detection_confidence = _bool_or_default(obs.get("use_detection_confidence"), cfg.use_detection_confidence) - cfg.use_detection_size_px = _bool_or_default(obs.get("use_detection_size_px"), cfg.use_detection_size_px) - cfg.use_initial_range = _bool_or_default(obs.get("use_initial_range"), cfg.use_initial_range) - cfg.use_marker_size_prior = _bool_or_default(obs.get("use_marker_size_prior"), cfg.use_marker_size_prior) - - if getattr(args, "strictUniqueMarkerIds", False): - cfg.strict_unique_marker_ids = True - if getattr(args, "showSkippedConstraints", False): - cfg.show_skipped_constraints = True - if getattr(args, "noShowSkippedConstraints", False): - cfg.show_skipped_constraints = False - - return cfg - - -# =================================================================== -# Observation / constraint definitions -# =================================================================== - -@dataclass -class Observation: - cam_idx: int - - center_norm: np.ndarray - - corners_norm: np.ndarray | None - - marker_size_m: float | None - - meta: Dict[str, Any] - - -@dataclass -class MarkerDistanceConstraint: - marker_id_a: int - marker_id_b: int - link_name: str - target_distance_m: float - weight: float = 1.0 - enabled: bool = True - source: str = "rigid_distance" - - -@dataclass -class JointAxisConstraint: - marker_id_parent: int - marker_id_child: int - parent_link: str - child_link: str - joint_axis: np.ndarray - target_delta_along_axis_m: float - weight: float = 1.0 - enabled: bool = True - source: str = "joint_axis_projection" - - -Constraint = MarkerDistanceConstraint | JointAxisConstraint - - -# =================================================================== -# Robot parsing -# =================================================================== - -def parse_robot_markers( - robot_data: Dict[str, Any], - length_scale: float, - strict_unique_marker_ids: bool = False -) -> Tuple[Dict[int, str], Dict[str, List[Dict[str, Any]]], List[str], Dict[int, Dict[str, Any]]]: - links = robot_data.get("links", {}) or {} - - marker_to_link: Dict[int, str] = {} - link_markers: Dict[str, List[Dict[str, Any]]] = {} - issues: List[str] = [] - marker_meta: Dict[int, Dict[str, Any]] = {} - - seen_global: Dict[int, str] = {} - - for link_name, link_data in links.items(): - markers = link_data.get("markers", []) or [] - collected: List[Dict[str, Any]] = [] - seen_local: set[int] = set() - - for idx, marker in enumerate(markers): - marker_id = int(marker.get("id", -1)) - pos = marker.get("position", None) - - if marker_id < 0 or pos is None or len(pos) != 3: - issues.append(f"[WARN] link={link_name}: skipped invalid marker entry at index {idx}") - continue - - if marker_id in seen_local: - msg = f"[WARN] duplicate marker id {marker_id} inside link '{link_name}'" - if strict_unique_marker_ids: - raise ValueError(msg) - issues.append(msg + " -> skipped duplicate inside same link") - continue - - if marker_id in seen_global: - msg = ( - f"[WARN] duplicate marker id {marker_id} appears in link '{link_name}' " - f"and already in link '{seen_global[marker_id]}'" - ) - if strict_unique_marker_ids: - raise ValueError(msg) - issues.append(msg + " -> skipped duplicate occurrence") - continue - - seen_local.add(marker_id) - seen_global[marker_id] = link_name - - pos_raw = np.array(pos, dtype=np.float64) - pos_m = pos_raw * float(length_scale) - - item = { - "id": marker_id, - "name": marker.get("name", f"marker_{marker_id}"), - "position_raw": pos_raw, - "position_m": pos_m, - "normal": np.array(marker.get("normal", [0, 0, 1]), dtype=np.float64), - "size": marker.get("size", None), - "spin": marker.get("spin", None), - } - collected.append(item) - marker_to_link[marker_id] = link_name - marker_meta[marker_id] = { - "link_name": link_name, - "name": item["name"], - "position_m": pos_m, - "normal": item["normal"], - "size": item["size"], - "spin": item["spin"], - } - - link_markers[link_name] = collected - - return marker_to_link, link_markers, issues, marker_meta - - -def get_link_parent_map(robot_data: Dict[str, Any]) -> Dict[str, Optional[str]]: - links = robot_data.get("links", {}) or {} - return {link_name: (link_data.get("parent", None)) for link_name, link_data in links.items()} - - -def get_joint_info(robot_data: Dict[str, Any], child_link: str) -> Dict[str, Any]: - links = robot_data.get("links", {}) or {} - return (links.get(child_link, {}) or {}).get("jointToParent", {}) or {} - - -def get_joint_axis(robot_data: Dict[str, Any], child_link: str) -> Optional[np.ndarray]: - joint = get_joint_info(robot_data, child_link) - axis = joint.get("axis", None) - if axis is None: - return None - axis = np.asarray(axis, dtype=np.float64) - if safe_norm(axis) < 1e-12: - return None - return normalize_vector(axis) - - -def get_vision_marker_size_default(robot_data: Dict[str, Any]) -> float: - vision = robot_data.get("vision_config", {}) or {} - ms = vision.get("MarkerSize", None) - if ms is None: - return 0.025 - return float(ms) - - -# =================================================================== -# Constraint compilation helpers -# =================================================================== - -def get_enabled_link_rule( - robot_data: Dict[str, Any], - link_name: str, - rule_name: str, - default_enabled: bool = True -) -> bool: - overrides = robot_data.get("constraint_overrides", {}) or {} - link_override = overrides.get(link_name, {}) or {} - rule_override = link_override.get(rule_name, {}) or {} - if "enabled" in rule_override: - return bool(rule_override["enabled"]) - return default_enabled - - -def select_anchor_marker_ids( - markers: List[Dict[str, Any]], - axis: Optional[np.ndarray] = None, - max_count: int = 2 -) -> List[int]: - if not markers: - return [] - if len(markers) == 1: - return [int(markers[0]["id"])] - - ids = [int(m["id"]) for m in markers] - pos = np.stack([np.asarray(m["position_m"], dtype=np.float64) for m in markers], axis=0) - - selected: List[int] = [] - - if axis is not None and safe_norm(axis) > 1e-12: - a = normalize_vector(axis) - proj = pos @ a - min_idx = int(np.argmin(proj)) - max_idx = int(np.argmax(proj)) - selected = [ids[min_idx], ids[max_idx]] - else: - centroid = np.mean(pos, axis=0) - d = np.linalg.norm(pos - centroid, axis=1) - min_idx = int(np.argmin(d)) - max_idx = int(np.argmax(d)) - selected = [ids[min_idx], ids[max_idx]] - - if len(selected) < max_count: - for mid in ids: - if mid not in selected: - selected.append(mid) - if len(selected) >= max_count: - break - - out: List[int] = [] - seen: set[int] = set() - for mid in selected: - if mid not in seen: - seen.add(mid) - out.append(mid) - if len(out) >= max_count: - break - return out - - -def mst_edges_for_link(markers: List[Dict[str, Any]]) -> List[Tuple[int, int]]: - n = len(markers) - if n < 2: - return [] - - ids = [int(m["id"]) for m in markers] - pos = np.stack([np.asarray(m["position_m"], dtype=np.float64) for m in markers], axis=0) - in_tree = np.zeros(n, dtype=bool) - in_tree[0] = True - edges: List[Tuple[int, int]] = [] - dist = np.linalg.norm(pos[:, None, :] - pos[None, :, :], axis=2) - - for _ in range(n - 1): - best = None - best_d = float("inf") - for i in range(n): - if not in_tree[i]: - continue - for j in range(n): - if in_tree[j]: - continue - d = float(dist[i, j]) - if d < best_d: - best_d = d - best = (i, j) - if best is None: - break - i, j = best - in_tree[j] = True - edges.append((ids[i], ids[j])) - return edges - - -def compile_rigid_distance_constraints( - robot_data: Dict[str, Any], - link_markers: Dict[str, List[Dict[str, Any]]], - cfg: ConstraintRuleConfig -) -> List[MarkerDistanceConstraint]: - constraints: List[MarkerDistanceConstraint] = [] - - for link_name, markers in link_markers.items(): - if not get_enabled_link_rule(robot_data, link_name, "rigid_distance", cfg.rigid_distance_enabled): - continue - if len(markers) < 2: - continue - - mode = cfg.rigid_distance_mode - if mode == "full": - pairs = [(int(a["id"]), int(b["id"])) for a, b in combinations(markers, 2)] - elif mode == "star": - anchor_ids = select_anchor_marker_ids(markers, axis=None, max_count=1) - anchor_id = anchor_ids[0] - pairs = [] - for m in markers: - mid = int(m["id"]) - if mid != anchor_id: - pairs.append((anchor_id, mid)) - elif mode == "mst": - pairs = mst_edges_for_link(markers) - else: - raise ValueError(f"Unknown rigid_distance_mode='{mode}'. Use mst|star|full.") - - pos_map = {int(m["id"]): np.asarray(m["position_m"], dtype=np.float64) for m in markers} - seen_pairs: set[Tuple[int, int]] = set() - - for mid_a, mid_b in pairs: - if mid_a == mid_b: - continue - key = tuple(sorted((int(mid_a), int(mid_b)))) - if key in seen_pairs: - continue - seen_pairs.add(key) - - pos_a = pos_map[mid_a] - pos_b = pos_map[mid_b] - target = float(np.linalg.norm(pos_b - pos_a)) - - constraints.append( - MarkerDistanceConstraint( - marker_id_a=mid_a, - marker_id_b=mid_b, - link_name=link_name, - target_distance_m=target, - weight=cfg.rigid_distance_weight, - enabled=True, - source=f"rigid_distance:{mode}", - ) - ) - - return constraints - - -def compile_joint_dof_constraints( - robot_data: Dict[str, Any], - link_markers: Dict[str, List[Dict[str, Any]]], - cfg: ConstraintRuleConfig -) -> List[JointAxisConstraint]: - """ - Compile local joint constraints from robot.json. - - Revolute joints: one scalar constraint per anchor pair - (projection along the joint axis stays constant) - - Prismatic joints: two scalar constraints per anchor pair - (the orthogonal projections stay constant) - - Both are emitted as JointAxisConstraint objects so the rest of the - optimization pipeline remains unchanged. - """ - constraints: List[JointAxisConstraint] = [] - links = robot_data.get("links", {}) or {} - - for child_link, child_data in links.items(): - parent_link = child_data.get("parent", None) - if not parent_link: - continue - - joint_info = child_data.get("jointToParent", {}) or {} - joint_type = str(joint_info.get("type", "")).strip().lower() - - joint_axis = get_joint_axis(robot_data, child_link) - if joint_axis is None: - continue - - axis_vec = principal_axis_vector(joint_axis) - - parent_markers = link_markers.get(parent_link, []) - child_markers = link_markers.get(child_link, []) - if len(parent_markers) == 0 or len(child_markers) == 0: - continue - - parent_pos = {int(m["id"]): np.asarray(m["position_m"], dtype=np.float64) for m in parent_markers} - child_pos = {int(m["id"]): np.asarray(m["position_m"], dtype=np.float64) for m in child_markers} - - seen: set[Tuple[int, int]] = set() - - if joint_type == "revolute": - if not get_enabled_link_rule( - robot_data, child_link, "joint_revolute_axis", cfg.revolute_axis_enabled - ): - continue - - max_pairs = max(1, int(cfg.revolute_axis_max_pairs)) - parent_anchor_ids = select_anchor_marker_ids(parent_markers, axis=axis_vec, max_count=max_pairs) - child_anchor_ids = select_anchor_marker_ids(child_markers, axis=axis_vec, max_count=max_pairs) - - for mid_p in parent_anchor_ids: - for mid_c in child_anchor_ids: - if mid_p == mid_c: - continue - key = (mid_p, mid_c) - if key in seen: - continue - seen.add(key) - - delta = child_pos[mid_c] - parent_pos[mid_p] - target = float(np.dot(delta, axis_vec)) - - constraints.append( - JointAxisConstraint( - marker_id_parent=mid_p, - marker_id_child=mid_c, - parent_link=parent_link, - child_link=child_link, - joint_axis=axis_vec, - target_delta_along_axis_m=target, - weight=cfg.revolute_axis_weight, - enabled=True, - source="revolute_axis_projection", - ) - ) - - elif joint_type == "linear": - if not get_enabled_link_rule( - robot_data, child_link, "joint_prismatic_orthogonal", cfg.prismatic_orthogonal_enabled - ): - continue - - max_pairs = max(1, int(cfg.prismatic_orthogonal_max_pairs)) - parent_anchor_ids = select_anchor_marker_ids(parent_markers, axis=axis_vec, max_count=max_pairs) - child_anchor_ids = select_anchor_marker_ids(child_markers, axis=axis_vec, max_count=max_pairs) - basis_u, basis_v = orthonormal_basis_from_axis(axis_vec) - - for mid_p in parent_anchor_ids: - for mid_c in child_anchor_ids: - if mid_p == mid_c: - continue - key = (mid_p, mid_c) - if key in seen: - continue - seen.add(key) - - delta = child_pos[mid_c] - parent_pos[mid_p] - - constraints.append( - JointAxisConstraint( - marker_id_parent=mid_p, - marker_id_child=mid_c, - parent_link=parent_link, - child_link=child_link, - joint_axis=basis_u, - target_delta_along_axis_m=float(np.dot(delta, basis_u)), - weight=cfg.prismatic_orthogonal_weight, - enabled=True, - source="prismatic_orthogonal_projection:u", - ) - ) - constraints.append( - JointAxisConstraint( - marker_id_parent=mid_p, - marker_id_child=mid_c, - parent_link=parent_link, - child_link=child_link, - joint_axis=basis_v, - target_delta_along_axis_m=float(np.dot(delta, basis_v)), - weight=cfg.prismatic_orthogonal_weight, - enabled=True, - source="prismatic_orthogonal_projection:v", - ) - ) - - else: - continue - - return constraints - - - - -def compile_constraints( - robot_data: Dict[str, Any], - length_scale: float, - cfg: ConstraintRuleConfig -) -> Tuple[Dict[int, str], Dict[str, List[Dict[str, Any]]], List[Constraint], List[str], Dict[int, Dict[str, Any]]]: - marker_to_link, link_markers, issues, marker_meta = parse_robot_markers( - robot_data, - length_scale=length_scale, - strict_unique_marker_ids=cfg.strict_unique_marker_ids, - ) - - constraints: List[Constraint] = [] - constraints.extend(compile_rigid_distance_constraints(robot_data, link_markers, cfg)) - constraints.extend(compile_joint_dof_constraints(robot_data, link_markers, cfg)) - - # Legacy optional family, OFF by default. - if cfg.chain_axis_enabled: - constraints.extend(compile_chain_axis_constraints(robot_data, link_markers, cfg)) - - unique_constraints: List[Constraint] = [] - seen_keys: set[Tuple[Any, ...]] = set() - - for c in constraints: - if isinstance(c, MarkerDistanceConstraint): - key = ( - "d", - min(c.marker_id_a, c.marker_id_b), - max(c.marker_id_a, c.marker_id_b), - c.link_name, - round(c.target_distance_m, 9), - ) - else: - key = ( - "j", - c.parent_link, - c.child_link, - c.marker_id_parent, - c.marker_id_child, - tuple(np.round(c.joint_axis, 9).tolist()), - round(c.target_delta_along_axis_m, 9), - ) - if key in seen_keys: - continue - seen_keys.add(key) - unique_constraints.append(c) - - return marker_to_link, link_markers, unique_constraints, issues, marker_meta - - -# =================================================================== -# Observation quality / weighting -# =================================================================== - -def _optional_float(meta: Dict[str, Any], keys: List[str]) -> Optional[float]: - for k in keys: - if k in meta and meta[k] is not None: - try: - return float(meta[k]) - except Exception: - pass - return None - - -def detection_quality_from_metadata(det_obj: Dict[str, Any], cfg: ConstraintRuleConfig) -> float: - q = 1.0 - - if cfg.use_detection_confidence: - conf = _optional_float(det_obj, ["confidence", "score", "quality", "det_confidence"]) - if conf is not None: - q *= clamp(conf, 0.1, 1.0) - - if cfg.use_detection_size_px: - size_px = _optional_float(det_obj, ["size_px", "marker_size_px", "side_px", "side_length_px"]) - if size_px is None and "corners_px" in det_obj and isinstance(det_obj["corners_px"], list): - try: - corners = np.asarray(det_obj["corners_px"], dtype=np.float64).reshape(-1, 2) - if len(corners) >= 4: - edges = [] - for i in range(len(corners)): - p = corners[i] - q2 = corners[(i + 1) % len(corners)] - edges.append(float(np.linalg.norm(q2 - p))) - size_px = float(np.mean(edges)) - except Exception: - size_px = None - if size_px is not None: - q *= clamp(size_px / max(cfg.ref_marker_size_px, 1e-6), 0.25, 3.0) - - sharpness = _optional_float(det_obj, ["sharpness", "corner_sharpness"]) - if sharpness is not None: - q *= clamp(sharpness / 2500.0, 0.5, 1.5) - - normal_alignment = _optional_float(det_obj, ["normal_alignment", "view_cosine", "cos_to_camera"]) - if normal_alignment is not None: - q *= clamp(normal_alignment, 0.3, 1.0) - - return float(q) - - -def marker_size_prior_factor(marker_meta: Dict[str, Any], default_marker_size_m: float) -> float: - size_val = marker_meta.get("size", None) - if size_val is None: - return 1.0 - - try: - size_val = float(size_val) - except Exception: - return 1.0 - - size_m = size_val / 1000.0 if size_val > 1.0 else size_val - ref = max(default_marker_size_m, 1e-6) - return clamp(size_m / ref, 0.7, 1.3) - - -def compute_observation_weights( - marker_observations: Dict[int, List[Observation]], - cameras: List[Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]], - initial_positions: Dict[int, np.ndarray], - marker_meta: Dict[int, Dict[str, Any]], - cfg: ConstraintRuleConfig, - robot_data: Dict[str, Any] -) -> Dict[Tuple[int, int], float]: - weights: Dict[Tuple[int, int], float] = {} - default_marker_size_m = get_vision_marker_size_default(robot_data) - - for marker_id, obs_list in marker_observations.items(): - X = initial_positions.get(marker_id, None) - size_prior = marker_size_prior_factor(marker_meta.get(marker_id, {}), default_marker_size_m) - - for obs_idx, obs in enumerate(obs_list): - w = 1.0 - q = detection_quality_from_metadata(obs.meta, cfg) - w *= q - - if cfg.use_marker_size_prior: - w *= size_prior - - if cfg.use_initial_range and X is not None: - _, _, R_wc, t_wc = cameras[obs.cam_idx] - C = camera_center_from_world_to_cam(R_wc, t_wc) - dist = float(np.linalg.norm(X - C)) - if np.isfinite(dist): - w *= clamp(cfg.ref_distance_m / max(dist, 1e-6), 0.4, 2.0) - - weights[(marker_id, obs_idx)] = clamp(w, cfg.weight_floor, cfg.weight_ceiling) - - return weights - - -# =================================================================== -# Multi-view loading -# =================================================================== - -def load_observations_and_poses( - detection_files: List[str], - pose_files: List[str] -) -> Tuple[ - Dict[int, List[Observation]], - List[Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]], - List[Dict[str, Any]] -]: - if len(detection_files) != len(pose_files): - raise ValueError(f"Mismatch: {len(detection_files)} detections vs {len(pose_files)} poses") - - marker_observations: Dict[int, List[Observation]] = {} - cameras: List[Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]] = [] - obs_metadata: List[Dict[str, Any]] = [] - - for cam_idx, (det_file, pose_file) in enumerate(zip(detection_files, pose_files)): - det = load_json(det_file) - pose_data = load_json(pose_file) - - cam_section = det.get("camera", {}) or {} - K = np.array(cam_section.get("camera_matrix", []), dtype=np.float64).reshape(3, 3) - D = np.array(cam_section.get("distortion_coefficients", []), dtype=np.float64).reshape(-1, 1) - - pose_section = pose_data.get("camera_pose", {}) or {} - world_to_cam = pose_section.get("world_to_camera", {}) or {} - R_wc = np.array(world_to_cam.get("rotation_matrix", []), dtype=np.float64).reshape(3, 3) - t_wc = np.array(world_to_cam.get("translation_m", []), dtype=np.float64).reshape(3) - - cameras.append((K, D, R_wc, t_wc)) - - detections = det.get("detections", []) or [] - for det_obj in detections: - marker_id = int(det_obj.get("marker_id", -1)) - if marker_id < 0: - continue - - center_px = np.array(det_obj.get("center_px", []), dtype=np.float64) - if center_px.shape != (2,): - continue - - pts = center_px.reshape(1, 1, 2).astype(np.float32) - und = cv2.undistortPoints(pts, K.astype(np.float32), D.astype(np.float32), P=None) - center_norm = und.reshape(2).astype(np.float64) - - obs = Observation( - cam_idx=cam_idx, - center_norm=center_norm, - meta=dict(det_obj), - ) - marker_observations.setdefault(marker_id, []).append(obs) - - obs_metadata.append( - { - "detection_file": det_file, - "pose_file": pose_file, - "num_detections": len(detections), - } - ) - - return marker_observations, cameras, obs_metadata - - -# =================================================================== -# Initial triangulation -# =================================================================== - -def triangulate_marker_initial( - marker_id: int, - observations: List[Observation], - cameras: List[Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]] -) -> Optional[np.ndarray]: - """ - Multi-view linear triangulation from all available normalized observations. - Uses all cameras instead of only the best pair. - """ - if len(observations) < 2: - return None - - A = [] - - for obs in observations: - cam_idx = obs.cam_idx - _, _, R_wc, t_wc = cameras[cam_idx] - - # world -> camera projection matrix without intrinsics, - # because obs.center_norm is already undistorted / normalized - P = np.hstack([R_wc, t_wc.reshape(3, 1)]) # 3x4 - - x = float(obs.center_norm[0]) - y = float(obs.center_norm[1]) - - A.append(x * P[2, :] - P[0, :]) - A.append(y * P[2, :] - P[1, :]) - - A = np.asarray(A, dtype=np.float64) - - if A.shape[0] < 4: - return None - - try: - _, _, Vt = np.linalg.svd(A) - X_h = Vt[-1, :] - if abs(X_h[3]) < 1e-12: - return None - X = X_h[:3] / X_h[3] - if not np.all(np.isfinite(X)): - return None - return X.astype(np.float64) - except Exception: - return None - - -def initial_triangulation( - marker_observations: Dict[int, List[Observation]], - cameras: List[Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]] -) -> Dict[int, np.ndarray]: - triangulated: Dict[int, np.ndarray] = {} - for marker_id, observations in marker_observations.items(): - X = triangulate_marker_initial(marker_id, observations, cameras) - if X is not None: - triangulated[marker_id] = X - return triangulated - - -# =================================================================== -# Weighted residuals / optimization -# =================================================================== - -def bundle_adjustment_residuals( - marker_positions_flat: np.ndarray, - marker_ids: List[int], - marker_observations: Dict[int, List[Observation]], - cameras: List[Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]], - constraints: List[Constraint], - obs_weights: Dict[Tuple[int, int], float], - lambda_constraint: float = 100.0 -) -> np.ndarray: - marker_dict: Dict[int, np.ndarray] = {} - for i, marker_id in enumerate(marker_ids): - marker_dict[marker_id] = marker_positions_flat[i * 3:(i + 1) * 3] - - residuals: List[float] = [] - - for marker_id, observations in marker_observations.items(): - if marker_id not in marker_dict: - continue - - X_world = marker_dict[marker_id] - for obs_idx, obs in enumerate(observations): - cam_idx, norm_coords_obs = obs.cam_idx, obs.norm_coords - K, D, R_wc, t_wc = cameras[cam_idx] - X_cam = R_wc @ X_world + t_wc - if X_cam[2] > 1e-6: - proj_norm = X_cam[:2] / X_cam[2] - r = proj_norm - norm_coords_obs - w = float(np.sqrt(obs_weights.get((marker_id, obs_idx), 1.0))) - residuals.append(w * float(r[0])) - residuals.append(w * float(r[1])) - - for constraint in constraints: - if isinstance(constraint, MarkerDistanceConstraint): - if constraint.marker_id_a in marker_dict and constraint.marker_id_b in marker_dict: - pos_a = marker_dict[constraint.marker_id_a] - pos_b = marker_dict[constraint.marker_id_b] - actual_dist = float(np.linalg.norm(pos_b - pos_a)) - residuals.append((actual_dist - constraint.target_distance_m) * constraint.weight * lambda_constraint) - - elif isinstance(constraint, JointAxisConstraint): - if constraint.marker_id_parent in marker_dict and constraint.marker_id_child in marker_dict: - pos_parent = marker_dict[constraint.marker_id_parent] - pos_child = marker_dict[constraint.marker_id_child] - delta = pos_child - pos_parent - actual_delta = float(np.dot(delta, constraint.joint_axis)) - residuals.append((actual_delta - constraint.target_delta_along_axis_m) * constraint.weight * lambda_constraint) - - return np.asarray(residuals, dtype=np.float64) - - -def optimize_with_constraints( - initial_positions: Dict[int, np.ndarray], - marker_observations: Dict[int, List[Observation]], - cameras: List[Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]], - constraints: List[Constraint], - obs_weights: Dict[Tuple[int, int], float], - lambda_constraint: float = 100.0, - max_iterations: int = 50 -) -> Dict[int, np.ndarray]: - try: - from scipy.optimize import least_squares - except ImportError: - print("[WARN] scipy not available, skipping optimization.") - return initial_positions - - marker_ids = sorted(initial_positions.keys()) - if not marker_ids: - return {} - - x0 = np.concatenate([initial_positions[mid] for mid in marker_ids]) - - def residuals_fn(x: np.ndarray) -> np.ndarray: - return bundle_adjustment_residuals( - x, marker_ids, marker_observations, cameras, constraints, obs_weights, lambda_constraint - ) - - print(f"[INFO] Starting optimization with {len(x0)} variables and {len(constraints)} constraints...") - - result = least_squares( - residuals_fn, - x0, - max_nfev=max_iterations * max(1, len(marker_ids)), - verbose=1, - ) - - optimized = {} - for i, marker_id in enumerate(marker_ids): - optimized[marker_id] = result.x[i * 3:(i + 1) * 3] - - print(f"[INFO] Optimization complete. Final cost: {float(np.sum(result.fun ** 2)):.6f}") - return optimized - - -# =================================================================== -# Reporting helpers -# =================================================================== - -def print_constraint_summary(constraints: List[Constraint]) -> None: - num_dist = sum(isinstance(c, MarkerDistanceConstraint) for c in constraints) - num_joint = sum(isinstance(c, JointAxisConstraint) for c in constraints) - print(f"[INFO] Constraint summary: total={len(constraints)} distance={num_dist} joint/chain={num_joint}") - - -def print_constraint_list(constraints: List[Constraint]) -> None: - print("\n[INFO] Constraint list:") - for idx, constraint in enumerate(constraints): - if isinstance(constraint, MarkerDistanceConstraint): - print( - f" [{idx:03d}] DISTANCE | " - f"Link='{constraint.link_name}' | " - f"M{constraint.marker_id_a} <-> M{constraint.marker_id_b} | " - f"Target={constraint.target_distance_m:.6f} m | " - f"Weight={constraint.weight} | " - f"Source={constraint.source}" - ) - else: - axis_str = np.array2string(constraint.joint_axis, precision=3, suppress_small=True) - print( - f" [{idx:03d}] JOINT_AXIS | " - f"{constraint.parent_link}(M{constraint.marker_id_parent}) -> " - f"{constraint.child_link}(M{constraint.marker_id_child}) | " - f"Axis={axis_str} | " - f"TargetDelta={constraint.target_delta_along_axis_m:.6f} m | " - f"Weight={constraint.weight} | " - f"Source={constraint.source}" - ) - - -def print_constraints_with_errors( - title: str, - constraints: List[Constraint], - positions: Dict[int, np.ndarray], - show_skipped: bool = True -) -> None: - print(f"\n[INFO] {title}") - - active = 0 - skipped = 0 - - for idx, constraint in enumerate(constraints): - if isinstance(constraint, MarkerDistanceConstraint): - if constraint.marker_id_a not in positions or constraint.marker_id_b not in positions: - skipped += 1 - if show_skipped: - print( - f" [{idx:03d}] DISTANCE | " - f"M{constraint.marker_id_a} <-> M{constraint.marker_id_b} | SKIPPED (missing marker)" - ) - continue - - pos_a = positions[constraint.marker_id_a] - pos_b = positions[constraint.marker_id_b] - actual = float(np.linalg.norm(pos_b - pos_a)) - error = actual - constraint.target_distance_m - active += 1 - - print( - f" [{idx:03d}] DISTANCE | " - f"Link='{constraint.link_name}' | " - f"M{constraint.marker_id_a} <-> M{constraint.marker_id_b} | " - f"target={constraint.target_distance_m*1000:.2f} mm | " - f"actual={actual*1000:.2f} mm | " - f"error={error*1000:+.2f} mm" - ) - - elif isinstance(constraint, JointAxisConstraint): - if constraint.marker_id_parent not in positions or constraint.marker_id_child not in positions: - skipped += 1 - if show_skipped: - print( - f" [{idx:03d}] JOINT_AXIS | " - f"M{constraint.marker_id_parent} -> M{constraint.marker_id_child} | SKIPPED (missing marker)" - ) - continue - - pos_parent = positions[constraint.marker_id_parent] - pos_child = positions[constraint.marker_id_child] - delta = pos_child - pos_parent - actual = float(np.dot(delta, constraint.joint_axis)) - error = actual - constraint.target_delta_along_axis_m - active += 1 - - axis_str = np.array2string(constraint.joint_axis, precision=2, suppress_small=True) - print( - f" [{idx:03d}] JOINT_AXIS | " - f"{constraint.parent_link}(M{constraint.marker_id_parent}) -> " - f"{constraint.child_link}(M{constraint.marker_id_child}) | " - f"axis={axis_str} | " - f"target={constraint.target_delta_along_axis_m*1000:.2f} mm | " - f"actual={actual*1000:.2f} mm | " - f"error={error*1000:+.2f} mm" - ) - - print(f"[INFO] Active constraints: {active} | Skipped: {skipped}") - - -def print_observation_weight_summary(obs_weights: Dict[Tuple[int, int], float]) -> None: - if not obs_weights: - print("[INFO] Observation weighting: disabled or empty") - return - values = np.array(list(obs_weights.values()), dtype=np.float64) - print( - "[INFO] Observation weights: " - f"min={values.min():.3f} mean={values.mean():.3f} " - f"median={np.median(values):.3f} max={values.max():.3f}" - ) - - -# =================================================================== -# Main -# =================================================================== - -def main() -> None: - parser = argparse.ArgumentParser( - description="Multi-view bundle adjustment with rule-based geometric constraints" - ) - parser.add_argument( - "-det", "--detections", - action="append", - required=True, - help="*_aruco_detection.json files" - ) - parser.add_argument( - "-pose", "--poses", - action="append", - required=True, - help="*_camera_pose.json files" - ) - parser.add_argument( - "-robot", "--robot", - required=True, - help="robot.json" - ) - parser.add_argument( - "-outDir", "--outDir", - default=None, - help="Output directory" - ) - parser.add_argument( - "-lambdaWeight", "--lambdaWeight", - type=float, - default=100.0, - help="Constraint weight multiplier" - ) - parser.add_argument( - "--strictUniqueMarkerIds", - action="store_true", - help="Fail if a marker ID appears more than once in robot.json" - ) - parser.add_argument( - "--showSkippedConstraints", - action="store_true", - help="Print skipped constraints in the report" - ) - parser.add_argument( - "--noShowSkippedConstraints", - action="store_true", - help="Hide skipped constraints in the report" - ) - parser.add_argument( - "--saveConstraintReport", - action="store_true", - help="Save constraint report JSON files" - ) - parser.add_argument( - "--saveObservationWeightReport", - action="store_true", - help="Save observation-weight report JSON file" - ) - - args = parser.parse_args() - - if args.showSkippedConstraints and args.noShowSkippedConstraints: - print("[ERROR] Choose only one of --showSkippedConstraints or --noShowSkippedConstraints") - sys.exit(1) - - if len(args.detections) != len(args.poses): - print(f"[ERROR] Mismatch: {len(args.detections)} detection files vs {len(args.poses)} pose files") - sys.exit(1) - - robot_data = load_json(args.robot) - length_scale = get_length_scale(robot_data) - cfg = load_constraint_rule_config(robot_data, args) - - print("[STEP 1] Compile constraints from robot.json structure...") - print( - "[INFO] Constraint families: " - f"rigid_distance={'on' if cfg.rigid_distance_enabled else 'off'}, " - f"revolute={'on' if cfg.revolute_axis_enabled else 'off'}, " - f"prismatic={'on' if cfg.prismatic_orthogonal_enabled else 'off'}, " - f"chain_legacy={'on' if cfg.chain_axis_enabled else 'off'}, " - f"observation_weights={'on' if cfg.enable_observation_weights else 'off'}" - ) - marker_to_link, link_markers, constraints, issues, marker_meta = compile_constraints(robot_data, length_scale, cfg) - - for issue in issues: - print(issue) - - print(f"[INFO] Links with markers: {sum(1 for v in link_markers.values() if len(v) > 0)}") - print(f"[INFO] Unique marker IDs: {len(marker_to_link)}") - print_constraint_summary(constraints) - print_constraint_list(constraints) - - print("\n[STEP 2] Load observations and camera poses...") - marker_observations, cameras, obs_metadata = load_observations_and_poses(args.detections, args.poses) - print(f"[INFO] {len(cameras)} cameras, {len(marker_observations)} observed markers") - print(f"[INFO] Detection files loaded: {len(obs_metadata)}") - - print("\n[STEP 3] Initial triangulation...") - initial_pos = initial_triangulation(marker_observations, cameras) - print(f"[INFO] Triangulated {len(initial_pos)} markers") - - out_dir = args.outDir or os.path.dirname(args.detections[0]) or "." - os.makedirs(resolve_path(out_dir), exist_ok=True) - - initial_output_markers = [] - for marker_id, position in sorted(initial_pos.items()): - initial_output_markers.append( - { - "marker_id": int(marker_id), - "position_m": [float(x) for x in position], - "position_mm": [float(x * 1000.0) for x in position], - "link": marker_to_link.get(marker_id, "unknown"), - } - ) - - initial_output = { - "schema_version": "1.2", - "stage": "initial_triangulation", - "created_utc": time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()), - "summary": { - "num_cameras": len(cameras), - "num_markers": len(initial_pos), - "num_constraints": len(constraints), - }, - "markers": initial_output_markers, - } - initial_out_file = os.path.join(out_dir, "aruco_positions_initial.json") - save_json(initial_out_file, initial_output) - print(f"[INFO] Initial triangulation saved to {initial_out_file}") - - obs_weights = compute_observation_weights( - marker_observations=marker_observations, - cameras=cameras, - initial_positions=initial_pos, - marker_meta=marker_meta, - cfg=cfg, - robot_data=robot_data, - ) - print_observation_weight_summary(obs_weights) - - print_constraints_with_errors( - "Constraint list BEFORE optimization", - constraints, - initial_pos, - show_skipped=cfg.show_skipped_constraints, - ) - - print("\n[STEP 4] Bundle adjustment with constraints...") - optimized_pos = optimize_with_constraints( - initial_pos, - marker_observations, - cameras, - constraints, - obs_weights, - lambda_constraint=args.lambdaWeight, - ) - - print_constraints_with_errors( - "Constraint list AFTER optimization", - constraints, - optimized_pos, - show_skipped=cfg.show_skipped_constraints, - ) - - output_markers = [] - for marker_id, position in sorted(optimized_pos.items()): - output_markers.append( - { - "marker_id": int(marker_id), - "position_m": [float(x) for x in position], - "position_mm": [float(x * 1000.0) for x in position], - "link": marker_to_link.get(marker_id, "unknown"), - } - ) - - output = { - "schema_version": "1.2", - "created_utc": time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()), - "summary": { - "num_cameras": len(cameras), - "num_markers": len(optimized_pos), - "num_constraints": len(constraints), - }, - "markers": output_markers, - } - out_file = os.path.join(out_dir, "aruco_positions_optimized.json") - save_json(out_file, output) - print(f"\n[INFO] Saved to {out_file}") - - if args.saveConstraintReport: - report = { - "schema_version": "1.0", - "created_utc": time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()), - "summary": { - "num_constraints": len(constraints), - "num_links_with_markers": sum(1 for v in link_markers.values() if len(v) > 0), - "num_observed_markers": len(marker_observations), - "num_triangulated_markers": len(initial_pos), - "num_optimized_markers": len(optimized_pos), - }, - "constraints": [], - } - for c in constraints: - if isinstance(c, MarkerDistanceConstraint): - report["constraints"].append( - { - "kind": "distance", - "link_name": c.link_name, - "marker_id_a": c.marker_id_a, - "marker_id_b": c.marker_id_b, - "target_distance_m": c.target_distance_m, - "weight": c.weight, - "source": c.source, - } - ) - else: - report["constraints"].append( - { - "kind": "joint_axis", - "parent_link": c.parent_link, - "child_link": c.child_link, - "marker_id_parent": c.marker_id_parent, - "marker_id_child": c.marker_id_child, - "joint_axis": [float(x) for x in c.joint_axis], - "target_delta_along_axis_m": c.target_delta_along_axis_m, - "weight": c.weight, - "source": c.source, - } - ) - report_file = os.path.join(out_dir, "constraint_report.json") - save_json(report_file, report) - print(f"[INFO] Constraint report saved to {report_file}") - - if args.saveObservationWeightReport: - obs_report = { - "schema_version": "1.0", - "created_utc": time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()), - "summary": { - "num_weighted_observations": len(obs_weights), - }, - "observation_weights": [ - { - "marker_id": int(mid), - "observation_index": int(obs_idx), - "weight": float(w), - } - for (mid, obs_idx), w in sorted(obs_weights.items()) - ], - } - obs_file = os.path.join(out_dir, "observation_weight_report.json") - save_json(obs_file, obs_report) - print(f"[INFO] Observation-weight report saved to {obs_file}") - - -if __name__ == "__main__": - main() diff --git a/pipeline/3_multiview_bundle_adjustment_v5_board_anchor_patch.py b/pipeline/3_multiview_bundle_adjustment_v5_board_anchor_patch.py new file mode 100644 index 0000000..1cba4c6 --- /dev/null +++ b/pipeline/3_multiview_bundle_adjustment_v5_board_anchor_patch.py @@ -0,0 +1,229 @@ +#!/usr/bin/env python3 +""" +3_board_anchor_patch.py +----------------------- +DROP-IN PATCH for 3_multiview_bundle_adjustment_v4.py + +What it adds +------------ +Board markers have KNOWN world positions (they are fixed to the physical board, +which defines the coordinate frame). Letting the optimizer move them freely +makes them drift, which degrades all arm-marker estimates. + +This patch adds a PositionAnchorConstraint that pins each observed Board +marker to its robot.json world position during bundle adjustment. + +How to integrate +---------------- +Copy the three sections labelled [PATCH – copy into v4] into the v4 file: + + 1. The PositionAnchorConstraint dataclass → after the JointAxisConstraint dataclass + 2. Update the Constraint type alias → replace the existing line + 3. The load_board_anchors() function → anywhere before main() + 4. The change to bundle_adjustment_residuals → add one branch inside the for-loop + 5. The three lines in main() → just before "STEP 4" + +Quick-test without editing v4 +------------------------------ +You can also run this file standalone — it imports from v4 and patches it at +runtime. Then call main_anchored() instead of main() for the patched run. + + python 3_board_anchor_patch.py -det ... -pose ... -robot ... -outDir ... +""" + +from __future__ import annotations + +# ══════════════════════════════════════════════════════════════ +# [PATCH section 1 – copy into v4 after JointAxisConstraint] +# ══════════════════════════════════════════════════════════════ +from dataclasses import dataclass +import numpy as np +from typing import Dict, Any, List, Optional, Tuple + + +@dataclass +class PositionAnchorConstraint: + """ + Pins a single marker to a known world-space position. + Used to anchor Board markers whose world positions are read from robot.json. + """ + marker_id: int + target_world_m: np.ndarray # shape (3,), in metres + weight: float = 100.0 + source: str = "board_anchor" + + +# ══════════════════════════════════════════════════════════════ +# [PATCH section 2 – replace the Constraint type alias in v4] +# ══════════════════════════════════════════════════════════════ +# OLD: Constraint = MarkerDistanceConstraint | JointAxisConstraint +# NEW: +# from 3_board_anchor_patch import PositionAnchorConstraint +# Constraint = MarkerDistanceConstraint | JointAxisConstraint | PositionAnchorConstraint + + +# ══════════════════════════════════════════════════════════════ +# [PATCH section 3 – new function, copy anywhere before main()] +# ══════════════════════════════════════════════════════════════ + +def load_board_anchors( + robot_data: Dict[str, Any], + length_scale: float, + weight: float = 100.0, +) -> List[PositionAnchorConstraint]: + """ + Build PositionAnchorConstraints for every marker on the 'Board' link. + + Board is the root link; its marker positions are in the Board (world) frame. + length_scale = 1/1000 when robot.json uses mm (the standard). + + Parameters + ---------- + robot_data : loaded robot.json + length_scale : float (1/1000 to convert mm → m) + weight : constraint weight (100 ≈ 1 mm anchor tolerance at λ=100) + """ + links = robot_data.get("links", {}) or {} + board = links.get("Board", {}) or {} + anchors: List[PositionAnchorConstraint] = [] + + for m in board.get("markers", []): + mid = int(m.get("id", -1)) + pos = m.get("position", None) + if mid < 0 or pos is None or len(pos) != 3: + continue + world_m = np.array(pos, dtype=np.float64) * float(length_scale) + anchors.append( + PositionAnchorConstraint( + marker_id=mid, + target_world_m=world_m, + weight=weight, + source="board_anchor", + ) + ) + + return anchors + + +# ══════════════════════════════════════════════════════════════ +# [PATCH section 4 – add this branch inside bundle_adjustment_residuals, +# in the "for constraint in constraints:" loop, after the JointAxisConstraint branch] +# ══════════════════════════════════════════════════════════════ + +def _anchor_residuals(constraint: PositionAnchorConstraint, + marker_dict: Dict[int, np.ndarray], + lambda_constraint: float) -> List[float]: + """ + Returns 3 residual components w·λ·(X_observed - X_target) for each axis. + + Paste the body of this function into bundle_adjustment_residuals like this: + + elif isinstance(constraint, PositionAnchorConstraint): + if constraint.marker_id in marker_dict: + diff = marker_dict[constraint.marker_id] - constraint.target_world_m + for d in diff: + residuals.append(float(d) * constraint.weight * lambda_constraint) + """ + residuals: List[float] = [] + if constraint.marker_id in marker_dict: + diff = marker_dict[constraint.marker_id] - constraint.target_world_m + for d in diff: + residuals.append(float(d) * constraint.weight * lambda_constraint) + return residuals + + +# ══════════════════════════════════════════════════════════════ +# [PATCH section 5 – add these lines in main(), just BEFORE +# "print('\n[STEP 4] Bundle adjustment with constraints...')"] +# ══════════════════════════════════════════════════════════════ +# +# board_anchors = load_board_anchors(robot_data, length_scale, weight=100.0) +# constraints += board_anchors +# print(f"[INFO] Board anchors added: {len(board_anchors)}") +# +# ══════════════════════════════════════════════════════════════ + + +# ────────────────────────────────────────────────────────────── +# STANDALONE RUNTIME PATCH (alternative to editing v4) +# Run this file directly and it patches v4 in memory. +# ────────────────────────────────────────────────────────────── + +def _monkey_patch_v4(): + """ + Import the v4 module under an alias and patch it so Board markers are + anchored without touching the original file. + """ + import importlib.util, sys, types, pathlib + + v4_path = pathlib.Path(__file__).parent / "3_multiview_bundle_adjustment_v4.py" + if not v4_path.exists(): + raise FileNotFoundError( + f"Expected v4 at {v4_path}.\n" + "Place this patch file alongside 3_multiview_bundle_adjustment_v4.py." + ) + + spec = importlib.util.spec_from_file_location("ba_v4", v4_path) + mod = importlib.util.module_from_spec(spec) + spec.loader.exec_module(mod) + + # Inject PositionAnchorConstraint into the module namespace + mod.PositionAnchorConstraint = PositionAnchorConstraint + + # Patch bundle_adjustment_residuals ───────────────────────── + _orig_residuals = mod.bundle_adjustment_residuals + + def _patched_residuals(marker_positions_flat, marker_ids, marker_observations, + cameras, constraints, obs_weights, lambda_constraint=100.0): + r = _orig_residuals(marker_positions_flat, marker_ids, marker_observations, + cameras, constraints, obs_weights, lambda_constraint) + # Rebuild marker_dict (same as inside the original function) + marker_dict = { + mid: marker_positions_flat[i*3:(i+1)*3] + for i, mid in enumerate(marker_ids) + } + extra = [] + for c in constraints: + if isinstance(c, PositionAnchorConstraint): + extra.extend(_anchor_residuals(c, marker_dict, lambda_constraint)) + if extra: + r = np.concatenate([r, np.array(extra, dtype=np.float64)]) + return r + + mod.bundle_adjustment_residuals = _patched_residuals + + # Patch main to inject board anchors ──────────────────────── + _orig_main = mod.main + + def _patched_main(): + import sys as _sys + # We hijack the module-level function calls by patching compile_constraints + _orig_compile = mod.compile_constraints + + def _compile_with_anchors(robot_data, length_scale, cfg): + marker_to_link, link_markers, constraints, issues, marker_meta = \ + _orig_compile(robot_data, length_scale, cfg) + + anchors = load_board_anchors(robot_data, length_scale, weight=100.0) + print(f"[PATCH] Board anchors added: {len(anchors)}") + constraints = constraints + anchors + return marker_to_link, link_markers, constraints, issues, marker_meta + + mod.compile_constraints = _compile_with_anchors + _orig_main() + mod.compile_constraints = _orig_compile # restore + + mod.main = _patched_main + return mod + + +def main(): + """Run the patched v4 pipeline with Board marker anchoring.""" + import sys + mod = _monkey_patch_v4() + sys.argv[0] = "3_multiview_bundle_adjustment_v4.py" # cosmetic + mod.main() + + +if __name__ == "__main__": + main() diff --git a/pipeline/4_v8_4a_base_slider.py b/pipeline/4_v8_4a_base_slider.py new file mode 100644 index 0000000..7720f74 --- /dev/null +++ b/pipeline/4_v8_4a_base_slider.py @@ -0,0 +1,207 @@ +#!/usr/bin/env python3 +""" +4a_base_slider.py +----------------- +Estimate the Base linear-slider position (variable 'x', in mm) from +observed world-space marker positions produced by step 3. + +Mathematical principle +---------------------- +The Base slides along the world x-axis. +Every joint between Base and the observable arm markers rotates around +the x-axis (axis ≈ [-1,0,0] for Arm1, Ellbow, Arm2). + +Rotation around the x-axis NEVER changes the x-coordinate of any point. +Therefore, for every marker on Arm1, Ellbow, or Arm2: + + world_x = x_slider + link_frame_x_at_zero + local_x + +where link_frame_x_at_zero is the x of the link-frame origin in world +when all joint variables are zero (constant, readable from robot.json). + +Rearranging: + x_slider = world_x - link_frame_x_at_zero - local_x + +This holds for ANY rotation angle y, z, a of the arm links. + +This gives one independent estimate per observed marker. +We report their mean (and statistics) as the final estimate. + +Usage +----- + python 4a_base_slider.py --robot robot.json --aruco aruco_positions_optimized.json + + python 4a_base_slider.py --robot robot.json --aruco aruco_positions_optimized.json \\ + --links Arm1 Ellbow Arm2 --output 4a_result.json +""" + +from __future__ import annotations + +import argparse +import json +import math +from pathlib import Path +from typing import Dict, List, Optional + +import numpy as np +from robot_fk import RobotFK + + +# ────────────────────────────────────────────────────────────── +# I/O helpers +# ────────────────────────────────────────────────────────────── + +def _load_json(path: Path) -> dict: + with path.open("r", encoding="utf-8") as f: + return json.load(f) + + +def _load_observed_mm(aruco_json: dict) -> Dict[int, np.ndarray]: + """marker_id → world position in mm, from aruco_positions_optimized.json.""" + result: Dict[int, np.ndarray] = {} + for m in aruco_json.get("markers", []): + mid = int(m.get("marker_id", m.get("id", -1))) + if mid < 0: + continue + if "position_mm" in m: + result[mid] = np.array(m["position_mm"], dtype=float) + elif "position_m" in m: + result[mid] = np.array(m["position_m"], dtype=float) * 1000.0 + return result + + +# ────────────────────────────────────────────────────────────── +# Core estimator +# ────────────────────────────────────────────────────────────── + +def estimate_base_slider( + fk: RobotFK, + observed_mm: Dict[int, np.ndarray], + use_links: Optional[List[str]] = None, + verbose: bool = True, +) -> dict: + """ + Parameters + ---------- + fk : RobotFK instance + observed_mm : dict marker_id -> world position [mm] + use_links : links whose markers are used (default: Arm1, Ellbow, Arm2) + All must be connected to Base via only x-axis rotations. + verbose : print breakdown + + Returns + ------- + dict with keys: + status, x_mean_mm, x_median_mm, x_std_mm, + num_markers, per_marker + """ + if use_links is None: + use_links = ["Arm1", "Ellbow", "Arm2"] + + # Pre-compute link_frame_x at zero-state for each target link + link_x0: Dict[str, float] = {} + for lname in use_links: + if lname in fk.links: + link_x0[lname] = fk.link_x_at_zero_state(lname) + + estimates: List[float] = [] + per_marker: List[dict] = [] + + for lname in use_links: + if lname not in fk.links or lname not in link_x0: + continue + x0 = link_x0[lname] + + for m in fk.links[lname].get("markers", []): + mid = int(m.get("id", -1)) + if mid < 0 or "position" not in m: + continue + if mid not in observed_mm: + continue # marker not seen in this pose + + local_x = float(m["position"][0]) + world_x = float(observed_mm[mid][0]) + x_est = world_x - x0 - local_x + + estimates.append(x_est) + per_marker.append({ + "marker_id": mid, + "link": lname, + "local_x_mm": local_x, + "link_x0_mm": x0, + "world_x_mm": world_x, + "x_estimate_mm": x_est, + }) + + if not estimates: + msg = (f"No observed markers found on links {use_links}. " + "Check that aruco_positions_optimized.json contains " + "markers from those links.") + if verbose: + print(f"[4a FAILED] {msg}") + return {"status": "failed", "reason": msg, "use_links": use_links} + + arr = np.array(estimates) + x_mean = float(np.mean(arr)) + x_median = float(np.median(arr)) + x_std = float(np.std(arr, ddof=0)) + + if verbose: + print("\n── 4a: Base slider (x) ──────────────────────────────────") + print(f" Links used: {use_links}") + print(f" Markers used: {len(estimates)}") + print(f" x = {x_mean:+.2f} mm (median {x_median:+.2f}, σ {x_std:.2f})") + if x_std > 5.0: + print(f" [WARN] high spread ({x_std:.1f} mm) – step-3 errors or wrong link list") + print(f"\n Per-marker:") + print(f" {'ID':>5} {'Link':8} {'local_x':>8} {'world_x':>8} {'x_est':>8}") + print(f" " + "-"*46) + for pm in per_marker: + print(f" {pm['marker_id']:>5} {pm['link']:8} " + f"{pm['local_x_mm']:>8.2f} {pm['world_x_mm']:>8.2f} {pm['x_estimate_mm']:>8.2f}") + + return { + "status": "ok", + "joint": "x", + "description": "Base linear slider", + "x_mean_mm": x_mean, + "x_median_mm": x_median, + "x_std_mm": x_std, + "num_markers": len(estimates), + "use_links": use_links, + "per_marker": per_marker, + } + + +# ────────────────────────────────────────────────────────────── +# CLI +# ────────────────────────────────────────────────────────────── + +def main() -> int: + p = argparse.ArgumentParser(description="4a: estimate Base slider (x)") + p.add_argument("--robot", type=Path, default=Path("robot.json")) + p.add_argument("--aruco", type=Path, default=Path("aruco_positions_optimized.json")) + p.add_argument("--links", nargs="+", default=["Arm1", "Ellbow", "Arm2"], + dest="links", + help="Links whose markers to use (must be x-axis-rotation chain)") + p.add_argument("--output", type=Path, default=None, + help="Optional JSON output path (e.g. 4a_result.json)") + args = p.parse_args() + + fk = RobotFK.from_file(args.robot) + aruco_json = _load_json(args.aruco) + observed_mm = _load_observed_mm(aruco_json) + + result = estimate_base_slider(fk, observed_mm, use_links=args.links) + + if args.output and result["status"] == "ok": + args.output.parent.mkdir(parents=True, exist_ok=True) + with args.output.open("w", encoding="utf-8") as f: + json.dump(result, f, indent=2) + print(f"\n Saved → {args.output}") + + return 0 if result["status"] == "ok" else 1 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/pipeline/4_v8_4b_revolute_angle.py b/pipeline/4_v8_4b_revolute_angle.py new file mode 100644 index 0000000..18fb439 --- /dev/null +++ b/pipeline/4_v8_4b_revolute_angle.py @@ -0,0 +1,360 @@ +#!/usr/bin/env python3 +""" +4b_revolute_angle.py +-------------------- +Generic revolute-joint angle estimator. + +For each movable link (Arm1, Ellbow, Arm2 …) whose joint type is 'revolute', +this script estimates the rotation angle using the pairwise-vector method: + + For every PAIR (m1, m2) of markers belonging to the target link: + v_model = local_pos_m2 - local_pos_m1 (in link's own frame) + v_obs = world_pos_m2 - world_pos_m1 (in world frame) + + Both vectors are projected perpendicular to the joint axis (in world frame), + and the signed angle from v_model_perp to v_obs_perp is measured. + + The joint axis in world frame is computed via FK using the already-known + joint values (from 4a, 4b-prev …), so it is ALWAYS correct — even for + deeply-nested joints whose world-frame axis differs from their local axis. + + Pair weights = baseline_model × baseline_obs (longer baselines → more reliable). + +How to use sequentially +----------------------- +Run 4b once per revolute joint, from root to tip: + + python 4b_revolute_angle.py --robot r.json --aruco obs.json --link Arm1 --x-mm 180 + python 4b_revolute_angle.py --robot r.json --aruco obs.json --link Ellbow --from-state state.json + python 4b_revolute_angle.py --robot r.json --aruco obs.json --link Arm2 --from-state state.json + +The --from-state flag reads the accumulated joint state JSON so you don't have +to pass every preceding value on the command line. + +Output JSON +----------- +{ + "link": "Arm1", + "joint": "y", + "mean_angle_deg": 86.3, + "circular_std_deg": 0.7, + "num_pairs": 6, + "joint_origin_world_mm": [290, 108, 61], + "joint_axis_world": [-1, 0, 0], + ... +} + +The file also contains the full accumulated state so the next 4b invocation +can read it via --from-state. +""" + +from __future__ import annotations + +import argparse +import json +import math +from itertools import combinations +from pathlib import Path +from typing import Dict, List, Optional, Sequence, Tuple + +import numpy as np +from robot_fk import RobotFK + +STATE_KEYS = ("x", "y", "z", "a", "b", "c", "e") + + +# ────────────────────────────────────────────────────────────── +# I/O +# ────────────────────────────────────────────────────────────── + +def _load_json(path: Path) -> dict: + with path.open("r", encoding="utf-8") as f: + return json.load(f) + + +def _load_observed_mm(aruco_json: dict) -> Dict[int, np.ndarray]: + result: Dict[int, np.ndarray] = {} + for m in aruco_json.get("markers", []): + mid = int(m.get("marker_id", m.get("id", -1))) + if mid < 0: + continue + if "position_mm" in m: + result[mid] = np.array(m["position_mm"], dtype=float) + elif "position_m" in m: + result[mid] = np.array(m["position_m"], dtype=float) * 1000.0 + return result + + +def _load_state(path: Path) -> Dict[str, float]: + """Load accumulated joint state from a previous 4b output JSON.""" + raw = _load_json(path) + state = raw.get("accumulated_state", raw.get("state", {})) + return {k: float(v) for k, v in state.items() if k in STATE_KEYS} + + +# ────────────────────────────────────────────────────────────── +# Angle maths +# ────────────────────────────────────────────────────────────── + +def _project_perp(v: np.ndarray, axis: np.ndarray) -> np.ndarray: + """Remove the component of v along axis.""" + a = axis / (np.linalg.norm(axis) + 1e-15) + return v - np.dot(v, a) * a + + +def _signed_angle_rad(v_from: np.ndarray, v_to: np.ndarray, + axis: np.ndarray) -> float: + """Signed angle rotating v_from onto v_to around axis (radians).""" + a = axis / (np.linalg.norm(axis) + 1e-15) + return math.atan2(float(np.dot(a, np.cross(v_from, v_to))), + float(np.dot(v_from, v_to))) + + +def _wrap(angle: float) -> float: + """Wrap to (−π, π].""" + return (angle + math.pi) % (2.0 * math.pi) - math.pi + + +def _circular_mean_deg(angles_rad: np.ndarray, + weights: np.ndarray) -> Tuple[float, float, float]: + """Returns mean_deg, circular_variance, circular_std_deg.""" + w = np.clip(weights, 0, None) + if w.sum() < 1e-15: + w = np.ones_like(w) + s, c = np.sum(w * np.sin(angles_rad)), np.sum(w * np.cos(angles_rad)) + mean = math.atan2(s, c) + R = math.sqrt(s*s + c*c) / w.sum() + R = float(np.clip(R, 0, 1)) + c_var = 1.0 - R + c_std = math.sqrt(max(0.0, -2.0 * math.log(max(R, 1e-15)))) + return math.degrees(mean), c_var, math.degrees(c_std) + + +# ────────────────────────────────────────────────────────────── +# Core estimator (generic — works for any revolute joint) +# ────────────────────────────────────────────────────────────── + +def estimate_revolute_angle( + fk: RobotFK, + observed_mm: Dict[int, np.ndarray], + link_name: str, + known_state: Dict[str, float], + min_baseline_mm: float = 15.0, + verbose: bool = True, +) -> dict: + """ + Estimate the revolute joint angle for `link_name`. + + Parameters + ---------- + fk : RobotFK + observed_mm : world marker positions from step 3 + link_name : e.g. "Arm1", "Ellbow", "Arm2" + known_state : already-estimated joint values (e.g. {"x": 180.0, "y": 86.0}) + The target joint variable should NOT be in this dict. + min_baseline_mm : skip pairs with model or observed baseline shorter than this + verbose : print report + + Returns + ------- + dict with estimation results + updated accumulated_state + """ + + # ── sanity checks ───────────────────────────────────────── + links = fk.links + if link_name not in links: + return {"status": "failed", + "reason": f"Link '{link_name}' not in robot.json"} + + ji = links[link_name].get("jointToParent", {}) or {} + jtype = str(ji.get("type", "")).lower() + if jtype != "revolute": + return {"status": "failed", + "reason": f"Joint of '{link_name}' is not revolute (type='{jtype}')"} + + var = str(ji.get("variable", "")).lower() + + # ── FK: joint origin and axis in world ─────────────────── + # Use known_state with the TARGET joint at 0 + zero_state = dict(known_state) + zero_state[var] = 0.0 + + origin_world = fk.joint_origin_world(link_name, zero_state) + axis_world = fk.joint_axis_world(link_name, zero_state) + + # ── collect matched markers ─────────────────────────────── + model_local: Dict[int, np.ndarray] = {} + for m in links[link_name].get("markers", []): + mid = int(m.get("id", -1)) + if mid >= 0 and "position" in m: + model_local[mid] = np.array(m["position"], dtype=float) + + matched = {mid: (model_local[mid], observed_mm[mid]) + for mid in model_local if mid in observed_mm} + + if len(matched) < 2: + return { + "status": "failed", + "reason": (f"Need ≥2 matched markers, found {len(matched)}: " + f"{list(matched.keys())}. " + f"Model marker IDs: {list(model_local.keys())}"), + } + + # ── pairwise estimation ─────────────────────────────────── + ids = sorted(matched.keys()) + angle_rad_list: List[float] = [] + weight_list: List[float] = [] + per_pair: List[dict] = [] + + for id1, id2 in combinations(ids, 2): + l1, o1 = matched[id1] + l2, o2 = matched[id2] + + v_model = l2 - l1 # local frame, both in same link + v_obs = o2 - o1 # world frame + + v_model_perp = _project_perp(v_model, axis_world) + v_obs_perp = _project_perp(v_obs, axis_world) + + bl_model = float(np.linalg.norm(v_model_perp)) + bl_obs = float(np.linalg.norm(v_obs_perp)) + + if bl_model < min_baseline_mm or bl_obs < min_baseline_mm: + per_pair.append({ + "marker_ids": [id1, id2], + "skipped": True, + "reason": f"bl_model={bl_model:.1f} bl_obs={bl_obs:.1f} < {min_baseline_mm}", + }) + continue + + angle = _wrap(_signed_angle_rad(v_model_perp, v_obs_perp, axis_world)) + w = bl_model * bl_obs + + angle_rad_list.append(angle) + weight_list.append(w) + per_pair.append({ + "marker_ids": [id1, id2], + "skipped": False, + "angle_deg": math.degrees(angle), + "baseline_model_mm": bl_model, + "baseline_obs_mm": bl_obs, + "weight": w, + }) + + if not angle_rad_list: + return { + "status": "failed", + "reason": "All pairs below min_baseline_mm. " + "Try --min-baseline 5 or check step-3 output.", + } + + mean_deg, c_var, c_std_deg = _circular_mean_deg( + np.array(angle_rad_list), np.array(weight_list) + ) + + # ── verbose report ──────────────────────────────────────── + if verbose: + print(f"\n── 4b: '{link_name}' angle ({var}) ──────────────────────") + print(f" Joint origin (world): [{', '.join(f'{v:.1f}' for v in origin_world)}] mm") + print(f" Joint axis (world): [{', '.join(f'{v:.3f}' for v in axis_world)}]") + print(f" Matched markers: {list(matched.keys())}") + print(f" Pairs used: {len(angle_rad_list)} / {len(list(combinations(ids, 2)))}") + print(f" Angle: {mean_deg:+.2f} ° circular_σ {c_std_deg:.2f} °") + if c_std_deg > 5.0: + print(f" [WARN] high spread – step-3 errors or marker overlap") + print(f"\n Pair detail:") + for pp in per_pair: + if pp["skipped"]: + print(f" M{pp['marker_ids'][0]}↔M{pp['marker_ids'][1]}: SKIPPED – {pp['reason']}") + else: + print(f" M{pp['marker_ids'][0]}↔M{pp['marker_ids'][1]}: " + f"{pp['angle_deg']:+7.2f}° " + f"bl_model={pp['baseline_model_mm']:.1f} " + f"bl_obs={pp['baseline_obs_mm']:.1f}") + + # ── build accumulated state ─────────────────────────────── + accumulated = dict(known_state) + accumulated[var] = mean_deg + + return { + "status": "ok", + "link": link_name, + "joint": var, + "joint_origin_world_mm": origin_world.tolist(), + "joint_axis_world": axis_world.tolist(), + "mean_angle_deg": mean_deg, + "circular_variance": c_var, + "circular_std_deg": c_std_deg, + "num_pairs_used": len(angle_rad_list), + "num_markers_matched": len(matched), + "per_pair": per_pair, + "accumulated_state": accumulated, + } + + +# ────────────────────────────────────────────────────────────── +# CLI +# ────────────────────────────────────────────────────────────── + +def main() -> int: + p = argparse.ArgumentParser( + description="4b: estimate revolute joint angle for any link") + p.add_argument("--robot", type=Path, default=Path("robot.json")) + p.add_argument("--aruco", type=Path, + default=Path("aruco_positions_optimized.json")) + p.add_argument("--link", type=str, required=True, + help="Link name, e.g. Arm1, Ellbow, Arm2") + p.add_argument("--from-state", type=Path, default=None, + help="JSON from a previous 4b run (carries accumulated state)") + + # Manual joint-value overrides (for use without --from-state) + for k in STATE_KEYS: + p.add_argument(f"--{k}-mm" if k in ("x", "e") else f"--{k}-deg", + type=float, default=None, + help=f"Known value for joint '{k}'" + + (" (mm)" if k in ("x", "e") else " (deg)")) + + p.add_argument("--min-baseline", type=float, default=15.0, + help="Skip pairs with perpendicular baseline < this (mm)") + p.add_argument("--output", type=Path, default=None, + help="Save result JSON (readable by next 4b as --from-state)") + args = p.parse_args() + + # Assemble known state + if args.from_state: + known_state = _load_state(args.from_state) + print(f" Loaded state from {args.from_state}: {known_state}") + else: + known_state = {} + + # CLI overrides + for k in STATE_KEYS: + attr = f"{k}_mm" if k in ("x", "e") else f"{k}_deg" + v = getattr(args, attr, None) + if v is not None: + known_state[k] = float(v) + + fk = RobotFK.from_file(args.robot) + aruco_json = _load_json(args.aruco) + observed_mm = _load_observed_mm(aruco_json) + + result = estimate_revolute_angle( + fk = fk, + observed_mm = observed_mm, + link_name = args.link, + known_state = known_state, + min_baseline_mm = args.min_baseline, + verbose = True, + ) + + if args.output and result["status"] == "ok": + args.output.parent.mkdir(parents=True, exist_ok=True) + with args.output.open("w", encoding="utf-8") as f: + json.dump(result, f, indent=2) + print(f"\n Saved → {args.output}") + + return 0 if result["status"] == "ok" else 1 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/pipeline/4_v8_4d_direct_hand_pose.py b/pipeline/4_v8_4d_direct_hand_pose.py new file mode 100644 index 0000000..81e436d --- /dev/null +++ b/pipeline/4_v8_4d_direct_hand_pose.py @@ -0,0 +1,464 @@ +#!/usr/bin/env python3 +""" +4d_direct_hand_pose.py +---------------------- +Estimate Hand/Palm/Finger joint angles (b, c, e) directly from ArUco +marker observations — WITHOUT relying on step-3 triangulated positions. + +Why this is needed +------------------ +Step 3 triangulates marker centres from multiple cameras. For markers +far above the board (arm extended in Z), the depth estimation from +triangulation degrades: all reference Board markers lie in a flat plane, +so the cameras are poorly conditioned for Z estimation of out-of-plane points. + +This script takes a completely different route: + + 1. For each camera that sees a finger or hand marker, run cv2.solvePnP + on the four detected corners. solvePnP uses the apparent size / + aspect ratio of the marker to recover depth — it is NOT affected + by the flat-board reference plane problem. + + 2. Use the known camera-in-world pose (from step 2) to convert the + per-camera marker pose to world frame. + + 3. Fuse all world-frame marker poses with quality weighting. + + 4. Given world-frame positions for all visible finger markers, and the + known local positions in the FingerA/FingerB frames, solve a small + nonlinear LS problem for (b, c, e) using scipy. + +What you need +------------- + - robot.json + - Step-2 camera-pose JSONs for all cameras + - Step-1 aruco-detection JSONs for all cameras + - Already-estimated x, y, z, a from 4a/4b (pass via --state-json or CLI) + +Usage +----- + python 4d_direct_hand_pose.py \\ + --robot robot.json \\ + --det cam1_aruco_detection.json cam2_aruco_detection.json ... \\ + --pose cam1_camera_pose.json cam2_camera_pose.json ... \\ + --state 4b_arm2_result.json \\ + --output 4d_result.json + +Output +------ + { + "b_deg": ..., "c_deg": ..., "e_mm": ..., + "rms_mm": ..., + "accumulated_state": {"x":..., "y":..., "z":..., "a":..., "b":..., "c":..., "e":...} + } +""" + +from __future__ import annotations + +import argparse +import json +import math +from pathlib import Path +from typing import Any, Dict, List, Optional, Sequence, Tuple + +import cv2 +import numpy as np + +try: + from scipy.optimize import least_squares + _HAS_SCIPY = True +except ImportError: + _HAS_SCIPY = False + +from robot_fk import RobotFK, STATE_KEYS + + +# ────────────────────────────────────────────────────────────── +# I/O +# ────────────────────────────────────────────────────────────── + +def _load(path: Path) -> dict: + with path.open("r", encoding="utf-8") as f: + return json.load(f) + + +def _load_state(path: Path) -> Dict[str, float]: + raw = _load(path) + state = raw.get("accumulated_state", raw.get("state", {})) + return {k: float(v) for k, v in state.items() if k in STATE_KEYS} + + +# ────────────────────────────────────────────────────────────── +# ArUco / PnP helpers +# ────────────────────────────────────────────────────────────── + +def _marker_local_corners(size_m: float) -> np.ndarray: + """Four local corners of a marker (same order as OpenCV ArUco).""" + h = size_m / 2.0 + return np.array([[-h, h, 0], [h, h, 0], [h, -h, 0], [-h, -h, 0]], dtype=np.float32) + + +def _camera_pose_from_json(pose_json: dict) -> Tuple[np.ndarray, np.ndarray]: + """ + Load world-to-camera rotation and translation from step-2 JSON. + Returns rvec (3,), tvec (3,) — the same convention used in step 2. + """ + wtc = pose_json["camera_pose"]["world_to_camera"] + R = np.array(wtc["rotation_matrix"], dtype=np.float32).reshape(3, 3) + t = np.array(wtc["translation_m"], dtype=np.float32).reshape(3) + rvec, _ = cv2.Rodrigues(R) + return rvec.reshape(3), t + + +def _intrinsics_from_detection(det: dict) -> Tuple[np.ndarray, np.ndarray]: + cam = det["camera"] + K = np.array(cam["camera_matrix"], dtype=np.float32).reshape(3, 3) + D = np.array(cam["distortion_coefficients"], dtype=np.float32).reshape(-1, 1) + return K, D + + +def _solve_marker_pose_in_camera( + corners_px: np.ndarray, + marker_size_m: float, + K: np.ndarray, + D: np.ndarray +) -> Optional[Tuple[np.ndarray, np.ndarray]]: + """ + Estimate marker-in-camera pose via solvePnP (IPPE_SQUARE). + Returns (rvec_cm, tvec_cm) or None on failure. + """ + obj = _marker_local_corners(marker_size_m) + img = corners_px.astype(np.float32) + ok, rvec, tvec = cv2.solvePnP(obj, img, K, D, flags=cv2.SOLVEPNP_IPPE_SQUARE) + if not ok: + ok, rvec, tvec = cv2.solvePnP(obj, img, K, D, flags=cv2.SOLVEPNP_ITERATIVE) + if not ok: + return None + return rvec.reshape(3), tvec.reshape(3) + + +def _marker_world_pose( + rvec_cm: np.ndarray, + tvec_cm: np.ndarray, + rvec_wc: np.ndarray, + tvec_wc: np.ndarray +) -> Tuple[np.ndarray, np.ndarray]: + """ + Convert marker-in-camera pose to marker-in-world pose. + + Convention (same as step 2): + X_cam = R_wc @ X_world + t_wc + So: + R_wc = rvec→R(rvec_wc), camera origin in world = -R_wc^T @ t_wc + + Marker pose in world: + R_mw = R_wc^T @ R_cm (world_to_marker rotation) + t_mw = R_wc^T @ (tvec_cm - tvec_wc) + → marker centre in world = -R_mw^T @ t_mw = R_mw^T @ (-t_mw) + + We return (pos_world_m, R_marker_in_world) where + R_marker_in_world maps local marker axes to world axes. + """ + R_wc, _ = cv2.Rodrigues(rvec_wc.reshape(3, 1)) + R_cm, _ = cv2.Rodrigues(rvec_cm.reshape(3, 1)) + + R_cw = R_wc.T # camera-to-world rotation + + # Marker centre in world frame + pos_w = R_cw @ tvec_cm.reshape(3) - R_cw @ tvec_wc.reshape(3) + + # Marker orientation in world frame (columns = marker x,y,z axes in world) + R_mw = R_cw @ R_cm + + return pos_w.astype(np.float64), R_mw.astype(np.float64) + + +# ────────────────────────────────────────────────────────────── +# Multi-camera marker pose fusion +# ────────────────────────────────────────────────────────────── + +def _observation_weight(corners_px: np.ndarray, img_w: int, img_h: int) -> float: + """ + Simple quality weight: larger markers, more central = higher weight. + """ + area = float(cv2.contourArea(corners_px.astype(np.float32))) + cx, cy = corners_px.mean(axis=0) + dx = abs(cx - img_w / 2.0) / (img_w / 2.0) + dy = abs(cy - img_h / 2.0) / (img_h / 2.0) + centrality = 1.0 - 0.5 * (dx + dy) + return max(0.05, (area / 500.0) * centrality) + + +def collect_marker_world_poses( + detection_files: List[Path], + pose_files: List[Path], + target_marker_ids: set, + marker_size_m: float, + verbose: bool = True, +) -> Dict[int, List[Dict[str, Any]]]: + """ + For each target marker, collect world-frame pose estimates from all cameras. + + Returns: marker_id → list of {pos_m, R, weight, camera_id} + """ + result: Dict[int, List[Dict[str, Any]]] = {} + + for det_path, pose_path in zip(detection_files, pose_files): + det = _load(det_path) + pose_json = _load(pose_path) + + K, D = _intrinsics_from_detection(det) + rvec_wc, tvec_wc = _camera_pose_from_json(pose_json) + + cam_id = det.get("camera", {}).get("camera_id", str(det_path)) + img_w = int(det.get("image", {}).get("width_px", 1280)) + img_h = int(det.get("image", {}).get("height_px", 720)) + + for d in det.get("detections", []): + mid = int(d.get("marker_id", -1)) + if mid not in target_marker_ids: + continue + corners = np.array(d.get("image_points_px", []), dtype=np.float32).reshape(4, 2) + if corners.shape != (4, 2): + continue + + pnp = _solve_marker_pose_in_camera(corners, marker_size_m, K, D) + if pnp is None: + continue + rvec_cm, tvec_cm = pnp + + pos_w, R_w = _marker_world_pose(rvec_cm, tvec_cm, rvec_wc, tvec_wc) + w = _observation_weight(corners, img_w, img_h) + + result.setdefault(mid, []).append({ + "pos_m": pos_w, + "R": R_w, + "weight": w, + "camera_id": cam_id, + }) + + if verbose: + for mid, obs in result.items(): + print(f" M{mid}: {len(obs)} camera(s) — weights " + f"{[f'{o[\"weight\"]:.2f}' for o in obs]}") + + return result + + +def fuse_marker_positions( + observations: Dict[int, List[Dict[str, Any]]] +) -> Dict[int, np.ndarray]: + """ + Weighted-mean fusion of world-frame marker centre positions (metres). + """ + result: Dict[int, np.ndarray] = {} + for mid, obs_list in observations.items(): + total_w = sum(o["weight"] for o in obs_list) + if total_w < 1e-12: + continue + pos = sum(o["pos_m"] * o["weight"] for o in obs_list) / total_w + result[mid] = pos.astype(np.float64) + return result + + +# ────────────────────────────────────────────────────────────── +# FK-based optimizer for b, c, e +# ────────────────────────────────────────────────────────────── + +def _fk_finger_positions( + fk: RobotFK, + base_state: Dict[str, float], + b: float, + c: float, + e: float +) -> Dict[int, np.ndarray]: + """ + Compute world positions (m) of all FingerA and FingerB markers. + base_state already contains x, y, z, a. + """ + state = dict(base_state) + state.update({"b": b, "c": c, "e": e}) + transforms = fk.compute(state) + result = {} + for link_name in ("FingerA", "FingerB", "Hand", "Palm"): + if link_name not in fk.links: + continue + for m in fk.links[link_name].get("markers", []): + mid = int(m.get("id", -1)) + if mid < 0 or "position" not in m: + continue + # position in METRES + local_mm = np.array(m["position"], dtype=float) + world_m = fk.marker_world(transforms, link_name, local_mm) / 1000.0 + result[mid] = world_m + return result + + +def optimize_bce( + fk: RobotFK, + base_state: Dict[str, float], + observed_m: Dict[int, np.ndarray], + b_init: float = 0.0, + c_init: float = 0.0, + e_init: float = 0.0, + verbose: bool = True, +) -> dict: + """ + Find (b, c, e) minimising reprojection of FK finger-marker positions + to observed world positions. + + Parameters + ---------- + fk : RobotFK + base_state : already-estimated {x, y, z, a} (all in mm/deg) + observed_m : {marker_id: world_position_m} + """ + + if not _HAS_SCIPY: + return {"status": "failed", "reason": "scipy not available (pip install scipy)"} + + def residuals(p): + b, c, e = float(p[0]), float(p[1]), float(p[2]) + fk_pos = _fk_finger_positions(fk, base_state, b, c, e) + r = [] + for mid, obs_p in observed_m.items(): + if mid in fk_pos: + diff = fk_pos[mid] - obs_p + r.extend(diff.tolist()) + return r + + # Initial residual + r0 = residuals([b_init, c_init, e_init]) + if len(r0) < 3: + return { + "status": "failed", + "reason": f"Only {len(r0)//3} finger markers matched. Need ≥1.", + } + + res = least_squares( + residuals, + x0=[b_init, c_init, e_init], + method="lm", + max_nfev=2000, + ) + + b_est, c_est, e_est = float(res.x[0]), float(res.x[1]), float(res.x[2]) + + rms_m = float(np.sqrt(np.mean(np.array(res.fun) ** 2))) + rms_mm = rms_m * 1000.0 + + accum = dict(base_state) + accum.update({"b": b_est, "c": c_est, "e": e_est}) + + if verbose: + print(f"\n── 4d: Hand/Palm/Finger (b, c, e) ──────────────────────") + print(f" Markers used: {len(observed_m)} fused positions") + print(f" b = {b_est:+.2f} ° c = {c_est:+.2f} ° e = {e_est:+.2f} mm") + print(f" RMS position error: {rms_mm:.2f} mm") + if not res.success: + print(f" [WARN] Optimizer: {res.message}") + + return { + "status": "ok", + "b_deg": b_est, + "c_deg": c_est, + "e_mm": e_est, + "rms_mm": rms_mm, + "optimizer_success": bool(res.success), + "num_markers": len(observed_m), + "accumulated_state": accum, + } + + +# ────────────────────────────────────────────────────────────── +# Main +# ────────────────────────────────────────────────────────────── + +def main() -> int: + p = argparse.ArgumentParser( + description="4d: Direct hand/finger pose from per-camera solvePnP") + p.add_argument("--robot", type=Path, required=True) + p.add_argument("--det", "-d", type=Path, nargs="+", required=True, + help="*_aruco_detection.json files (one per camera)") + p.add_argument("--pose", "-p", type=Path, nargs="+", required=True, + help="*_camera_pose.json files (same order as --det)") + p.add_argument("--state", type=Path, default=None, + help="JSON from previous 4b step (accumulated_state)") + for k in ("x", "y", "z", "a"): + p.add_argument(f"--{k}", type=float, default=None, + help=f"Known {k} value (overrides --state)") + p.add_argument("--b-init", type=float, default=0.0) + p.add_argument("--c-init", type=float, default=0.0) + p.add_argument("--e-init", type=float, default=0.0) + p.add_argument("--output", type=Path, default=None) + args = p.parse_args() + + if len(args.det) != len(args.pose): + print("[ERROR] --det and --pose must have the same number of files") + return 1 + + # Base state from file or CLI + base_state: Dict[str, float] = {} + if args.state: + base_state = _load_state(args.state) + print(f" Loaded state: {base_state}") + for k in ("x", "y", "z", "a"): + v = getattr(args, k, None) + if v is not None: + base_state[k] = float(v) + + # Load FK + fk = RobotFK.from_file(args.robot) + + # Which markers belong to Hand/Palm/FingerA/FingerB? + target_ids: set = set() + for link_name in ("Hand", "Palm", "FingerA", "FingerB"): + for m in fk.links.get(link_name, {}).get("markers", []): + mid = int(m.get("id", -1)) + if mid >= 0: + target_ids.add(mid) + + marker_size_m = float( + fk.robot.get("vision_config", {}).get("MarkerSize", 0.025) + ) + + print(f"\n Target marker IDs: {sorted(target_ids)}") + print(f" Marker size: {marker_size_m*1000:.1f} mm") + print(f" Cameras: {len(args.det)}") + + # Collect world-frame poses from all cameras via solvePnP + print("\n Per-camera solvePnP:") + world_pose_obs = collect_marker_world_poses( + args.det, args.pose, target_ids, marker_size_m, verbose=True + ) + + if not world_pose_obs: + print("[ERROR] No target markers found in any detection file.") + return 1 + + # Fuse positions + observed_m = fuse_marker_positions(world_pose_obs) + print(f"\n Fused {len(observed_m)} marker world positions") + + # Optimise b, c, e + result = optimize_bce( + fk = fk, + base_state = base_state, + observed_m = observed_m, + b_init = args.b_init, + c_init = args.c_init, + e_init = args.e_init, + verbose = True, + ) + + if args.output and result["status"] == "ok": + args.output.parent.mkdir(parents=True, exist_ok=True) + with args.output.open("w", encoding="utf-8") as f: + json.dump(result, f, indent=2) + print(f"\n Saved → {args.output}") + + return 0 if result["status"] == "ok" else 1 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/pipeline/__pycache__/3_multiview_bundle_adjustment_v4.cpython-311.pyc b/pipeline/__pycache__/3_multiview_bundle_adjustment_v4.cpython-311.pyc new file mode 100644 index 0000000..7d7478a Binary files /dev/null and b/pipeline/__pycache__/3_multiview_bundle_adjustment_v4.cpython-311.pyc differ diff --git a/pipeline/__pycache__/robot_fk.cpython-311.pyc b/pipeline/__pycache__/robot_fk.cpython-311.pyc new file mode 100644 index 0000000..c47a056 Binary files /dev/null and b/pipeline/__pycache__/robot_fk.cpython-311.pyc differ diff --git a/pipeline/robot_fk.py b/pipeline/robot_fk.py new file mode 100644 index 0000000..2f9a376 --- /dev/null +++ b/pipeline/robot_fk.py @@ -0,0 +1,310 @@ +#!/usr/bin/env python3 +""" +robot_fk.py +----------- +Minimal forward kinematics engine for the robot.json format. + +Matches the Blender hierarchy used by render_robot.py exactly: + world_T_link = world_T_parent + @ Translate(mountPosition) @ Rotate_xyz(mountRotation) + @ Translate(jointOrigin) @ Rotate_xyz(joint.rotation) + @ T_motion + + T_motion = Rotate(axis, value_deg) for revolute joints + Translate(axis * value_mm) for linear joints + +Units throughout: millimetres, degrees. + +Public API +---------- +fk = RobotFK.from_file("robot.json") + +transforms = fk.compute({"x": 180, "y": 86, "z": -120, + "a": -60, "b": 22, "c": 91, "e": 10}) +# → dict link_name -> 4×4 np.ndarray (world frame, mm) + +p_world = fk.marker_world(transforms, "Arm1", [0, -160, 35]) +# → np.ndarray shape (3,), in mm + +all_m = fk.all_markers_world(transforms) +# → dict marker_id -> {"world_mm", "link", "local_mm"} + +# Cumulative x-offset for a link at all-zero state +# (useful for 4a: x_slider = world_x - local_x - link_x_at_zero) +x0 = fk.link_x_at_zero_state("Arm1") # → float mm +""" + +from __future__ import annotations + +import json +import math +from pathlib import Path +from typing import Any, Dict, List, Optional, Sequence, Tuple + +import numpy as np + +STATE_KEYS = ("x", "y", "z", "a", "b", "c", "e") + + +# ────────────────────────────────────────────────────────────── +# Low-level matrix helpers +# ────────────────────────────────────────────────────────────── + +def _rot_axis_angle(axis: Sequence[float], angle_deg: float) -> np.ndarray: + """3×3 rotation matrix via Rodrigues (axis need not be normalised).""" + ax = np.asarray(axis, dtype=float) + n = float(np.linalg.norm(ax)) + if n < 1e-12: + return np.eye(3) + ax = ax / n + c = math.cos(math.radians(angle_deg)) + s = math.sin(math.radians(angle_deg)) + t = 1.0 - c + x, y, z = ax + return np.array([ + [t*x*x + c, t*x*y - s*z, t*x*z + s*y], + [t*x*y + s*z, t*y*y + c, t*y*z - s*x], + [t*x*z - s*y, t*y*z + s*x, t*z*z + c ], + ]) + + +def _rot_xyz_euler(rx: float, ry: float, rz: float) -> np.ndarray: + """XYZ Euler angles (degrees) → 3×3 — matches Blender XYZ Euler mode.""" + return (_rot_axis_angle([0, 0, 1], rz) + @ _rot_axis_angle([0, 1, 0], ry) + @ _rot_axis_angle([1, 0, 0], rx)) + + +def make_T(R: np.ndarray, t: Sequence[float]) -> np.ndarray: + """4×4 homogeneous transform.""" + T = np.eye(4) + T[:3, :3] = R + T[:3, 3] = np.asarray(t, dtype=float) + return T + + +def transform_point(T: np.ndarray, p: Sequence[float]) -> np.ndarray: + """Apply 4×4 transform to a 3-D point.""" + h = np.array([p[0], p[1], p[2], 1.0]) + return (T @ h)[:3] + + +# ────────────────────────────────────────────────────────────── +# FK engine +# ────────────────────────────────────────────────────────────── + +class RobotFK: + """Forward kinematics for the robot.json format.""" + + def __init__(self, robot_data: Dict[str, Any]): + self.robot = robot_data + self.links: Dict[str, Any] = robot_data.get("links", {}) + self._topo: List[str] = self._topological_sort() + + # ── construction ───────────────────────────────────────── + + @classmethod + def from_file(cls, path) -> "RobotFK": + with open(path, "r", encoding="utf-8") as f: + return cls(json.load(f)) + + def _topological_sort(self) -> List[str]: + parent_map = {n: d.get("parent") for n, d in self.links.items()} + visited, order = set(), [] + + def visit(name: str) -> None: + if name in visited: + return + visited.add(name) + p = parent_map.get(name) + if p and p in self.links: + visit(p) + order.append(name) + + for name in self.links: + visit(name) + return order + + # ── core computation ────────────────────────────────────── + + def compute(self, joint_values: Dict[str, float]) -> Dict[str, np.ndarray]: + """ + Compute link world transforms for the given joint state. + + Parameters + ---------- + joint_values : dict variable_name -> value + Linear joints (x, e): mm + Revolute joints (y, z, a, b, c): degrees + + Returns + ------- + dict link_name -> 4×4 np.ndarray (world frame, mm) + """ + state = {k: 0.0 for k in STATE_KEYS} + for k, v in joint_values.items(): + if k in state: + state[k] = float(v) + + transforms: Dict[str, np.ndarray] = {} + + for link_name in self._topo: + d = self.links[link_name] + parent = d.get("parent") + T_parent = transforms.get(parent, np.eye(4)) if parent else np.eye(4) + + # 1 · Mount (static in parent frame) + mp = d.get("mountPosition", [0, 0, 0]) + mr = d.get("mountRotation", [0, 0, 0]) + T_m = make_T(_rot_xyz_euler(*mr), mp) + + # 2 · Joint origin (pivot point in mount frame) + ji = d.get("jointToParent", {}) or {} + jp = ji.get("origin", [0, 0, 0]) + jr = ji.get("rotation", [0, 0, 0]) + T_j = make_T(_rot_xyz_euler(*jr), jp) + + # 3 · Motion + jtype = str(ji.get("type", "fixed")).lower() + var = str(ji.get("variable", "")).lower() + axis = np.asarray(ji.get("axis", [1, 0, 0]), dtype=float) + val = state.get(var, 0.0) + + if jtype == "revolute": + T_mot = make_T(_rot_axis_angle(axis, val), [0, 0, 0]) + elif jtype == "linear": + n = float(np.linalg.norm(axis)) + u = axis / n if n > 1e-12 else np.array([1.0, 0, 0]) + T_mot = make_T(np.eye(3), u * val) + else: + T_mot = np.eye(4) + + transforms[link_name] = T_parent @ T_m @ T_j @ T_mot + + return transforms + + # ── marker helpers ──────────────────────────────────────── + + @staticmethod + def marker_world(transforms: Dict[str, np.ndarray], + link_name: str, + local_pos: Sequence[float]) -> np.ndarray: + """Transform a local marker position → world (mm).""" + return transform_point(transforms.get(link_name, np.eye(4)), local_pos) + + def all_markers_world(self, + transforms: Dict[str, np.ndarray] + ) -> Dict[int, Dict[str, Any]]: + """ + Returns + ------- + dict marker_id -> {world_mm, local_mm, link, normal_world} + """ + result: Dict[int, Dict[str, Any]] = {} + for lname, ldata in self.links.items(): + T = transforms.get(lname, np.eye(4)) + R = T[:3, :3] + for m in ldata.get("markers", []): + mid = int(m.get("id", -1)) + if mid < 0 or "position" not in m: + continue + loc = np.array(m["position"], dtype=float) + nor = np.array(m.get("normal", [0, 0, 1]), dtype=float) + result[mid] = { + "world_mm": transform_point(T, loc), + "local_mm": loc, + "link": lname, + "normal_world": (R @ nor) / max(np.linalg.norm(R @ nor), 1e-12), + } + return result + + # ── x-axis invariant helpers (used by 4a) ──────────────── + + def link_x_at_zero_state(self, link_name: str) -> float: + """ + Return the world x-coordinate of the link-frame origin + when ALL joint variables are zero. + + For any link reachable via only x-axis rotations (Arm1, Ellbow, Arm2), + this value is constant regardless of the actual revolute angles. + Adding the slider value x_mm gives the true link origin x: + link_origin_world_x = x_mm + link_x_at_zero_state(link_name) + + And for any marker in that link: + marker_world_x = x_mm + link_x_at_zero_state(link_name) + marker_local_x + """ + T = self.compute({k: 0.0 for k in STATE_KEYS}) + return float(T[link_name][0, 3]) + + def joint_origin_world(self, + link_name: str, + joint_state: Dict[str, float]) -> np.ndarray: + """ + World position of the pivot that link_name rotates / slides around. + """ + d = self.links[link_name] + parent = d.get("parent") + T_all = self.compute(joint_state) + T_parent = T_all.get(parent, np.eye(4)) if parent else np.eye(4) + + mp = d.get("mountPosition", [0, 0, 0]) + mr = d.get("mountRotation", [0, 0, 0]) + T_m = make_T(_rot_xyz_euler(*mr), mp) + + ji = d.get("jointToParent", {}) or {} + jp = ji.get("origin", [0, 0, 0]) + jr = ji.get("rotation", [0, 0, 0]) + T_j = make_T(_rot_xyz_euler(*jr), jp) + + return transform_point(T_parent @ T_m @ T_j, [0, 0, 0]) + + def joint_axis_world(self, + link_name: str, + joint_state: Dict[str, float]) -> np.ndarray: + """ + Joint axis of link_name expressed in world frame. + """ + d = self.links[link_name] + parent = d.get("parent") + T_all = self.compute(joint_state) + T_parent = T_all.get(parent, np.eye(4)) if parent else np.eye(4) + + mp = d.get("mountPosition", [0, 0, 0]) + mr = d.get("mountRotation", [0, 0, 0]) + T_m = make_T(_rot_xyz_euler(*mr), mp) + + ji = d.get("jointToParent", {}) or {} + jp = ji.get("origin", [0, 0, 0]) + jr = ji.get("rotation", [0, 0, 0]) + T_j = make_T(_rot_xyz_euler(*jr), jp) + + R_to_pivot = (T_parent @ T_m @ T_j)[:3, :3] + axis_local = np.asarray(ji.get("axis", [1, 0, 0]), dtype=float) + world = R_to_pivot @ axis_local + n = float(np.linalg.norm(world)) + return world / n if n > 1e-12 else world + + # ── utility ─────────────────────────────────────────────── + + def chain(self, link_name: str) -> List[str]: + """Return chain from root to link_name (inclusive).""" + out, cur = [], link_name + while cur: + out.append(cur) + cur = self.links.get(cur, {}).get("parent") + return list(reversed(out)) + + def board_marker_world_positions(self, length_scale: float = 1.0) -> Dict[int, np.ndarray]: + """ + Return known world positions for all Board markers (in mm). + Board is the root, so its marker positions ARE world positions. + length_scale: 1/1000 if robot.json uses mm. + """ + board = self.links.get("Board", {}) + result: Dict[int, np.ndarray] = {} + for m in board.get("markers", []): + mid = int(m.get("id", -1)) + if mid >= 0 and "position" in m: + p = np.array(m["position"], dtype=float) * length_scale + result[mid] = p + return result diff --git a/robot_viewer.html b/robot_viewer.html new file mode 100644 index 0000000..6837d94 --- /dev/null +++ b/robot_viewer.html @@ -0,0 +1,751 @@ + + +
+ +