Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

下面这一小节可以直接作为你书中的 7.2.* 内容使用,我按你给的层级结构展开,并尽量和前后章节衔接、避免重复。


7.2.1 Teleoperation(遥操作)采集轨迹

在上一节我们主要在仿真中“造世界”。从本节开始,重点转向“造数据”:如何让人类通过各种方式把自己的操作经验变成可以训练 VLA 模型的轨迹。最常见的一类方式就是 遥操作(teleoperation)——人类远程控制机器人完成任务,系统同时记录传感器和控制信号。

【图 7-xx 占位:展示一个典型遥操作系统:人戴 VR 头显和手柄,通过网络控制桌面机械臂抓取物体;图中用箭头标出“人 → 控制设备 → 控制信号 → 机器人 → 相机图像回传 → 人”。】

7.2.1.1 遥操作方式

遥操作并不只是一种形态,而是一大类接口家族,大致可按“人是怎样发出控制信号”的角度来区分:

  1. 传统输入设备:手柄、键鼠、SpaceMouse 等
    • 工业和实验室环境里最常见的是 摇杆 / 游戏手柄 / SpaceMouse 等六自由度输入设备,用来控制机械臂末端的平移、旋转和夹爪开合。(robin-lab.cs.utexas.edu)
    • 优点是硬件便宜、部署简单;缺点是学习曲线较陡,操作长期高精度任务比较累。
  2. 虚拟现实(VR)遥操作
    • 使用 VR 头显 + 手柄,将机器人所在环境渲染到用户眼前,用户通过自然的手部动作控制机械臂末端姿态,已有工作用 VR 接口大量采集操作演示,用于模仿学习和 VLA 训练。(arXiv)
    • 相比传统手柄,VR 能提供沉浸式视角和立体深度感,对复杂三维操作尤其友好。
  3. 穿戴/动捕类遥操作:外骨骼、数据手套、动作捕捉
    • 人类穿上外骨骼或戴上数据手套,机器直接跟随人手、人臂轨迹运动。(robin-lab.cs.utexas.edu)
    • 好处是动作映射直观,自然度高;缺点是硬件复杂、成本高,场地和佩戴舒适度都是工程挑战。
  4. 移动端 / Web 端遥操作
    • 一些系统尝试用 手机、平板或 Web UI 提供遥操作界面,适合简化任务或给非专业用户使用。(robin-lab.cs.utexas.edu)
    • 交互方式通常是拖拽目标、点击按钮等,更接近“远程人机界面”,操作精度有限,但易于部署到大量用户。
  5. 辅助/共享控制遥操作(Assisted / Shared Teleoperation)
    • 为降低人类负担,可以让 部分动作由算法自动完成,人只在关键决策点介入。例如 PATO 系统中,机器人在不确定时才请求人工接管,从而提高大规模示教效率。(arXiv)
    • 这种“人机共驾”模式在采集大规模示教数据时尤其重要,可支持一个人同时监督多台机器人。

7.2.1.2 优点

遥操作在现代机器人数据集构建中几乎是“默认选项”,原因主要有:

  1. 高质量、任务相关的演示
    • 人类在闭环控制下完成任务,能自动避开明显不合理动作;对于抓取、插入等精细操作,人类往往能凭经验快速找到可行策略。
    • 大规模操作数据集(如 BridgeData V2、DROID)都大量采用遥操作或其变体来采集示范轨迹。(Proceedings of Machine Learning Research)
  2. 任务多样性和开放性
    • 同一套硬件和遥操作界面,可以在不同环境、不同物体、不同指令下反复采集,使得数据集覆盖大量任务变体,有利于训练通用 VLA 模型。(rail-berkeley.github.io)
  3. 自然融合多模态信号
    • 遥操作过程本身天然包含 机器人状态 + 控制命令 + 视觉观测,如果同时录音或采集语言说明,就能构造完整的视觉–语言–动作三模态数据,这为后续 VLA 训练提供了理想素材。(rh20t.github.io)
  4. 对操作员技术门槛相对可控
    • 虽然需要一定学习,但相较于直接写控制程序,遥操作让没有机器人编程经验的操作者也能参与数据采集,这对大规模数据构建是关键前提。(SpringerLink)

7.2.1.3 挑战

