← reports index
方案讨论 · 2026-09-07

在中国遥操作这台机器人 —— 以及要不要给杯子装液体

两个正在决定的问题,放在一起是因为它们共用同一个约束:操作者在中国,机器人在芬兰,实测 RTT 326 ms。这一页记录的是为什么这么选,包含被否掉的方案和否掉的理由 —— 六天后回头看时,"当时为什么没走那条路"比结论本身更值钱。

两个结论先放这里
① 遥操作走键盘,不走 VR。VR 是加分项,给 2 小时时限,卡住就放弃。
② 09-13 不上液体。要上的话先做套环和盖子,不做泵、不做万向环。

第一部分 · 在中国怎么遥操作

1.1 先把延迟拆开算

Tailscale 实测:中国↔芬兰 直连 P2P(不是中转),tailscale ping RTT 326 ms。闭环要这么算:

环节约
相机采集 + 编码40 ms
网络单程163 ms
头显/浏览器解码 + 显示40 ms
你看到的世界,晚了≈ 250 ms
你的动作 → 舵机(单程)163 ms
闭环合计≈ 400–450 ms

人在 100 ms 以下感觉不到延迟;300 ms 以上必须改成"动一下、停下来看、再动"(遥操作文献里的 move-and-wait)。抓杯子在这个延迟下能做但会频繁抓空;倒液体基本不用想。

1.2 关键区分:延迟毁的是闭环伺服,不毁监督式指令

这是整个方案的支点。据此分工:

谁做什么为什么给他
芬兰现场(如果有人)主从臂做抓取0 延迟
中国的操作者头部转向观众、底盘挪位、旋转杯身给观众看、推杯给顾客、触发自主策略都是慢速大幅动作,400 ms 完全够用

Demo Day 现场预计没有我们的人,所以主从臂那一段不存在,全部动作落在中国这一侧 —— 更要挑延迟容忍的动作。GOAL-AUDIENCE-INTERACTION.md 里那几个互动动作正好全是慢动作,不是巧合。

1.3 结论:走键盘,不走 VR

同一个服务器已经有键盘控制了,不需要头显。
XLeVR/web-ui/index.html:115 有完整的 Desktop Interface,interface.js:352 的 sendKeyCommand() 把按键发给同一个后端。页面副标题原文:"Dual-arm robot control via VR controllers and keyboard"。

也就是说:在中国用笔记本的普通浏览器,经 Tailscale 打开 https://<jetson>:8443,就能控制双臂。不需要 Quest、不需要登录 Meta、不需要 VPN。

而且有个反直觉的点,它是选键盘的真正理由:

键盘接口在高延迟下比 VR 更好用。

键盘是离散增量指令 —— "往前 5 mm"、"腕部转 5°"。按一下、等、看画面、再按。这天然就是 move-and-wait,326 ms 对它几乎无害。

VR 是连续手部跟踪:手在真实空间里连续移动,机器人晚 400 ms 跟上,人的本能会立刻过冲、再反向过冲 —— 这正是高延迟遥操作最经典的失败模式。

叙事上不亏。台上那块画中画写的是 "Operator: China · live",观众要看的是"有个人在 7,000 公里外实时操作这台机器人"。这件事用键盘完成和用头显完成,说服力一样。

1.4 如果仍然要 VR:架构和它的坑

好消息是架构对我们有利。XLeVR 是 Jetson 上的 HTTPS 服务(:8443,自签证书),Quest 用浏览器打开一个 WebXR 页面,VR 场景在头显本地渲染。网络上只走两样:手柄/头显姿态出去,机器人相机画中画回来。不需要推流 VR 画面,带宽很小(头相机 424×240),也不会因为网络卡而晕 —— 只有机器人显得迟钝。

问题只剩:怎么让中国的 Quest "看见"芬兰的 Jetson。

方案 A:Quest 上装 Tailscale —— 对租借头显不可行

侧载 Tailscale APK 要开发者模式,而 Quest 开发者模式的链条是:Meta 开发者账号(验证手机或信用卡)→ 建一个组织 → 在手机 App 里给设备开开关。手上这台是租借的,账号不是我们的,这条链走不完,也不该给租借设备绑自己的开发者组织。

方案 B:cloudflared 隧道 —— 租借头显走这条

Quest 浏览器 → 公网 HTTPS 地址(正式证书) → cloudflared → Jetson :8443

cloudflared tunnel --url https://localhost:8443 --no-tls-verify

头显上什么都不用装:不用开发者模式、不用侧载、不用 Tailscale。--no-tls-verify 是必须的 —— 本地是自签证书,cloudflared 默认会拒。出来的 *.trycloudflare.com 地址自带正式证书,WebXR 的安全上下文要求直接满足。

