Files
lerobot_learn/PLAN.md
T

15 KiB
Raw Blame History

方案:LeRobot 双臂移动 VLA 机器人(可自行训练)

本文件是项目的「单一事实来源」(single source of truth)。所有决策、预算、阶段、命令、待办都以此为准,随进展更新。 最后更新:P0 定稿(双 GPU 机版:3080 主家 + 3090 训练)


0. 目标(一句话)

复刻 LeRobot 工作流,造一台会走(LeKiwi 底盘)+ 双手协作(2×SO-101)+ 语言/视觉驱动(VLA)+ 能自己采集数据并训练的移动操作机器人。

核心思路:不重写 LeRobot,而是站在 LeRobot 框架上组装这台特定机器人;架构上采用「瘦边 + 厚芯」——机器人只带一块便宜的驱动板(RPi 5)做实时控制,推理放 3080 主家(挨着机器人)、训练放 3090(24GB),走局域网。

协作模型(详见 env/machines.md):

  • 3080 机(10GB · 本地 Ubuntu · 机器人旁)= 主家:开发 + 臂(USB) + 遥操/采数 + 推理部署 + P4 policy server。
  • 3090 机(24GB · 远程 SSH · 同局域网)= 训练专用:只跑训练;数据集/模型经 HF Hub(或 rsync)流转。
  • 本 Windows 机 = 写字台:我(agent)写代码/配置/文档 → 你 push 到 git 库 → 两台 GPU 机 clone/pull。
  • 我无外网 → 我产出,你在两台机器上跑并粘回输出,我迭代。

1. 决策总表(已拍板)

项 决策 备注
框架 LeRobot(HF 官方,Py3.12, Transformers v5;最新 0.6.0) 官方旗舰生态;装时取最新 stable
机械臂 4× SO-101(2 leader + 2 follower) 双臂遥操 = 2 主 + 2 从;6DOF + 夹爪;自印有 3D 打印机
底盘 LeKiwi(三轮全向,Feetech STS3215,Seeed 12V 版) SO-101 专用移动底盘,LeRobot 原生 .[lekiwi]
上机驱动板 RPi 5 (8GB) + 有源 USB Hub 只管实时控制/采图/执行/fail-safe,不做 ML
主家(开发+推理) 3080 机(本地 Ubuntu · 10GB · 机器人旁) 臂 USB 直插;遥操/采数/推理部署;P4 policy server 在它上面
训练专用 3090 机(远程 SSH · 24GB) 只跑 lerobot-train;与 3080 同局域网(rsync 直传 / π0 代推)
富余算力 AWU408 双 DRIVE Orin(空闲,非关键路径) 3090 忙训练时可顶推理 / 或做固定台
相机 3× USB 相机(1 前置全局 + 2 腕部) USB 最通用,适配 RPi5/3080
VLA 主力 SmolVLA (4.5亿) 单卡可全量训、10GB 卡可推理、异步分块天生适合分布式
VLA 验证/起步 ACT(小、快) P1 先证明"能学会"
VLA 上限 π0-FAST(自回归,~3B,LoRA 微调) 算力宽裕后的 SOTA
架构演进 P1/P2 单机(3080 直连臂) → P4 拆分(RPi5↔局域网↔3080) 先最快出结果,再长成分布式
预算 ~¥6500-8000(自印可更低) 落在 ¥5000–10000 内(详见 hw/bom.md)

2. 硬件 BOM(采购清单)

完整链接/店铺/状态见 hw/bom.md。这里给概览。

# 部件 数量 参考价 (¥) 小计 说明
1 SO-ARM101(含 3D 打印件+舵机+驱动板+电源) 4 ~879 ~3500 2L+2F;淘宝现货树脂版最省;自印可降
2 LeKiwi 底盘(12V,Seeed 含打印件+电池) 1 ~1800 ~1800 或 base-only 12V ~¥1501 自印结构件
3 RPi 5 (8GB) + 27W 电源 + 有源 USB Hub + 存储 1 套 ~800 ~800 上机驱动板
4 USB 相机(1 前置 + 2 腕部) 3 ~130 ~400 1080P 免驱;或 ¥138 双相机套件
5 线束/夹具/耗材/电源/网线 等杂项 — — ~600
合计 ~¥7100-8000 P1 起步(2臂)~¥3300

