Q1:DexPilot 开源了吗?
没官方开源。
论文 + 项目页(sites.google.com/view/dex-pilot)只给视频和介绍。📎
复现路径建议直接从 AnyTeleop 的 dexsuite/dex-retargeting 入手——它是 DexPilot retargeting 思路的通用化开源实现,配合任意手部追踪(MediaPipe / SMPLer-X / Apple Vision Pro)即可搭一套现代版 DexPilot。
论文:Handa, Van Wyk, Yang, Liang, Chao, Wan, Birchfield, Ratliff, Fox. DexPilot: Bare-Hand Teleoperation of an Articulated Robotic Arm and Dexterous Hand. ICRA 2020(arXiv 投稿 2019-10). arXiv:1910.03135. 🌐 · 真机平台:KUKA iiwa7 + Wonik Allegro Hand(23-DoA 系统)。
不用戴手套也不用穿外骨骼。
让四台相机看你的裸手,机械手就跟着动。📎
DexPilot 之于灵巧手,就像同声传译之于外语讲演。
你的话原样不变,由翻译实时改写成对方能听懂的语言。
翻译不盯音节,只盯语义要点。
操作员终于可以「徒手教」一只灵巧手做事。
要解决的问题:让操作员用裸手就能远程控制一只灵巧手机械臂。📎
老办法的痛点:DexPilot 之前,灵巧手遥操作靠外骨骼或 IMU 手套。📎
这俩东西又贵又脆。
后果很严重:示教数据采集成本极高、规模极小。
模仿学习几乎无法规模化。
操作员门槛也高,非专家根本用不来。
DexPilot 的转身:扔掉手套和外骨骼。
在桌面周围架四台深度相机,盯操作员的裸手。📎
问题是:人手有 20 个关节,Allegro Hand 只有 16 个。
关节轴位置和方向也都大不一样。
所以不能逐关节一对一映射——那样指尖够不到、抓握完全变形。
方法核心(大白话):整套系统做三件事,像流水线一样串起来。
系统先用神经网络从点云里找出 5 根手指的 23 个关键点。
再用一个超薄小网络把关键点翻译成 20 个人手关节角。
这一步叫手部追踪。
它不是按关节角硬塞,而是定一组「任务向量」。
比如「拇指尖到食指尖的距离」「两根主指之间的方向」。
算出一个让机械手这组向量尽量贴近你人手的关节角。
关键 trick:捏合时把拇指-食指强行贴近 0.1 毫米(保证贴合物体)。
同时把两根主指推开到至少 30 毫米(保证指头不打架)。📎
它自带避障。
机械臂不会撞桌、撞你、撞自己。
臂用 200 Hz 力矩级阻抗控制,手用 30 Hz 关节角控制。📎
这套三段式是 DexPilot 真正的遗产。
后续视觉 / VR 灵巧遥操都沿用这套模板。📎
模板就是「感知 → retargeting → 跟踪」。
后继者有 AnyTeleop、DexCap、Bunny-VisionPro 等。
为什么「retargeting 比控制机械臂更难」:控制机械臂是已经成熟的事。
真正卡脖子的是「人手 → 机械手」的映射。
人手和机械手骨架差太多,按关节角硬映射必然失败。
retargeting 用任务空间向量绕开关节级映射。
这是这篇论文最精细的工程。
一句话类比:DexPilot 之于灵巧手遥操,就像同声传译之于外语讲演。
你的话原样不变,由翻译实时改写成对方能听懂的语言。
这位翻译不看具体音节(关节角),只盯语义要点(任务向量)。
三线程架构(Sec.IV + Fig.4):系统跑在三台电脑上,三个线程各管一摊,端到端延迟约 1 秒。📎
输出 23 个 3D 关键点 + 20 维人手关节角(JointNet)。
DART 是模型-based 手部追踪器,做精细化配准。
DART 输出人手关节角进 kinematic retargeting,30 Hz SLSQP 解。
输出 Allegro 关节角。
Allegro 关节角直接下发。
关键设计·单一 cost function + 任务向量集(Sec.VII.A):不按抓握类型分多套优化。
只写一个 cost,关键在任务向量设计。📎
cost 由两项组成:距离项 + 正则项。
距离项让机械手的一组「任务向量」贴近重塑后的人手向量。
任务向量是「指尖到指尖」「指根到指尖」这类相对位置 / 方向。
正则项让 Allegro 偏向 fully open 姿态,避免冗余解。
(公式精确形式见下方深度部分。)
关键 trick·precision grasp 时的两套向量(Tab.I):
捏合时权重 s 跳到 200、目标距离 f 压到 η_1 = 0.1 mm——把拇指-主指强行贴近,确保捏住物体。
捏合时权重 s 跳到 400、目标距离 f 设为 η_2 = 30 mm——确保两根主指不互撞。
直觉:d_i 大时正常跟踪;d_i 小时 S_1 拉近拇指-主指、S_2 推开主指-主指。
这套向量在局部坐标系里表达,同时编码距离 + 方向 + 坐标系相对朝向,所以指尖朝向也隐含约束。
这才是 retargeting 真正的「秘诀」。📎
手部追踪的两阶段自标定(Sec.VI + Fig.6):先用彩色手套做 phase 1 自标定。
HSV 阈值生成 mask,ResNet-50 回归 2D blob 中心,三角化得 3D 标注。
然后在裸手点云上跑两阶段 PointNet++。
Stage 1 在 8192 点上回归 23 关键点。
Stage 2 用 Stage 1 的 pose 重采样手部点(更密),refine 关键点。
最终验证集关键点误差 9.7 mm、每关节角误差 1.33°。📎
硬件配置(Sec.III + Fig.3):KUKA iiwa7(7-DoF 臂)+ Wonik Allegro Hand(16-DoF,4 指)。
Allegro 指尖装 4 颗 BioTac 触觉传感器,共 92 路触觉信号。
内表面贴 3M TB641 grip tape。
4 台 Intel RealSense D415 时间同步向下指。
teleop 工作体积 80 × 55 × 38 cm。📎
常见误区(先抛一个,完整版见末尾):「按人手关节角一对一映射就行」——错。
人手 20 自由度、Allegro 16 自由度、关节轴几何完全不同。
一对一映射指尖根本够不到。
正确做法是 retargeting 到任务空间向量,让指尖的相对位置 / 方向匹配,关节角让优化器自己解。📎
DART 是什么,为什么要 NN 先验(Sec.V):DART [27] 是一个 model-based 手部追踪器。
它把人手铰接模型(来自 [28] 的 20 revolute joints CAD)配准到输入点云。
靠非线性优化 + 上一帧初始化。
问题:init 不在收敛盆里就灾难性失败(每几分钟一次),local minima 把手模型配到错位。
所以靠 PointNet++ 给 pose + joint 先验,把 init 拉回正确收敛盆。📎
两阶段 PointNet++ 的必要性(Sec.VI):Stage 1 在 8192 采样点上 voting-based regression 预测 23 关键点 + 手部分割。
但 Stage 1 在指节上点太稀,关键点质量差。
Stage 2 用 Stage 1 的 pose + segmentation 重采样手部点(更密),refine 关键点,并加手部 pose 随机化提升鲁棒性。
JointNet 是 2 层 FC,把 23 个关键点 3D 位置映射到 20 维人手关节角,作 DART 的 joint priors。📎
retargeting 求解细节:NLopt 的 SLSQP(Sequential Least-Squares QP),实时。
每解 init 自上一解(warm-start)。
forward kinematics 用 Orocos KDL。
输出加一阶 low-pass filter 去高频噪。
正则项系数 $\gamma = 2.5\times10^{-3}$。
额外约束:Allegro 主指的 distal joint = medial joint(减搜索空间 + 模仿人手)。📎
RMP + 阻抗控制(Sec.VII.B):Riemannian Motion Policies [39][40] 实时生成多优先级 Cartesian 轨迹 + 避障(防臂-掌撞桌 / 撞操作员)。
臂用 torque-level impedance controller @ 200 Hz;手用 retargeted Allegro 角度 @ 30 Hz。
手眼标定靠初始人手视角 + 假设机器人初始姿态求 robot→camera 变换;要求 pilot 起手 pose(fully open hand、掌平行桌面、指向前)。📎
实验:15 任务 × 2 pilot × 5 trial(Sec.VIII + Tab.II + Fig.14/15):任务覆盖 precision/power grasp、prehensile / non-prehensile、finger gaiting、compound manipulation。
包括 Pick&Place、Block Stacking(三 size)、Pouring Beads、Opening Jar、Brick Gaiting(in-hand 旋转 180°)、Card Sliding、Wallet、Box Flip、Container、Cup Insertion、Tea Drawer 等。📎
协议:2 pilots、每 task warm-up 3–5 次后跑 5 consecutive trial,报 mean completion time + success rate。
系统能可靠完成绝大多数任务。
long-horizon 多阶段任务(Container、Wallet、Tea Drawer)completion time 显著长。
小 cube 释放难(projection scheme 让 release 不可预测)。📎
NIST peg-in-hole(Fig.17):16×10×49.5 mm peg + 0.1 mm 间隙,成功率约 10%——是系统精度极限。📎
关键定性证据:Brick Gaiting 任务(Fig.16)中,中指 40 秒内接触 brick 7 次(BioTac 信号可见 7 个 peak)实现 180° in-hand rotation。
这证明 teleop 能产出复杂、long-horizon、含离散接触事件的感知运动数据,可作 play data 训自主策略。📎
局限:
换一只手就得重做整个向量表 + cost——被 AnyTeleop [Qin 2023, arXiv:2307.04577] 的通用 dex-retargeting 取代。🌐
后来 DOGlove [2502.07730] 等 bilateral teleop 要补的洞。🌐
后续 Apple Vision Pro 内置手部追踪才把鲁棒性拉到可用。📎
图谱定位:DexPilot 是 T11 灵巧操作与 T07 人形遥操栈的共同先驱节点。📎
在它之前,灵巧手遥操被外骨骼 / 手套绑架——示教数据无法规模化、IL 没法起飞。
它把门槛从「整套动捕 + 手套」降到「四台相机 + 裸手」,是 2023 年起灵巧 IL 复兴的前提之一。
演化谱系:
副产品·三段式模板:感知 → retargeting → 跟踪这套模板被后续整条视觉 / VR 灵巧 teleop 线作为默认接口层。
论文里写的 92 路触觉 + 23 路关节位 / 速 + 23 路 torque 同步记录,也是灵巧手 IL 数据的事实字段模板。📎
Open problems:
一个能闭环力 / 触觉反馈的视觉 teleop 标准尚未出现。[未确认]
能否用端到端网络或神经加速把延迟压到 100 ms 级,仍开放。[未确认]
「按人手关节角一对一映射就行」 —— 错。
人手 20 自由度、Allegro 16 自由度,关节轴位置 / 方向都大不同。
一对一映射指尖够不到、抓握变形。
retargeting 到任务空间向量(指尖相对位置 / 方向),让优化器解出对应的机械手关节角。📎
「DexPilot 用了 Shadow Hand」 —— 错。
PDF Sec.III 明确用的是 Wonik Allegro Hand(16 DoF,4 指),指尖加 4 颗 BioTac 触觉。
Shadow Hand 是另一只(更贵、24+ DoF),是 OpenAI Hand 用的那只。📎
「DexPilot 有 grasp-type classification + teacher-student 蒸馏」 —— 错。
早期社区综述(包括部分笔记)这么讲,但 PDF 实际机制是单一 cost function + 任务向量集 + 实时 SLSQP,没有按抓握类型分多个优化,也没有 teacher-student 蒸馏。📎
「DexPilot 解决了触觉问题」 —— 错。
Allegro 装了 BioTac 触觉,但这些信号只记录、不回传给操作员。
操作员完全靠视觉判断抓握状态——这是后续 bilateral teleop(DOGlove 等)要补的洞。📎
DexPilot 用四台相机看操作员的裸手。为什么不让人戴手套或穿外骨骼?老办法(手套 / 外骨骼)卡在什么地方,DexPilot 的转身换来的是什么?
💡 参考答案
人手有 20 个关节,Allegro Hand 只有 16 个,关节轴几何也大不一样。DexPilot 为什么不能直接按人手关节角一对一映射给机械手?它用什么 trick 绕开了这个问题?
💡 参考答案
用「同声传译」或你自己举的类比,向一个没学过机器人的朋友解释:DexPilot 是怎么让机械手「跟着你的手」动的?翻译改写的是什么、不改写什么?
💡 参考答案
retargeting 在捏合(precision grasp)时对「拇指-食指向量」和「食指-中指向量」做了相反方向的处理(一个拉近、一个推开)。为什么需要这种相反处理?
💡 参考答案
Allegro Hand 明明装了 BioTac 触觉传感器,为什么操作员在抓东西时还是感受不到「机器人摸到了什么」?
💡 参考答案
没官方开源。
论文 + 项目页(sites.google.com/view/dex-pilot)只给视频和介绍。📎
复现路径建议直接从 AnyTeleop 的 dexsuite/dex-retargeting 入手——它是 DexPilot retargeting 思路的通用化开源实现,配合任意手部追踪(MediaPipe / SMPLer-X / Apple Vision Pro)即可搭一套现代版 DexPilot。
不行。
裸手捏合时指头互相遮挡,单视看不到被挡的指尖。
多视三角化 + 融合点云是裸手追踪能稳的前提。📎
后续 Apple Vision Pro 内置的多视 + 头显级硬件才把裸手追踪做到「四台外置相机」之外。
不独有。
retargeting 这个思路本身来自图形学的人-角色动画映射。
DexPilot 的贡献是把它做成实时、专机专手、并配 task-space vector 的精细工程——后来 AnyTeleop 把它通用化为「人手关键点 + 机械手 URDF → 自动优化」的中间件,让 retargeting 成为灵巧 teleop 的 de facto 接口层。🌐
不是同一类工作。
OpenAI Hand 是纯自主 RL 灵巧操作(让策略自己学转方块),DexPilot 是遥操作框架(让人实时控制机械手)。
两者在 T11 里互补:OpenAI 证明灵巧手能学,DexPilot 提供了教灵巧手的「教师接口」。📎
先查三处:(1) retargeting 的 task-space vector 集是否覆盖了 S_1(拇指-主指)和 S_2(主指-主指);(2) precision grasp 时两套目标距离 η_1 = 0.1 mm / η_2 = 30 mm 是否设对;(3) Allegro 内表面是否贴了 grip tape——没贴的话指尖太滑。📎