在第一人称射击 (FPS) 游戏的世界里,玩家在很大程度上依赖于一个简单的用户界面元素: 准星 (crosshair) 。如果没有它,估计屏幕的确切中心——进而判断你的角色瞄准的是哪里——将会非常困难。准星提供了一个明确的视觉锚点,将玩家的意图与游戏世界的几何结构连接起来。

现在,想象一下在没有准星的情况下玩那个游戏。你可能会很难将瞄准点与物体对齐,从而错过本该容易击中的目标。令人惊讶的是,这正是我们目前训练最先进的机器人来操纵世界的方式。

现代机器人控制通常依赖于视觉运动策略 (Visuomotor Policies) ——即接收原始相机像素作为输入并输出电机动作的复杂神经网络。虽然这些模型,特别是视觉-语言-动作 (VLA) 模型,已经变得非常强大,但它们往往缺乏“空间锚定 (spatial grounding) ”。它们能看到图像,但它们并不本能地“知道”它们的手在那个 2D 像素网格中指向哪里。

AimBot 应运而生。

在密歇根大学和 Lambda Labs 最近发表的一篇题为 “AimBot: A Simple Auxiliary Visual Cue to Enhance Spatial Awareness of Visuomotor Policies” 的论文中,研究人员提出了一种既简单又绝妙的方法: 给机器人一个准星。

AimBot 概览,一种轻量级的视觉引导方法,将空间提示添加到 RGB 图像上。

如上图 1 所示,AimBot 是一种轻量级的视觉增强技术。它以射击线 (shooting lines) 和瞄准十字线 (scope reticles) 的形式,将机器人的末端执行器 (夹爪) 状态直接投射到相机画面上。通过在 AI 看到图像之前将这些提示“绘制”在图像上,AimBot 显式地编码了空间关系,在无需更改神经网络架构的情况下,显著提升了复杂操纵任务的性能。

在这篇深度文章中,我们将探讨为什么机器人难以瞄准,AimBot 如何在不到 1 毫秒的时间内通过数学方法构建这些视觉提示,以及它在仿真和现实世界中取得的惊人成果。

问题所在: 像素缺乏本体感觉

要理解为什么 AimBot 是必要的,我们首先需要了解现代机器人是如何“看”和“动”的。

VLA 范式

机器人技术的最新进展主要由视觉-语言-动作 (VLA) 模型推动。这些是经过微调以输出机器人动作的大型基础模型 (类似于 ChatGPT 背后的大语言模型) 。像 OpenVLA 或 \(\pi_0\) 这样的模型主要接收两种输入:

  1. 视觉观测: 来自安装在机器人上或房间内的相机的 RGB 图像。
  2. 语言指令: 比如“把面包放进烤面包机”这样的命令。

模型处理这些输入并预测机器人应该如何移动其关节。

空间断层

虽然这些模型非常擅长语义理解 (知道“烤面包机”长什么样) ,但它们往往在精确的空间对齐方面表现挣扎。机器人通过内部传感器 (本体感觉) 知道它的手臂在哪里,但这通常是一组独立的数据向量 (例如关节角度或 XYZ 坐标) 。

挑战在于,神经网络必须学习这些抽象的 XYZ 数字与相机画面中的像素之间复杂的映射关系。它必须隐式地学习“如果我的手在坐标 (0.5, 0.2, 0.1),那就对应于相机图像中的像素 (150, 200)。”这种映射很难学习且容易出错,导致机器人抓取时往往抓到了物体附近而不是物体

以前解决这个问题的尝试包括要求模型预测特定的关键点,或者使用昂贵的“视觉提示”技术,这些技术需要在执行期间运行繁重的推理模型。AimBot 采取了一种不同的方法: 直接的几何投影。

核心方法: 构建准星

AimBot 的美妙之处在于它的简单和速度。它不使用神经网络来生成视觉提示,而是使用经典的计算机视觉几何学。该过程处理每张图像所需的时间不到 1 毫秒,在计算成本上几乎可以忽略不计。

目标是在机器人的相机画面上叠加两类特定的视觉提示:

  1. 射击线 (Shooting Lines) : 用于全局相机 (固定在房间内) ,显示夹爪的轨迹。
  2. 瞄准十字线 (Scope Reticles) : 用于腕部相机 (随手移动) ,准确显示夹爪指向的目标。

让我们逐步分解这个算法。

第一步: 从世界到像素

首先,系统需要知道机器人的手在 3D 世界中的位置,并将该位置转换到 2D 相机图像上。这是使用针孔相机模型 (Pinhole Camera Model) 完成的。

我们从 3D 世界中的一个点 \(\mathbf{p}_{\text{wld}}\) (夹爪中心) 开始。我们需要使用相机的外参矩阵 (Extrinsic Matrix, \(\mathbf{E}\)) 将这个点投影到相机坐标系中。这个矩阵代表了相机在世界中的位置和旋转。

公式 1: 将世界坐标转换为相机坐标。

