接入真实机器人

Thea 的公开仓库不包含某个具体机器人的 SDK、策略或私有部署代码。真实机器人 接入应放在单独的部署包中,并通过工厂函数返回一个配置好的 Harness。

部署包负责什么

部署包通常需要提供:

  • 机器人 SDK 连接和资源生命周期管理。

  • 当前观测:图像、深度、时间戳、来源信息和必要的文本摘要。

  • 可执行策略:如 navigation、pick、place、open、close 等基础 Tools。

  • 安全边界:急停、速度/力矩限制、碰撞避免和 base clearance checks。

  • Scene Graph 后端:对象 refs、位置、关系、存储图片和新鲜度。

  • Evaluation 证据:每次物理 Tool 运行后的客观证据,以及评估器。

  • 一个可导入的工厂函数,例如 my_robot.factory:create_harness。

Harness 只负责把这些能力放进统一循环里运行。

工厂函数形态

工厂函数应创建或接收部署资源,注册 Tools,并返回 Harness:

from harness import Harness, ToolRegistry


def create_harness():
    robot = connect_robot()
    registry = ToolRegistry()

    register_robot_tools(registry, robot)

    return Harness(
        load_config(),
        model=build_model(),
        registry=registry,
        observation_provider=RobotObservationProvider(robot),
        base_clearance_provider=RobotClearanceProvider(robot),
        scene_graph=RobotSceneGraph(robot),
        evaluator=build_evaluator(),
        post_execution_observation_provider=RobotRunObserver(robot),
        owned_resources=(robot,),
    )

启动前先运行启动检查:

./run.sh --mode robot --check \
  --harness-factory my_robot.factory:create_harness

然后启动通道:

./run.sh --mode robot \
  --harness-factory my_robot.factory:create_harness

Tool 设计

物理 Tool 应满足三个原则:

  • 输入使用稳定 refs 或明确参数,不让模型传入部署本地路径或不受控命令。

  • 返回结构化 Tool Result,并为需要 Evaluation 的 Tool 返回非空 run_id。

  • Tool 自身只报告后端执行状态,不把它当作物理成功判定。

例如 pick_object(target) 可以要求 target 是最新 Scene Graph Brief 中已有的 ref。执行后返回 run_id,后续由 Evaluation 根据执行后 Observation 判断是否真的拿起目标。

Observation 与 Safety

ObservationProvider 提供当前证据。它应返回与具体后端解耦的内容,而不是 泄露部署本地路径。图像可以带 name、media type、新鲜度、timestamp 和来源信息。

如果机器人支持 base motion,建议接入 BaseClearanceProvider,为每轮决策提供 四方向 clearance。模型只能看到证据;真正的急停、速度限制和碰撞检查必须 在模型之外独立执行。

Scene Graph 与 Evaluation

真实机器人部署建议同时接入:

  • Scene Graph:为对象、容器、机器人 pose 和关系提供持久 refs。

  • Evaluation as Exit Codes:在物理 Tool 后用客观证据判断 process、success 或 failure。

执行后对 Scene Graph 的更新应由评估器确认的 success 触发。失败判定不应 写入“已经拿起/已经放入”等由执行结果推导出的状态。

验证顺序

建议按这个顺序验证:

  1. ./run.sh --mode robot --check 能导入工厂函数。

  2. Observation 能返回当前图像和摘要,且不包含本地私有路径。

  3. Scene Graph Brief 中 refs 唯一、位置和新鲜度有效。

  4. Tool 对未知 ref 或非法参数会拒绝。

  5. 每个 evaluated Tool 都返回稳定 run_id。

  6. Post-execution Observation 能根据 run_id 找到客观证据。

  7. Evaluator 的 success 才会触发由执行结果推导出的 Scene Graph 更新。

  8. 急停、限速和碰撞避免不依赖模型输出。