← 返回构建报告首页
XLeRobot · 系统架构与分工 · 2026-08-31

系统架构与分工

在 当天讨论记录 的基础上,把整套"调酒服务"任务拆成 要训练 / 能编程 / 要仿真 三类,逐一给出跑在哪、谁负责、要不要采数据,并把当前失败模式对上深度相机的真实作用。 带 复现 的是他人已发表的真机结果,推理 是我的推断,实测 是本机跑过的。

一条贯穿全局的原则:只对"接触密集 + 强依赖感知 + 难以建模"的技能做模仿学习;其余能编程就编程; 仿真只在"需要闭环控制、又不能安全/廉价采真实数据"时才用。 现实动机:你们最大的瓶颈是两人远程、采不到数据 —— 每一个能编程的技能,就是一个你不用飞回芬兰采数据的技能。

0 · 先钉死概念:编程 vs 模仿训练 vs 仿真

"换个杯子/位置/形状就抓不起来"这个担心 —— 只对"写死坐标"成立,不是"编程"的全部。要分三层:

方式怎么工作换位置换形状/杯子要你采数据
① 写死坐标走到固定 XYZ✗ 挪一下就抓空✗不要
② 感知+编程抓取
(黑客松那种)
每一帧检测杯子→用深度算它此刻 3D 位置/形状→算抓取姿态→伸过去✓ 能✓ 大体能不要
(用别人训好的通用模型)
③ 模仿训练
(现状 ACT/SmolVLA)
采人示范→训"画面→动作"✓ 分布内⚠ 仅示范覆盖过的要,且要很多
关键澄清:你的顾虑其实是第 ① 层,不是第 ② 层。第 ② 层"编程抓取"恰恰靠实时感知泛化 —— 它每次都重新看杯子在哪、什么形状再算怎么抓,所以换位置、换杯子照样работает。聪明的部分在那些预训练好的通用视觉模型里 (那些也是训出来的,只是不用你训、不用你采数据)。

那模仿训练(③)的优势在哪?它买的是"难以用几何写出来的行为":柔顺接触、多步串联、利用难以描述的视觉线索、应对遮挡杂乱; 且不需要你搭抓取位姿模型+手眼标定,只要示范给它看。代价是天花板 = 示范质量/覆盖,且要大量你自己的数据(正是当前卡点)。

仿真(simulation)是第三个轴 —— 不是"怎么抓",而是"训练数据从哪来":用仿真器造海量数据/让机器人在仿真里试错, 好处是数据便宜、试错安全,代价是 sim-to-real 差距、搭建重(接触/流体尤难)。仓库已探讨,结论先别转仿真。

0.5 · 能不能混用?到底哪一步该用模仿?

能混,而且"混用"就是主流最佳架构,不是二选一。 两种混法: ①按技能拆开串起来(导航=编程、3D 定位=感知、最后闭合=可选模仿、倒水=脚本); ②在同一技能里混 —— 让感知先算出杯子 3D 位姿、当输入喂给模仿策略,策略就不用从像素瞎猜位置,模仿变得极省数据;或感知伸到杯前 3cm、模仿只管最后柔顺闭合。 仓库 sim-strategy 写的就是这个。
模仿(IL)真正擅长经典感知+编程更好
柔顺接触/"手感"(软的/易变形/插配合)刚性、位姿可测的物体
杂乱场景靠细微外观分辨"是哪一个"场景干净、目标明确
多步隐式策略(边倒边看液面)动作可脚本化
不想搭感知栈、宁愿"示范给它看"愿搭一次感知栈换免数据
泛化到列举不完的真实变化变化有限、可枚举
一句实话:只为"抓起一个刚性杯子",你们可能根本不需要模仿学习。 经典"感知+抓取"(路线 A)正当、更可靠、且免采数据,刚性杯子恰好落在"经典更好"那栏 —— 这对卡在采不到数据的你们是解放。 模仿在本项目剩下的 niche 很小:①最后交接给人手那一下的柔顺/时机;②将来要端到端策略跨杯型泛化又不想搭感知栈;③倒酒液面自适应。务实:以经典感知/编程为主,模仿只点缀。

现在没深度的 RGB 数据白采了吗? 不是 —— 它已证明"录制→训练→部署"链路通、且策略确实在看杯子(不是背坐标)。 但若转路线 A,这些作为"最终方法训练数据"会被取代。我加的深度录制保证以后的示范自带深度,不被锁死在某条路线。

