Files
Mujoco_WASM/contracts/robot-v1.schema.json
T
chenlin 3ad29356c9
web-platform-ci / TypeScript, lint, unit, build (push) Has been cancelled
web-platform-ci / Playwright E2E (push) Has been cancelled
lekiwi-compatibility / cpu-compatibility (push) Has been cancelled
feat(lekiwi): release V0.10.1 初步集成 LeKiwi,优化碰撞模型
集成通用机器人数值接口、本机控制桥、LeRobot 插件和统一键盘遥操作。采用离线 CoACD 全臂碰撞配方 revision 4、局部装配区切分与结构自接触,限制直接关节位姿写入并保留安全看门狗。同步版本号、变更记录、来源许可证和兼容性验证。
2026-09-20 14:42:30 +08:00

111 lines
3.7 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:mujoco-web:robot:v1",
"description": "V1 numeric robot payloads. Descriptor semantics and action epoch/lease/sequence are additionally validated at runtime. JSON numbers must be finite. No camera, lockstep or training support.",
"oneOf": [
{ "$ref": "#/$defs/descriptor" },
{ "$ref": "#/$defs/action" },
{ "$ref": "#/$defs/observation" }
],
"$defs": {
"id": { "type": "string", "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$" },
"counter": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 },
"values": {
"type": "object",
"minProperties": 1,
"maxProperties": 256,
"propertyNames": { "$ref": "#/$defs/id" },
"additionalProperties": { "type": "number" }
},
"channel": {
"type": "object",
"additionalProperties": false,
"required": ["id", "unit", "mode", "min", "max"],
"properties": {
"id": { "$ref": "#/$defs/id" },
"unit": { "enum": ["rad", "rad/s", "m", "m/s", "ratio", "N", "N.m"] },
"mode": { "enum": ["position", "velocity", "effort", "opening"] },
"min": { "type": "number" },
"max": { "type": "number" }
}
},
"channels": {
"type": "array",
"minItems": 1,
"maxItems": 256,
"items": { "$ref": "#/$defs/channel" }
},
"descriptor": {
"type": "object",
"additionalProperties": false,
"required": [
"protocolVersion",
"profileId",
"profileVersion",
"modelFingerprint",
"frame",
"actionChannels",
"observationChannels",
"capabilities"
],
"properties": {
"protocolVersion": { "const": 1 },
"profileId": { "$ref": "#/$defs/id" },
"profileVersion": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 },
"modelFingerprint": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
"frame": { "const": "x-forward-y-left-z-up" },
"actionChannels": { "$ref": "#/$defs/channels" },
"observationChannels": { "$ref": "#/$defs/channels" },
"capabilities": {
"type": "object",
"additionalProperties": false,
"required": ["reset", "lockstep", "cameras", "training"],
"properties": {
"reset": { "type": "boolean" },
"lockstep": { "const": false },
"cameras": { "const": false },
"training": { "const": false }
}
}
}
},
"action": {
"type": "object",
"additionalProperties": false,
"required": ["protocolVersion", "sessionId", "modelEpoch", "leaseId", "actionSeq", "values"],
"properties": {
"protocolVersion": { "const": 1 },
"sessionId": { "$ref": "#/$defs/id" },
"modelEpoch": { "$ref": "#/$defs/counter" },
"leaseId": { "$ref": "#/$defs/id" },
"actionSeq": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 },
"values": { "$ref": "#/$defs/values" }
}
},
"observation": {
"type": "object",
"additionalProperties": false,
"required": [
"protocolVersion",
"sessionId",
"modelEpoch",
"sequence",
"simTime",
"appliedActionSeq",
"paused",
"values"
],
"properties": {
"protocolVersion": { "const": 1 },
"sessionId": { "$ref": "#/$defs/id" },
"modelEpoch": { "$ref": "#/$defs/counter" },
"sequence": { "$ref": "#/$defs/counter" },
"simTime": { "type": "number", "minimum": 0 },
"appliedActionSeq": { "$ref": "#/$defs/counter" },
"paused": { "type": "boolean" },
"values": { "$ref": "#/$defs/values" }
}
}
}
}