已拥有(0 成本):3080 机(10GB·主家)、3090 机(24GB·训练)、AWU408 双 Orin、3D 打印机、本 Windows 开发机。

关键提醒:

  • SO-101 打印件:官方 STL 可 FDM(PLA) 或光固化;Leader 臂用轻负载齿轮才捏得动;电机 ID 按顺序烧录。
  • 4 条臂 = 2 leader(遥操主手)+ 2 follower(执行从手)。P1 先买/用 2 条(1L+1F),P2 再补 2 条。
  • LeKiwi 顶板 M3 螺孔直接固定 SO-101 底座;12V 底盘自带 12V→5V 降压给 5V 臂。

3. 系统架构

3.1 目标态(P4 整机自主)——瘦边 + 厚芯

  算力层(拆两台,同一局域网)
 ┌─────────────────────────────────────────────┐
  │  3080(10GB)=推理芯 · 挨着机器人:            │
  │   · 遥操(P1/P2:接 leader 臂)/ 采数          │
  │   · policy server(obs→action chunk)        │
  │   · 数据集管理 / HF Hub 上传下载              │
  │  3090(24GB)=训练芯:                         │
  │   · SmolVLA 全量 / π0-FAST LoRA               │
  │   (数据集·模型经 HF Hub / rsync 两机流转)     │
  └────────────────────────┬────────────────────┘
                           │  局域网 (1Gbps 有线最稳)
        上行: 3相机 + 本体状态(低频~10Hz)
        下行: 动作chunk(每 200~500ms 一批 K 步)
                           │
  ┌────────────────────────┴────────────────────┐
  │  移动机器人 = LeKiwi 底盘 + 2×SO-101(follower) │
  │  RPi 5 驱动板:                                │
  │   · USB: 左/右臂舵机 + 3 底盘轮 (实时 20~30Hz)  │
  │   · USB: 3 相机 (采集 → 推给算力层)            │
  │   · 执行: 收 chunk → 实时插值下发              │
  │   · 安全: 断链 watchdog → 底盘停 / 臂缓回中位   │
  └─────────────────────────────────────────────┘

为什么这样:VLA 每 200~500ms 只算"一小批"未来动作(异步分块),网络只传"几张图 + 一小批动作",带宽占用极小;实时伺服与安全 100% 留在机器人本地(RPi 5),断网即停。训练/推理拆两台:训练吃显存只有 3090 干得动,推理不吃显存 3080 足够,还挨着机器人。

3.2 起步态(P1/P2)——单机,最快闭环

P1/P2 底盘还没上、臂在固定夹/桌上时,3080 主家直接用 USB 接臂(1L+1F / 4 条),单机跑 遥操→采集→推理;训练丢给同局域网的 3090(数据集经 HF Hub / rsync 过去,模型拉回来),最快打通闭环。等 P3/P4 上 LeKiwi 移动,才切到 3.1 的分布式。


4. VLA 模型路线(训练:3090 24GB · 推理:3080 10GB)

阶段 模型 训练(3090 · 24GB) 推理显存(3080 · 10GB) 作用
P1 起步 ACT 全量,几分钟~数十分钟 <1GB ✅ 最快证明"采集→训练→会动"闭环
P1→P4 主力 SmolVLA 全量微调(24GB 舒适) fp16 ~2GB ✅ 语言+视觉驱动,异步推理,部署主力
上限/进阶 π0-FAST LoRA 微调(24GB 为此而生) ~7GB ⚠️ 紧张 SOTA 泛化,算力富余后上
  • 数据统一走 HF Hub(lerobot-record 直接 push);两台 GPU 机同局域网,大数据集/模型也可 rsync 直传。
  • SmolVLA 的 Real-Time Chunking / 异步推理 正是为"算力层算、机器人执行"这种拆分设计的,天然契合 3.1。
  • π0-FAST 推理在 10GB 上紧张的 3 条后路:4-bit 量化 / batch=1+bf16 硬试 / 3090 同局域网代推。

5. 分阶段实施计划

假设业余时间(每周若干小时)。采购前置:3D 打印件/套件到货周期可能 1~6 周,P0 期间就下单。 每阶段有明确「验收标准」,达到再进下一阶段。

