{"uid":"cap_8FXWlxusd5WRaZ_W5sBsQ","slug":"rqm-sensor-frame-normalization-bfa21fe4","name":"RQM Sensor Frame Normalization","description":"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.","url":"https://jobs.rqmtechnologies.com/x402/buyer-jobs/robotics.normalize-sensor-frames.v1","method":"POST","headers":{},"bodySchema":{"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":"Kind","default":"matrix"},"values":{"type":"array","title":"Values","maxItems":3,"minItems":3,"prefixItems":[{"type":"array","maxItems":3,"minItems":3,"prefixItems":[{"type":"number"},{"type":"number"},{"type":"number"}]},{"type":"array","maxItems":3,"minItems":3,"prefixItems":[{"type":"number"},{"type":"number"},{"type":"number"}]},{"type":"array","maxItems":3,"minItems":3,"prefixItems":[{"type":"number"},{"type":"number"},{"type":"number"}]}]}},"additionalProperties":false}],"title":"Rotation","discriminator":{"mapping":{"matrix":"#/$defs/MatrixRotation","quaternion":"#/$defs/QuaternionRotation"},"propertyName":"kind"}},"handedness":{"enum":["right","left"],"type":"string","title":"Handedness"},"translation":{"type":"object","title":"Translation","required":["values","unit"],"properties":{"unit":{"enum":["m","cm","mm"],"type":"string","title":"Unit"},"values":{"type":"array","title":"Values","maxItems":3,"minItems":3,"prefixItems":[{"type":"number"},{"type":"number"},{"type":"number"}]}},"additionalProperties":false},"axis_convention":{"enum":["ENU","NED","NWU","FLU","FRD"],"type":"string","title":"Axis Convention"},"parent_frame_id":{"anyOf":[{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_.:-]{0,63}$"},{"type":"null"}],"title":"Parent Frame Id","default":null},"rotation_semantics":{"enum":["active","passive"],"type":"string","title":"Rotation Semantics"},"transform_direction":{"enum":["parent_to_child","child_to_parent"],"type":"string","title":"Transform Direction"}},"additionalProperties":false},"title":"Frames","maxItems":64,"minItems":1},"tolerances":{"type":"object","title":"Tolerances","properties":{"quaternion_norm":{"type":"number","title":"Quaternion Norm","default":0.000001,"maximum":0.01,"minimum":1e-12},"matrix_determinant":{"type":"number","title":"Matrix Determinant","default":1e-8,"maximum":0.01,"minimum":1e-12},"matrix_orthogonality":{"type":"number","title":"Matrix Orthogonality","default":1e-8,"maximum":0.01,"minimum":1e-12}},"additionalProperties":false},"schema_version":{"type":"string","const":"rqm.robotics.frame-convention-validation-request.v1","title":"Schema Version","default":"rqm.robotics.frame-convention-validation-request.v1"},"declared_handedness":{"enum":["right","left"],"type":"string","title":"Declared Handedness"},"declared_length_unit":{"enum":["m","cm","mm"],"type":"string","title":"Declared Length Unit"},"declared_axis_convention":{"enum":["ENU","NED","NWU","FLU","FRD"],"type":"string","title":"Declared Axis Convention"},"declared_rotation_semantics":{"enum":["active","passive"],"type":"string","title":"Declared Rotation Semantics"},"declared_transform_direction":{"enum":["parent_to_child","child_to_parent"],"type":"string","title":"Declared Transform Direction"}},"additionalProperties":false},"observations":{"type":"array","items":{"type":"object","title":"SensorObservation","required":["observation_id","frame_id","point","unit"],"properties":{"unit":{"enum":["m","cm","mm"],"type":"string","title":"Unit"},"point":{"type":"array","title":"Point","maxItems":3,"minItems":3,"prefixItems":[{"type":"number"},{"type":"number"},{"type":"number"}]},"frame_id":{"type":"string","title":"Frame Id","maxLength":64,"minLength":1},"observation_id":{"type":"string","title":"Observation Id","maxLength":64,"minLength":1},"orientation_xyzw":{"anyOf":[{"type":"array","maxItems":4,"minItems":4,"prefixItems":[{"type":"number"},{"type":"number"},{"type":"number"},{"type":"number"}]},{"type":"null"}],"title":"Orientation Xyzw","default":null},"position_covariance":{"anyOf":[{"type":"array","items":{"type":"array","items":{"type":"number"}},"maxItems":3},{"type":"null"}],"title":"Position Covariance","default":null}},"additionalProperties":false},"title":"Observations","maxItems":10000,"minItems":1},"schema_version":{"type":"string","const":"rqm.robotics.sensor-frame-normalization-request.v1","title":"Schema Version","default":"rqm.robotics.sensor-frame-normalization-request.v1"},"target_frame_id":{"type":"string","title":"Target Frame Id","maxLength":64,"minLength":1}},"additionalProperties":false},"schema_version":{"const":"rqm.jobs.bazaar-buyer-job-request.v1"},"idempotency_key":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$","maxLength":128,"minLength":1},"max_total_price":{"type":"string","pattern":"^(?:0|[1-9]\\d{0,13})(?:\\.\\d{1,6})?$"}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.01","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.01/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.01","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.01","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_FirzOrqObY1L8VnTaH7qx","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.01","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Converts bounded sensor observations from their native coordinate frames into a specified target frame and unit convention using an explicit frame graph.","exampleAgentPrompt":"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'.","exampleUseCases":[{"title":"Multi-sensor fusion for mobile robot","prompt":"I have observations from a front-mounted camera and a side LIDAR, each in their own sensor frames. Using my frame graph that defines both sensors relative to 'odom' with right-handed z-up convention and meters, can you normalize all observations into the 'odom' target frame so I can fuse them?"},{"title":"Sim-to-real coordinate convention mismatch","prompt":"My simulation outputs sensor data in a left-handed y-up frame in centimeters, but my real robot expects right-handed z-up in meters. I have the full frame graph with all transforms defined — can you convert these bounded sensor observations to the 'world' target frame with the correct unit convention?"},{"title":"Arm end-effector sensor normalization","prompt":"I'm getting force-torque sensor readings in the 'wrist_sensor' frame and need them in the 'end_effector' frame for my controller. My frame graph has both frames defined with right-handed axis convention, meters, parent-to-child transforms, and wxyz quaternions — please normalize the observations to 'end_effector'."}],"resultDescription":"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.","failureModes":["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"],"whenToPreferThis":"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.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-14T12:50:01.545Z","isFirstParty":false}