P-BunnyVisionPro-2024 · Real-Time Bimanual Dexterous Teleoperation for Imitation Learning
作者 / 机构:Runyu Ding¹(港大,UCSD 实习), Yuzhe Qin², Jiyue Zhu², Chengzhe Jia², Shiqi Yang², Ruihan Yang², Xiaojuan Qi¹(港大), Xiaolong Wang²(UCSD);¹ The University of Hong Kong,² UC San Diego
发表:arXiv 2024.07 首发(arXiv:2407.03162v1),ICRA 2025
代码 / 项目页:https://github.com/Dingry/BunnyVisionPro · https://dingry.github.io/projects/bunny_visionpro.html
在线索中的位置:T07 人形遥操栈 的VR-based 灵巧手 teleop 事实标准之一(与 Open-TeleVision 并列);dex-retargeting 中间件在工业界的代表实现。
一句话定位:用 Apple Vision Pro 的手/腕追踪 + 三段解耦模块(hand retargeting / arm motion control / haptic feedback),把双臂+灵巧手(24-DoF)的实时 teleop 做到 >60 Hz、CPU 即可、无需 GPU,并第一次把触觉反馈以 1.2 美元单价带进 VR teleop。
动机
灵巧手 teleop 在 2024 年中之前的两条路都有硬伤:
- Gripper 类(ALOHA / GELLO):用 joint-space mapping(leader-follower 同构),机器人专属、leader 与 follower 必须 kinematic 等价,且碰撞避免/奇异处理全压在操作员身上——长时操作极易出错。
- Dexterous 类(AnyTeleop、DexPilot):用相机/VR 输入手势,但 arm motion 计算依赖重型 GPU(AnyTeleop),且多数只设计单臂;glove-based(MANUS)又贵且要求特定手型。
Bunny-VisionPro 的目标:用 Vision Pro 当输入前端(廉价、开箱即用、双手腕+手指全追踪),但在后端做三件之前的系统没同时做好的事——(a) 实时处理loop joint(如四连杆)的灵巧手 retargeting;(b) 把碰撞避免 + 奇异避免直接做进 arm motion 控制环,不甩给操作员;(c) 给操作员低成本触觉反馈,让"看不见的接触"变得可感知。整体目标是让 IL 数据采集从"单臂数据"升级到"双手长时灵巧任务"。
方法核心
系统三段解耦:hand motion retargeting + arm motion control + human haptic feedback,每个模块独立进程,避免延迟累积。
1. Hand Motion Retargeting:实时处理 loop joint 的 SQP
把"人手指 pose → 机器人手关节角"建模成在线优化(Eq.1):
$$\mathcal{L}_{hand} = \sum_{i=1}^{N}\|\alpha v_i - FK_i(q)\|^2_2 + \beta\|\Delta q\|^2_2 \quad \text{s.t.}\ q^l \le q \le q^u$$
- 第一项:scaled 人手 keypoint 向量 $\alpha v_i$ 与机器人手前向运动学 $FK_i(q)$ 的 keypoint 向量距离;$\alpha$ 是人手-机器人手尺寸缩放因子。
- 第二项:temporal smoothness(相邻帧关节变化惩罚),权重 $\beta$。
- 求解:Sequential Quadratic Programming (SQP),迭代解二次近似。
关键贡献——loop joint 实时处理:四连杆结构(如 Ability Hand)的 joint 数 > 实际 DoF,n 个关节里只有 k 个主动、其余 n-k 是被动(被动关节位置是主动关节的函数 $q_j = c_j(q_1,\dots,q_k)$)。如果直接在 SQP 里加 affine 约束,非线性 FK 会让求解不稳且慢。Bunny-VisionPro 的做法是reformulate 到降维空间:
- forward pass:被动关节位置由 $c_j$ 显式算出。
- backward pass:把被动关节的梯度 $\frac{\partial \mathcal{L}}{\partial q_j}$ 通过链式法则 backprop 到主动关节:
$$grad_i = \frac{\partial \mathcal{L}}{\partial q_i} + \sum_{j=k+1}^{n}\frac{\partial c_j}{\partial q_i}\frac{\partial \mathcal{L}}{\partial q_j}$$
这样优化变量维数从 n 降到 k,无需 SQP 处理 affine 近似。结果:四连杆 retargeting 提速 10.2×,单 CPU 核跑到 300 Hz,首次让 Ability Hand 的 full dexterity(含 finger gaiting)能实时 teleop。
2. Arm Motion Control:统一 IK + 碰撞 + 奇异
把传统的 closed-form IK 重写成统一优化目标(Eq.4):
$$\mathcal{L}_{arm} = \mathcal{L}_{ik} + \mathcal{L}_{sin} + \mathcal{L}_{col}$$
IK 项(Eq.5):$\mathcal{L}_{ik} = \beta_{pos}\|p_{ee} - p_{wrist}\|_2 + \beta_{rot}\cdot\arccos(2\langle q_{ee}, q_{wrist}\rangle^2 - 1)$。位置用 L2、旋转用四元数内积转角度。
奇异避免 $\mathcal{L}_{sin}$(Eq.6 左):用 manipulability index $\sqrt{\det[JJ^T]}$ 作可微目标,但只在最小奇异值 $s_0 < s_{low}$ 时触发——既保证可微性、又避免在非奇异区无谓扰动:
$$\mathcal{L}_{sin} = \begin{cases} \frac{1-\sqrt{\det[JJ^T]}}{\lambda}, & s_0 < s_{low} \\ 0, & \text{otherwise} \end{cases}$$
碰撞避免 $\mathcal{L}_{col}$(Eq.6 右):避免 GJK 在 convex mesh 上的高开销,把每个 link 建模为 m 个球体的集合,自碰撞代价是所有球对的 1/距离之和(仅对需要检查的球对,同 link 或父子 link 跳过):
$$\mathcal{L}_{col} = \sum_{i=1}^{m}\sum_{j=1}^{m}\frac{\mathbb{1}(e_i, e_j)}{dist(e_i, e_j) + \epsilon}$$
这个简化让距离函数可微、计算快。整套 motion control(IK + collision + singularity)在 CPU 上 >60 Hz,无需 GPU。
3. Human Haptic Feedback:1.2 美元 ERM 触觉手套
之前的 vision-based teleop 全部忽略触觉。Bunny-VisionPro 用 Eccentric Rotating Mass (ERM) 振动马达(1.2 美元每个)+ 廉价 ELEGOO UNO 板做出低成本触觉反馈:
Step I — 触觉信号处理:Ability Hand 指尖的 Force-Sensitive Resistor (FSR) 有 zero-drift 问题(且被包裹材料加重)。解决:开机时在各关节位置采 baseline、运行时用插值减 baseline;再加 low-pass filter 降噪。
Step II — 振动马达驱动:ERM 需恒定电压,用 PWM(pulse-width modulation) 模拟连续触觉强度;每个 ERM 串一颗 BJT(双极结型晶体管),保证每路独立调、只在 pulse width 内激活、抗电路噪声。
这个设计让"机器人摸到东西 → 操作员手指振动"的闭环花 < 10 美元就能搭起来,远低于 MANUS / SenseGlove 等专业力反馈手套。
4. Bimanual 协调:initialization modes
机器人两手初始间距与操作员两手间距不一致,直接 teleop 会导致"机器人手飘移到与人手不同的相对位置"。Bunny-VisionPro 设计多种 initialization mode(详见 Appendix),在机器人开始动时把 robot hands 与 operator hands 对齐——不同任务选不同模式。
5. 通信与流水线
Vision Pro 通过 Apple 的 ARKit stream([45])把手/腕 pose 流到主控机;三个模块各跑独立进程,避免一环阻塞拖累全链路。
关键实验
Profiling(Table 1):loop-joint retargeting 在 i7-12700KF 单核 300 Hz;motion control(含碰撞+奇异)>60 Hz;haptic PWM 独立进程。
Telekinesis benchmark(Table 2,10 个单臂任务):与 Teleskinesis [Qin 2021] 与 AnyTeleop [Qin 2023] 对比,9/10 任务匹配或超越,scissor pickup 略低(Ability Hand DoF 受限,难以插入剪刀环)。
自定义双手任务(Fig.1):3 个短时(grasp toy / clean pan / uncover-and-pour)+ 3 个长时(wipe glass / sweep floor / prepare coffee)。对比 AnyTeleop+(集成 Vision Pro 手部追踪、相同硬件):
- 任务成功率 +11%;
- 完成时间 −45%(长时任务优势尤其明显);
- 用 Bunny-VisionPro 采的 demo 训 IL policy,对未见姿态/物体泛化 +20%。
注:teleop 对比实验未启用触觉反馈(demo 采集早于触觉模块完成);触觉在独立 user study(untrained 操作员)评估,显示提升操作精度与沉浸感。
为什么重要
- VR-based 灵巧 teleop 的事实开源标准之一。与 Open-TeleVision 几乎同期、互补,2024.07 后大量 humanoid 双手工作(包括 1X、Figure、Unitree 生态)以两者为数据采集底座。
- 首次把"loop joint 实时 retargeting"做工程化:四连杆、欠驱动手的 retargeting 之前要么离线、要么靠 GPU;Bunny-VisionPro 的降维 + backward backprop 让单 CPU 核跑到 300 Hz,使 Ability Hand 这类廉价欠驱动手能上生产。
- 碰撞+奇异内建进 motion control:把 ALOHA 系把碰撞甩给操作员的痛点直接解决——这是长时双手任务完成时间 −45% 的主因。
- 1.2 美元触觉反馈:把"vision-based teleop 无触觉"的默认设定打破,开启 DOGlove、TCDM 手套等低成本触觉 teleop 一脉。
- dex-retargeting 中间件的事实推广:与 AnyTeleop 共享同一 retargeting 思路(minimize fingertip keypoint vector distance),让 dex-retargeting 成为灵巧 teleop 的 de facto 接口层,被 iDP3、Open-TeleVision 直接复用。
局限
- 触觉反馈是振动型(ERM)、不是力反馈:操作员只能感知"有没有接触",不能感知力的方向与大小;精细力控任务仍受限。
- Vision Pro 手部追踪精度依赖光照与遮挡:手互相遮挡、快速运动时丢追踪,需重初始化。
- initialization mode 仍是手工:每个任务需选合适模式,未做到自适应。
- 未做全身 / locomotion:只覆盖双臂+手,下半身由其他系统(HOVER / HumanPlus / OmniH2O)负责——所以 Bunny-VisionPro 与全身 teleop 栈在实际部署里常常组合使用。
- FSR zero-drift 的 baseline 校准对包裹材料敏感:换指尖包裹要重做校准。
复现要点
- 硬件:2× UFactory xArm-7 + 2× Ability Hand(6-DoF,含四连杆)= 24-DoF 系统;每只 Ability Hand 30 个指尖 FSR(共 60);2× RealSense L515(前+顶)。
- 输入:Apple Vision Pro(手+腕追踪),通过 ARKit stream(PDF ref [45])把 pose 流到主控机。
- 关键模块:(1) hand retargeting 用 SQP + loop-joint backward backprop,不要在 SQP 里硬加 affine 约束;(2) arm motion control 用 sphere-approximated link + manipulability index,避免 GJK;(3) 触觉 ERM + PWM + BJT,必须做 FSR baseline 校准否则 drift 严重。
- 频率预算:hand 300 Hz / arm 60 Hz / haptic 独立 / Vision Pro 输入 30 Hz——三段独立进程,否则一环阻塞全链路。
- 常见坑:(1) loop joint 直接加约束会让 SQP 在非线性 FK 上发散;(2) $\alpha$(人手-机器人手缩放)要按操作员手长重新标定;(3) 长时双手任务(如 prepare coffee)的初始化模式选错会导致两手初始位置错位、整个 episode 失败。
相关
- 建立在:AnyTeleop / dex-retargeting [Qin 2023, arxiv:2307.04577](fingertip keypoint vector retargeting 范式,详见 P-DexPilot-2019 的视觉 teleop 起源)、DexPilot [Handa 2019]、ALOHA [Zhao 2023]、TeleMoMa [Dass 2024, arxiv:2403.07869](模块化移动操作 teleop)。
- 同期/对照:Open-TeleVision [Cheng 2024, arxiv:2407.01512](同样基于 Vision Pro,但聚焦沉浸式反馈与不同 retargeting 实现);HumanPlus [Fu 2024](全身 teleop,hand 部分用 HaMeR,10 Hz)。
- 直接引出:便携全身 dex teleop 趋势(HumanoidExo [2510.03022]、RealDexUMI [2606.06033]、NuExo)、低成本触觉手套(DOGlove)、humanoid VLA 数据采集栈(GR00T N1、Helix)。
- 本仓库线索交叉引用:T07 人形遥操栈(转折 4,VR 成熟期)、T11 灵巧操作(dex-retargeting 中间件)、T10 VLA+WBC(teleop 数据→VLA 管道)。