feat: release v1.0.1 CADWorld 网站与 LeKiwi 智能抓放
web-platform-ci / Standalone decision service (no cloud credentials) (push) Has been cancelled
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
web-platform-ci / Standalone decision service (no cloud credentials) (pull_request) Has been cancelled
web-platform-ci / TypeScript, lint, unit, build (pull_request) Has been cancelled
web-platform-ci / Playwright E2E (pull_request) Has been cancelled
lekiwi-compatibility / cpu-compatibility (pull_request) Has been cancelled

集成同源 BYOK 会话隔离、精简模型设置、官方订阅入口和 HTTPS 发布运维;保留本地训练/调参与控制能力。同步 npm 版本及 CHANGELOG,记录公网真实 API 验收仍待用户凭据。
This commit is contained in:
2026-09-24 09:57:41 +08:00
parent 3ad29356c9
commit f3a8a38acd
194 changed files with 32918 additions and 236 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+266
View File
@@ -0,0 +1,266 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://mujoco.local/contracts/lekiwi-agent-v1.schema.json",
"title": "LeKiwi agent v1: SI ground truth and constrained decisions",
"$defs": {
"Stamp": {
"type": "object",
"additionalProperties": false,
"required": ["runId", "sceneRevision", "sequence", "planRevision", "requestId"],
"properties": {
"runId": { "type": "string", "minLength": 1, "maxLength": 128 },
"sceneRevision": { "type": "integer", "minimum": 0, "maximum": 1000000000 },
"sequence": { "type": "integer", "minimum": 0, "maximum": 1000000000 },
"planRevision": { "type": "integer", "minimum": 0, "maximum": 1000000000 },
"requestId": { "type": "string", "minLength": 1, "maxLength": 128 }
}
},
"Position": {
"type": "array",
"minItems": 3,
"maxItems": 3,
"items": { "type": "number", "minimum": -2, "maximum": 2 }
},
"Observation": {
"type": "object",
"additionalProperties": false,
"required": [
"version",
"stamp",
"source",
"units",
"frame",
"time",
"phase",
"base",
"joints",
"opening",
"tcp",
"object",
"goal",
"evidence",
"safety"
],
"properties": {
"version": { "const": "lekiwi-agent-v1" },
"stamp": { "$ref": "#/$defs/Stamp" },
"source": { "const": "mujoco-ground-truth" },
"units": { "const": "SI" },
"frame": { "const": "world-z-up" },
"time": { "type": "number", "minimum": 0, "maximum": 1000000 },
"phase": {
"enum": [
"open",
"pregrasp",
"descend",
"close",
"verify",
"carry",
"stop-base",
"place",
"release",
"retreat",
"settle"
]
},
"base": {
"type": "object",
"additionalProperties": false,
"required": ["position", "yaw"],
"properties": {
"position": { "$ref": "#/$defs/Position" },
"yaw": { "type": "number", "minimum": -3.142, "maximum": 3.142 }
}
},
"joints": {
"type": "array",
"minItems": 5,
"maxItems": 5,
"items": { "type": "number", "minimum": -3.2, "maximum": 3.2 }
},
"opening": { "type": "number", "minimum": 0, "maximum": 1 },
"tcp": { "$ref": "#/$defs/Position" },
"object": {
"type": "object",
"additionalProperties": false,
"required": ["id", "position", "speed"],
"properties": {
"id": { "const": "block" },
"position": { "$ref": "#/$defs/Position" },
"speed": { "type": "number", "minimum": 0, "maximum": 20 }
}
},
"goal": {
"type": "object",
"additionalProperties": false,
"required": ["id", "position"],
"properties": {
"id": { "const": "placement" },
"position": { "$ref": "#/$defs/Position" }
}
},
"evidence": {
"type": "object",
"additionalProperties": false,
"required": ["fingerForces", "supported", "onGoalSupport", "secure", "transported"],
"properties": {
"fingerForces": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": { "type": "number", "minimum": 0, "maximum": 10000 }
},
"supported": { "type": "boolean" },
"onGoalSupport": { "type": "boolean" },
"secure": { "type": "boolean" },
"transported": { "type": "number", "minimum": 0, "maximum": 10 }
}
},
"safety": {
"type": "array",
"maxItems": 8,
"uniqueItems": true,
"items": {
"enum": [
"joint_velocity",
"joint_stall",
"base_unstable",
"unreachable",
"lost_grasp",
"episode_timeout",
"stalled",
"none"
]
}
}
}
},
"Plan": {
"type": "object",
"additionalProperties": false,
"required": ["version", "objectId", "goalId", "summary", "steps"],
"properties": {
"version": { "const": "lekiwi-agent-v1" },
"objectId": { "const": "block" },
"goalId": { "const": "placement" },
"summary": { "type": "string", "minLength": 1, "maxLength": 512 },
"steps": {
"type": "array",
"minItems": 1,
"maxItems": 11,
"items": {
"type": "object",
"additionalProperties": false,
"required": ["skill", "precondition", "onFailure"],
"properties": {
"skill": {
"enum": [
"open",
"pregrasp",
"descend",
"close",
"verify",
"carry",
"stop-base",
"place",
"release",
"retreat",
"settle"
]
},
"precondition": {
"enum": [
"scene-ready",
"base-stopped",
"tcp-above",
"aligned",
"dual-contact",
"verified-grasp",
"transported",
"supported",
"released",
"retreat"
]
},
"onFailure": { "enum": ["retry", "replan", "stop"] }
}
}
}
}
},
"JevDecision": {
"type": "object",
"additionalProperties": false,
"required": ["version", "choice", "grasp", "diagnosis", "recovery"],
"properties": {
"version": { "const": "lekiwi-agent-v1" },
"choice": {
"enum": [
"open",
"pregrasp",
"descend",
"close",
"verify",
"carry",
"stop-base",
"place",
"release",
"retreat",
"settle",
"stop"
]
},
"grasp": { "enum": ["secure", "empty", "slipping", "uncertain"] },
"diagnosis": {
"enum": ["none", "empty", "slipping", "misaligned", "unreachable", "stalled", "uncertain"]
},
"recovery": { "enum": ["continue", "retry", "replan", "stop"] }
}
},
"SkillResult": {
"type": "object",
"additionalProperties": false,
"required": ["version", "skill", "status", "code", "evidenceSequence"],
"properties": {
"version": { "const": "lekiwi-agent-v1" },
"skill": {
"enum": [
"open",
"pregrasp",
"descend",
"close",
"verify",
"carry",
"stop-base",
"place",
"release",
"retreat",
"settle"
]
},
"status": { "enum": ["running", "completed", "failed"] },
"code": {
"enum": [
"none",
"joint_velocity",
"joint_stall",
"base_unstable",
"unreachable",
"lost_grasp",
"episode_timeout",
"alignment_timeout",
"empty_grasp",
"grasp_unverified",
"transport_unverified",
"placement_unsupported",
"release_blocked",
"placement_unverified",
"navigation_timeout",
"controller_error"
]
},
"evidenceSequence": { "type": "integer", "minimum": 0, "maximum": 1000000000 }
}
}
}
}
+47
View File
@@ -0,0 +1,47 @@
{
"id": "lekiwi-pick-place-v1",
"robotId": "lekiwi-v1",
"sourceZipSha256": "a10ac577ea49cdf87f324f3f6e9a7a887a1e3c0254ae638059711fef9e385b04",
"units": "SI",
"frame": "world-z-up",
"object": { "id": "block", "halfSize": 0.018, "mass": 0.05, "position": [0.257, 0.015, 0.128] },
"goal": { "id": "placement", "position": [0.257, 0.615, 0.128] },
"supportHeight": 0.11,
"supportHalfSize": [0.045, 0.055, 0.055],
"tcpSite": "__agent_tcp",
"tcpOffset": [-0.01, 0.037, -0.081],
"pregraspHeight": 0.195,
"carryHeight": 0.205,
"retreatHeight": 0.223,
"baseTranslation": [0, 0.6],
"controlDt": 0.02,
"armSpeed": 0.35,
"armAcceleration": 1.0,
"armTrackingError": 0.15,
"armStallError": 0.14,
"armStallSpeed": 0.02,
"armStallDuration": 0.75,
"gripperOpeningRate": 0.5,
"baseSpeed": 0.04,
"baseAcceleration": 0.3,
"yawSpeed": 0.15,
"yawAcceleration": 0.8,
"jointSpeedStop": 2.0,
"fingerForceMin": 0.2,
"graspStableTime": 0.15,
"liftMin": 0.045,
"relativeDriftMax": 0.012,
"transportMin": 0.5,
"placementTolerance": 0.04,
"placementSpeedMax": 0.05,
"retreatMin": 0.09,
"placementStableTime": 0.5,
"episodeTimeout": 70,
"frozenSeeds": [
{ "id": 0, "offset": [0, 0] },
{ "id": 1, "offset": [-0.002, 0] },
{ "id": 2, "offset": [0.002, 0] },
{ "id": 3, "offset": [0, -0.002] },
{ "id": 4, "offset": [0, 0.002] }
]
}
+28
View File
@@ -0,0 +1,28 @@
{
"id": "mobile-manipulator-v1",
"observationSize": 68,
"actionSize": 12,
"maxArmJoints": 8,
"stateSize": 54,
"controlDt": 0.02,
"positionScale": 2,
"linearVelocityScale": 2,
"angularVelocityScale": 4,
"jointVelocityScale": 4,
"objectHalfSize": 0.018,
"objectStart": [0.25, 0, 0.019],
"goalStart": [0.55, 0.15, 0.019],
"liftHeight": 0.08,
"graspDistance": 0.09,
"goalTolerance": 0.04,
"settleSpeed": 0.05,
"releaseOpening": 0.65,
"settleSteps": 10,
"maxSteps": 1000,
"reachGain": 8,
"transportGain": 4,
"reachWeight": 0.1,
"liftWeight": 0.3,
"transportWeight": 0.5,
"successBonus": 20
}
+45
View File
@@ -0,0 +1,45 @@
{
"id": "mobile-manipulator-v2",
"actionSemantics": "rate-limited-position-target-v1",
"observationSize": 92,
"actionSize": 12,
"maxArmJoints": 8,
"stateSize": 54,
"controlDt": 0.02,
"positionScale": 2,
"linearVelocityScale": 2,
"angularVelocityScale": 4,
"jointVelocityScale": 4,
"objectHalfSize": 0.018,
"objectStart": [0.7, 0, 0.019],
"goalStart": [0.95, 0.15, 0.019],
"liftHeight": 0.08,
"graspDistance": 0.09,
"goalTolerance": 0.04,
"settleSpeed": 0.05,
"releaseOpening": 0.65,
"settleSteps": 10,
"maxSteps": 1000,
"reachGain": 8,
"transportGain": 4,
"reachWeight": 0.1,
"liftWeight": 0.3,
"transportWeight": 0.5,
"successBonus": 20,
"baseSpeedLimits": [0.12, 0.12, 0.5],
"baseAccelerationLimits": [0.3, 0.3, 0.8],
"armSpeedLimit": 0.5,
"armAccelerationLimit": 1.5,
"armTrackingError": 0.2,
"jointSpeedStop": 2,
"gripperOpeningRate": 0.5,
"actionRateWeight": 0.005,
"jointVelocityWeight": 0.01,
"navigationOffset": [0.3, 0, 0],
"navigationTolerance": 0.06,
"navigationYawTolerance": 0.2,
"navigationSpeedTolerance": 0.035,
"navigationProgressWeight": 4,
"navigationSuccessRate": 0.8,
"safetyPenalty": 5
}
+146
View File
@@ -0,0 +1,146 @@
[
{
"id": "lekiwi-v1",
"label": "LeKiwi v1 · 原始机械臂",
"recipe": "lekiwi-v1",
"baseBodyName": "base_plate_layer1-v5",
"baseJointName": "__platform_base_freejoint__",
"baseJoints": ["base_left_wheel", "base_back_wheel", "base_right_wheel"],
"baseActuators": ["base_left_wheel_servo", "base_back_wheel_servo", "base_right_wheel_servo"],
"baseMix": [
[-17.32050807568877, 10, 2.5],
[0, -20, 2.5],
[17.32050807568877, 10, 2.5]
],
"baseLimits": [0.2, 0.2, 1.0471975511965976],
"wheelLimit": 4.601942363656923,
"armJoints": [
{
"name": "arm_shoulder_pan",
"min": -1.57,
"max": 1.57,
"neutral": 0,
"mode": "position",
"velocityLimit": 2
},
{
"name": "arm_shoulder_lift",
"min": -1.4,
"max": 1.4,
"neutral": 0,
"mode": "position",
"velocityLimit": 2
},
{
"name": "arm_elbow_flex",
"min": -1.4,
"max": 1.4,
"neutral": 0,
"mode": "position",
"velocityLimit": 2
},
{
"name": "arm_wrist_flex",
"min": -1.4,
"max": 1.4,
"neutral": 0,
"mode": "position",
"velocityLimit": 2
},
{
"name": "arm_wrist_roll",
"min": -3.14,
"max": 3.14,
"neutral": 0,
"mode": "position",
"velocityLimit": 2
}
],
"armActuators": [
"arm_shoulder_pan_servo",
"arm_shoulder_lift_servo",
"arm_elbow_flex_servo",
"arm_wrist_flex_servo",
"arm_wrist_roll_servo"
],
"gripperJoint": "arm_gripper",
"gripperActuators": [{ "name": "arm_gripper_servo", "closed": -0.18, "open": 0.9 }],
"gripperClosed": -0.18,
"gripperOpen": 0.9,
"eefBodyName": "Wrist_Roll_08c-v1",
"eefSiteName": "__mm_eef",
"eefOffset": [0, 0.035, -0.065]
},
{
"id": "lekiwi-bundle",
"label": "robot_urdf_bundle · Link1–Link4 机械臂",
"recipe": "lekiwi-bundle",
"baseBodyName": "base_plate_layer1-v5",
"baseJointName": "__platform_base_freejoint__",
"baseJoints": ["base_left_wheel", "base_back_wheel", "base_right_wheel"],
"baseActuators": ["base_left_wheel_servo", "base_back_wheel_servo", "base_right_wheel_servo"],
"baseMix": [
[-17.32050807568877, 10, 2.5],
[0, -20, 2.5],
[17.32050807568877, 10, 2.5]
],
"baseLimits": [0.2, 0.2, 1.0471975511965976],
"wheelLimit": 4.601942363656923,
"armJoints": [
{
"name": "Link1",
"min": -1.1,
"max": 1.1,
"neutral": 0,
"mode": "position",
"velocityLimit": 2
},
{
"name": "Link2",
"min": -0.3,
"max": 1.1,
"neutral": 0,
"mode": "position",
"velocityLimit": 2
},
{
"name": "Link3",
"min": -1,
"max": 1,
"neutral": 0,
"mode": "position",
"velocityLimit": 2
},
{
"name": "Link4",
"min": -1.1,
"max": 0.3,
"neutral": 0,
"mode": "position",
"velocityLimit": 2
},
{
"name": "arm_wrist_roll",
"min": -3.14,
"max": 3.14,
"neutral": 0,
"mode": "position",
"velocityLimit": 2
}
],
"armActuators": [
"Link1_servo",
"Link2_servo",
"Link3_servo",
"Link4_servo",
"arm_wrist_roll_servo"
],
"gripperJoint": "arm_gripper",
"gripperActuators": [{ "name": "arm_gripper_servo", "closed": -0.18, "open": 0.9 }],
"gripperClosed": -0.18,
"gripperOpen": 0.9,
"eefBodyName": "Wrist_Roll_08c-v1",
"eefSiteName": "__mm_eef",
"eefOffset": [0, 0.035, -0.065]
}
]
+1 -1
View File
@@ -64,7 +64,7 @@
"reset": { "type": "boolean" },
"lockstep": { "const": false },
"cameras": { "const": false },
"training": { "const": false }
"training": { "type": "boolean" }
}
}
}