P0 · 环境 & 工具链(12 周,含下单等货)

目标:软件环境全通 + git 库建好 + 硬件下单。

  • 建 git 库:把本仓库推到你的私库(Gitee/GitHub),3080/3090 clone——此后代码同步全走它
  • 两台 GPU 机装环境(同一脚本 env/setup_lerobot.sh:自动探测→国内镜像自适应→Py3.12 venv→clone LeRobot→装 feetech,lekiwi,dataset,smolvla,pi0→验证 GPU/CLI):先 3080 主家(P1 在它上面跑),再 3090(训练用);各把 [1]~[7] 输出粘回
  • HF 登录:两台机器都 huggingface-cli login(HF_ENDPOINT=hf-mirror)
  • 固定官方 CLI 命令(find-port / find-cameras / calibrate / teleoperate / record / train / eval|rollout 的确切 flag,以装好后的 --help 实测为准)
  • 下单硬件(hw/bom.md,先 2 条 SO-ARM101 起步)
  • (可选)验证 AWU408 能否跑 Ubuntu+CUDA+PyTorch(只影响"富余算力",不阻塞主线) 验收:两台 GPU 机 torch.cuda.is_available()==True;LeRobot CLI 全 OK;git 库建好且两机已 clone;硬件已下单。

P1 · 单臂 SO-101 闭环(24 周)⭐核心

目标:1 leader + 1 follower,把 采集→训练→部署 整条闭环跑通。

  • 组装+校准 1 follower + 1 leader(lerobot-calibrate),USB 直连 3080 主家
  • 接 1 相机;遥操作(lerobot-teleoperate)验证跟手
  • 采集第一个数据集(简单任务:抓方块 / 放杯子 / 按按钮),lerobot-record → push HF Hub
  • 3090 上先训 ACT 快速验证能学 → 再训 SmolVLA
  • 推理部署(3080 单机直连 follower),手臂独立完成任务 验收:follower 独立完成一个抓取/放置任务(无人工逐帧干预);能稳定记录新 episode 并增量再训。

P2 · 双臂 BiSO-101(24 周)

目标:双手协作。

  • 加装 2 条 leader + 1 条 follower(凑 2L+2F),接 3 相机(1 前 + 2 腕)
  • 上 bimanual 驱动(left_*/right_* 前缀;参考 Maker-Mods / Xbotics 的 BiSO-101,移植进 LeRobot)
  • 采集双臂数据(双手递物 / 协同开盒 / 双手抓取)
  • 3090 训双臂 SmolVLA,3080 测双手协作任务 验收:双臂协同完成一个需要两手配合的任务。

P3 · 底盘 LeKiwi(23 周)

目标:会走 + 底盘与臂联动。

  • 组装 LeKiwi + 校准(3 轮 STS3215)
  • 上 LeKiwi 底盘驱动(LeRobot 原生 .[lekiwi] / 或 lerobot-ros 桥),cmd_vel/odom 跑通
  • 底盘 + 单臂 联动:边走边摆臂(先不拆网,3080 直连)
  • (可选)雷达 + SLAM / nav2 验收:机器人能"边走边完成一个臂任务"。

P4 · 整机整合(分布式落地)(36 周)

目标:把 3.1 的「瘦边+厚芯」跑通,整机自主。

  • 双臂固定到 LeKiwi 顶板,统一 state/action 空间(左/右臂关节 + 夹爪 + 底盘速度)
  • 写 policy server(3080 主家上,FastAPI/GRPC:obs→action chunk;训练仍归 3090)+ thin client(RPi 5:推图+收 chunk+实时执行+fail-safe watchdog)
  • RPi 5 上机(USB 接 2 臂+3 轮+3 相机),以太网接 3080
  • 采集"整机"遥操数据(人在 leader 处,臂+底盘在 RPi5 处,走网),训一个同时控制双臂+底盘的 VLA
  • 端到端任务:走到桌边 → 双手抓取 → 移动到目标点放下 验收:无人干预下,移动机器人完成"走+双手抓取+移动放置"的端到端任务;断网能安全停机。