1 · 技能分解表(训练 / 编程 / 仿真)

技能归类依据
整车 A→B 移动编程经典导航,确定性问题,学习又贵又不安全(见 §6)
抓起 / 放下杯子模仿 或 经典深度模块化接触密集、依赖实时位姿。深度收益最大处(见 §3、§4)
把杯子伸向顾客感知+编程①哪侧=感知算 3D 点;②伸过去=IK+规划。只有"交接一下"值得极少量学习(见 §5)
倒水到指定位置位置=编程;动作=先开环脚本固定杯不看液面时脚本够;防洒闭环才需流体仿真,代价高,暂不做
递交放爪触发编程+感知语音 KWS+状态门控+手部确认(见 §5)
情绪→推荐→语言反馈编程+prompt预训练感知+云端 LLM,几乎不训练(见 §7)
人/手侧别定位编程+感知姿态检测+深度反投影+桌面系标定(见 §8)

一句话:真正必须采真实示范的核心就是抓 + 放(外加"交接"极少量)。其余全部能编程/感知/prompt。

2 · 当前失败模式诊断,深度能治哪个

偏右 / 不正对 / 最后 3cm 不准 → 终末对齐失败。深度能帮但要看方法(§3/§4), 也可能是手眼标定本身偏。⚠ 先查手眼标定:当前夹爪若没重标/不可信,目标点就是系统性偏的,直接解释"偏右"。 修标定一次性、之后所有任务受益、不用采数据 —— 永远比反复采示范便宜。
抓时猛/太快向上 → 动作平滑/时序问题(chunk 边界、闭爪前抬升过大)。深度帮不上。 修法:示范"先闭爪再稳抬"要一致够多;或安全层加速度限幅。

3 · 深度 · 模仿 · 仿真的关系(按"深度怎么用"分)

  1. 经典模块化抓取(编程,不训练):检测→深度反投影 3D→算 6-DoF 抓取→脚本靠近。帮助大、最好复现 —— 黑客松视频基本是这条。
  2. 深度当"第 4 通道"塞进 ACT/SmolVLA(模仿):收益小且不稳(仅"RGB 有感知缺陷时"有用)。
  3. 深度做成点云喂点云策略 DP3/iDP3(模仿):真机 40 示范 85% 复现,"最后 3cm"大提升出在这。 ⚠ 但 DP3 作者明确警告:便宜的 D435 点云质量太差会失效;你们 Orbbec 335 属这一级,必须先实测 30–60cm 抓取距离的深度质量/填充率。
  4. 仿真(≠模仿):仓库已探讨,结论先别转仿真;倒水防洒闭环才可能用流体仿真,现在不做。
修正声明:我在讨论早期说过"深度大概率能修好最后 3cm",按调研应打折为上面这份更精细的结论 —— 深度有用,但"加一路通道"收益小,大收益在点云或经典模块化,且先验证你这台便宜传感器的深度质量。

4 · 抓取的两条路线(需要你拍板)

路线怎么做要采数据?点评
A 经典深度模块化YOLO-World/Grounded-SAM 检测→深度反投影→AnyGrasp/Contact-GraspNet 出抓取→脚本靠近几乎不用解你们"采不到数据"死结,顺带解决"精准",可当可靠 baseline / oracle
B 模仿学习(现状)ACT/SmolVLA 纯 RGB,继续;用 LeRobot 0.6.2 原生深度做"加/不加深度"A/B要用真实数据量出深度到底帮不帮,代价低
C 点云模仿(升级)DP3/iDP3要前提是深度质量验证过关
建议:先做路线 A 的模块化 baseline(免数据、见效快、还能当 oracle 校准 B),同时对现有模仿做深度 A/B(代价很低)。路线 C 等深度质量验证后再谈。

5 · 深度录制实现 + 语音放爪 + 侧别定位

深度录制(非侵入 sidecar)

实测 lerobot 0.6.2 数据层支持深度(38 处),但安装的 realsense 模块没暴露 use_depth;你们相机是 Orbbec,深度走 v4l2_depth.py(Z16)。 不能把 head_depth 塞进 --robot.cameras(会被视频编码压毁 16-bit、且 schema 3 通道)。 推荐旁路 sidecar:独立进程随 lerobot 同跑,把 Z16 按时间戳无损存(16-bit PNG/npy)到数据集旁,两条录制路径各加启停挂钩,完全不碰现有 RGB 录制。 深度节点 /dev/video0 现可读、headless 可自测,不依赖舵机 → 可先把"无人版"跑绿。