当然,遥操作也有一长串“坑”,在设计数据采集系统时要提前考虑:

  1. 操作负担与疲劳
    • 长时间高精度操作会极大消耗操作者注意力和体力,导致演示质量下降。实验表明,合适的界面设计(如提供实时任务状态虚拟仪表盘)可以提高抓取精度和用户体验。(MDPI)
    • 在采集大型数据集时,通常需要轮换操作员、设置短任务、甚至设计游戏化机制来减轻疲劳。
  2. 通信延迟与带宽限制
    • 如果人和机器人不在同一局域网,图像传输和控制命令往返会带来明显延迟,易导致操作过冲、抖动甚至碰撞。
    • 工程上常见做法包括:降低视频分辨率/帧率、在机器人端做局部避障、或采用共享控制,让高频稳定控制留在本地。
  3. 接口与动作映射的设计难度
    • 如何将人手、手柄或 VR 控制器的运动映射到机械臂末端、移动底盘等,是一个需要仔细调参的问题。映射不自然会导致学习难、错误多。
    • 最近的工作(如 TeleMoMa、Versatile Demonstration Interface 等)都强调通过统一的接口同时支持多种示教模式,以降低使用门槛。(robin-lab.cs.utexas.edu)
  4. 可扩展性问题
    • 传统遥操作“一人一机”,当需要上万条演示时成本惊人。
    • 辅助遥操作和多机器人并行采集(如 PATO)提供了一条思路:让策略在简单场景下自动执行,只有在不确定时才喊人类“救场”。(arXiv)
  5. 数据偏差与安全风险
    • 示范数据只覆盖了“人类习惯的操作空间”,容易出现状态分布不均衡;在危险场景下,人类也可能不敢尝试极限操作。
    • 为安全起见,遥操作系统必须提供急停、虚拟约束区域等机制,同时对碰撞、超力等异常进行硬件级保护,这些内容在第 10 章会进一步展开。

7.2.2 Kinesthetic teaching(人手带动机械臂)

如果说遥操作是“远程操纵”,那么 kinesthetic teaching(本体示教、拖拽示教) 就是“直接上手”。在这种范式中,人直接抓住机器人机械臂本体,将其推到希望的位置或轨迹上,机器人通过关节力矩/位置传感器记录整个过程。这种方式通常被归入 ** Programming by Demonstration(PbD,示教编程)** 的重要一支。(calinon.ch)

【图 7-xy 占位:一位操作员站在协作机械臂旁边,用双手扶着机械臂末端拖动其完成“抓取–搬运–放置”的动作,旁边简单标注“零力模式”“关节角记录”等。】

7.2.2.1 示教方法

典型的 kinesthetic teaching 流程包括以下步骤:

  1. 进入“零力模式”或重力补偿模式
    • 机械臂低层控制切换到 力控 / 阻抗控制 模式,通过电机电流和力矩传感器主动抵消重力,使操作者感觉机械臂“很轻”,可以轻松推动。(calinon.ch)
  2. 人手拖拽机械臂执行任务
    • 操作员抓住末端执行器或专门的手柄,让机械臂按照完成任务的自然轨迹运动(例如从桌面抓起一个杯子再放到架子上)。
    • 在复杂任务中,操作者可以多次示教不同变体,如不同初始位置、不同物体,以增加数据多样性。
  3. 关键帧与连续轨迹两种风格
    • 有的系统要求操作员 逐个关键姿态点 示教(keyframe based),系统再自动做插值;有的则直接记录高频连续轨迹。(roboticsproceedings.org)
    • 关键帧方式更适合传统工业编程;连续轨迹更适合模仿学习和 VLA 的 BC 训练。
  4. 交互式修正与重复示教
    • 示教后可以回放轨迹,操作员发现不满意的部分可以再次拖拽局部修正,这在工业 PbD 中非常常见。(Google Patents)

7.2.2.2 数据记录

与遥操作类似,kinesthetic teaching 也要把“人–机交互”转成可用的数据集。常见记录内容包括:

  1. 关节空间与末端空间轨迹
    • 每个时间步记录关节角 \((q_t)\)、关节速度 \(\dot{q}_t\)、末端位姿(通过正运动学计算),采样频率通常在 50–200 Hz 之间,既保证细节,又可控数据量。
  2. 力/力矩与接触信息
    • 如果机械臂有六维力/力矩传感器,还可以记录施加在末端的外力,这对于装配、打磨、插入 等接触丰富的任务非常关键。(arXiv)
  3. 额外传感器与人类状态
    • 一些多模态数据集会在 kinesthetic teaching 过程中同步采集 多视角 RGB、深度、声音、人体动作捕捉、肌电(EMG)等信号,用来分析人类操作策略和丰富训练信号。(arXiv)
  4. 标注与元数据
    • 同样需要记录任务 ID、物体类别、成功/失败标记等信息,这部分在 7.3 节会系统展开,这里只强调:示教方式本身会影响你需要记录哪些字段 。例如,如果主要用于学习力控策略,就应该重点保证力/力矩数据的精度和同步性。

