ToolAssay

Solves the hand-eye problem

Solves the hand-eye problem: given a series of gripper-to-base poses read from the robot and the matching target-to-camera poses seen by the camera, it recovers the rigid transform between camera and gripper that stays constant as the arm moves. This is what lets a robot act on what its camera sees. The poses must be genuinely synchronized — a pairing that is off by one sample produces a confident and entirely wrong transform, and nothing in the data reveals it.

Answeringour last check, 2026-10-25
1 of 1checks answered this week
1222 msmedian answer time
$0.003listed price per call
$0.003price it asked us

Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.

Endpoint

POST https://medien.halowerk.com/v1/oss-opencv-robot-hand-eye-calibrate

CategoryEverything else
Provider hostmedien.halowerk.com
Networkseip155:8453
Payment schemesexact
Self-reported calls, 30 days0 from 0 payers (the provider's figure, not ours)

Our checks, last 30 days

DayResultHTTPAskedTime
2026-10-25 valid payment request 402$0.003 1222 ms

Example input (from the provider)

{
  "body": {
    "gripper_to_base": [
      [
        [
          0.9883261643209938,
          -0.011898272648401948,
          0.15188753742995567,
          -0.1
        ],
        [
          0.02965868306845241,
          0.9928985120353282,
          -0.11520810438800028,
          -0.08
        ],
        [
          -0.14943813247359922,
          0.11836796824316773,
          0.981660465057439,
          0.9
        ],
        [
          0,
          0,
          0,
          1
        ]
      ],
      [
        [
          0.9900332889206209,
          0.07810864350797697,
          0.11718842365337251,
          -0.08
        ],
        [
          -0.09933466539753062,
          0.9771504070221839,
          0.18790877123418434,
          -0.06
        ],
        [
          -0.09983341664682815,
          -0.19767681165408388,
          0.975170327201816,
          1.1
        ],
        [
          0,
          0,
          0,
          1
        ]
      ],
      [
        [
          0.9838313410528056,
          -0.13931586755647624,
          -0.11254768504604905,
          -0.12
        ],
        [
          0.0987123949919223,
          0.9461549437949042,
          -0.30829642457774376,
          -0.07
        ],
        [
          0.14943813247359922,
          0.29220183329241467,
          0.9446090901443596,
          1
        ],
        [
          0,
          0,
          0,
          1
        ]
      ],
      [
        [
          0.9446090901443596,
          0.1778630716306493,
          -0.27582312188566716,
          -0.07
        ],
        [
          -0.14276370081881548,
          0.9794224989256464,
          0.1426537567916039,
          -0.1
        ],
        [
          0.29552020666133955,
          -0.09537450575679464,
          0.9505637859220634,
          0.8
        ],
        [
          0,
          0,
          0,
          1
        ]
      ],
      [
        [
          0.9519758849404707,
          -0.1430411600614064,
          0.27070489655729324,
          -0.12
        ],
        [
          0.19297506543968274,
          0.9667501975957967,
          -0.1677935623527856,
          -0.06
        ],
        [
          -0.23770262642713458,
          0.21197472013609336,
          0.9479262520960516,
          1.2
        ],
        [
          0,
          0,
          0,
          1
        ]
      ],
      [
        [
          0.9684764438206882,
          -0.09024418993859348,
          0.23218390113606152,
          -0.1
        ],
        [
          0.029063012741622204,
          0.966640457675885,
          0.2544829402426335,
          -0.09
        ],
        [
          -0.24740395925452294,
          -0.2397127693021015,
          0.9387912809451863,
          0.95
        ],
        [
          0,
          0,
          0,
          1
        ]
      ]
    ],
    "target_to_camera": [
      [
        [
          0.9063237102581435,
          0.33288469091973355,
          0.26031733475738106,
          0.5204232013800494
        ],
        [
          -0.3848000025265721,
          0.9047162386004,
          0.1828045012254741,
          -0.09917100092930925
        ],
        [
          -0.17466050005500083,
          -0.26585016487491175,
          0.9480598080060768,
          0.25671815524783104
        ],
        [
          0,
          0,
          0,
          1
        ]
      ],
      [
        [
          0.9222283210537701,
          0.25507749811785274,
          0.2905690861056643,
          0.5125007539727658
        ],
        [
          -0.2343748946366054,
          0.9665051811763983,
          -0.10457601791643052,
          -0.18699677147137095
        ],
        [
          -0.3075115162240664,
          0.02834086648488894,
          0.9511222122716204,
          0.008701358136651516
        ],
        [
          0,
          0,
          0,
          1
        ]
      ],
      [
        [
          0.7565350674425667,
          0.3826417258073084,
          0.5303206590364696,
          0.5596770183022365
        ],
        [
          -0.5750082882699702,
          0.7754833106415053,
          0.2607510370781477,
          -0.22671957263743936
        ],
        [
          -0.31148059353755847,
          -0.5022060778083985,
          0.8067024824938839,
          0.032405134859663565
        ],
        [
          0,
          0,
          0,
          1
        ]
      ],
      [
        [
          0.7271227394292543,
          0.22383053900494349,
          0.6489933833358035,
          0.6217218064125126
        ],
        [
          -0.24008323494454095,
          0.9685694851402569,
          -0.0650629906606059,
          -0.10884376766944985
        ],
        [
          -0.6431582714258297,
          -0.1085036509242624,
          0.7580068572464532,
          0.04431792492295017
        ],
        [
          0,
          0,
          0,
          1
        ]
      ],
      [
        [
          0.8732504913062019,
          0.4636150448634498,
          0.14998223097999983,
          0.49446971179787524
        ],
        [
          -0.4872295048277384,
          0.834827570239529,
          0.25626224379194174,
          -0.2805429704181118
        ],
        [
          -0.0064022698157275865,
          -0.2968568984278877,
          0.9549005146071401,
          0.08983366223433209
        ],
        [
          0,
          0,
          0,
          1
        ]
      ],
      [
        [
          0.9229723671601914,
          0.36672150886044824,
          0.11677904091843325,
          0.4715357954702587
        ],
        [
          -0.3459078789556262,
          0.9234607788801362,
          -0.1660359272763343,
          -0.23292273219008508
        ],
        [
          -0.16872980985923255,
          0.11285178248130816,
          0.979180640359918,
          0.24271464454929048
        ],
        [
          0,
          0,
          0,
          1
        ]
      ]
    ]
  },
  "bodyType": "json",
  "method": "POST",
  "type": "http"
}

Promised output schema (from the provider)

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "body": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "additionalProperties": false,
          "description": "Numeric JSON arrays only. Additionally enforce equal paired dimensions, nondegenerate geometry, maximum 32768 pixels/image, 131072 scalars/array, and 1048576 encoded bytes. No paths or network resources.",
          "properties": {
            "gripper_to_base": {
              "items": {
                "items": {
                  "items": {
                    "maximum": 1000000000,
                    "minimum": -1000000000,
                    "type": "number"
                  },
                  "maxItems": 4,
                  "minItems": 4,
                  "type": "array"
                },
                "maxItems": 4,
                "minItems": 4,
                "type": "array"
              },
              "maxItems": 32,
              "minItems": 3,
              "type": "array"
            },
            "target_to_camera": {
              "items": {
                "items": {
                  "items": {
                    "maximum": 1000000000,
                    "minimum": -1000000000,
                    "type": "number"
                  },
                  "maxItems": 4,
                  "minItems": 4,
                  "type": "array"
                },
                "maxItems": 4,
                "minItems": 4,
                "type": "array"
              },
              "maxItems": 32,
              "minItems": 3,
              "type": "array"
            }
          },
          "required": [
            "gripper_to_base",
            "target_to_camera"
          ],
          "type": "object"
        },
        "bodyType": {
          "enum": [
            "json",
            "form-data",
            "text"
          ],
          "type": "string"
        },
        "method": {
          "enum": [
            "POST",
            "PUT",
            "PATCH"
          ],
          "type": "string"
        },
        "type": {
          "const": "http",
          "type": "string"
        }
      },
      "required": [
        "type",
        "method",
        "bodyType",
        "body"
      ],
      "type": "object"
    },
    "output": {
      "properties": {
        "example": {
          "additionalProperties": false,
          "properties": {
            "operation": {
              "const": "robot-hand-eye-calibrate"
            },
            "result": {
              "additionalProperties": false,
              "properties": {
                "camera_to_gripper": {
                  "items": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 4,
                    "minItems": 4,
                    "type": "array"
                  },
                  "maxItems": 4,
                  "minItems": 4,
                  "type": "array"
                },
                "pose_count": {
                  "maximum": 32,
                  "minimum": 3,
                  "type": "integer"
                },
                "warnings": {
                  "items": {
                    "maxLength": 1024,
                    "type": "string"
                  },
                  "maxItems": 8,
                  "minItems": 1,
                  "type": "array"
                }
              },
              "required": [
                "camera_to_gripper",
                "pose_count",
                "warnings"
              ],
              "type": "object"
            },
            "runtime_ms": {
              "minimum": 0,
              "type": "number"
            },
            "upstream": {
              "additionalProperties": false,
              "properties": {
                "binary_sha256": {
                  "const": "1fd4eb220f9986baa0ea0492cbcbedf85b868e792cbcac5f69e10d067a2f956c"
                },
                "components": {
                  "const": [
                    "calibrateHandEye"
                  ]
                },
                "numpy_version": {
                  "const": "2.5.0"
                },
                "package_version": {
                  "const": "4.13.0.92"
                },
                "project": {
                  "const": "OpenCV"
                },
                "version": {
                  "const": "4.13.0"
                }
              },
              "required": [
                "project",
                "version",
                "package_version",
                "binary_sha256",
                "numpy_version",
                "components"
              ],
              "type": "object"
            }
          },
          "required": [
            "operation",
            "result",
            "upstream",
            "runtime_ms"
          ],
          "type": "object"
        },
        "type": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    }
  },
  "required": [
    "input"
  ],
  "type": "object"
}

This page as JSON