P5 · 打磨 / 规模化(持续)

  • 多任务、多数据集、课程式学习
  • 异步推理提速、动作 chunk 调参、fail-safe 加固
  • (可选)sim2real(IsaacLab-Arena / EnvHub)、力控/触觉扩展、π0-FAST 上限冲刺

6. 目录结构约定

(本 Windows 写字台 & 两台 GPU 机共用同一仓库,GPU 机上放 ~/robot/)
robot/
├─ PLAN.md                    # 本方案(单一事实来源)
├─ README.md                  # 仓库导览
├─ hw/
│  └─ bom.md                 # 采购清单/链接/到货状态
├─ env/
│  ├─ machines.md            # 机器拓扑 + 协作模型
│  └─ setup_lerobot.sh       # GPU 机一键装环境(3080/3090 都跑)
├─ lerobot/                  # LeRobot 仓库 clone(各 GPU 机自己 clone,不入库)
├─ robots/
│  └─ bi_so101_lekiwi/       # 本机器人的 LeRobot robot 定义(双臂+底盘驱动,P2/P3)
├─ configs/
│  ├─ teleop/  record/  train/  eval/   # 各场景的 .toml/.yaml 配置
├─ server/                   # policy server(3080 主家上,P4)
├─ client/                   # thin client + 执行 + fail-safe(RPi 5 上,P4)
└─ docs/                     # 组装/校准/CLI参考/踩坑笔记

说明:3080 主家与 3090 训练机都 clone 本仓库 + LeRobot(目录统一 ~/robot/);本 Windows D:\robot\lerobot 是源头,你 push 到 git 库后两机 pull。数据集/模型不入 git(走 HF Hub / rsync)。


7. 风险 & 待验证项

# 风险/未知 影响 对策
1 两台 GPU 机都不在我沙箱里(无外网) 我无法直接跑命令 协作:我写 → 你 push git → 3080/3090 跑 → 粘回输出(见 machines.md)
2 CLI flag 随版本变(0.5→0.6 有差异) 照旧文档会报错 装好后以 --help 实测为准(记到 docs/cli_reference.md)
3 双臂驱动非官方内置(靠社区 BiSO-101 移植) P2 要多写/改驱动 参考 Maker-Mods/Xbotics,必要时自写 bi_so101_follower
4 LeKiwi 驱动:LeRobot 原生 .[lekiwi] vs lerobot-ros 桥 P3 集成方式 优先 LeRobot 原生 lekiwi;不行再上 ROS2 桥
5 局域网可靠性(WiFi 抖动 → 臂卡顿) P4 体验/安全 优先有线 1G;client 带 watchdog 断链即停
6 AWU408 能否跑 Ubuntu+PyTorch(常出厂 QNX/DRIVE OS) 只影响"富余算力" 非阻塞;跑不了就不管它
7 硬件到货周期(3D 打印件 1~6 周) 拖慢 P1 起步 P0 立即下单,等货期间把软件全搭好
8 RPi 5 USB 口不够(2臂+3轮+3相机≈6-8 设备) 上机接线 用有源 USB 3.0 Hub;相机降到 2 个 USB3 口
9 GPU 机网络可达性(能否直连 pip/HF/github) 装环境速度/成败 setup_lerobot.sh 自动探测并切国内镜像
10 π0-FAST 推理 ~7GB,3080 10GB 紧张 P5 上限模型部署 4-bit 量化 / batch=1+bf16 / 3090 同局域网代推

8. 下一步(P0 第一步 · 现在就能做)

  1. 建 git 库:把 D:\robot\lerobot 推到你的私库(Gitee 国内快 / GitHub 均可),两台 GPU 机 clone。
  2. 两台 GPU 机装环境:clone 后在 3080 主家 与 3090 各跑一遍 env/setup_lerobot.sh,各把 [1]~[7] 完整输出粘回。
  3. 下单:hw/bom.md 先买 2 条 SO-ARM101(1L+1F) 起步。
  4. HF 登录:两台机器都 huggingface-cli login(脚本已配 hf-mirror)。

协作:我(本机)写 → 你 push git → 3080/3090 跑 → 粘回输出 → 我迭代。 装环境输出回来后,我就铺 P1 的具体命令/配置(第一条臂的 find-port / 校准 / 遥操 / 采集)。