7.2.2.3 适用性

相较于遥操作,kinesthetic teaching 在以下场景中尤其有优势,也有明显局限:

  1. 优势场景
    • 协作机械臂 / 人机共作环境:协作机器人本身具备力控和安全设计,非常适合人直接拖拽示教,是工业 PbD 的主战场。(ResearchGate)
    • 接触丰富、精细操作:例如插销装配、打磨、拧螺丝等,人通过“手感”辅助控制,能给出更符合实际的轨迹和接触模式。(arXiv)
    • 对非专业操作者友好:不需要理解坐标系、关节角等概念,只需“像教一个合作者那样拉着它做一次”。
  2. 局限性
    • 仅适用于能被人直接接触的机器人:对于大型工业机械臂、高速设备或移动平台,安全与体积问题往往使 kinesthetic teaching 不可行。
    • 操作者身体负担:长时间拖拽机械臂对肩肘腕是个挑战,尤其是机械臂负载较大时。
    • 操作范围受人工作空间限制:人站在机器人旁边示教,工作范围主要是人可触及空间,难以覆盖远距离或封闭空间任务。
  3. 与其他示教方式的互补
    • 最新一些工作尝试将 遥操作、kinesthetic teaching、自然人类示范 集成到同一示教接口中,让操作者根据任务自由选择示教方式。(arXiv)
    • 在构建通用 VLA 数据集时,常见做法是:粗粒度任务用遥操作或程序化数据扩展覆盖面,关键精细操作用 kinesthetic teaching 采高质量样本

7.2.3 自动生成 / 合成数据(程序化场景)

仅靠人类示教,很难支撑“大模型 + 通用技能”的数据需求。这时就轮到 自动生成 / 合成数据 登场:利用仿真器、任务脚本、运动规划甚至三维编辑,自动合成大量示范轨迹和对应观测。

【图 7-xz 占位:示意程序化场景生成流程:脚本随机生成桌面布局 → 调用运动规划器生成抓取–放置轨迹 → 仿真器渲染多视角图像 → 输出“图像 + 状态 + 动作”数据集。】

7.2.3.1 程序化脚本

在许多仿真基准中,任务和演示轨迹是通过代码“写”出来的,而不是由人操作得到。例如:

  1. 基于规则的任务生成
    • 指定一组物体类别、摆放规则和目标描述(如“把蓝色方块放入左侧抽屉”),脚本随机采样物体初始位置、姿态、背景纹理等,自动生成多种场景变体。
    • 这类方法在 RLBench、ManiSkill 等操作基准中广泛存在。(ResearchGate)
  2. 基于运动规划的演示生成
    • 针对每个任务,使用 运动规划器 + 逆运动学 自动求出“从起始位姿到目标位姿”的无碰路径,把规划出的关节轨迹当作专家示范。RLBench 就通过这种方式为 100 多个任务提供了理论上“无限多”的脚本演示。(arXiv)
  3. 基于任务-运动规划(TAMP)的复杂动作生成
    • 对多阶段任务(开门、搬运、装配等),可以先用符号规划生成动作序列,再为每个子动作调用运动规划器,自动得到长序列示范。这种思路也被应用在 DemoGen 等合成示范系统中。(OpenReview)

7.2.3.2 数据合成

除了轨迹层面的“自动规划”,近年的工作还探讨更激进的 视觉和动作的合成

  1. 基于 3D 场景编辑的“重排”
    • 例如 DemoGen:只需少量真实示范,就通过 3D 点云和渲染,把物体在场景中的位置、姿态随机重排,并通过几何转换调整原始动作轨迹,从而生成大量新的“伪轨迹”。(arXiv)
  2. 视角、光照和材质的程序化扰动
    • 利用渲染引擎改变相机位置、光照条件、材质贴图等,生成多视角、多光照的图像,对应同一动作轨迹。这本质上是更强大的数据增强。(arXiv)
  3. 跨模态合成与补全
    • 一些多模态数据集会在仿真中同时合成深度图、点云、触觉/接触信号等,为以后训练多模态表示(例如 DROID-3D + EmbodiedMAE)提供统一的三维输入。(arXiv)
  4. 语言指令的自动生成
    • 对程序化任务可以自动导出语义描述(如“将最右边的红杯子放到蓝盘子上”),再用大语言模型改写成多种自然语言指令版本,为后续 VLA 训练构造大规模图文–动作对。

