RobotMem + LIBERO

为终身机器人学习提供持久化记忆 —— 将一个 LIBERO 任务套件中学到的技能迁移到下一个,同时避免遗忘。

pip install robotmem

快速开始

from robotmem import RobotMemory
from libero.libero import benchmark

mem = RobotMemory(db="libero_lifelong.db")
task_suite = benchmark.get_benchmark("libero_long")

for task in task_suite.get_task_names():
    env = task_suite.make_env(task)
    obs = env.reset()
    # 检索与当前观测匹配的历史技能
    prior = mem.recall(obs["agentview_image"], top_k=3)
    action = policy.predict(obs, prior_experiences=prior)
    obs, reward, done, info = env.step(action)
    # 将成功的轨迹持久化,供未来任务使用
    mem.save_perception(
        observation=obs,
        action=action,
        reward=reward,
        metadata={"task": task, "suite": "libero_long"}
    )

集成功能

LIBERO 是一个专为研究机器人操作中的终身学习而设计的基准测试框架。它提供了超过 130 个程序化生成的任务,分为五个套件 —— LIBERO-Spatial、LIBERO-Object、LIBERO-Goal、LIBERO-Long 和 LIBERO-100 —— 每个套件测试知识迁移的不同维度。其核心挑战是灾难性遗忘:当机器人学习新任务时,往往会丢失之前学到的技能。

RobotMem 通过提供一个持久化、可查询的记忆层来解决这个问题,该记忆层与 LIBERO 的任务套件并行工作。每条成功的轨迹 —— 观测、执行的动作、获得的奖励以及任务上下文 —— 都存储在本地 SQLite 数据库中。当智能体遇到新任务时,它可以通过对观测进行语义相似度搜索来检索相关的历史经验。这意味着在 LIBERO-Spatial 上训练的策略可以在遇到新的 LIBERO-Goal 任务时利用之前学到的操作基元,而无需在旧数据上重新训练。

该集成设计得非常轻量。RobotMem 不修改 LIBERO 的环境封装器或任务定义,而是作为一个旁路记忆运行,你的策略可以在推理时进行查询。这使得它与你选择的任何学习算法兼容 —— 行为克隆、扩散策略、基于 Transformer 的策略或强化学习方法。

为什么 LIBERO 需要持久化记忆

标准的终身学习方法使用驻留在内存中的回放缓冲区,训练结束后即消失。LIBERO 的基准测试协议评估跨任务序列的前向和后向迁移能力,但大多数基线方法缺乏跨训练轮次存储和检索经验的机制。RobotMem 填补了这一空白:它为每个实验提供一个持久化记忆,在机器人的整个生命周期中积累知识,而不仅仅是单次训练会话。

在实践中,这意味着你可以今天在 LIBERO-Spatial 上训练,关闭机器,明天继续使用 LIBERO-Object —— 你的智能体仍然记得昨天学到的空间操作技能。这更接近真实机器人需要的运行方式:持续学习,同时不丢弃已有知识。

开始构建有记忆的机器人

pip install robotmem