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
+30
View File
@@ -4,6 +4,34 @@
仓库已在 [`rl/`](rl/) 内置 `Unitree-Go2-Flat` 所需的 PPO 训练代码、Go2 模型资产和 ONNX 导出逻辑,不再要求另外克隆 `unitree_rl_mjlab`。`mjlab`、PyTorch 等大型运行依赖仍需安装在本机训练环境中。
## LeKiwi 一键训练(与 Go2 共用控制台)
注册任务 `MobileManipulator-LeKiwi-v1`、`MobileManipulator-LeKiwi-Bundle`,使用 SB3 PPO + 原生 MuJoCo,沿用同一作业状态机、资源锁、取消和日志轮询。MuJoCo 必须与浏览器一致(3.11.0),**不要升级现有 Go2 环境**;首次配置独立解释器:
```bash
source .venv/bin/activate
python -m venv build/venvs/mobile
build/venvs/mobile/bin/python -m pip install -r training_server/mobile_manipulator/requirements.txt
python training_server/server.py --mobile-python "$PWD/build/venvs/mobile/bin/python"
```
主工作台导入对应 ZIP,在 URDF 选项选择「LeKiwi v1 / Bundle · 移动操作训练场景」;旧 `lekiwi-v1` profile 也能从训练面板开始,届时自动组合任务场景。进入「控制台 → 强化学习任务」,连接服务、配置迭代/环境数/设备/种子/每环境采样步数/物体和目标坐标,点击「发起本地训练」。无需下载训练包或手动执行训练脚本。加载场景会暂停仿真并切换到移动操作任务(不启用外部控制桥、Go2 地图或相机配置)。
- 浏览器自动上传组合后的 MJCF 与资产快照。认证 ZIP 上传限 128 MiB、展开 512 MiB/10000 文件;拒绝路径越界、符号链接、include/plugin、非注册机器人契约和包外资产引用。最多保留 20 份去重快照,满额后需停止服务再清理 `logs/mobile_packages/`。
- `POST /jobs` 仅接收服务器内容 ID `mobilePackageId`,不接受本机路径。`mobileParams` 包括 `stage`(默认 `navigate`)、`sourceJobId`、`navigationBootstrapSteps`(0–10000,默认4096)、`positionJitter`(0–0.3 m,默认0.1)、`evaluationEpisodes`(2–64,默认10)、`rolloutSteps`(8–4096,默认128)、`objectPosition`、`goalPosition`。环境数1–64,默认1;总采样步数为 `maxIterations × numEnvs × rolloutSteps`。CPU 物理向量环境顺序采样,设备选择只控制 PPO 网络;GPU 仅支持单卡,不会静默回退 CPU。
- actor/critic/entropy 损失、每采样步平均 reward 和已完成回合长度使用共享 `Learning iteration / Mean ...` 日志协议。没有额外 VecNormalize。
- 自动生成 `logs/rsl_rl/web_jobs/{id}/policy.onnx`、`deployment.json`、PPO checkpoint 与训练配置。元数据包含任务/变体、固定 float32 `[1,92] → [1,12]`、v2 限速动作语义、训练阶段、独立评估、50Hz、权重/机器人配置/场景 SHA-256 和初始目标坐标。
- 点击「导入策略」自动下载两份成果物,经校验后通过主仿真会话的 `ONNXPolicyRunner` 执行单飞锁步推断。暂停、重载和控制权切换使在途结果失效;回合终止/超时暂停,需重置后继续。改动资产/动力学后应重新训练,哈希不是跨机器人泛化证明。
- `health.taskMetadata` 按任务报告 `ready/error`,移动依赖缺失不阻断 Go2,反之亦然。短程冒烟只验证链路,不保证抓取成功率;尚未验证长程收敛、GPU 性能或实机迁移。
阶段按底盘接近→末端接近→抓取放置推进;服务验证上一阶段至少10回合、≥80%成功率且无安全终止。同阶段可继续训练;接续只能引用同一服务会话中已完成的同场景作业。完整设计、限速说明和实际导航结果见 [分阶段训练](../docs/mobile-training-curriculum.md)。旧68维策略必须重新训练。
真实浏览器端到端(需两个本地模型 ZIP 和上述独立环境):
```bash
npx playwright test -c web_platform/playwright.lekiwi.config.ts lekiwi.training.spec.ts
```
## 自定义任务与地形
内置新增 `Unitree-Go2-ObstacleAvoidance`(81维前视射线导航),并放行 `Unitree-Go2-Rough` 训练。健康接口提供可配置参数元数据,job 的 `deployment` 返回精确地图布局、传感器及策略契约。首版支持 `plane/discrete_obstacles/rough/pyramid_stairs/wave` 的训练专用box布局;不是任意场景导入,也不实现真实深度相机。旧 Rough 的234维actor不能在当前浏览器一键部署。完整字段、坐标系、观测动作及复现方式见 [避障部署契约](OBSTACLE_AVOIDANCE.md)。
@@ -76,10 +104,12 @@ python training_server/server.py \
- `GET /api/training/health`:运行环境、允许的任务和活动任务;
- `POST /api/training/pretrained-sources/upload?format=pt|onnx&template=go2-legacy47-v1&name=显示名`:认证有界二进制单文件上传,返回持久化内容ID;
- `POST /api/training/mobile-packages`:认证场景快照上传(`application/zip`),返回64位内容ID;
- `POST /api/training/jobs`:发起训练;
- `GET /api/training/jobs/{id}`:状态、迭代进度和最近日志;
- `DELETE /api/training/jobs/{id}`:停止训练;
- `GET /api/training/jobs/{id}/artifacts/policy.onnx`:下载本次生成的策略;
- `GET /api/training/jobs/{id}/artifacts/deployment.json`:下载移动操作部署元数据;
- `GET /api/tuning/capabilities`、`POST /api/tuning/agent/test`:检查/测试 Agent;
- `GET|POST /api/tuning/sessions`、`GET|DELETE /api/tuning/sessions/{id}`:列出、创建、查询、停止 session;
- `POST /api/tuning/sessions/{id}/pause|resume`:暂停后续调度或恢复;