7.2.3.3 优劣

程序化 / 合成数据不是“白嫖”,它的优点与风险都很明显:

  1. 优势
    • 规模几乎无限:脚本一旦写好,就可以离线生成任意数量的轨迹和场景,是支撑大模型训练的关键。RLBench 的脚本演示、BridgeData V2 中脚本 pick-and-place 轨迹都是代表例子。(arXiv)
    • 可控性强:可以系统地改变物体数量、布局、干扰物等,从而评估和提升模型的泛化能力。Colosseum 等基准就是在 RLBench 基础上增加系统 perturbation 因素来检验泛化。(arXiv)
    • 安全与成本优势:所有“试错”都发生在仿真中,不会真的摔坏机器人或物体,也不需要实验室人员盯着。
  2. 劣势与风险
    • 仿真–现实差距(Sim2Real gap):合成图像和物理参数与真实世界总有差异,模型若完全在合成数据上训练,直接上真实机器人时性能可能大幅下降——这一点在第 5.4、7.1 节已讨论。
    • 行为模式过于理想化:运动规划生成的轨迹通常是“几何上完美”的,没有人类真实操作中的犹豫、微调、接触探索等,这对学习鲁棒策略可能是不利的。
    • 脚本工程成本不容忽视:要实现几十上百个任务的高质量程序化生成本身是一项工程,需要熟悉仿真引擎、运动规划、碰撞检测等模块。
  3. 实践中的折中策略
    • 目前较被认可的做法是 “少量真实 + 大量合成 + 少量真实微调”:用少量遥操作或 kinesthetic 示教给出真实示范,再依靠程序化和合成方法扩充数据,最后在真实机器人上用少量数据做 domain adaptation 或 RL 微调。(arXiv)

7.2.4 多模态同步:图像、语言指令、关节状态、动作序列

无论数据是通过遥操作、kinesthetic teaching 还是程序化生成得到,只要最终目标是训练 VLA 模型,就必须把视觉、语言和动作这几条信息流 ** 严格对齐到同一个时间轴上**。这一节从工程角度解释如何进行多模态同步。

【图 7-xw 占位:一条时间线,上方是 RGB 图像帧序列,中间是语言指令(整体或按短语划分),下方是关节状态和动作命令曲线,用竖直虚线表示不同模态按时间戳对齐。】

7.2.4.1 时间同步

时间同步是所有多模态数据工程的地基,核心思想很简单:所有传感器和控制信号都带统一时间戳

  1. 统一时间源与时间戳
    • 在机器人系统中,常通过操作系统时间 + NTP 同步,或由控制电脑作为统一时间源,所有传感器驱动在采样时记录“系统时间”。
    • 在复杂多模态数据集(如 Kaiwu、RH20T、DROID 等)中,通常在硬件层面就保证各设备同步时钟,然后将 RGB、深度、力觉、音频、关节状态等全部按绝对时间戳记录下来。(arXiv)
  2. 软件层面的对齐与插值
    • 由于不同话题/设备采样频率不同(例如图像 30 Hz,关节状态 100 Hz,动作命令 10 Hz),离线处理时需要选择一个“主时间轴”(经常是控制频率或图像频率),然后对其他信号做插值或最近邻对齐。
    • 实践里既有以 图像帧为主 的对齐方式(每帧图像配一个最近动作),也有以 ** 控制周期为主** 的方式(每个控制 step 附近取最近一张图像和语言片段)。
  3. 同步精度与抖动控制
    • 对于大多数桌面操作任务,几十毫秒级的对齐误差通常可以接受;但在高速运动或接触瞬间(如敲击、插入)中,几毫秒的误差也可能改变接触判定结果,多模态装配数据集会特别强调微秒级同步和抗振动设计。(arXiv)
  4. 可视化与检验工具
    • 在工程实践中,会使用像 Foxglove、RViz 等工具将多种话题按时间轴播放,以肉眼检查同步是否合理。很多开源多模态示例都提供这样的可视化配置。(Foxglove)

