feat(lekiwi): release V0.10.1 初步集成 LeKiwi,优化碰撞模型
集成通用机器人数值接口、本机控制桥、LeRobot 插件和统一键盘遥操作。采用离线 CoACD 全臂碰撞配方 revision 4、局部装配区切分与结构自接触,限制直接关节位姿写入并保留安全看门狗。同步版本号、变更记录、来源许可证和兼容性验证。
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"upstream": "lerobot 0.6.1",
|
||||
"wheelOrder": ["base_left_wheel", "base_back_wheel", "base_right_wheel"],
|
||||
"cases": [
|
||||
{ "body": [0.1, 0, 0], "wheelRaw": [-1129, 0, 1129] },
|
||||
{ "body": [-0.1, 0, 0], "wheelRaw": [1129, 0, -1129] },
|
||||
{ "body": [0, 0.1, 0], "wheelRaw": [652, -1304, 652] },
|
||||
{ "body": [0, -0.1, 0], "wheelRaw": [-652, 1304, -652] },
|
||||
{ "body": [0, 0, 30], "wheelRaw": [853, 853, 853] },
|
||||
{ "body": [0, 0, -30], "wheelRaw": [-853, -853, -853] },
|
||||
{ "body": [0.2, 0.2, 60], "wheelRaw": [428, -513, 3000] },
|
||||
{ "body": [-0.2, 0.2, -60], "wheelRaw": [1290, -3000, -1850] }
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"protocolVersion": 1,
|
||||
"profileId": "test-slider",
|
||||
"profileVersion": 1,
|
||||
"modelFingerprint": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"frame": "x-forward-y-left-z-up",
|
||||
"actionChannels": [
|
||||
{ "id": "slider.position", "unit": "m", "mode": "position", "min": -1, "max": 1 }
|
||||
],
|
||||
"observationChannels": [
|
||||
{ "id": "slider.position", "unit": "m", "mode": "position", "min": -1, "max": 1 }
|
||||
],
|
||||
"capabilities": { "reset": true, "lockstep": false, "cameras": false, "training": false }
|
||||
},
|
||||
"identity": { "sessionId": "sim-test", "modelEpoch": 2, "leaseId": "lease-test" },
|
||||
"validAction": {
|
||||
"protocolVersion": 1,
|
||||
"sessionId": "sim-test",
|
||||
"modelEpoch": 2,
|
||||
"leaseId": "lease-test",
|
||||
"actionSeq": 1,
|
||||
"values": { "slider.position": 0.3 }
|
||||
},
|
||||
"observation": {
|
||||
"protocolVersion": 1,
|
||||
"sessionId": "sim-test",
|
||||
"modelEpoch": 2,
|
||||
"sequence": 5,
|
||||
"simTime": 0.1,
|
||||
"appliedActionSeq": 1,
|
||||
"paused": false,
|
||||
"values": { "slider.position": 0.12 }
|
||||
},
|
||||
"invalidActions": [
|
||||
{ "label": "old epoch", "patch": { "modelEpoch": 1 }, "code": "STALE" },
|
||||
{ "label": "other lease", "patch": { "leaseId": "other" }, "code": "STALE" },
|
||||
{ "label": "replayed sequence", "patch": { "actionSeq": 0 }, "code": "INVALID_MESSAGE" },
|
||||
{ "label": "wrong version", "patch": { "protocolVersion": 2 }, "code": "UNSUPPORTED" },
|
||||
{ "label": "missing channel", "patch": { "values": {} }, "code": "INVALID_MESSAGE" },
|
||||
{
|
||||
"label": "extra channel",
|
||||
"patch": { "values": { "slider.position": 0, "unknown": 1 } },
|
||||
"code": "INVALID_MESSAGE"
|
||||
},
|
||||
{
|
||||
"label": "string number",
|
||||
"patch": { "values": { "slider.position": "0.1" } },
|
||||
"code": "INVALID_MESSAGE"
|
||||
},
|
||||
{
|
||||
"label": "boolean",
|
||||
"patch": { "values": { "slider.position": true } },
|
||||
"code": "INVALID_MESSAGE"
|
||||
},
|
||||
{
|
||||
"label": "unknown envelope field",
|
||||
"patch": { "script": "print('no')" },
|
||||
"code": "INVALID_MESSAGE"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,110 @@
|
||||
{
|
||||
"$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" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user