语音放爪(可行性高)

三段:收音→识别固定短语(离线 KWS:openWakeWord/Picovoice,或中文 FunASR/Vosk)→发放爪指令。你那句"请+名字+放开杯子"越长越独特、误触发越低,是优势。 坑:别让一句话成唯一放手依据 —— ①状态门控只在递交姿态激活;②手部确认(用深度)听到且看到手在近处才松;③可选拽力兜底(Feetech 电机读电流)。mic/speaker 已有。编程,不训练。

人/手侧别定位

RTMPose-s(Jetson 友好)或 MediaPipe → 对腕/肩像素采深度反投影出相机系 3D → 一次桌面系标定 → "哪侧"=X 符号、"最近"=最小距离。⚠ 别用 MediaPipe 的相对 z,度量位置用深度。编程+感知,不训练。

6 · 底盘 A→B 方案(给硬件同学)

推荐:"定点里程计 + 到位后用 AprilTag 视觉对齐" ,不上全导航栈,除非小车真要在大场地自由跑。三者都属编程,不占数据。

两个待确认:①小车到底要移动多少?②底盘有没有激光雷达?

7 · 情绪识别 → 推荐 → 语音反馈(Ville 远程负责)

核心:把"看"和"想"分开 —— 看在本地、想在云端。

头相机 →①人脸检测 →②表情粗分类 ┐ (Jetson 本地,轻)
本地麦克风 →③(可选)语音输入 ────┘ 结构化信号
  → ④云端 LLM:情绪+四款酒描述 → 选哪杯 + 生成一句话 (云端,重)
  → ⑤TTS 读出来 (Jetson 本地)  → ⑥把选中的酒传给抓取侧
环节跑在哪用什么训不训
①人脸检测JetsonMediaPipe Face / YOLO-face预训练
②表情识别JetsonHSEmotion(边缘轻量),转 TensorRT预训练
④推理+推荐+措辞云端 LLMClaude API + prompt engineering写 prompt,不训练
⑤TTSJetsonPiper(离线)—
Jetson 会不会太重:会 —— 只在你把 LLM 也放上去时。Jetson 还要跑抓取推理+录制,LLM 必须上云。 减负四招:①LLM 上云;②事件触发(人脸稳定停留才启动);③低帧率(1–2Hz);④TensorRT 跑表情模型。

怎么训:基本不训。表情用预训练权重,推荐是 prompt engineering。⚠ 经典七情绪识别不可靠,只取粗粒度(正/中/负)当软信号喂 LLM。 Ville 远程:整条链只要 webcam+API key+扬声器,在台湾用自己笔记本摄像头就能全程开发,完全不碰芬兰机器人。 接口契约:{"mood":"tired","recommended_drink":"C","speech":"…"},抓取侧只消费 recommended_drink。

8 · 头部硬件(给硬件同学)· 待办

现状:头壳已打印;待装 speaker + 情绪小屏。

9 · 工作量与分工表

模块建议负责人训练/编程跑在哪被"采不到数据"阻塞
抓取主线(采数据+训模仿)芬兰现场模仿Jetson是(当前死结)
深度录制 sidecar + 无人自测我(可先做)编程Jetson否
经典深度抓取 baseline(路线 A)待定编程+感知Jetson否(可离线开发)
情绪→推荐→语音反馈Ville(台湾)编程+promptJetson+云否(完全离机开发)
语音放爪待定编程Jetson否
人/手侧别定位待定编程+感知Jetson否
底盘 A→B 导航本地硬件同学编程底盘否(待确认硬件)
头部硬件装配硬件同学装配—否(待人+资料)

10 · 待你确认的问题

  1. 底盘:需要移动多少?有没有激光雷达?
  2. 手眼标定:当前夹爪是否重标过、可信?(决定"偏右"是标定还是模型问题)
  3. "伸向顾客":接受"感知+编程运送+极小交接学习",还是坚持整段示范?
  4. 抓取路线:走 A(经典模块化,免数据)、B(模仿+深度 A/B),还是两条并行?
  5. 人手:语音放爪 / 侧别定位 / 经典 baseline 分别谁负责?