和 7.3 节中“轨迹数据格式与 ROS bag”不同,这里只聚焦于“如何让多条轨迹变成一条多模态时间线”;具体存储格式和解析方法将在 7.3 中详细展开。

7.2.4.2 语言指令关联

语言模态有两种典型来源:离线文本描述 和 ** 在线语音/对话指令**。如何把语言和具体轨迹片段关联,是构造 VLA 训练样本的关键步骤之一。

  1. 整体任务级指令
    • 最简单的情形是:为整个演示轨迹提供一条文本指令,例如 “把红色杯子拿起放到右边碗里”。
    • 这种形式在许多机器人数据集(如 BridgeData V2、DROID)中非常常见,每条轨迹有一条文本描述,用于训练 “(图像, 语言) → 动作” 的条件策略。(rail-berkeley.github.io)
  2. 分段指令与层级标注
    • 对更复杂、长时间任务,可以将轨迹切分为多个阶段(如“伸手–抓取–移动–放置”),为每一段配一条短指令(如“抓起杯子”“移到架子上”)。
    • 这种更细粒度的对齐可支持训练层级 VLA 模型,让语言不仅描述最终目标,还能作为子任务切分信号。
  3. 语音指令与对话日志
    • 如果在示教过程中使用语音控制(“再往右一点”“抓紧一点”),系统需要实时语音识别(ASR)并记录原始音频、转写文本以及时间戳。
    • 在构造数据集时,可以保留“语音–动作–图像”的完整历史,从而支持训练具备对话纠偏能力的机器人策略。
  4. 自动生成与扩充语言描述
    • 实践中,人类不可能为每条轨迹手工写多条指令,常用的方式是:由脚本生成模板指令,再用大语言模型做改写和多样化扩充,以提高语言分布的自然性。(rail-berkeley.github.io)

7.2.4.3 多源数据记录

最后,从系统工程角度看,多模态数据采集就是一个“多源日志记录问题”:

  1. 采集哪些模态? 对于典型 VLA 数据集,常见的模态组合包括:
    • 视觉:多视角 RGB、深度甚至点云;
    • 机器人本体状态:关节角、关节速度、末端位姿、夹爪开合状态;
    • 动作/控制命令:末端速度、关节目标、离散技能 ID 等;
    • 力觉与接触:力/力矩传感器、触觉阵列(若有);
    • 音频与环境上下文:例如装配声、环境噪声,用于识别接触事件或异常;
    • 语言与人类状态:文本/语音指令、人手轨迹、目光方向等。 近期多模态数据集(如 Kaiwu、RH20T、DROID、REASSEMBLE 等)都在尝试尽可能“把能录的都录了”。(arXiv)
  2. 记录频率与存储权衡
    • 高频记录能捕获更多细节,但存储和后处理代价也成倍增加;常见折衷是:控制与关节状态高频(50–200 Hz),相机中频(10–30 Hz),音频高频(kHz),语言事件按需记录
    • 对于之后要训练 Transformer 类 VLA 模型,需要提前考虑 序列长度和采样率,避免生成后期完全难以加载的超长序列。
  3. 统一日志格式与索引
    • 实际工程中,常采用诸如 ROS bag、HDF5、自定义二进制格式等作为统一日志容器,把所有模态一起存进去,再通过索引文件记录每条轨迹的起止时间、任务 ID、重要事件时间点等。
    • 统一的日志与索引结构是后续“切片”出训练样本(例如固定长度窗口、按阶段切片)的基础,这在 7.3 节会给出更加细致的建议。
  4. 多模态对下游 VLA 的意义
    • 从模型视角看,这些多模态数据最终都要映射成一串 token——图像 patch token、语言 token、动作 token、状态 token。
    • 数据采集阶段做得越规范、同步越精确、模态越丰富,下游就有越大的空间去设计强大的 VLA 架构(第 8 章会从模型结构角度回到这些设计决定)。

这一节到这里,你基本把“人怎么教机器人、仿真怎么帮人造数据、这些数据怎么对齐成多模态轨迹”讲清楚了。后面的 7.3 节可以顺势从“时间线上铺好的多模态原始信号”,进一步落到 文件格式、标注策略和数据清洗流水线 上,形成完整的数据工程闭环。