Synth Daily

打造一个放在我办公桌旁的机器人研究环境

这套成本低于 5000 欧元的桌面机器人研究平台,展示了个人在真实硬件上进行前沿研究的可行性。其核心在于,通过整合价格合理的工业级硬件(如 UFACTORY 机械臂)和自研的 Python 软件栈,作者绕开了昂贵的传统设备和复杂的现有框架(如 ROS)。这套系统不仅实现了数据采集和远程操控,更重要的是,它为测试和开发最新的视觉-语言-动作(VLA)模型提供了一个完整、可控且低成本的实验环境,其最终目标是验证个人研究者也能在机器人领域取得有意义的进展。

个人也能进行机器人研究

如今,即使是小团队甚至个人,也能在真实硬件上进行有意义的机器人研究。这主要得益于两个趋势:

  • 硬件成本显著下降: 一套包含工业级机械臂、双摄像头和完整遥操作设备的系统,总成本可以控制在 5000 欧元以下。这与几年前动辄贵出一个数量级的专业设备形成了鲜明对比。
  • 基础模型的普及: 大量公开可用的基础模型(如 Hugging Face 的 LeRobot)为机器人研究提供了强大的起点,降低了从零开始的门槛。

作者认为,如果他的论点正确,那么今天一个坐在书桌旁的独立研究者,所能达到的成就将远超想象。为了验证这一点,他决定亲自实践。

搭建要求

在采购任何硬件之前,作者为整个系统(硬件与软件)设定了几个关键要求:

  • 成本低于 10,000 欧元。
  • 体积足够小,可以放在书桌上或旁边
  • 所有部件都易于购买,无需通过企业渠道。
  • 能通过 Python 轻松使用。
  • 对软件栈没有强制性要求,以便自行构建。

最终,整套物理设备的总成本仅为 4,569.80 欧元,远低于预算。

物理配置

这套系统专为桌面环境中的单臂操作任务设计。单臂设置虽然无法完成折叠衣物等复杂双臂任务,但它简化了系统、节省了空间和成本,并迫使策略通过与环境的交互(如推、靠)来弥补硬件的不足。

物料清单 (不含税)

  • UFACTORY xArm Lite 6 机械臂: €3,403.32
  • UFACTORY xArm Lite 6 夹爪: €444.50
  • UFACTORY xArm 相机支架: €89.03
  • Intel RealSense D405 相机: €302.51
  • Logitech C920 相机: €47.86
  • 3Dconnexion SpaceMouse 无线版: €174.70
  • 其他配件 (线缆、支架等): 约 €100

机械臂

作者选择了 UFACTORY xArm Lite 6,因为它是一款可靠、精准且耐用的工业级机械臂,同时价格相对亲民,并提供了实用的 Python SDK。

  • 优点: 搭建简单(开箱到运行约 30 分钟),做工精良,可通过网页界面或 Python SDK 控制。内置自碰撞规避、速度限制、力感知等多种安全功能。
  • 缺点: 配套的并联夹爪是系统的短板。它采用气动,噪音大且力量较弱,并且没有内置传感器。其夹持范围也有限,要么抓取小物体重叠闭合,要么调整后抓取大物体但无法完全闭合。不过,标准的末端接口使其易于更换。

摄像头

系统采用双摄像头配置,一个安装在腕部,一个固定在桌面。

  • 腕部摄像头:Intel RealSense D405
    • 特点是体积小、全局快门和理想的工作范围 (7cm-50cm),非常适合近距离操作。
    • 它能直接输出 RGB-D (彩色+深度) 数据,作者认为深度信息有助于模型更好地理解几何结构,尤其是在从头训练策略时。
  • 固定摄像头:Logitech C920
    • 主要优点是极其便宜(不到 60 欧元),用于提供全局视角的补充。
    • 作者目前没有对摄像头进行标定,他想探索在不进行精确标定的“凌乱”数据下,模型能走多远。

人体输入

为了收集演示数据和测试系统,作者使用 3Dconnexion SpaceMouse 进行遥操作。这种六自由度设备常用于 3D 建模,能实现对机械臂末端位置和姿态的直观控制。

为了简化操作和后续的学习问题,作者将控制维度限制在 4 个维度:X、Y、Z 方向的平移和偏航角(Yaw)旋转,使夹爪始终与桌面平行。

软件配置

作者决定从零开始编写自己的软件栈,而不是依赖 ROS 2 等现有框架。他认为:

  • 完全的控制权对于研究至关重要,可以随时修改任何部分以适应未预料到的需求。
  • 对全栈的理解本身就是系统的一部分。了解从相机捕捉到电机指令发出的每一个环节,有助于开发和调试学习策略。

整个软件系统 robo 是一个约 3000 行的 Python 包,运行在作者的 Mac 电脑上。

架构

系统的核心是一个极其简化的进程内发布/订阅 (pub/sub) 事件总线

  • 所有组件(如相机、控制器、记录器)都作为独立的 Service (服务) 在各自的线程中运行。
  • 服务之间通过发布不可变的 Event (事件) 数据类进行通信。
  • 这种架构松耦合、易扩展,更换一个服务(例如将人类遥操作控制器换成 AI 策略控制器)不会影响系统的其他部分。
  • 失败处理机制非常直接:任何服务崩溃都会导致整个系统停止,以避免在不完整的状态下继续危险运行。

感知与控制

  • 感知: 一个 RobotObserverService 服务以固定频率轮询机械臂状态,并将其作为 RobotStateEvent 事件发布出去。
  • 控制: 一个 TeleopControlService 服务订阅 SpaceMouseEvent 事件,在自身的控制循环中将其转换为机器人指令并执行。为了安全,控制器会忽略陈旧的输入(例如超过 100 毫秒的指令),宁愿不动也不执行过时的命令。

数据记录

记录器是事件总线上的另一个订阅者。它将所有事件(相机帧、机器人状态、控制指令)以其原生频率实时写入一个 Rerun .rrd 文件中。这种方式保留了所有原始数据,未来可以根据需要重新采样生成不同帧率的数据集,而无需重新采集。

策略推理

这部分仍在开发中,但计划是将策略推理完全移出运行机器人的电脑,部署到一台独立的 NVIDIA DGX Spark 服务器上。机器人端的进程将通过 WebSocket 与策略服务器通信,发送观察数据(图像、状态)并接收动作指令。这种分离使机器人端的软件保持轻量,同时策略服务器可以灵活运行任何框架。

安全性

由于机器人在作者的办公桌旁运行,安全性至关重要。系统采用深度防御策略:

  1. 硬件急停按钮: 这是最重要的安全保障,独立于所有软件,始终触手可及。
  2. 软件安全区域: 所有指令都会被限制在一个预设的虚拟安全框内。
  3. 速度限制: 对线速度和角速度进行限制。
  4. 输入超时: 遥操作输入在 100 毫秒后失效,避免执行陈旧指令。
  5. 崩溃即停止: 任何软件服务的崩溃都会导致整个系统停机。
  6. 机械臂内置安全功能: 包括自碰撞检测、关节限位和基于力的碰撞检测。

后续计划

随着基础平台的搭建完成,接下来的计划包括:

  • 为一个简单任务(如捡笔)收集 50-100 个演示数据,并训练一个基线策略。
  • 尝试零样本部署一些现有的视觉-语言-动作模型 (VLA),如 π-zero 和 SmolVLA。
  • 探索从头训练与微调 VLA 的优劣、不同任务所需的数据量、RGB 与 RGB-D 数据的效果差异等问题。