# RQM Sensor Frame Normalization

> RQM Sensor Frame Normalization is a paid API for AI agents from jobs.rqmtechnologies.com, paid per call via x402, $0.01/call, status unknown (last checked 2026-09-14).

Converts bounded sensor observations from their native coordinate frames into a specified target frame and unit convention using an explicit frame graph.

## Facts

- Endpoint: POST https://jobs.rqmtechnologies.com/x402/buyer-jobs/robotics.normalize-sensor-frames.v1
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/rqm-sensor-frame-normalization-bfa21fe4
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_8FXWlxusd5WRaZ_W5sBsQ

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability rqm-sensor-frame-normalization-bfa21fe4 -d '<json body>'
```

Example prompt: Take these bounded LIDAR observations in the sensor frame and convert them to the robot base frame — I have a frame graph with right-handed, z-up axis convention, meters for length, child-to-parent transform direction, and quaternion rotations in wxyz order; target frame is 'base_link'.

## When to prefer this

Use this endpoint when you have a fully specified, calibrated frame graph with typed coordinate frames, known rotation semantics, explicit handedness and axis conventions, and a single consistent unit system — and you need bounded sensor observations converted into a target reference frame for downstream robotics processing. Do not use for automatic actuation, unknown transforms, or uncalibrated sensor rigs.

## Known failure modes

- Unknown or missing frame in frame graph returns validation error
- Physically uncalibrated or inconsistent transforms rejected
- Mismatched unit declarations between frames cause rejection
- Malformed quaternion (non-unit norm) or rotation matrix (non-orthogonal) rejected
- Observations referencing frames not present in the graph return lookup error
- Target frame ID not found in the supplied frame graph

## How this service works

Problem: Convert these bounded sensor observations into the supplied target frame and unit convention. Input: JSON with frame graph, target frame id, observations. Result: normalized or unsupported verdict, normalized observations, transform paths. Limits: Software/model evidence only; 65536 request bytes; 5 s execution.

## Output

Returns sensor observations that have been re-expressed in the specified target frame and unit convention, with translations and rotations transformed according to the provided frame graph, handedness, axis convention, and rotation semantics.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "request": {
   "type": "object",
   "title": "SensorFrameNormalizationRequest",
   "required": [
    "frame_graph",
    "target_frame_id",
    "observations"
   ],
   "properties": {
    "frame_graph": {
     "type": "object",
     "title": "FrameConventionValidationRequest",
     "required": [
      "frames",
      "declared_length_unit",
      "declared_transform_direction",
      "declared_rotation_semantics",
      "declared_handedness",
      "declared_axis_convention"
     ],
     "properties": {
      "frames": {
       "type": "array",
       "items": {
        "type": "object",
        "title": "CoordinateFrame",
        "required": [
         "frame_id",
         "translation",
         "rotation",
         "transform_direction",
         "rotation_semantics",
         "handedness",
         "axis_convention"
        ],
        "properties": {
         "frame_id": {
          "type": "string",
          "title": "Frame Id",
          "pattern": "^[A-Za-z][A-Za-z0-9_.:-]{0,63}$"
         },
         "rotation": {
          "oneOf": [
           {
            "type": "object",
            "title": "QuaternionRotation",
            "required": [
             "values",
             "order"
            ],
            "properties": {
             "kind": {
              "type": "string",
              "const": "quaternion",
              "title": "Kind",
              "default": "quaternion"
             },
             "order": {
              "enum": [
               "wxyz",
               "xyzw"
              ],
              "type": "string",
              "title": "Order"
             },
             "values": {
              "type": "array",
              "title": "Values",
              "maxItems": 4,
              "minItems": 4,
              "prefixItems": [
               {
                "type": "number"
               },
               {
                "type": "number"
               },
               {
                "type": "number"
               },
               {
                "type": "number"
               }
              ]
             }
            },
            "additionalProperties": false
           },
           {
            "type": "object",
            "title": "MatrixRotation",
            "required": [
             "values"
            ],
            "properties": {
             "kind": {
              "type": "string",
              "const": "matrix",
              "title": 
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/rqm-sensor-frame-normalization-bfa21fe4/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from jobs.rqmtechnologies.com](https://www.zero.xyz/host/jobs.rqmtechnologies.com/llms.txt)