代价两条,都要处理:延迟(绕 Cloudflare 边缘,比直连高,必须实测别猜)和公开 URL(任何人拿到就能控制机器人,必须加认证)。

VPN 那一层:放路由器,不要放头显

Quest 过 Meta 账号那关仍需访问 Meta 服务。关键坑:Android 同一时刻只允许一个 VpnService 应用 —— 校园 VPN 客户端和 Tailscale 装在头显里会互相顶掉。

  1. 旅行路由器(GL.iNet 那类)刷校园 VPN 配置,或用笔记本连 VPN 后开热点
  2. Quest 连这个热点 → 发往 Meta 的流量透明地走 VPN,登录能过
  3. 走方案 B 就不需要在头显上装任何东西,冲突自然消失
先测一件五分钟的事:校园 VPN 是全局出口还是只通校内资源?很多学校 VPN 是分流的,只把校内网段走隧道 —— 那样它解不了 Meta 的锁。手机连上 VPN 试着打开 Meta 服务就知道。

1.5 给 VR 设时限:2 小时

这条链有 5 个串联的失败点,全过才有 VR:

  1. 校园 VPN 能否解 Meta 的锁 ← 最可能失败,也最快知道
  2. 租借头显的账号权限能否重设成功
  3. cloudflared 地址在中国能否稳定访问
  4. Quest 浏览器能否进 WebXR 沉浸态
  5. 端到端延迟能否低到可用

而 6 天后就是 Demo Day,同时还有左臂模型没上机、看门狗没补、桌子没落实。按 1→2→3 顺序试,任何一步卡住就停,转键盘方案。

上手臂之前必须先验的三件事(全部在舵机断电或 dry-run 下做):
① 能打开页面、看到 UI ② 能进沉浸态,手柄姿态有数在变 ③ 实测 glass-to-glass 延迟 —— 拿手机秒表怼着头相机,头显里读到的数字和真实秒表的差。这个数比 326 ms 的 RTT 重要得多,因为编解码那两段很可能比网络本身还大。

第二部分 · 液体和杯子改造

2.1 09-13 不上液体

排第一的 ⭐⭐⭐⭐⭐ 是 "当众把杯子挪 10 cm,它还是能抓到",原文写着"没有任何其他动作有这么高的说服力密度"—— 而它不需要液体。在远程这个设定下它的说服力还翻倍:操作者在中国,不可能事先知道杯子在哪。观众心里"这是不是提前录好的"当场死透,而且这一段不需要自主策略、不需要手眼标定。

2.2 真要上液体:核心思路是解耦

把"装液体"和"被抓"解耦。夹爪的问题是抓取可靠性,液体的问题是洒 —— 别用同一个物体同时解决这两件事。

依据是实测(BLADE-README.md:449):70 mm 塑料杯可靠;90 mm 玻璃杯包布是抛硬币。Fin-Ray 弧面半径 48 mm,最大覆盖到 90 mm 杯。

#做什么成本什么时候做
1抓取套环 —— 套在任何杯子外面,外径做成已验证可靠的 70 mm 那一档,底下带一圈下沿凸缘让指尖勾住低(改一个参数化 SCAD 件)现在就该做
2带小孔的杯盖 —— 防运输晃洒极低(几小时)顺手
3配重底座 —— 套环下方加配重降重心低顺手
4万向环杯托 —— 杯子坐在两轴万向环里,手臂怎么转都保持水平中(两组轴承)Demo Day 之后
5重力供液 —— 上方架带阀容器,机器人只负责举稳。不要做泵中Demo Day 之后

为什么套环排第一

万向环为什么好但要往后放

它把"倒洒"从控制问题变成机械问题 —— 不再依赖策略精度,观众也一眼看懂。但要做两组轴承,6 天有风险。

2.3 液体本身

用水 + 食用色素,不要真酒(黏、有味、洒了难清、酒精配电子设备是另一类风险)。
更保险的变体:透明密封杯,液体预先封在里面 —— 永远不会洒,视觉上完全是一杯酒,代价是没有"接液"那一段。

2.4 如果非要在 6 天内上液体

唯一现实的组合:盖子 + 套环 + 人工倒液、机器人只举稳。泵、万向环、自动阀门都不要碰。

顺带:02-hardware/training-props/ 里已经有 robot-cobbler-shaker v1/v3/v4(调酒摇壶道具,v3 带可拆标记)。如果要走"调酒"的视觉叙事,这个现成的可能比液体更划算。

这一页答不了什么

2026-09-07 · RTT 326 ms 来自本机 tailscale ping laptop-0hn466v3 · 相关:给主办方的回复 · 抓取位点图