一旦我们获得了相对于相机的坐标 (\(\mathbf{p}_{\text{cam}}\)) ,我们就使用内参矩阵 (Intrinsic Matrix, \(\mathbf{K}\)) 将它们投影到 2D 图像平面上,内参矩阵包含了相机的焦距和光学中心信息。

公式 2: 将相机坐标投影到 2D 像素坐标。

这给出了代表夹爪中心在图像中出现位置的像素坐标 \((u_c, v_c)\)。

第二步: 可见性检查

仅仅在 \((u_c, v_c)\) 处画一个点是不够的。如果机器人的手在一个盒子或墙后面怎么办?如果我们把提示画在障碍物之上,我们就会给机器人提供错误信息,让它误以为手是可见的,而实际上它被遮挡了。

为了解决这个问题,AimBot 利用了深度图像 。 大多数现代机器人设置使用 RGB-D 相机 (如 Intel RealSense) ,它提供了一个深度图,指示每个像素有多远。

系统将计算出的夹爪距离 (\(z_c\)) 与相机在该像素处观察到的实际深度值 (\(D[v_c, u_c]\)) 进行比较。

公式 4: 可见性检查条件。

如果投影深度 (\(z_c\)) 与观测深度大致相等 (在一个小误差 \(\epsilon\) 范围内) ,则该点是可见的。如果观测深度明显更小,这意味着夹爪前面有物体,系统就不应该绘制叠加层。

第三步: 光线步进 (“射击”逻辑)

为了绘制一条指示方向而不仅仅是位置的线,AimBot 执行“光线步进 (ray marching) ”操作。它以起点 (夹爪中心) 为基础,沿着夹爪面向的方向 (\(\mathbf{d}\)) 迭代向前步进。

公式 5: 迭代光线步进逻辑。

在每一步 (由 \(\delta\) 表示) ,算法将新的 3D 点投影到图像上并检查它是否可见。这个过程一直持续到“光线”击中物体 (深度检查失败) 或达到最大距离。

这实际上模拟了安装在机器人手上的激光笔。

可视化结果

这个几何流程的结果是一组显式编码了机器人状态的增强图像。

全局视图: 射击线

对于安装在机器人肩部或环境中的相机,AimBot 绘制一条射击线

  • 起点: 计算出的夹爪位置。
  • 终点: “激光”击中表面的点。
  • 颜色编码: 线条颜色根据夹爪状态变化 (例如,绿色表示张开,紫色表示闭合) 。

局部视图: 瞄准十字线

对于直接安装在机器人手腕上的相机,AimBot 绘制一个十字线 (Reticle) 。 这里的设更加巧妙。静态的十字线无法告诉你表面有多远。AimBot 根据距离调整十字线的大小。

算法根据到表面的距离 (\(z_w\)) 计算缩放因子:

公式 14: 基于距离计算缩放因子。

然后使用这个缩放因子来调整十字线的长度:

公式 15: 动态调整十字线长度。

这创造了一种动态视觉效果: 随着机器人靠近物体,十字线会扩大。 这为神经网络提供了关于“碰撞剩余时间”或接近度的强烈视觉线索,这对物体的轻柔处理至关重要。

下图展示了 LIBERO 仿真基准测试中的这些增强功能。注意上排 (全局视图) 中的绿色射击线和下排 (腕部视图) 中的十字线。

LIBERO 基准测试中经过 AimBot 增强的观测。上排: 带射击线的全局视图。下排: 带十字线的腕部视图。

实验结果

研究人员将 AimBot 集成到三个领先的 VLA 模型中: OpenVLA\(\pi_0\)\(\pi_0\)-FAST 。 然后,他们在仿真和现实场景中对比测试了这些增强模型与原始版本。

仿真: LIBERO 基准测试

LIBERO 基准测试是测试终身机器人学习的标准套件。它分为不同的难度级别,其中 LIBERO-Long 是最难的,因为它涉及需要多个步骤的长视距任务。

下表 1 总结的结果显示了一致的趋势。虽然在简单任务 (Spatial, Object) 上的性能提升较为温和 (因为基线已经相当不错) ,但在 LIBERO-Long 上的提升是显著的。

表 1: 仿真结果显示 AimBot 提升了性能,特别是在长视距任务上。

例如,在具有挑战性的 LIBERO-Long 套件上:

  • \(\pi_0\)85.2% 提升至 91.0%
  • OpenVLA-OFT87.5% 提升至 91.2%
  • \(\pi_0\)-FAST81.6% 提升至 87.1%

性能上的这些飞跃表明,空间线索有助于模型在长序列动作中保持一致性,这可能是通过减少随时间累积的小误差来实现的。

现实世界验证

仿真固然有用,但任何机器人理论的真正考验在于物理世界。团队搭建了一个配备三个 RealSense 相机 (左肩、右肩、手腕) 的 7-DoF Franka Emika Panda 机器人。

配备三个相机的现实世界机器人设置。

