Files
lerobot_learn/PLAN.md
T

129 lines
9.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# LeRobot 双臂移动操作项目方案
> 决策与阶段验收以本文件为准。更新:2026-09-08,设计评审修订。
> 2026-09-10 执行进展:P1 遥操与真实数据采集已完成基础验证,3080 正在训练 ACT;自主抓放未验收。详情见 [进度追踪](docs/progress.md)。3090 仍待验收,当前基线训练先在 3080 完成。
## 1. 目标与边界
基于 LeRobot,完成“人工遥操示范 → 数据采集 → 策略训练 → 真机执行”的闭环,逐步扩展至桌面双臂与移动操作。
首个交付是单臂固定场景抓放;整机首个交付是“移动到位 → 停稳 → 抓取 → 收臂 → 移动 → 放置”。边移动边双臂操作、一个 VLA 统一控制整机,列为后续探索目标。
“可自行训练”指使用自己的示范数据训练模型。自主探索、自动成功判定、自动恢复与持续学习尚无实现,不作为当前交付承诺。
## 2. 技术决策
| 项目 | 决策 | 约束 |
|---|---|---|
| 框架 | LeRobot **0.6.1 / Python 3.12** | 锁定依赖,不自动跟随 main;升级必须复验 |
| 单臂基线 | ACT | 模仿学习策略,不作为语言理解证明 |
| VLA | SmolVLA 450M 预训练基座微调 | 记录冻结模块;默认微调不等于全参数解冻 |
| 大模型 | π0-FAST 等仅作后续候选 | LoRA、量化支持、显存及任务收益均需实测 |
| 机械臂 | P1:1 leader + 1 follower;P2 再加各 1 条 | SO-101 为 5 个臂关节 + 夹爪,共 6 个电机 |
| 底盘 | LeKiwi | 双臂安装、重心、供电与桌面可达性先验证 |
| 采集/推理 | 3080 10GB,机器人旁 Ubuntu 主机 | P1/P2 USB 直连;测实际显存和延迟 |
| 训练 | 3090 24GB,同局域网 Ubuntu 主机 | 小 batch 起步,按峰值显存调参 |
| 上机计算 | RPi 5,P3 前采购 | 采图、驱动、执行和超时处理;不宣称硬实时 |
| 调度与导航 | 先状态机;有定位/建图/避障需求再考虑 ROS 2/Nav2 | 导航与学习策略分层验收 |
| 网络推理 | 优先官方 PolicyServer/RobotClient | 验证锁定版本支持范围,仅补组合适配与故障处理 |
| 数据流 | 同局域网优先 rsync,HF Hub 可选 | 数据、模型、处理器、配置与校准成套留存 |
| Orin | 不在关键路径 | 另行验证系统和运行时兼容性 |
v0.6.1 已有 `BiSOFollower`,P2 优先复用;双臂加底盘的组合 robot、遥操与动作定义仍需适配。LeKiwi 已有远程链路,不从零实现整个网络层。Async 与 RTC 是不同机制,先跑同步基线,再分别评估。
## 3. 架构与接口
P1/P2:leader/follower/相机 → USB → 3080(采集与执行);数据经 rsync 到 3090 训练,checkpoint 与处理器回传 3080。
P3/P4:RPi 负责本机硬件,3080 负责操作策略;状态机负责移动、到位确认、操作与失败退出。优先复用 LeKiwi 与官方异步接口,避免叠加不必要的图像转发链路。`server/`、`client/` 目前仅是占位目录。
实施前固定以下契约并写入版本化配置:
- 状态/动作字段顺序、左右臂前缀、关节单位、夹爪范围、底盘坐标系与速度单位;训练与执行使用同一归一化及处理器。
- 相机名、序列号/稳定设备路径、分辨率、帧率、曝光与安装位置;相机变化视为数据分布变化。
- 图像和本体状态时间、观测编号、动作对应观测编号、动作序号与有效期;跨主机时钟对齐方式及误差。
- 关节限位、每步最大变化量、底盘限速、队列长度、过期丢弃、队列耗尽和重连规则。
网络预算:三路 640×480 RGB 10fps 原始图像约 221Mbps;三路 1080p 同配置约 1.49Gbps(不含协议开销)。明确压缩格式,测编码、传输、解码、推理与执行延迟,记录 P50/P95/P99、丢帧与队列耗尽次数。10Hz 观测、20–30Hz 执行、200–500ms 分块仅为候选参数,不是已满足指标。
### 故障处理
本机执行约束不能依赖模型服务在线。网络超时/动作过期时底盘停止,旧队列失效;手臂根据姿态与负载采用经验证的保持/受控停止,不默认回中位或直接失去支撑。重连需显式重新使能,不继续播放旧动作。
P1 起验证停止手段、限位、限速与人工接管。P3 前定义最大允许停车时间和距离。P4 注入断网、推理进程退出、相机卡死、乱序/过期动作和队列耗尽;记录触发到停止的时间及位移。Python watchdog 不等于完整硬件安全保证。
## 4. 阶段与验收
时间按实际进度滚动估计。每阶段达标后再扩大任务,P3/P4 先做试验再估工时。
### P0:环境与采购确认
- [ ] 两台补齐 OS、驱动、GPU、Python、uv 信息([机器记录](env/machines.md))。
- [x] 3080 用 `env/setup_lerobot.sh --resolve` 生成依赖锁并通过软件冒烟检查,保留报告。
- [ ] 将锁文件和输入指纹同步到 3090,以默认模式安装,核对两台锁的 SHA256。
- [x] 完成短视频编码/解码、小样本训练和模型加载;解决 CUDA/FFmpeg/TorchCodec 兼容性后再认可该锁。
- [ ] 验证过的锁、指纹与精简环境记录入 git,不提交凭据或原始日志。
- [ ] 确认实际套件的 leader/follower 电机、供电规格,先买一对臂、相机和夹具。
验收:两台同锁、CUDA 运算与 CLI 加载通过,小样本管线可运行。脚本通过不等于真机验收通过。
### P1:单臂抓放闭环
- [ ] 完成电机 ID/波特率设置、组装、校准、稳定设备路径和停止手段验证。
- [ ] 相机覆盖全过程,遥操无异常;备份校准与安装照片。
- [ ] 首轮约 50 条一致示范,例如 5 个位置各 10 条;逐条检查画面、动作和时间对齐。
- [ ] ACT 建立基线,记录数据版本、步数、batch、随机种子、显存、耗时与 checkpoint。
- [ ] 按 [评测协议](docs/evaluation.md) 独立测试 20 次,成功至少 16 次、碰撞为 0;干预计失败并完整记录。
- [ ] 同数据和测试协议比较 SmolVLA,不用训练 loss 代替真机成功率。
验收:上述指标达标,能补采示范并复现实验。调参试验与最终验收分开。
### P2:桌面双臂
- [ ] 新增 **1 leader + 1 follower**,总数 2L+2F;按遮挡需求扩展至前置+两腕相机。
- [ ] 复用官方双臂驱动,验证校准、镜像方向、动作顺序与碰撞区域。
- [ ] 选择需要两手协作的短任务,先验证遥操和数据质量,再训练。
- [ ] 固定初始条件范围,独立测试 20 次,至少成功 16 次、无碰撞。
验收:一个桌面协作任务可复现;不默认单臂 checkpoint 能直接用于双臂。
### P3:底盘、机械与网络
- [ ] 采购前验证安装空间、臂展与桌高,检查伸臂负载时重心、顶板刚度和线束。
- [ ] 按实际电机电压设计供电,测峰值电流、压降、发热与续航;确认 RPi/Hub 的移动供电。
- [ ] 底盘独立遥操,测限速、停车距离与故障停止;仅采用 ROS 桥后才要求 `cmd_vel`/`odom`。
- [ ] 固定位置测试 RPi↔3080,再有限范围有线移动;有线测试不算无线自主移动验收。
- [ ] 实现“移动 → 停稳确认 → 单臂操作”,暂不要求边走边操作。
验收:先根据 P1 抓取容差和制动试验定义到位误差、停稳条件、停车上限,填入评测记录。重复 20 次到位测试,报告误差分布并符合阈值后再连接操作任务。
### P4:分阶段整机任务
- [ ] 组合双臂与底盘,复用上游链路,为缺口补适配与本机故障处理。
- [ ] 状态机:移动到位 → 停稳 → 双臂抓取 → 收臂 → 移动 → 放置;每步有成功条件、超时、失败退出和人工接管。
- [ ] 采集实际整机安装状态下的示范,不默认桌面策略直接迁移。
- [ ] 第 3 节故障注入全部符合预定义停止上限,且不自动恢复动作。
- [ ] 固定任务范围内独立测试 20 次,至少成功 16 次、无碰撞;报告全程及子阶段成功率与干预次数。
验收:分阶段任务可复现,故障停止通过;不描述成开放环境通用自主能力。
### P5:探索与扩展
按失败数据选择:物体/光照变化、语言对照任务、失败检测与恢复、无线链路、Async/RTC、导航扩展。最后探索边移动边操作、统一整机 VLA、大模型、LoRA/量化与仿真迁移,分别立项并测量。
## 5. 预算与风险
历史基础 BOM 粗估 ¥6500–8000,未核实现价;另预留 20%–30% 结构、电源和备件费,规划约 ¥7800–10400。若上限 ¥10000,应先拿报价并缩减非必要项。P1 暂缓 RPi/底盘,详见 [BOM](hw/bom.md)。
主要风险依次为机械可达性/稳定性、示范质量、长任务失败累积、时序与故障处理、依赖兼容性。显存和训练时长作为测量项,不承诺“24GB 全量舒适”“几分钟训好”或“量化必定可用”。
## 6. 参考与下一步
下一步:将已验证的锁同步至 3090 并复验;机械臂到货后完成 P1 装配、校准及少量真实示范检查。未经测试的项保持未勾选。
- [v0.6.1 依赖](https://github.com/huggingface/lerobot/blob/v0.6.1/pyproject.toml)
- [v0.6.1 双臂源码](https://github.com/huggingface/lerobot/blob/v0.6.1/src/lerobot/robots/bi_so_follower/bi_so_follower.py)
- [v0.6.1 SmolVLA](https://github.com/huggingface/lerobot/blob/v0.6.1/docs/source/smolvla.mdx)
- [v0.6.1 Async](https://github.com/huggingface/lerobot/blob/v0.6.1/docs/source/async.mdx)
- [LeKiwi](https://huggingface.co/docs/lerobot/lekiwi)(接口以安装版本为准)