他们设计了五个需要精确度的接触密集型任务:

  1. 水果装箱 (Fruits in Box) : 拾取并放置多个物体。
  2. 网球放入抽屉 (Tennis Ball in Drawer) : 打开抽屉,放入球,关闭抽屉。
  3. 面包放入烤面包机 (Bread in Toaster) : 精确插入任务。
  4. 放置咖啡杯 (Place Coffee Cup) : 姿态敏感的放置。
  5. 鸡蛋放入蛋盒 (Egg in Carton) : 精细操作和关闭盖子。

五个现实世界任务的视觉示例。

这些任务的视觉增强看起来非常直观。在下图中,你可以看到射击线 (左) 和十字线 (右) 是如何突出显示目标物体的,比如绿色的烤面包机或网球。

应用于现实世界任务的 AimBot 增强。

性能 vs. 基线

结果令人信服。AimBot 显著优于标准模型和其他视觉提示基线。

研究人员将 AimBot 与以下方法进行了比较:

  • RoboPoint: 使用 VLM 预测可供性点 (红叉) 。
  • TraceVLA: 可视化运动历史箭头。

如上面的图 4 所示,AimBot (右) 在目标正上方提供了一个干净、居中的提示 (绿色十字) 。RoboPoint (左) 通常充满噪声或稍微偏离目标,而 TraceVLA (中) 用箭头弄乱了屏幕,可能会分散对直接空间目标的注意力。

不同视觉引导方法的比较: RoboPoint、TraceVLA 和 AimBot。

在定量分析上,在总共 50 次试验 (每个任务 10 次) 中, \(\pi_0\)-FAST + AimBot 模型取得了 47/50 的成功,而基线仅为 42/50 。 在像“面包放入烤面包机”这样的特定困难任务中,提升是巨大的,成功率从 40% 跃升至近乎完美。

此外,AimBot 速度很快

  • RoboPoint: 约 5 秒推理时间 (对于实时来说太慢了) 。
  • TraceVLA: 约 0.3 秒。
  • AimBot: < 0.001 秒。

这种高效率使得 AimBot 可以在高频控制循环中使用,而不会拖慢机器人的速度。

分析: 为什么它有效?

为什么画一个简单的绿色十字就能让数十亿参数的神经网络变得更聪明?研究人员进行了几项分析来找出原因。

1. 注意力的改善

通过可视化 VLA 模型的注意力权重 (特别是第 1 层,第 11 个头) ,研究人员发现 AimBot 从根本上改变了模型看哪里

在下图中,上排显示了标准模型的注意力图——它通常是发散的,看着背景或不相关的物体。下排显示了带有 AimBot 的模型。注意力紧紧集中在目标物体和夹爪上。视觉提示充当了“注意力磁铁”,引导模型的计算能力处理最相关的像素。

注意力图比较。下排 (AimBot) 显示了对相关物体的更紧密的聚焦。

2. 减少错位

机器人操纵失败的主要原因是错位——抓取时向左偏了一厘米,或者以微小的角度接近。

研究人员在现实世界的实验中对失败模式进行了分类。如图 10 所示,常见的错误包括抓取草莓旁边的空气或撞到杯子的边缘。AimBot 大幅减少了这些几何误差。具体对于“抓取位置 (Grasping Position) ”错误,AimBot 将失败次数从 22 次 (基线) 减少到仅 7 次。

错位失败 (红色) 与对齐成功 (绿色) 的示例。

3. 泛化能力 (分布外/OOD)

最令人惊讶的发现之一是 AimBot 的鲁棒性。当研究人员改变光照条件 (闪烁的灯光、暖/冷色调) 或更换背景纹理时——这些场景通常会破坏视觉策略——AimBot 提供了一个稳定的锚点。

因为 AimBot 依赖于深度 (几何真理) 而不仅仅是 RGB 纹理,即使光照产生了奇怪的阴影,十字线也能保持准确。这种几何一致性帮助神经网络忽略视觉噪声并专注于任务。

AimBot 在不同光照和背景的分布外场景中表现稳健。

结论

AimBot 论文给我们上了一堂关于经典机器人学与现代 AI 交叉融合的宝贵一课。虽然端到端学习 (从像素到动作) 是一种强大的范式,但它有时会丢弃我们已经拥有的有用信息。

我们知道机器人在哪里。我们知道相机参数。通过使用简单的几何学将这些已知状态投射回视觉领域——有效地将“本体感觉”转化为“像素”——我们可以给 VLA 模型提供巨大的帮助。

关键要点:

  • 简单致胜: 不需要复杂的辅助网络,只需几何学。
  • 速度至关重要: 小于 1 毫秒的开销意味着它可以部署在任何系统上。
  • 空间锚定: 显式的视觉提示有助于深度网络关注正确的特征。

AimBot 提醒我们,有时候,改善 AI 视觉的最佳方法就是在它需要看的地方画一个“X”。随着我们迈向更通用的机器人,结合经典几何学的鲁棒性与神经网络灵活性的混合方法可能会引领未来的方向。